diff --git a/.github/changed-lines-count-labeler.yml b/.github/changed-lines-count-labeler.yml new file mode 100644 index 00000000000..39e663821fb --- /dev/null +++ b/.github/changed-lines-count-labeler.yml @@ -0,0 +1,3 @@ +# Add this tag for any changes for more than 1 line +"Pending analysis of PR (maintenance team)": + min: 1 diff --git a/.github/workflows/ci-on-pull_request.yml b/.github/workflows/ci-on-pull_request.yml new file mode 100644 index 00000000000..7b3fff88c7d --- /dev/null +++ b/.github/workflows/ci-on-pull_request.yml @@ -0,0 +1,40 @@ +name: "CI-PULL-REQUEST" + +on: [pull_request] +jobs: + pre-commit: + uses: ./.github/workflows/pre-commit.yml + secrets: inherit + with: + gh_event: ${{ github.event_name }} + phan: + uses: ./.github/workflows/phan.yml + secrets: inherit + needs: [pre-commit] + with: + gh_event: ${{ github.event_name }} + phpstan: + uses: ./.github/workflows/phpstan.yml + secrets: inherit + needs: [pre-commit, phan] + with: + gh_event: ${{ github.event_name }} + #windows-ci: + # needs: [pre-commit, phan, phpstan] + # secrets: inherit + # uses: ./.github/workflows/windows-ci.yml + # with: + # gh_event: ${{ github.event_name }} + gh-travis: # Runs travis script on github runner (not on travis) + if: false + # needs: [pre-commit, phan] + # needs: [windows-ci] + secrets: inherit + uses: ./.github/workflows/gh-travis.yml + with: + gh_event: ${{ github.event_name }} + +# Note (not tested, from https://github.com/orgs/community/discussions/38361) +# To cancel jobs if one failes, the following action may help +# - if: "failure()" +# uses: "andymckay/cancel-action@0.3" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci-on-push.yml similarity index 91% rename from .github/workflows/ci.yml rename to .github/workflows/ci-on-push.yml index 39edbc3496b..45137e8ed7a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci-on-push.yml @@ -1,6 +1,6 @@ -name: "CI" +name: "CI-PUSH" -on: [push, pull_request] +on: [push] jobs: pre-commit: uses: ./.github/workflows/pre-commit.yml @@ -10,6 +10,7 @@ jobs: phan: uses: ./.github/workflows/phan.yml secrets: inherit + needs: [pre-commit] with: gh_event: ${{ github.event_name }} phpstan: @@ -19,7 +20,7 @@ jobs: with: gh_event: ${{ github.event_name }} windows-ci: - needs: [pre-commit, phan] + needs: [pre-commit, phan, phpstan] secrets: inherit uses: ./.github/workflows/windows-ci.yml with: @@ -33,7 +34,6 @@ jobs: with: gh_event: ${{ github.event_name }} - # Note (not tested, from https://github.com/orgs/community/discussions/38361) # To cancel jobs if one failes, the following action may help # - if: "failure()" diff --git a/.github/workflows/gh-travis.yml b/.github/workflows/gh-travis.yml index 30c10765f07..9d1d6aa4de0 100644 --- a/.github/workflows/gh-travis.yml +++ b/.github/workflows/gh-travis.yml @@ -3,13 +3,13 @@ name: Travis # Controls when the workflow will run on: - # push: - # pull_request: + # workflow called by the parent workflow ci.yml workflow_call: inputs: gh_event: required: true type: string + # can run job manually workflow_dispatch: concurrency: diff --git a/.github/workflows/phan.yml b/.github/workflows/phan.yml index 56a33ef76c7..e2ce5a75443 100644 --- a/.github/workflows/phan.yml +++ b/.github/workflows/phan.yml @@ -1,15 +1,12 @@ --- on: - # pull_request: - # push: - # schedule: - # # execute once a day, the 1st - # - cron: 10 9 * * * + # workflow called by the parent workflow ci.yml workflow_call: inputs: gh_event: required: true type: string + # can run job manually workflow_dispatch: concurrency: diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml index c638ee83e50..24a12cecd4b 100644 --- a/.github/workflows/phpstan.yml +++ b/.github/workflows/phpstan.yml @@ -3,18 +3,17 @@ name: PHPStan # Controls when the workflow will run on: - # push: - # pull_request: + # workflow called by the parent workflow ci.yml workflow_call: inputs: gh_event: required: true type: string + # can run job manually workflow_dispatch: concurrency: - group: stan-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref - }} + group: stan-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true env: gh_event: ${{ inputs.gh_event || github.event_name }} @@ -44,7 +43,7 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-version }} - tools: phpstan, cs2pr + tools: phpstan:1, cs2pr extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap, mysql, pgsql, sqlite3, ldap, xml, mcrypt diff --git a/.github/workflows/pr-18-autolabel.yaml b/.github/workflows/pr-18-autolabel.yaml new file mode 100644 index 00000000000..feb9ee17c97 --- /dev/null +++ b/.github/workflows/pr-18-autolabel.yaml @@ -0,0 +1,21 @@ +name: "Set label for v18" +on: + pull_request: + types: [opened, synchronize, reopened] + branches: + - "18.0" + push: + branches: + - "18.0" + +jobs: + changed-lines-count-labeler: + runs-on: ubuntu-latest + name: An action for automatically labelling pull requests based on the changed lines count + steps: + - name: Set a label + uses: vkirilichev/changed-lines-count-labeler@v0.2 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + configuration-path: .github/changed-lines-count-labeler.yml + continue-on-error: true diff --git a/.github/workflows/pr-18.yaml b/.github/workflows/pr-18.yaml new file mode 100644 index 00000000000..04b4b0ff35e --- /dev/null +++ b/.github/workflows/pr-18.yaml @@ -0,0 +1,54 @@ +name: Set reviewer for v18 +on: + pull_request: + types: [opened, synchronize, reopened] + branches: + - "18.0" + push: + branches: + - "18.0" + +jobs: + pr18: + runs-on: ubuntu-latest + + #env: + # GH_TOKEN: ${{ github.token }} + # GH_TOKENS: ${{ secrets.GITHUB_TOKEN }} + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + #- name: Install GitHub CLI + # run: | + # sudo apt update + # sudo apt install gh -y + + - name: Assign reviewer method 1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + url: ${{ github.event.pull_request.html_url }} + run: | + gh pr edit "$url" --add-assignee rycks --add-reviewer rycks + gh pr merge "$url" --merge --auto + continue-on-error: true + + - name: Assign reviewer method 2 + env: + #REVIEWER: "eldy,lvessiller-opendsi,rycks" # Remplacez par le nom d'utilisateur GitHub du reviewer + REVIEWER: "rycks" # Remplacez par le nom d'utilisateur GitHub du reviewer + run: | + echo "Run action by ${{ github.actor }}" + echo "github.token=${{ github.token }}" + echo "secrets.GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" + echo "GITHUB_EVENT_PATH=$GITHUB_EVENT_PATH" + echo Get the pr_number + pr_number=$(jq --raw-output .number < $GITHUB_EVENT_PATH) + echo "pr_number=$pr_number" + echo Authenticate login gh + gh auth login --with-token <<< "${{ secrets.GITHUB_TOKEN }}" + gh auth setup-git + echo Set the reviewer + gh pr edit $pr_number --add-reviewer "$REVIEWER" + continue-on-error: true diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 8adc5051bc2..e07dfabf259 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -1,13 +1,13 @@ --- name: pre-commit on: - # pull_request: - # push: + # workflow called by the parent workflow ci.yml workflow_call: inputs: gh_event: required: true type: string + # can run job manually workflow_dispatch: concurrency: diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 00000000000..97f218fce4d --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,28 @@ +name: Test github actions +on: + workflow_dispatch: + pull_request: + types: [opened, reopened, synchronize] + push: + +env: + ENVGHT: ${{ secrets.GITHUB_TOKEN }} + ENVGHU: ${{ github.token }} + TEST_ACCESS_KEY: ${{ secrets.TEST_ACCESS_KEY }} + TEST_VAR_REPO: ${{ vars.TEST_VAR_REPO }} + ENVLOCAL: "varenvlocal" + +jobs: + testjob: + runs-on: ubuntu-latest + steps: + - name: Log + run: | + echo "Run action by ${{ github.actor }}" + echo "github.token=${{ github.token }}" + echo "secrets.GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" + echo "GITHUB_EVENT_PATH=$GITHUB_EVENT_PATH" + echo "repo-token: ${{secrets.GITHUB_TOKEN}}" + echo "secret repository TEST_ACCESS_KEY: ${{secrets.TEST_ACCESS_KEY}}" + echo "variable repository : ${{vars.TEST_VAR_REPO}}" + echo "ENVLOCAL: ${{env.ENVLOCAL}}" diff --git a/.github/workflows/windows-ci.yml b/.github/workflows/windows-ci.yml index 9dbdf1b5ee4..0343ec771b4 100644 --- a/.github/workflows/windows-ci.yml +++ b/.github/workflows/windows-ci.yml @@ -2,13 +2,13 @@ name: Win CI # yamllint disable-line rule:truthy on: - # push: - # pull_request: + # workflow called by the parent workflow ci.yml workflow_call: inputs: gh_event: required: true type: string + # can run job manually workflow_dispatch: concurrency: @@ -36,11 +36,6 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 - - name: Setup MariaDB - uses: ankane/setup-mariadb@v1 - with: - # mariadb-version: ${{ matrix.mariadb-version }} - database: travis # Specify your database name - name: Setup PHP uses: shivammathur/setup-php@v2 with: @@ -62,7 +57,7 @@ jobs: id: cache uses: actions/cache/restore@v4 env: - HASH: ${{ hashFiles('htdocs/install/**') }} + HASH: ${{ hashFiles('htdocs/install/**', 'htdocs/filefunc.inc.php') }} KEY_ROOT: ${{ matrix.os }}-${{ env.ckey }}-${{ matrix.php_version }} with: # See https://github.com/actions/cache/issues/1275#issuecomment-1925217178 @@ -70,13 +65,20 @@ jobs: path: | ./db_init.sql ./db_init.sql.md5 + ./.cache/mariadb key: ${{ env.KEY_ROOT }}-${{ env.HASH }}-${{ env.CACHE_KEY_PART }}-${{ github.run_id }} restore-keys: | ${{ env.KEY_ROOT }}-${{ env.HASH }}-${{ env.CACHE_KEY_PART }}- ${{ env.KEY_ROOT }}-${{ env.HASH }}-${{ github.head_ref }}- ${{ env.KEY_ROOT }}-${{ env.HASH }}-${{ github.base_ref }}- ${{ env.KEY_ROOT }}-${{ env.HASH }}- - ${{ env.KEY_ROOT }}- + # ${{ env.KEY_ROOT }}- + + - name: Setup MariaDB + uses: frederic34/setup-mariadb@v1 + with: + # mariadb-version: ${{ matrix.mariadb-version }} + database: travis # Specify your database name - name: Create local php.ini with open_basedir restrictions shell: cmd @@ -189,3 +191,4 @@ jobs: path: | ./db_init.sql ./db_init.sql.md5 + ./.cache/mariadb diff --git a/.gitignore b/.gitignore index 2964b1ead0f..fb62ffeaf22 100644 --- a/.gitignore +++ b/.gitignore @@ -89,3 +89,6 @@ phpstan_custom.neon /.php-cs-fixer.cache /.php_cs.cache /.cache + +# ignore .htaccess files +.htaccess diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e7edb002653..16927ef7bbc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,7 +18,7 @@ repos: # git commit -a -m "My message" --no-verify # (Recommendation: run git commit -a .. once, then with `--no-verify`) - id: no-commit-to-branch - args: [--branch, develop, --pattern, \d+.0] + args: [--branch, develop, --pattern, \d+.0$] # This checks that xml files are correct - id: check-xml exclude: | @@ -58,6 +58,12 @@ repos: # Check that there are no files that have are the same when uppercased (conflict on windows) - id: check-case-conflict + # Beautify shell scripts + - repo: https://github.com/gitleaks/gitleaks.git + rev: v8.16.1 + hooks: + - id: gitleaks + # Beautify shell scripts - repo: https://github.com/lovesegfault/beautysh.git rev: v6.2.1 @@ -148,6 +154,8 @@ repos: ] pass_filenames: false # Run on all files - id: php-lint + exclude: + (?x)^(htdocs/includes/symfony/var-dumper/Tests/.*)$ - id: php-stan stages: [manual] files: \.(php)$ diff --git a/ChangeLog b/ChangeLog index a085dddd12e..b6d139108ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,174 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 20.0.3 compared to 20.0.2 ***** +FIX: 17.0 - missing error handling for FactureRec::fetch in card-rec.php +FIX: 17.0 - warnings due to uninitialized variables + delete code that doesn't apply to recurring invoices (AFAIK, there is no recurring credit note feature) +FIX: #31159 - TVA Account by country is not used (#31984) +FIX: #31724 (#31885) +FIX: #31890 store empty line extrafields (#32152) +FIX: #31997 +FIX: #32007 missing parameter on function multiSelectArrayWithCheckbox (#32008) +FIX: #32021 +FIX: #32171 (#32172) +FIX: #32178: repair.php: fix missing 'as' with Postgres (#32179) +FIX: #32259 +FIX: #32317 Error with report by month sales tax +FIX: #32391 +FIX: #32402 Social Contribution - Update - Drop the attached employee +FIX: #32408 Dict - module Event organisation is stable now +FIX: #32467 +FIX: Accounting Closure Duplicates, Subledger accounts, Account Labels and more... Update bookkeeping.class.php +FIX: add a line in expensereport refused +FIX: All contacts were loaded even if no thirdparty was selected (#31877) +FIX: asset: missing ref_ext field used in CommonObject::isExistingObject() (#31870) +FIX: assets: division by zero when trying to calculate depreciation on assets that don't have it (#31858) +FIX: avoid php8 warnings +FIX: broken feature, check if module is enabled +FIX: broken feature, entity can not be empty ! +FIX: broken feature, wrong GETPOSTINT parameter +FIX: BUG #32454 (Third party creating vendor) +FIX: calculate start date of cloned task from cloned project (#31799) +FIX: can not convert to reduc if draft status +FIX: comparing strings with numbers can be touchy +FIX: Debug option not working replaced by the one that works. +FIX: default user in stat page +FIX: Ensure extraparams cannot be selected by the user (#32132) +FIX: GETPOST "$check" parameter can't be empty +FIX: Hidden dropdown download link in project +FIX: stop doing a full closure without duplicate lines generated by an unclean database +FIX: in projet/element.php total_time is always back to 0 +FIX: (invoice): mutlicurrency_tx correct value +FIX: invoice: revenue stamp wrongly converted to int (#31840) +FIX: issue #28222 Edit date extrafield displayed on all on lines (#31914) +FIX: "location_incoterms" is a string +FIX: missing hook parameters +FIX: missing saving MAIN_SECURITY_MAX_NUMBER_FAILED_AUTH +FIX: old copy not needed in supplier order create method (#31733) +FIX: send mail to BCC when email formatted as Fullname (#31983) +FIX: set birthday alert (#32133) +FIX: Status not correct in Public ticket list (#31922) +FIX: swiftmailer: correctly set errors-to header (#31826) +FIX: TakePos barcode rule (#31857) +FIX: Takepos: set the country of the default customer (#31915) +FIX: Update Accounting closure with missing too many A-Nouveau #30039) +FIX: Update on a sold line of bank entry set the type to empty, now it's fixed #22539 (#31888) +FIX: update status on create supplier order for trigger (#31642) +FIX: use tax with code on supplier order line give tax code missing in supplier invoice (#32018) +FIX: warning in agenda when user have no color and AGENDA_NO_TRANSPARENT_ON_NOT_BUSY=1 +FIX: when create intervention from propal (or other object), element link is missing after creation (#32035) +FIX: with no perm on supplier, must not see supplier of the best price +FIX: wrong check +FIX: wrong trigger name (MODIFY instead UPDATE) + +***** ChangeLog for 20.0.2 compared to 20.0.1 ***** +FIX: fatal when updating recurring supplier invoice line with php8 ($remise_percent is '' instead of 0) (#31713) +FIX: supplier invoice template card: buyer and seller swapped in VAT-related function calls (probably a copy-paste from customer invoice templates) (#31446) +FIX: #25853 Thirdparty Massaction (#25868) +FIX: #28505 Blank page from thirparty to projects (#31637) +FIX: #30432 make thirdparty code_client and code_compta modifiable via API (#31668) +FIX: #31015 +FIX: #31360 delete contact when using pgsql. +FIX: #31365 Bank - Card - Ref haven't max length in edit mode (#31533) +FIX: #31452 Predefined supplier invoice - Language key & link to supplier card (#31514) +FIX: #31538 Addition to EPC-QR values <200b><200b>to correct remittance information (#31557) +FIX: Accountancy - Loan - Error on transfer (#31546) +FIX: a dictionary CANNOT have zero value in entity field (#31625) +FIX: Avoid fatal error when mysqli not available +FIX: Bad balance of td into setup page of shipments +FIX: bad test on permission makes agenda event creation on object not +FIX: can validate shipment without stock movement (#31780) +FIX: Clear of option THEME_ELDY_USEBORDERONTABLE +FIX: column position on PDF of payments +FIX: const WORKFLOW_RECEPTION_CLASSIFY_NEWD_INVOICE (#31601) +FIX: convert amount into text when using numberwords +FIX: Corrected typo preventing data from being saved (#31716) +FIX: CSS +FIX: access to media files +FIX: default visibility +FIX: dol_openinpopup for virtual card +FIX: duplicate answers in list when using global search on proposals +FIX: Edit a link +FIX: email templates for expense report not visible +FIX: Error management on cheque deposit. +FIX: error message in xls import when stream zip is not available. +FIX: Extrafield following between rec invoice and classic invoice (#31445) +FIX: Filter on month of the balance of leaves. +FIX: Fix bug select columns and access to the public ticket list from the public ticket card (case when we have connected to another client before, the track id stocked in session overwrite the new track id from the public ticket card) (#31000) +FIX: for #31237 #31524 +FIX: Get number of bank deposit wa not using the date. +FIX: If you have no stock of your product, an error is displayed when you delete the reception. (#31504) +FIX: issue on action set condition in particular when you set a deposi… (#31518) +FIX: open redirection +FIX: pagebreak when option PDF_ADD_POSITION is set +FIX: PHP-warning-multiprice-in-liste-product-if-level-is-not-defined-on-product (#31507) +FIX: Picto menu not visible +FIX: Salary - Payment card - Missing date (#31512) +FIX: Search on batch code +FIX: select variant by attribute. (#31759) +FIX: show preview pdf list expensereport (#31694) +FIX: Show twice the technical ID +FIX: space used by linked elements in PDF notes (#31459) +FIX: substitutions THIRDPARTY_XXX are not available for actioncomm reminders (#31385) +FIX: Support for PDF_ADD_POSITION was not complete +FIX: the autofix corrupted vat value must be triggered only if we are +FIX: the autofix must also fix the multicurrency value. +FIX: this constant break the dictionary admin without Multicompany (#31638) +FIX: uniformize and check delete contact action (#31384) +FIX: Vat code is lost when updating lines in POS +FIX: uniformize and check delete contact action (#31384) +FIX: Vat code is lost when updating lines in POS +FIX: When PDF_ADD_POSITION is on, the number was doing pagebreak before + +***** ChangeLog for 20.0.1 compared to 20.0.0 ***** +FIX: #30960 show and search extrafields (#31026) +FIX: #31076 Bad position of hooks +FIX: #31152 +FIX: #31237 (#31239) +FIX: #31241 (#31245) +FIX: accounting transfer when nb of lines is not zero but amount is zero +FIX: Add same security test when nuploading files from API than from GUI (#31114) +FIX: allow "class" into search string in website module +FIX: autoselect the fiscal period by default +FIX: avoid odt errors (#31126) +FIX: Backport fix fatal error on price with some truncating setup +FIX: better compatibility with some old extrafield syntax filter +FIX: box_actions.php still uses fk_user_done which no longer exists (#31190) +FIX: Browser Notification ko with firefox +FIX: custom CSS for WebPortal (#31022) +FIX: Debug calculation of the delay of purchase order +FIX: Debug option WORKFLOW_TICKET_LINK_CONTRACT. Bad id stored. Bad +FIX: dolFICalculatePaymentReference for Finland in functions_fi.lib.php (#31281) +FIX: Duplicate trigger printFieldPreListTitle +FIX: edit contract of intervention broken by CSRF protection +FIX: error return missing in mo creation when qty to consume is <= 0 (#31134) +FIX: Extrafields does not appear on form +FIX: FATAL ERROR abusively triggered due to incomplete regex (#31052) +FIX: if you call fetchLines several times, your $object->lines contains duplicates (#31167) +FIX: late order search option (v18+) (#30692) +FIX: late propal search option (v18+) (#30687) +FIX: Maxi debug edit/delete accounting transaction +FIX: member must be found to search the linked partnership (WebPortal) (#30977) +FIX: Missing picto on user link +FIX: mysql error during dump for enable sandbox M999999 (#31116) +FIX: OAuth generation of token for Microsoft, Stripe and Generic +FIX: param id in website account list from third-party card (#30975) +FIX: Position of box for shipping address in PDF +FIX: Protection to avoid an extrafield to be mandatory if computed +FIX: removed unreachable code (#31141) +FIX: Remove wrong button +FIX: retrieving user specific constant +FIX: Revert storing of ticket files into event dir, too many troubles. +FIX: Selection of country - state in resource +FIX: State dropdown is not working on User card #31198 (#31205) +FIX: Tool to convert into utf8 or utf8mb4 +FIX: use price() to display qty on a product's stats tab to avoid showing too many decimals when rounding errors are possible (#31165) +FIX: Warning visible when it should not +FIX: webhook must send POST in body. Add WEBHOOK_POST_SEND_DATA_IN_BODY +FIX: when qty is not an integer, apply price() (#31138) +FIX: Wrong price for BOM with workstation (#31142) +FIX: determine multi-currency price on object line create tpl (#28021) + ***** ChangeLog for 20.0.0 compared to 19.0 ***** @@ -12,7 +180,7 @@ NEW: Font param Look and Feel THEME_FONT_FAMILY (#29302) NEW: Param to show main menu logo in color (#29305) NEW: #27048 add form to globally set "VARIANT_ALLOW_STOCK_MOVEMENT_ON_VARIANT_PARENT" variable (#27049) NEW: #29274 Add possibility to have different mail for autocopy for holiday (#29275) -NEW: WebPortal module +NEW: Module WebPortal experimental NEW: Module Bookcal is now experimental (TimeZone not yet supported) NEW: #24031 add option MAIN_GRANDTOTAL_LIST_SHOW to always show grand total to lists (#27247) NEW: #28070 Adding mobile phone to thirdparty @@ -21,6 +189,10 @@ NEW: Accountancy - Add possibility for specific format FEC to sort with the FEC NEW: Accountancy - Expense report - Add an option to use end period for transfer (#26706) NEW: Accountancy - Show accounting result on balance NEW: Accountancy - Show import key if exist (#29265) +NEW: Accountancy - Auto-determine piece number in FEC import (#29672) +NEW: Accountancy - Option to transfer only reconciled lines from bank (#29408) +NEW: Accountancy - Separation of accounting default account for salary and expense report +NEW: Various payment - Use list of accounting account when edit (#27992) NEW: Add option to change all service dates at once NEW: Add a default limit in nb to agenda export NEW: Add a Feedback-ID into email headers @@ -73,7 +245,6 @@ NEW: Allow smileys into emailing html content NEW: Allow to set a default project for POS sales (#27042) NEW: animation for display spinner when waiting response NEW: Asset Module - make asset model creation in a single step (#26982) -NEW: auto-determine piece number in FEC import (#29672) NEW: auto fill infos in template email NEW: Automatically fill matching extra fields of object on line creation. (#27240) NEW: Can add documents on a payment (#29660) @@ -110,7 +281,7 @@ NEW: fetch object by element for website account card NEW: filter on sale representative in contact list NEW: Filter shipments by selecting multiple shipping methods (#28376) NEW: Font param Look and Feel (#29302) -NEW: fuctionnality for stock configuration prompt in AI module (#28030) +NEW: functionality for stock configuration prompt in AI module (#28030) NEW: functionality to delete contact of company list NEW: functionality to display codebar on pdf files (#29623) NEW: functionality to list event for user @@ -137,12 +308,11 @@ NEW: Module Website: Can link/unlink translation between web pages NEW: Move dir of cache for widgets NEW: multiselect with checkbox in categories/tags search for thirdparty list (#28335) NEW: new consts to redirect from massaction createbills (#29436) -NEW: new global string to preselect yes for one bill per thirparty in orderlist massaction (#29359) +NEW: new global string to preselect yes for one bill per thirdparty in orderlist massaction (#29359) NEW: notification action triggers for cancelling orders and invoices NEW: now button when editing an event NEW: online signature of shipments (#29559) NEW: On OAuth Google login, no prompt at all if already logged in Google -NEW: Option to transfer only reconciliated lines from bank (#29408) NEW: Param to show main menu logo in color look and feel (#29305) NEW: Payment page received from donations NEW: possibility to define a completely inactive module (#29289) @@ -155,7 +325,6 @@ NEW: resource address, phone, email & maxusers (#28185) NEW: Script for fast identification of missing/unused/duplicate translations NEW: search member by date NEW: See the documents of my subordinates (#28318) -NEW: separation of expense report from salary accounting code NEW: Show error on ical parse NEW: Show the profit per attendee on events NEW: signed status CRUD to contract and fichinter @@ -182,7 +351,6 @@ NEW: Update expense report card.php to allow pdf preview even without thumbnail NEW: update price with auto to use const for rounding prices (#29350) NEW: Use a nicer combo list to select the export accounting format NEW: users can set their own length for short lists -NEW: Various payment - Use list of account when edit (#27992) NEW: warning message when cloning a product whose status is not to sell (#28374) PERF: Performance enhancement on Invoice/Paiement area page PERF: Use cache for loaded users/contact on project list @@ -195,6 +363,7 @@ SEC: Reduce nb of var without WAF used when using the website module For developers or integrators: ------------------------------ +NEW: Situation invoice - Add new official progressive mode - (constant INVOICE_USE_SITUATION = 2) NEW: $noescapetags param of dol_escape_html works if attributes NEW: Add createInvoiceFromContract to API invoice (#27277) NEW: add debugging info to api/status if non-production @@ -272,14 +441,17 @@ WARNING: -------- The following changes may create regressions for some external modules, but were necessary to make Dolibarr better: -* Ldap class methods connect_bind() & dump_content() have been renamed -* More class properties (with old name in french) are now deprecated in favor of the property name in english. +* If a filter is defined into an extrafield, this filter MUST use the Universai Search Filter syntax (field:=:value) instead of th eunsecured SQL code field=value. + See https://wiki.dolibarr.org/index.php?title=Universal_Search_Filter_Syntax +* The parameter $filter of methods fetchAll() does not accept array of SQL commands but must be a string of an Universal Search Filter syntax. + See https://wiki.dolibarr.org/index.php?title=Universal_Search_Filter_Syntax * Some API HTTP return code were moved from 401 to 403 to better follow REST specification. +* More class properties (with old name in french) are now deprecated in favor of the property name in english. * dolibarrtriggers class VERSION_XXX constants have been deprecated. Please use array dictionary VERSIONS['XXX']. * Properties ->date_update and ->date_modification were merged into date_modification. * All CLI tools (into /scripts) return a positive value to the shell if error (0 remains success) for a better cross platform compatibility. On linux the exit(-1) was caught as 255, it may be now exit(1) so will be caught as 1. -* The parameter $filter of method fetchAll does not accept array of SQL but must be a string of an Universal Search Filter syntax. +* Ldap class methods connect_bind() & dump_content() have been renamed * Use of dol_eval with parameter $returnvalue=0 is deprecated. * The signature for all ->delete() method has been modified to match the modulebuilder template (so first param is now always $user), except the delete for thirdparty (still accept the id of thirdparty to delete as first parameter). Will probably be modified into another version. @@ -295,6 +467,59 @@ The following changes may create regressions for some external modules, but were * The signature of method fetch() of class CompanyBankAccount has been modified to match the signature of method Account->fetch() +***** ChangeLog for 19.0.4 compared to 19.0.3 ***** +FIX: fatal when updating recurring supplier invoice line with php8 ($remise_percent is '' instead of 0) (#31713) +FIX: supplier invoice template card: buyer and seller swapped in VAT-related function calls (probably a copy-paste from customer invoice templates) (#31446) +FIX: #25853 Thirdparty Massaction (#25868) +FIX: #28505 Blank page from thirdparty to projects (#31637) +FIX: #30757 +FIX: #30762 +FIX: #30768 allocate the correct invoice_line_id to the element timespent (#30769) +FIX: #30772 Accountancy document export - The project filter on expenses report don't work (#30824) +FIX: #30836 +FIX: #30960 show and search extrafields (#31026) +FIX: Add same security test when uploading files from API than from GUI (#31114) +FIX: ajaxik URL in ExpenseReport to load coef calculation (#30918) +FIX: attached file on first page load (#30694) +FIX: autoselect the fiscal period by default +FIX: avoid from re-initializing array result on nested hook getEntity (#30626) +FIX: avoid odt errors (#31126) +FIX: avoid pgsql error (#30678) +FIX: avoid the return "AND (())" (#30829) +FIX: Backport fix fatal error on price with some truncating setup +FIX: box_actions.php still uses fk_user_done which no longer exists (#31190) +FIX: can validate shipment without stock movement (#31780) +FIX: column position on PDF of payments +FIX: const WORKFLOW_RECEPTION_CLASSIFY_NEWD_INVOICE (#31601) +FIX: Debug extrafields for bank lines +FIX: email templates for expense report not visible +FIX: Error message overwrote when a error occurs during update of product multilangs (#30841) +FIX: error return missing in mo creation when qty to consume is <= 0 (#31134) +FIX: Extrafield following between rec invoice and classic invoice (#31445) +FIX: Fatal error on create loan schedule (#30656) +FIX: Fix bug select columns and access to the public ticket list from the public ticket card (case when we have connected to another client before, the track id stocked in session overwrite the new track id from the public ticket card) (#31000) +FIX: fixed search filter for projects resetting when set to empty (#30902) +FIX: if you call fetchLines several times, your $object->lines contains duplicates (#31167) +FIX: If you have no stock of your product, an error is displayed when you delete the reception. (#31504) +FIX: Invoice unpaid widget - SQL error on group by with constant MAIN_COMPANY_PERENTITY_SHARED (#30866) +FIX: issue on action set condition in particular when you set a deposi… (#31518) +FIX: late order search option (v18+) (#30692) +FIX: late propal search option (v18+) (#30687) +FIX: missing fk_parent_line parameter (#30806) +FIX: mysql error during dump for enable sandbox M999999 (#31116) +FIX: PHP-warning-multiprice-in-liste-product-if-level-is-not-defined-on-product (#31507) +FIX: Protection to avoid an extrafield to be mandatory if computed +FIX: purge files cron: php warnings when rest module enabled (#30919) +FIX: removed unreachable code (#31141) +FIX: show preview pdf list expensereport (#31694) +FIX: Substitution error in ticket emails in the subject (#30778) +FIX: substitutions THIRDPARTY_XXX are not available for actioncomm reminders (#31385) +FIX: use price() to display qty on a product's stats tab to avoid showing too many decimals when rounding errors are possible (#31165) +FIX: Vat code is lost when updating lines in POS +FIX: when qty is not an integer, apply price() (#31138) +FIX: Wrong default PDF model when creating the second situation invoice (#30843) +FIX: wrong subprice if price base type is TTC (#30887) + ***** ChangeLog for 19.0.3 compared to 19.0.2 ***** FIX: #29403 HRM - Unable to delete a skill in a job Profile (#29779) FIX: #29439 incomplete API return (#29796) @@ -854,6 +1079,138 @@ The following changes may create regressions for some external modules, but were * The load of hook context productdao has been removed before calling loadvirtualstock. Modules must use the context of main parent page or 'all' for all cases. +***** ChangeLog for 18.0.6 compared to 18.0.5 ***** +FIX: 16.0 - parent company gets emptied when updating a third party from the card in edit mode (#28269) +FIX: 16.0 - the e-mail templates configured in the notification module are not used if the recipient is a fixed e-mail address (#29407) +FIX: 17.0: $num doesn't take trigger-modified newref into account, leading to inconsistencies if BILL_SUPPLIER_VALIDATE changes the invoice's ref (#28684) +FIX: 17.0: fatal when updating recurring supplier invoice line with php8 ($remise_percent is '' instead of 0) (#31713) +FIX: 17.0: supplier invoice template card: buyer and seller swapped in VAT-related function calls (probably a copy-paste from customer invoice templates) (#31446) +FIX: #24265 regression cannot see all product on takepos (#28753) +FIX: #25853 Thirdparty Massaction (#25868) +FIX: #28205 +FIX: #28251 Fixing subpermission name on api_multicurrencies.class.php (#28252) +FIX: #28369 +FIX: #28518 (#28520) +FIX: #28978 FIX: #28976 +FIX: #29029 Impossible to delete an order line +FIX: #29114 Missing contact term in intervention +FIX: #29114 Translate contact term in intervention +FIX: #29439 incomplete API return (#29796) +FIX: #29496 filtering a record should not hide its child not filtered +FIX: #30010 Use conf TICKET_MESSAGE_MAIL_INTRO instead of translation key (#30081) +FIX: #30274 Add the include before executing dolibarr_set_const (#30320) +FIX: #30467 +FIX: #30768 allocate the correct invoice_line_id to the element timespent (#30769) +FIX: Accountancy export with file or not +FIX: Accountancy - Generate entries of expense report with localtax (#30411) +FIX: Accountancy - Not trunc id_import +FIX: accounting FEC import (Issue #28306) (#29414) +FIX: Add new hidden conf "DISABLE_QTY_OVERWRITTEN" (#28523) +FIX: Add same security test when uploading files from API than from GUI (#31114) +FIX: Amount of localtaxes in foreign currency was wrong on screen and PDF +FIX: an error in a complex else condition +FIX: ASSET: annual depreciation starting year (Again ;-)) #26084 (#30040) +FIX: avoid error "Column 'entity' in where clause is ambiguous" (#28270) +FIX: avoid from re-initializing array result on nested hook getEntity (#30626) +FIX: avoid php warnings (#29247) +FIX: avoid to delete "lock" and "unlock" files +FIX: avoid Unknown column 'pfp.ref_fourn' (#28145) +FIX: background color for enabled modules (#29378) +FIX: Backport fix fatal error on price with some truncating setup +FIX: Backport page inventory.php from v18 to fix pagination bugs causing data loss (#29688) +FIX: back to page on error in contact card (#29627) +FIX: Bad calculation of $nbtotalofrecord (#30183) +FIX: box_actions.php still uses fk_user_done which no longer exists (#31190) +FIX: can validate shipment without stock movement (#31780) +FIX: Condition on newDateLimReglement +FIX: Conflict with autoload (#30399) +FIX: const WORKFLOW_RECEPTION_CLASSIFY_NEWD_INVOICE (#31601) +FIX: contact/address title is always "New Contact/Address" even if the contact/address already exists (#29581) +FIX: Display the date according to user language on substitutions (#29510) +FIX: Display the real_PMP on inventory when its value is equal to 0 (#22291) +FIX: Don't display column when it's out of date (#28271) +FIX: email templates for expense report not visible +FIX: Error mesg show untranslated extrafield name (#30227) +FIX: Error message overwrote when a error occurs during update of product multilangs (#30841) +FIX: Error When cloning fourn price no default value for tva_tx (#28368) +FIX: executeHooks $object default value (#29647) +FIX: expedition PDF models using units labels (#30358) +FIX: Extrafield following between rec invoice and classic invoice (#31445) +FIX: fatal error on loading pictures in attached documents of an event (#30553) +FIX: fatal error Unsupported operand types when recording load payment +FIX: Fix bug select columns and access to the public ticket list from the public ticket card (case when we have connected to another client before, the track id stocked in session overwrite the new track id from the public ticket card) (#31000) +FIX: Fix create shipping with product who have negative stocks on warehouse but the negative stock transfer is allowed (#26217) +FIX: Fix save directory for invoice ODT and multientities +FIX: group by qty in product margin tab (#29853) +FIX: Hierarchy Employee view do not filter on employee = 1 (#29496) +FIX: if you call fetchLines several times, your $object->lines contains duplicates (#31167) +FIX: If you have no stock of your product, an error is displayed when you delete the reception. (#31504) +FIX: incorrect page numbering in PDF #29458 (#29476) +FIX: inventoryDeletePermission id define twice +FIX: issue on action set condition in particular when you set a deposi… (#31518) +FIX: issue to get the right files exported in Quadratrus export.php (#30004) +FIX: lang output for sales representative on PDF (#30469) +FIX: late order search option (#30692) and propal (#30687) +FIX: lettering (auto) for invoice deposit with company discount (#29633) +FIX: made invalid code shape error more user friendly (#29498) +FIX: Merge of thirdparties must also move uploaded files +FIX: missing entity parameter for ajax_constantonoff +FIX: missing hide "new" button where "product" or "service" module are disable +FIX: mo cloning (#29686) +FIX: modification date from label in accounting bookkeeping list (#30038) +FIX: Move the trigger for delete order line before the SQL request +FIX: multiple problems with multicompany +FIX: mysql error during dump for enable sandbox M999999 (#31116) +FIX: notification: error 500 in fixed emails due to a bad copy/paste (#29580) +FIX: notification module: for supplier orders (any of the 3 triggers), user can choose an e-mail template in conf, but the conf is not used when sending the notification (#28216) +FIX: Not qualified lines for reception (#29473) +FIX: not redirect when error occurs on updating card (#29388) +FIX: Not trancate the multicurrency rate shown on cards (even if the global MAIN_MAX_DECIMALS_SHOWN is set to 0) (#28211) +FIX: on change ref for bank account attachment are lost (#30529) +FIX: Option MAIN_DOC_USE_TIMING can be a string with date format +FIX: orders to bill menu (#30179) +FIX: Payment on customer invoice - Remove accountid in url if empty for apply default value (#28156) +FIX: PDF Fatal error : Backport fix from #23972 +FIX: PDF Translations Extrafields +FIX: permission on payment file of a tax +FIX: php8: Fatal when empty $tmpvat is an empty string (no silent conversion to '0' when used in arithmetic operations) (#29451) +FIX: PHP 8 warning on output of successful cronjob (#29922) +FIX: PHP exception on getSpecialCode (#29646) +FIX: php warning global conf (#29478) +FIX: pos: invoice date incorrectly set because of timezome mismatches (reverts #36e91da) (#30184) +FIX: public project form return an error if SOCIETE_EMAIL_UNIQUE (#29942) +FIX: purge files cron: php warnings when rest module enabled (#30919) +FIX: PUT /thirdparties/{id} and PUT /contacts/{id} should throw exception if update returns < 0 (#29596) +FIX: Regression #29340 +FIX: Repair the replenishment list (#29336) +FIX: REPLENISH MANY FOURN WHEN ORDER ALREADY CREATE (#29710) +FIX: round capital societe (#29211) +FIX: search and add extrafields to tasks when conf disabled (#29542) +FIX: show preview pdf list expensereport (#31694) +FIX: sometimes a string type instead integer is return, why ? +FIX: Special code is now transmitted by args only in order supplier (#28546) (#28619) +FIX: SQL syntax error in DDLUpdateField +FIX: subscription must be editable when accounting isn't reconciled (#28469) +FIX: substitutions THIRDPARTY_XXX are not available for actioncomm reminders (#31385) +FIX: Supplier Order search on date valid (#30448) +FIX: supplier price duplicate entry on update supplier product ref (#29290) +FIX: syntax error +FIX: TakePOS | Add product / Delete line of existing invoice +FIX: Ticket new message notification sent twice +FIX: transfer in accountancy for expense reports. +FIX: Unsigned propal having signing date (#29825) +FIX: Update asset.class.php +FIX: update date_echeance of supplier invoices when we update invoice date in the past (#29886) +FIX: use $conf->browser->os instead +FIX: use price() to display qty on a product's stats tab to avoid showing too many decimals when rounding errors are possible (#31165) +FIX: User List - Function is show in wrong column when module HRM enabled (#30186) +fix: when invoice is created by WORKFLOW_ORDER_AUTOCREATE_INVOICE on ORDER_NEW, the invoice must have the default bank account of the thirdparty is it's empty on order (#29462) +FIX: when qty is not an integer, apply price() (#31138) +FIX: Wrong currency shown in TakePOS payment page +FIX: wrong shortcut key for macintosh +FIX: wrong sql request with product category filter +FIX: wrong stock permission number + ***** ChangeLog for 18.0.5 compared to 18.0.4 ***** FIX: 17.0: deprecated field should only be a fallback FIX: 17.0 - php8 warnings: test for $field existence before checking if it is null or empty @@ -1210,7 +1567,7 @@ NEW: No overwrite of optionals during put() contact NEW: Notifications: add Customer Order delivered (ORDER_NEW) in module Notification NEW: Notifications: for Sign or Refused Propal from Online Page NEW: Now we can edit amount on VAT and salaries clone action -NEW: only get opened contact from liste_contact function, to not have access to closed contact as mail receiver +NEW: only get open contact from liste_contact function, to not have access to closed contact as mail receiver NEW: Option: MAIN_SECURITY_MAXFILESIZE_DOWNLOADED #yogosha10660 NEW: Option to manage deposit slips for more payment modes (not only NEW: Option to show column for field and line selection on the left @@ -3274,7 +3631,7 @@ FIX: fix checkbox displayed according to module project setup parameters - work FIX: inconsistency in margin recording with option "Force to sale price" FIX: invoice PDF generation after payment FIX: mask selector fournisseur if module not activate -FIX: merge thirparty also work for bank URL entry +FIX: merge thirdparty also work for bank URL entry FIX: Missing extrafields into export of agenda record FIX: missing parameter in select for POP FIX: missing return edit if update error diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index 8b50a71deb0..020caba8398 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -4,7 +4,7 @@ # \brief Dolibarr package builder (tgz, zip, rpm, deb, exe, aps) # \author (c)2004-2023 Laurent Destailleur # -# This is list of constant you can set to have generated packages moved into a specific dir: +# This is list of constant you can set to have generated packages moved into a specific dir: #DESTIBETARC='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/lastbuild' #DESTISTABLE='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/stable' #DESTIMODULES='/media/HDDATA1_LD/Mes Sites/Web/Admin1/wwwroot/files/modules' @@ -36,7 +36,7 @@ $PUBLISHBETARC="dolibarr\@vmprod1.dolibarr.org:/home/dolibarr/asso.dolibarr.org/ "RPM_FEDORA"=>"rpmbuild", "RPM_MANDRIVA"=>"rpmbuild", "RPM_OPENSUSE"=>"rpmbuild", -"DEB"=>"dpkg dpatch", +"DEB"=>"dpkg", "FLATPACK"=>"flatpack", "EXEDOLIWAMP"=>"ISCC.exe", "SNAPSHOT"=>"tar" @@ -129,7 +129,7 @@ if (! $TEMP || ! -d $TEMP) { print "$PROG.$Extension aborted.\n"; sleep 2; exit 2; -} +} $BUILDROOT="$TEMP/buildroot"; @@ -172,7 +172,7 @@ $newbuild = $BUILD; $newbuild =~ s/(dev|alpha)/1/gi; # dev $newbuild =~ s/beta(.?)/2/gi; # beta (we want beta1, beta2, betax to be same package name) $newbuild =~ s/rc(.?)/3/gi; # rc (we want rc1, rc2, rcx to be same package name) -if ($newbuild !~ /-/) { $newbuild.='-4'; } # finale is same than rc. +if ($newbuild !~ /-/) { $newbuild.='-4'; } # finale is same than rc. # now newbuild is 0-1 or 0-4 for example. Note that for native package (see debian/source/format), we should not use a dash part but to get a better version management $build = $newbuild; $build =~ s/-.*$//g; @@ -190,8 +190,8 @@ for (0..@ARGV-1) { if ($ARGV[$_] =~ /^-*target=(\w+)/i) { $target=$1; $batch=1; } if ($ARGV[$_] =~ /^-*desti=(.+)/i) { $DESTI=$1; } if ($ARGV[$_] =~ /^-*prefix=(.+)/i) { - $PREFIX=$1; - $FILENAMESNAPSHOT.="-".$PREFIX; + $PREFIX=$1; + $FILENAMESNAPSHOT.="-".$PREFIX; } } if ($ENV{"DESTIBETARC"} && $BUILD =~ /[a-z]/i) { $DESTI = $ENV{"DESTIBETARC"}; } # Force output dir if env DESTIBETARC is defined @@ -210,7 +210,7 @@ print "Target directory (DESTI) : $DESTI\n"; # Choose package targets #----------------------- if ($target) { - if ($target eq "ALL") { + if ($target eq "ALL") { foreach my $key (@LISTETARGET) { if ($key ne 'SNAPSHOT' && $key ne 'SF' && $key ne 'ASSO') { $CHOOSEDTARGET{$key}=1; } } @@ -236,10 +236,10 @@ else { printf(" %2d - %-14s (%s)\n",$cpt,"ASSO (publish)","Need ".$REQUIREMENTPUBLISH{"ASSO"}); $cpt=99; printf(" %2d - %-14s (%s)\n",$cpt,"SF (publish)","Need ".$REQUIREMENTPUBLISH{"SF"}); - + # Ask which target to build print "Choose one target number or several separated with space (0 - ".$cpt."): "; - $NUM_SCRIPT=; + $NUM_SCRIPT=; chomp($NUM_SCRIPT); if ($NUM_SCRIPT !~ /^[0-9\s]+$/) { @@ -286,11 +286,11 @@ foreach my $target (sort keys %CHOOSEDTARGET) { print "Error: You asked creation of several rpms. Because all rpm have same name, you must defined an environment variable DESTI to tell packager where it can create subdirs for each generated package.\n"; exit; } - $atleastonerpm=1; - } - foreach my $req (split(/[,\s]/,$REQUIREMENTTARGET{$target})) + $atleastonerpm=1; + } + foreach my $req (split(/[,\s]/,$REQUIREMENTTARGET{$target})) { - # Test + # Test print "Test requirement for target $target: Search '$req'... "; $newreq=$req; $newparam=''; if ($newreq eq 'zip') { $newparam.='-h'; } @@ -299,12 +299,12 @@ foreach my $target (sort keys %CHOOSEDTARGET) { print "Test command ".$cmd."... "; $ret=`$cmd`; $coderetour=$?; $coderetour2=$coderetour>>8; - if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/)) && $PROGPATH) { + if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/)) && $PROGPATH) { # Not found error, we try in PROGPATH $ret=`"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`; $coderetour=$?; $coderetour2=$coderetour>>8; $REQUIREMENTTARGET{$target}="$PROGPATH/$ALTERNATEPATH{$req}/$req"; - } + } if ($coderetour != 0 && (($coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i) || ($coderetour2 == 127 && $OS !~ /windows/))) { # Not found error @@ -333,7 +333,7 @@ $nbofpublishneedchangelog=0; foreach my $target (sort keys %CHOOSEDTARGET) { if ($target eq '-CHKSUM') { $nbofpublishneedchangelog++; } if ($CHOOSEDTARGET{$target} < 0) { next; } - if ($target ne 'EXE' && $target ne 'EXEDOLIWAMP' && $target ne '-CHKSUM') + if ($target ne 'EXE' && $target ne 'EXEDOLIWAMP' && $target ne '-CHKSUM') { $nboftargetneedbuildroot++; } @@ -397,10 +397,10 @@ if ($nboftargetok) { print "Go to directory $SOURCE\n"; $olddir=getcwd(); chdir("$SOURCE"); - + print "Clean $SOURCE/htdocs/includes/autoload.php\n"; $ret=`rm -f $SOURCE/htdocs/includes/autoload.php`; - + $ret=`git ls-files . --exclude-standard --others`; if ($ret) { @@ -409,7 +409,7 @@ if ($nboftargetok) { print "Canceled.\n"; exit; } - + print 'Create xml check file with md5 checksum with command php '.$SOURCE.'/build/generate_filelist_xml.php release='.$MAJOR.'.'.$MINOR.'.'.$BUILD."\n"; $ret=`php $SOURCE/build/generate_filelist_xml.php release=$MAJOR.$MINOR.$BUILD`; print $ret."\n"; @@ -427,13 +427,13 @@ if ($nboftargetok) { print "Go to directory $SOURCE\n"; $olddir=getcwd(); chdir("$SOURCE"); - + print 'Run git tag -a -m "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'" "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'"'."\n"; $ret=`git tag -a -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD" 2>&1`; if ($ret =~ /(already exists|existe déjà)/) { print "WARNING: Tag ".$MAJOR.'.'.$MINOR.'.'.$BUILD." already exists. Overwrite (y/N) ? "; - $QUESTIONOVERWRITETAG=; + $QUESTIONOVERWRITETAG=; chomp($QUESTIONOVERWRITETAG); if ($QUESTIONOVERWRITETAG =~ /(o|y)/) { @@ -452,7 +452,7 @@ if ($nboftargetok) { } chdir("$olddir"); } - + # Update buildroot if required #----------------------------- if ($nboftargetneedbuildroot) @@ -462,7 +462,7 @@ if ($nboftargetok) { print "Delete directory $BUILDROOT\n"; $ret=`rm -fr "$BUILDROOT"`; - + mkdir "$BUILDROOT"; mkdir "$BUILDROOT/$PROJECT"; print "Copy $SOURCE into $BUILDROOT/$PROJECT\n"; @@ -474,7 +474,7 @@ if ($nboftargetok) { print "Clean $BUILDROOT\n"; $ret=`rm -f $BUILDROOT/$PROJECT/.buildpath`; $ret=`rm -fr $BUILDROOT/$PROJECT/.cache`; - $ret=`rm -fr $BUILDROOT/$PROJECT/.codeclimate`; + $ret=`rm -fr $BUILDROOT/$PROJECT/.codeclimate.yml`; $ret=`rm -fr $BUILDROOT/$PROJECT/.externalToolBuilders`; $ret=`rm -fr $BUILDROOT/$PROJECT/.git*`; $ret=`rm -fr $BUILDROOT/$PROJECT/.project`; @@ -484,11 +484,14 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/.stickler.yml`; $ret=`rm -fr $BUILDROOT/$PROJECT/.travis.yml`; $ret=`rm -fr $BUILDROOT/$PROJECT/.tx`; + $ret=`rm -fr $BUILDROOT/$PROJECT/.pre-commit-config.yaml`; + $ret=`rm -fr $BUILDROOT/$PROJECT/.phan`; $ret=`rm -f $BUILDROOT/$PROJECT/build.xml`; $ret=`rm -f $BUILDROOT/$PROJECT/phpstan.neon`; + $ret=`rm -fr $BUILDROOT/$PROJECT/phpstan.neon.dist`; $ret=`rm -f $BUILDROOT/$PROJECT/pom.xml`; $ret=`rm -f $BUILDROOT/$PROJECT/README-*.md`; - + $ret=`rm -fr $BUILDROOT/$PROJECT/build/html`; $ret=`rm -f $BUILDROOT/$PROJECT/build/Doli*-*`; $ret=`rm -f $BUILDROOT/$PROJECT/build/dolibarr_*.deb`; @@ -557,20 +560,20 @@ if ($nboftargetok) { $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot11.png`; $ret=`rm -f $BUILDROOT/$PROJECT/doc/images/dolibarr_screenshot12.png`; - # Security to avoid to package data files + # Security to avoid to package data files print "Remove documents dir\n"; $ret=`rm -fr $BUILDROOT/$PROJECT/document`; $ret=`rm -fr $BUILDROOT/$PROJECT/documents`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/document`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/documents`; - + print "Remove subdir of custom dir\n"; print "find $BUILDROOT/$PROJECT/htdocs/custom/* -type d -exec rm -fr {} \\;\n"; $ret=`find $BUILDROOT/$PROJECT/htdocs/custom/* -type d -exec rm -fr {} \\; >/dev/null 2>&1`; # For custom we want to remove all subdirs but not files print "find $BUILDROOT/$PROJECT/htdocs/custom/* -type l -exec rm -fr {} \\;\n"; $ret=`find $BUILDROOT/$PROJECT/htdocs/custom/* -type l -exec rm -fr {} \\; >/dev/null 2>&1`; # For custom we want to remove all subdirs, even symbolic links, but not files - # Removed known external modules to avoid any error when packaging from env where external modules are tested + # Removed known external modules to avoid any error when packaging from env where external modules are tested $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/abricot*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/accountingexport*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/allscreens*`; @@ -596,15 +599,15 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/timesheet*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/webmail*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/theme/common/fontawesome-5/svgs`; - + # Removed other test files $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/test`; $ret=`rm -fr $BUILDROOT/$PROJECT/test`; $ret=`rm -fr $BUILDROOT/$PROJECT/Thumbs.db $BUILDROOT/$PROJECT/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/*/Thumbs.db`; $ret=`rm -f $BUILDROOT/$PROJECT/.cvsignore $BUILDROOT/$PROJECT/*/.cvsignore $BUILDROOT/$PROJECT/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.cvsignore`; $ret=`rm -f $BUILDROOT/$PROJECT/.gitignore $BUILDROOT/$PROJECT/*/.gitignore $BUILDROOT/$PROJECT/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.gitignore`; - - # Removed files installed by the awful composer + + # Removed files installed by the awful composer $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/geoip/sample*.*`; $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/bin`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/ckeditor/ckeditor/adapters`; # Keep this removal in case we embed libraries @@ -639,7 +642,7 @@ if ($nboftargetok) { $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/vendor`; $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/webmozart`; $ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/autoload.php`; - + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/bin`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/bin`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/bin`; @@ -649,14 +652,14 @@ if ($nboftargetok) { # Build package for each target #------------------------------ - foreach my $target (sort keys %CHOOSEDTARGET) + foreach my $target (sort keys %CHOOSEDTARGET) { if ($CHOOSEDTARGET{$target} < 0) { next; } if ($target eq '-CHKSUM') { next; } - + print "\nBuild package for target $target\n"; - if ($target eq 'SNAPSHOT') + if ($target eq 'SNAPSHOT') { $NEWDESTI=$DESTI; @@ -680,13 +683,13 @@ if ($nboftargetok) { next; } - if ($target eq 'TGZ') + if ($target eq 'TGZ') { $NEWDESTI=$DESTI; if ($NEWDESTI =~ /stable/) { mkdir($DESTI.'/standard'); - if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; } + if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; } } print "Remove target $FILENAMETGZ.tgz...\n"; @@ -700,7 +703,7 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$FILENAMETGZ/build/exe`; $ret=`rm -fr $BUILDROOT/$FILENAMETGZ/htdocs/includes/ckeditor/_source`; # We can't remove it with exclude file, we need it for some tarball packages - + print "Compress $FILENAMETGZ into $FILENAMETGZ.tgz...\n"; $cmd="tar --exclude-vcs --exclude-from \"$BUILDROOT/$PROJECT/build/tgz/tar_exclude.txt\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$BUILDROOT/$FILENAMETGZ.tgz\" $FILENAMETGZ"; print "$cmd\n"; @@ -712,14 +715,14 @@ if ($nboftargetok) { next; } - if ($target eq 'XZ') + if ($target eq 'XZ') { $NEWDESTI=$DESTI; if ($NEWDESTI =~ /stable/) { mkdir($DESTI.'/standard'); if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; } - } + } print "Remove target $FILENAMEXZ.xz...\n"; unlink("$NEWDESTI/$FILENAMEXZ.xz"); @@ -732,7 +735,7 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$FILENAMEXZ/build/exe`; $ret=`rm -fr $BUILDROOT/$FILENAMEXZ/htdocs/includes/ckeditor/_source`; # We can't remove it with exclude file, we need it for some tarball packages - + print "Compress $FILENAMEXZ into $FILENAMEXZ.xz...\n"; print "Go to directory $BUILDROOT\n"; @@ -748,15 +751,15 @@ if ($nboftargetok) { $ret=`mv "$BUILDROOT/$FILENAMEXZ.xz" "$NEWDESTI/$FILENAMEXZ.xz"`; next; } - - if ($target eq 'ZIP') + + if ($target eq 'ZIP') { $NEWDESTI=$DESTI; if ($NEWDESTI =~ /stable/) { mkdir($DESTI.'/standard'); if (-d $DESTI.'/standard') { $NEWDESTI=$DESTI.'/standard'; } - } + } print "Remove target $FILENAMEZIP.zip...\n"; unlink("$NEWDESTI/$FILENAMEZIP.zip"); @@ -779,14 +782,14 @@ if ($nboftargetok) { print $cmd."\n"; $ret= `$cmd`; chdir("$olddir"); - + # Move to final dir print "Move $FILENAMEZIP.zip to $NEWDESTI/$FILENAMEZIP.zip\n"; $ret=`mv "$BUILDROOT/$FILENAMEZIP.zip" "$NEWDESTI/$FILENAMEZIP.zip"`; next; } - - if ($target =~ /RPM/) # Linux only + + if ($target =~ /RPM/) # Linux only { $NEWDESTI=$DESTI; $subdir="package_rpm_generic"; @@ -797,7 +800,7 @@ if ($nboftargetok) { { mkdir($DESTI.'/'.$subdir); if (-d $DESTI.'/'.$subdir) { $NEWDESTI=$DESTI.'/'.$subdir; } - } + } if ($RPMDIR eq "") { $RPMDIR=$ENV{'HOME'}."/rpmbuild"; } @@ -810,7 +813,7 @@ if ($nboftargetok) { print "Create directory $BUILDROOT/$FILENAMETGZ2\n"; $ret=`rm -fr $BUILDROOT/$FILENAMETGZ2`; - + print "Copy $BUILDROOT/$PROJECT to $BUILDROOT/$FILENAMETGZ2\n"; $cmd="cp -pr '$BUILDROOT/$PROJECT' '$BUILDROOT/$FILENAMETGZ2'"; $ret=`$cmd`; @@ -836,7 +839,7 @@ if ($nboftargetok) { if ($target =~ /FEDO/i) { $BUILDFICSRC="${FILENAME}_fedora.spec"; } if ($target =~ /MAND/i) { $BUILDFICSRC="${FILENAME}_mandriva.spec"; } if ($target =~ /OPEN/i) { $BUILDFICSRC="${FILENAME}_opensuse.spec"; } - + use Date::Language; $lang=Date::Language->new('English'); $datestring = $lang->time2str("%a %b %e %Y", time); @@ -854,7 +857,7 @@ if ($nboftargetok) { } close SPECFROM; close SPECTO; - + print "Copy patch file to $RPMDIR/SOURCES\n"; $ret=`cp "$SOURCE/build/rpm/dolibarr-forrpm.patch" "$RPMDIR/SOURCES"`; $ret=`chmod 644 $RPMDIR/SOURCES/dolibarr-forrpm.patch`; @@ -876,14 +879,14 @@ if ($nboftargetok) { next; } - if ($target eq 'DEB') + if ($target eq 'DEB') { $NEWDESTI=$DESTI; if ($NEWDESTI =~ /stable/) { mkdir($DESTI.'/package_debian-ubuntu'); if (-d $DESTI.'/package_debian-ubuntu') { $NEWDESTI=$DESTI.'/package_debian-ubuntu'; } - } + } $olddir=getcwd(); @@ -964,13 +967,13 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/jquery/plugins/select2/LICENSE`; $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/mike42/escpos-php/LICENSE.md`; $ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/mobiledetect/mobiledetectlib/LICENSE.txt`; - + # Removed files we don't need (already removed) #$ret=`rm -fr $BUILDROOT/$PROJECT.tmp/htdocs/includes/ckeditor/ckeditor/_source`; - + # Rename upstream changelog to match debian rules $ret=`mv $BUILDROOT/$PROJECT.tmp/ChangeLog $BUILDROOT/$PROJECT.tmp/changelog`; - + # Prepare source package (init debian dir) print "Create directory $BUILDROOT/$PROJECT.tmp/debian\n"; $ret=`mkdir "$BUILDROOT/$PROJECT.tmp/debian"`; @@ -1008,7 +1011,7 @@ if ($nboftargetok) { $ret=`cp -f "$SOURCE/build/debian/dolibarr.postrm" "$BUILDROOT/$PROJECT.tmp/debian"`; $ret=`cp -f "$SOURCE/build/debian/dolibarr.templates" "$BUILDROOT/$PROJECT.tmp/debian"`; $ret=`cp -f "$SOURCE/build/debian/install.forced.php.install" "$BUILDROOT/$PROJECT.tmp/debian"`; - + # Set owners and permissions #print "Set owners on files/dir\n"; #$ret=`chown -R root.root $BUILDROOT/$PROJECT.tmp`; @@ -1039,8 +1042,8 @@ if ($nboftargetok) { $ret=`$cmd`; $cmd="find $BUILDROOT/$PROJECT.tmp/scripts -name '*.sh' -type f -exec chmod 755 {} \\; "; $ret=`$cmd`; - - + + print "Rename directory $BUILDROOT/$PROJECT.tmp into $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build\n"; $cmd="mv $BUILDROOT/$PROJECT.tmp $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build"; $ret=`$cmd`; @@ -1048,14 +1051,14 @@ if ($nboftargetok) { print "Go into directory $BUILDROOT\n"; chdir("$BUILDROOT"); - + # We need a tarball to be able to build "quilt" debian package (not required for native but we need patch so it is not a native) print "Compress $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build into $BUILDROOT/$FILENAMEDEBNATIVE.orig.tar.gz...\n"; $cmd="tar --exclude-vcs --exclude-from \"$BUILDROOT/$PROJECT/build/tgz/tar_exclude.txt\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$BUILDROOT/$FILENAMEDEBNATIVE.orig.tar.gz\" $PROJECT-$MAJOR.$MINOR.$build"; print $cmd."\n"; $ret=`$cmd`; - # Creation of source package + # Creation of source package print "Go into directory $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build\n"; chdir("$BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build"); #$cmd="dpkg-source -b $BUILDROOT/$PROJECT-$MAJOR.$MINOR.$build"; @@ -1074,12 +1077,12 @@ if ($nboftargetok) { $ret=`mv $BUILDROOT/*_all.deb "$NEWDESTI/"`; $ret=`mv $BUILDROOT/*.dsc "$NEWDESTI/"`; $ret=`mv $BUILDROOT/*.orig.tar.gz "$NEWDESTI/"`; - #$ret=`mv $BUILDROOT/*.debian.tar.xz "$NEWDESTI/"`; # xz file is generated when build/debian/sources/option + #$ret=`mv $BUILDROOT/*.debian.tar.xz "$NEWDESTI/"`; # xz file is generated when build/debian/sources/option $ret=`mv $BUILDROOT/*.debian.tar.gz "$NEWDESTI/"`; $ret=`mv $BUILDROOT/*.changes "$NEWDESTI/"`; next; } - + if ($target eq 'EXEDOLIWAMP') { $NEWDESTI=$DESTI; @@ -1087,22 +1090,22 @@ if ($nboftargetok) { { mkdir($DESTI.'/package_windows'); if (-d $DESTI.'/package_windows') { $NEWDESTI=$DESTI.'/package_windows'; } - } + } print "Remove target $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe...\n"; unlink "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"; - + 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"`; open(IN, '<' . $SOURCE."/build/exe/doliwamp/doliwamp.iss") or die $!; open(OUT, '>' . "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss") or die $!; @@ -1115,7 +1118,7 @@ if ($nboftargetok) { close(OUT); 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 { @@ -1129,26 +1132,26 @@ if ($nboftargetok) { 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"; - + 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=unlink("$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"); - + next; } } # Publish package for each target #-------------------------------- - foreach my $target (sort keys %CHOOSEDPUBLISH) + foreach my $target (sort keys %CHOOSEDPUBLISH) { if ($CHOOSEDPUBLISH{$target} < 0) { next; } - + print "\nList of files to publish (BUILD=$BUILD)\n"; %filestoscansf=( "$DESTI/signatures/filelist-$MAJOR.$MINOR.$BUILD.xml"=>'none', # none means it won't be published on SF @@ -1206,26 +1209,26 @@ if ($nboftargetok) { print "\n"; } - if ($target eq 'SF' || $target eq 'ASSO') + if ($target eq 'SF' || $target eq 'ASSO') { print "\n"; - + if ($target eq 'SF') { $PUBLISH = $PUBLISHSTABLE; } if ($target eq 'ASSO' && $BUILD =~ /[a-z]/i) { $PUBLISH = $PUBLISHBETARC.'/lastbuild'; } if ($target eq 'ASSO' && $BUILD =~ /^[0-9]+$/) { $PUBLISH = $PUBLISHBETARC.'/stable'; } - + $NEWPUBLISH=$PUBLISH; print "Publish to target $NEWPUBLISH. Click enter or CTRL+C...\n"; # Ask which target to build - $NUM_SCRIPT=; + $NUM_SCRIPT=; chomp($NUM_SCRIPT); print "Create empty dir /tmp/emptydir. We need it to create target dir using rsync.\n"; $ret=`mkdir -p "/tmp/emptydir/"`; - + %filestoscan=%filestoscansf; - + foreach my $file (sort keys %filestoscan) { $found=0; @@ -1235,30 +1238,30 @@ if ($nboftargetok) { if ($target eq 'SF') { if ($filestoscan{$file} eq 'none') { next; - } + } $destFolder="$NEWPUBLISH/$filestoscan{$file}/".$MAJOR.'.'.$MINOR.'.'.$BUILD; } elsif ($target eq 'ASSO' and $NEWPUBLISH =~ /stable/) { $destFolder="$NEWPUBLISH/$filestoscanstableasso{$file}"; - } + } elsif ($target eq 'ASSO' and $NEWPUBLISH !~ /stable/) { $destFolder="$NEWPUBLISH"; - } + } else # No more used { $dirnameonly=$file; - $dirnameonly =~ s/.*\/([^\/]+)\/[^\/]+$/$1/; + $dirnameonly =~ s/.*\/([^\/]+)\/[^\/]+$/$1/; $filenameonly=$file; - $filenameonly =~ s/.*\/[^\/]+\/([^\/])+$/$1/; + $filenameonly =~ s/.*\/[^\/]+\/([^\/])+$/$1/; $destFolder="$NEWPUBLISH/$dirnameonly"; } print "\n"; print "Publish file ".$file." to ".$destFolder."\n"; - # mkdir + # mkdir #my $ssh = Net::SSH::Perl->new("frs.sourceforge.net"); - #$ssh->login("$user","$pass"); + #$ssh->login("$user","$pass"); #use String::ShellQuote qw( shell_quote ); #$ssh->cmd('mkdir '.shell_quote($destFolder).' && exit'); @@ -1267,20 +1270,20 @@ if ($nboftargetok) { #$sftp->mkdir($destFolder) #$command="ssh eldy,dolibarr\@frs.sourceforge.net mkdir -p \"$destFolder\""; - #print "$command\n"; + #print "$command\n"; #my $ret=`$command 2>&1`; $command="rsync -s -e 'ssh' --recursive /tmp/emptydir/ \"".$destFolder."\""; - print "$command\n"; + print "$command\n"; my $ret=`$command 2>&1`; $command="rsync -s -e 'ssh' \"$file\" \"".$destFolder."\""; - print "$command\n"; + print "$command\n"; my $ret2=`$command 2>&1`; print "$ret2\n"; } } - } + } } print "\n----- Summary -----\n"; diff --git a/build/rpm/dolibarr_fedora.spec b/build/rpm/dolibarr_fedora.spec index cf0fee9df55..f17cf690160 100644 --- a/build/rpm/dolibarr_fedora.spec +++ b/build/rpm/dolibarr_fedora.spec @@ -158,6 +158,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/accountancy %_datadir/dolibarr/htdocs/adherents %_datadir/dolibarr/htdocs/admin +%_datadir/dolibarr/htdocs/ai %_datadir/dolibarr/htdocs/api %_datadir/dolibarr/htdocs/asset %_datadir/dolibarr/htdocs/asterisk @@ -228,6 +229,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/user %_datadir/dolibarr/htdocs/variants %_datadir/dolibarr/htdocs/webhook +%_datadir/dolibarr/htdocs/webportal %_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 4fad7e8747a..b0ac7d65e80 100644 --- a/build/rpm/dolibarr_generic.spec +++ b/build/rpm/dolibarr_generic.spec @@ -239,6 +239,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/accountancy %_datadir/dolibarr/htdocs/adherents %_datadir/dolibarr/htdocs/admin +%_datadir/dolibarr/htdocs/ai %_datadir/dolibarr/htdocs/api %_datadir/dolibarr/htdocs/asset %_datadir/dolibarr/htdocs/asterisk @@ -309,6 +310,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/user %_datadir/dolibarr/htdocs/variants %_datadir/dolibarr/htdocs/webhook +%_datadir/dolibarr/htdocs/webportal %_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 11c4fead2db..e1d70e7de93 100644 --- a/build/rpm/dolibarr_mandriva.spec +++ b/build/rpm/dolibarr_mandriva.spec @@ -1,15 +1,15 @@ #--------------------------------------------------------- # Spec file to build a rpm file # -# This is an example to build a rpm file. You can use this -# file to build a package for your own distributions and +# This is an example to build a rpm file. You can use this +# file to build a package for your own distributions and # edit it if you need to match your rules. # -------------------------------------------------------- Name: dolibarr Version: __VERSION__ Release: __RELEASE__ -Summary: ERP and CRM software for small and medium companies or foundations +Summary: ERP and CRM software for small and medium companies or foundations Summary(es): Software ERP y CRM para pequeñas y medianas empresas, asociaciones o autónomos Summary(fr): Logiciel ERP & CRM de gestion de PME/PMI, auto-entrepreneurs ou associations Summary(it): Programmo gestionale per piccole imprese, fondazioni e liberi professionisti @@ -25,32 +25,32 @@ BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build 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 +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 # Set yes to build test package, no for release (this disable need of /usr/bin/php not found by OpenSuse) AutoReqProv: no %description -An easy to use CRM & ERP open source/free software package for small -and medium companies, foundations or freelances. It includes different -features for Enterprise Resource Planning (ERP) and Customer Relationship +An easy to use CRM & ERP open source/free software package for small +and medium companies, foundations or freelances. It includes different +features for Enterprise Resource Planning (ERP) and Customer Relationship Management (CRM) but also for different other activities. -Dolibarr was designed to provide only features you need and be easy to +Dolibarr was designed to provide only features you need and be easy to use. %description -l es Un software ERP y CRM para pequeñas y medianas empresas, asociaciones -o autónomos. Incluye diferentes funcionalidades para la Planificación +o autónomos. Incluye diferentes funcionalidades para la Planificación de Recursos Empresariales (ERP) y Gestión de la Relación con los -Clientes (CRM) así como para para otras diferentes actividades. +Clientes (CRM) así como para para otras diferentes actividades. Dolibarr ha sido diseñado para suministrarle solamente las funcionalidades que necesita y haciendo hincapié en su facilidad de uso. - + %description -l fr -Logiciel ERP & CRM de gestion de PME/PMI, autoentrepreneurs, -artisans ou associations. Il permet de gérer vos clients, prospect, +Logiciel ERP & CRM de gestion de PME/PMI, autoentrepreneurs, +artisans ou associations. Il permet de gérer vos clients, prospect, fournisseurs, devis, factures, comptes bancaires, agenda, campagnes mailings et bien d'autres choses dans une interface pensée pour la simplicité. @@ -58,9 +58,9 @@ et bien d'autres choses dans une interface pensée pour la simplicité. Un programmo gestionale per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori -attività. Progettato per poter fornire solo ciò di cui hai bisogno +attività. Progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. -Programmo web, progettato per poter fornire solo ciò di +Programmo web, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. @@ -102,7 +102,7 @@ cui hai bisogno ed essere facile da usare. %{__cp} -pr build/tgz/* $RPM_BUILD_ROOT%{_datadir}/%{name}/build/tgz %{__cp} -pr htdocs $RPM_BUILD_ROOT%{_datadir}/%{name} %{__cp} -pr scripts $RPM_BUILD_ROOT%{_datadir}/%{name} -%{__rm} -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/htdocs/includes/ckeditor/_source +%{__rm} -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/htdocs/includes/ckeditor/_source %{__rm} -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/htdocs/includes/fonts # Lang @@ -111,8 +111,8 @@ echo "%dir %{_datadir}/%{name}/htdocs/langs" >> %{name}.lang for i in $RPM_BUILD_ROOT%{_datadir}/%{name}/htdocs/langs/*_* do lang=$(basename $i) - lang1=`expr substr $lang 1 2`; - lang2=`expr substr $lang 4 2 | tr "[:upper:]" "[:lower:]"`; + lang1=`expr substr $lang 1 2`; + lang2=`expr substr $lang 4 2 | tr "[:upper:]" "[:lower:]"`; echo "%dir %{_datadir}/%{name}/htdocs/langs/${lang}" >> %{name}.lang if [ "$lang1" = "$lang2" ] ; then echo "%lang(${lang1}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang" @@ -156,6 +156,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/accountancy %_datadir/dolibarr/htdocs/adherents %_datadir/dolibarr/htdocs/admin +%_datadir/dolibarr/htdocs/ai %_datadir/dolibarr/htdocs/api %_datadir/dolibarr/htdocs/asset %_datadir/dolibarr/htdocs/asterisk @@ -226,6 +227,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/user %_datadir/dolibarr/htdocs/variants %_datadir/dolibarr/htdocs/webhook +%_datadir/dolibarr/htdocs/webportal %_datadir/dolibarr/htdocs/webservices %_datadir/dolibarr/htdocs/website %_datadir/dolibarr/htdocs/workstation @@ -259,7 +261,7 @@ export apachegroup='apache'; # Remove dolibarr install/upgrade lock file if it exists %{__rm} -f $docdir/install.lock -# Create empty directory for uploaded files and generated documents +# Create empty directory for uploaded files and generated documents echo Create document directory $docdir %{__mkdir} -p $docdir @@ -269,7 +271,7 @@ echo Create document directory $docdir # If a conf already exists and its content was already completed by installer export config=%{_sysconfdir}/dolibarr/conf.php if [ -s $config ] && grep -q "File generated by" $config -then +then # File already exist. We add params not found. echo Add new params to overwrite path to use shared libraries/fonts grep -q -c "dolibarr_lib_FPDI_PATH" $config || [ ! -d "/usr/share/php/fpdi" ] || echo "" >> $config @@ -321,9 +323,9 @@ fi echo echo "----- Dolibarr %version-%release - (c) Dolibarr dev team -----" echo "Dolibarr files are now installed (into /usr/share/dolibarr)." -echo "To finish installation and use Dolibarr, click on the menu" +echo "To finish installation and use Dolibarr, click on the menu" echo "entry Dolibarr ERP-CRM or call the following page from your" -echo "web browser:" +echo "web browser:" echo "http://localhost/dolibarr/" echo "-------------------------------------------------------" echo @@ -339,7 +341,7 @@ then # Define vars export apachelink="%{_sysconfdir}/httpd/conf.d/dolibarr.conf" - + # Remove apache link if [ -L $apachelink ] ; then @@ -347,7 +349,7 @@ then %{__rm} -f $apachelink status=purge fi - + # Restart web servers if required if [ "x$status" = "xpurge" ] ; then diff --git a/build/rpm/dolibarr_opensuse.spec b/build/rpm/dolibarr_opensuse.spec index 912aa28f8e8..7a8e42664e5 100644 --- a/build/rpm/dolibarr_opensuse.spec +++ b/build/rpm/dolibarr_opensuse.spec @@ -1,15 +1,15 @@ #--------------------------------------------------------- # Spec file to build a rpm file # -# This is an example to build a rpm file. You can use this -# file to build a package for your own distributions and +# This is an example to build a rpm file. You can use this +# file to build a package for your own distributions and # edit it if you need to match your rules. # -------------------------------------------------------- Name: dolibarr Version: __VERSION__ Release: __RELEASE__ -Summary: ERP and CRM software for small and medium companies or foundations +Summary: ERP and CRM software for small and medium companies or foundations Summary(es): Software ERP y CRM para pequeñas y medianas empresas, asociaciones o autónomos Summary(fr): Logiciel ERP & CRM de gestion de PME/PMI, auto-entrepreneurs ou associations Summary(it): Programmo gestionale per piccole imprese, fondazioni e liberi professionisti @@ -26,7 +26,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: Productivity/Office/Management Requires: apache2, apache2-mod_php, php >= 5.3.0, php-gd, php-ldap, php-imap, php-mysql, php-openssl, dejavu -Requires: mysql-community-server, mysql-community-server-client +Requires: mysql-community-server, mysql-community-server-client %if 0%{?suse_version} BuildRequires: update-desktop-files fdupes %endif @@ -36,24 +36,24 @@ AutoReqProv: no %description -An easy to use CRM & ERP open source/free software package for small -and medium companies, foundations or freelances. It includes different -features for Enterprise Resource Planning (ERP) and Customer Relationship +An easy to use CRM & ERP open source/free software package for small +and medium companies, foundations or freelances. It includes different +features for Enterprise Resource Planning (ERP) and Customer Relationship Management (CRM) but also for different other activities. -Dolibarr was designed to provide only features you need and be easy to +Dolibarr was designed to provide only features you need and be easy to use. %description -l es Un software ERP y CRM para pequeñas y medianas empresas, asociaciones -o autónomos. Incluye diferentes funcionalidades para la Planificación +o autónomos. Incluye diferentes funcionalidades para la Planificación de Recursos Empresariales (ERP) y Gestión de la Relación con los -Clientes (CRM) así como para para otras diferentes actividades. +Clientes (CRM) así como para para otras diferentes actividades. Dolibarr ha sido diseñado para suministrarle solamente las funcionalidades que necesita y haciendo hincapié en su facilidad de uso. - + %description -l fr -Logiciel ERP & CRM de gestion de PME/PMI, autoentrepreneurs, -artisans ou associations. Il permet de gérer vos clients, prospect, +Logiciel ERP & CRM de gestion de PME/PMI, autoentrepreneurs, +artisans ou associations. Il permet de gérer vos clients, prospect, fournisseurs, devis, factures, comptes bancaires, agenda, campagnes mailings et bien d'autres choses dans une interface pensée pour la simplicité. @@ -61,9 +61,9 @@ et bien d'autres choses dans une interface pensée pour la simplicité. Un programmo gestionale per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori -attività. Progettato per poter fornire solo ciò di cui hai bisogno +attività. Progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. -Programmo web, progettato per poter fornire solo ciò di +Programmo web, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. @@ -102,7 +102,7 @@ cui hai bisogno ed essere facile da usare. %{__cp} -pr build/tgz/* $RPM_BUILD_ROOT%{_datadir}/%{name}/build/tgz %{__cp} -pr htdocs $RPM_BUILD_ROOT%{_datadir}/%{name} %{__cp} -pr scripts $RPM_BUILD_ROOT%{_datadir}/%{name} -%{__rm} -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/htdocs/includes/ckeditor/_source +%{__rm} -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/htdocs/includes/ckeditor/_source %{__rm} -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/htdocs/includes/fonts # Lang @@ -111,8 +111,8 @@ echo "%dir %{_datadir}/%{name}/htdocs/langs" >> %{name}.lang for i in $RPM_BUILD_ROOT%{_datadir}/%{name}/htdocs/langs/*_* do lang=$(basename $i) - lang1=`expr substr $lang 1 2`; - lang2=`expr substr $lang 4 2 | tr "[:upper:]" "[:lower:]"`; + lang1=`expr substr $lang 1 2`; + lang2=`expr substr $lang 4 2 | tr "[:upper:]" "[:lower:]"`; echo "%dir %{_datadir}/%{name}/htdocs/langs/${lang}" >> %{name}.lang if [ "$lang1" = "$lang2" ] ; then echo "%lang(${lang1}) %{_datadir}/%{name}/htdocs/langs/${lang}/*.lang" @@ -166,6 +166,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/accountancy %_datadir/dolibarr/htdocs/adherents %_datadir/dolibarr/htdocs/admin +%_datadir/dolibarr/htdocs/ai %_datadir/dolibarr/htdocs/api %_datadir/dolibarr/htdocs/asset %_datadir/dolibarr/htdocs/asterisk @@ -236,6 +237,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/user %_datadir/dolibarr/htdocs/variants %_datadir/dolibarr/htdocs/webhook +%_datadir/dolibarr/htdocs/webportal %_datadir/dolibarr/htdocs/webservices %_datadir/dolibarr/htdocs/website %_datadir/dolibarr/htdocs/workstation @@ -269,7 +271,7 @@ export apachegroup='www'; # Remove dolibarr install/upgrade lock file if it exists %{__rm} -f $docdir/install.lock -# Create empty directory for uploaded files and generated documents +# Create empty directory for uploaded files and generated documents echo Create document directory $docdir %{__mkdir} -p $docdir @@ -279,7 +281,7 @@ echo Create document directory $docdir # If a conf already exists and its content was already completed by installer export config=%{_sysconfdir}/dolibarr/conf.php if [ -s $config ] && grep -q "File generated by" $config -then +then # File already exist. We add params not found. echo Add new params to overwrite path to use shared libraries/fonts grep -q -c "dolibarr_lib_FPDI_PATH" $config || [ ! -d "/usr/share/php/fpdi" ] || echo "" >> $config @@ -291,7 +293,7 @@ then grep -q -c "dolibarr_js_JQUERY" $config || [ ! -d "/usr/share/javascript/jquery" ] || echo "" >> $config grep -q -c "dolibarr_js_JQUERY_UI" $config || [ ! -d "/usr/share/javascript/jquery-ui" ] || echo "" >> $config grep -q -c "dolibarr_js_JQUERY_FLOT" $config || [ ! -d "/usr/share/javascript/flot" ] || echo "" >> $config - grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "" >> $config + grep -q -c "dolibarr_font_DOL_DEFAULT_TTF_BOLD" $config || echo "" >> $config fi # Create a config link dolibarr.conf @@ -331,9 +333,9 @@ fi echo echo "----- Dolibarr %version-%release - (c) Dolibarr dev team -----" echo "Dolibarr files are now installed (into /usr/share/dolibarr)." -echo "To finish installation and use Dolibarr, click on the menu" +echo "To finish installation and use Dolibarr, click on the menu" echo "entry Dolibarr ERP-CRM or call the following page from your" -echo "web browser:" +echo "web browser:" echo "http://localhost/dolibarr/" echo "-------------------------------------------------------" echo @@ -346,10 +348,10 @@ if [ "x$1" = "x0" ] ; then # Remove echo "Removed package" - + # Define vars export apachelink="%{_sysconfdir}/apache2/conf.d/dolibarr.conf" - + # Remove apache link if [ -L $apachelink ] ; then @@ -357,7 +359,7 @@ then %{__rm} -f $apachelink status=purge fi - + # Restart web servers if required if [ "x$status" = "xpurge" ] ; then diff --git a/dev/initdemo/mysqldump_dolibarr_3.5.0.sql b/dev/initdemo/mysqldump_dolibarr_3.5.0.sql index c6d16c22e45..f94c3238db3 100644 --- a/dev/initdemo/mysqldump_dolibarr_3.5.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_3.5.0.sql @@ -1150,7 +1150,7 @@ CREATE TABLE `llx_c_field_list` ( LOCK TABLES `llx_c_field_list` WRITE; /*!40000 ALTER TABLE `llx_c_field_list` DISABLE KEYS */; -INSERT INTO `llx_c_field_list` VALUES (1,'2011-02-06 11:18:30','product_default',1,'p.ref','ref','Ref','left',1,1,'1',1),(2,'2011-02-06 11:18:30','product_default',1,'p.label','label','Label','left',1,1,'1',2),(3,'2011-02-06 11:18:30','product_default',1,'p.barcode','barcode','BarCode','center',1,1,'$conf->barcode->enabled',3),(4,'2011-02-06 11:18:30','product_default',1,'p.tms','datem','DateModification','center',1,0,'1',4),(5,'2011-02-06 11:18:30','product_default',1,'p.price','price','SellingPriceHT','right',1,0,'1',5),(6,'2011-02-06 11:18:30','product_default',1,'p.price_ttc','price_ttc','SellingPriceTTC','right',1,0,'1',6),(7,'2011-02-06 11:18:30','product_default',1,'p.stock','stock','Stock','right',0,0,'$conf->stock->enabled',7),(8,'2011-02-06 11:18:30','product_default',1,'p.envente','status','Status','right',1,0,'1',8); +INSERT INTO `llx_c_field_list` VALUES (1,'2011-02-06 11:18:30','product_default',1,'p.ref','ref','Ref','left',1,1,'1',1),(2,'2011-02-06 11:18:30','product_default',1,'p.label','label','Label','left',1,1,'1',2),(3,'2011-02-06 11:18:30','product_default',1,'p.barcode','barcode','BarCode','center',1,1,'isModEnabled("barcode")',3),(4,'2011-02-06 11:18:30','product_default',1,'p.tms','datem','DateModification','center',1,0,'1',4),(5,'2011-02-06 11:18:30','product_default',1,'p.price','price','SellingPriceHT','right',1,0,'1',5),(6,'2011-02-06 11:18:30','product_default',1,'p.price_ttc','price_ttc','SellingPriceTTC','right',1,0,'1',6),(7,'2011-02-06 11:18:30','product_default',1,'p.stock','stock','Stock','right',0,0,'isModEnabled("stock")',7),(8,'2011-02-06 11:18:30','product_default',1,'p.envente','status','Status','right',1,0,'1',8); /*!40000 ALTER TABLE `llx_c_field_list` ENABLE KEYS */; UNLOCK TABLES; diff --git a/dev/setup/phpunit/setup_conf.sh b/dev/setup/phpunit/setup_conf.sh index 870f5977bea..4fd88149572 100755 --- a/dev/setup/phpunit/setup_conf.sh +++ b/dev/setup/phpunit/setup_conf.sh @@ -128,7 +128,12 @@ if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ] || [ "$DB" = 'postgresql' ]; the echo "MySQL flush" ${SUDO} "${MYSQL}" -u "$DB_ROOT" -h 127.0.0.1 $PASS_OPT -e 'FLUSH PRIVILEGES;' - sum=$(find "${TRAVIS_BUILD_DIR}/htdocs/install" -type f -exec md5sum {} + | LC_ALL=C sort | md5sum) + # shellcheck disable=2046 + # filefunc.inc.php holds the version, so include it" + sum=$(md5sum $(find "${TRAVIS_BUILD_DIR}/htdocs/install" -type f ; echo "${TRAVIS_BUILD_DIR}/filefunc.inc.php" ) | md5sum) + # shellcheck disable=2046 + cnt=$(md5sum $(find "${TRAVIS_BUILD_DIR}/htdocs/install" -type f) | wc) + echo "NEWSUM $sum COUNT:$cnt" load_cache=0 if [ -r "$DB_CACHE_FILE".md5 ] && [ -r "$DB_CACHE_FILE" ] && [ -x "$(which "${MYSQLDUMP}")" ] ; then cache_sum="$(<"$DB_CACHE_FILE".md5)" @@ -192,11 +197,39 @@ if [ "$load_cache" != "1" ] ; then ( cd "${TRAVIS_BUILD_DIR}/htdocs/install" || exit 1 + # Get the target version from the filefunc.inc.php file + target_version=$(sed -n "s/.*define('DOL_VERSION',[[:space:]]*'\\([0-9.]*\\).*/\\1/p" ../filefunc.inc.php) ; echo $target_version + # Default in case that failed + target_version=${target_version:=20.0.0} + + # Sequence of versions for upgrade process (to be completed) VERSIONS=("3.5.0" "3.6.0" "3.7.0" "3.8.0" "3.9.0") VERSIONS+=("4.0.0") VERSIONS+=("5.0.0" "6.0.0" "7.0.0" "8.0.0" "9.0.0") VERSIONS+=("10.0.0" "11.0.0" "12.0.0" "13.0.0" "14.0.0") VERSIONS+=("15.0.0" "16.0.0" "18.0.0" "19.0.0" "20.0.0") + + # Append versions up to the current dolibarr version + last_version=${VERSIONS[-1]} + + target_major=${target_version%%.*} + last_major=${last_version%%.*} + + # Add versions up to target_version + while (( last_major < target_major )); do + ((last_major++)) + VERSIONS+=("${last_major}.0.0") + done + + # Add target_version if it's not already in the list + last_version=${VERSIONS[-1]} + if [[ "${last_version}" != "${target_version}" ]]; then + VERSIONS+=("$target_version") + fi + + last_version=${VERSIONS[-1]} # Keep last_version up-to-date + + # Proceed with the upgrade process pVer=${VERSIONS[0]} for v in "${VERSIONS[@]:1}" ; do LOGNAME="${TRAVIS_BUILD_DIR}/upgrade${pVer//./}${v//./}" diff --git a/dev/tools/codespell/codespell-lines-ignore.txt b/dev/tools/codespell/codespell-lines-ignore.txt index 4d4b5db599f..6e8868933f3 100644 --- a/dev/tools/codespell/codespell-lines-ignore.txt +++ b/dev/tools/codespell/codespell-lines-ignore.txt @@ -19,6 +19,7 @@ print ''; $date = $overview[0]->udate; $dateb = $this->db->jdate($data[$j]->datea); + $dateemail = dol_stringtotime((string) $overview[0]->udate, 'gmt'); $link->datea = $this->db->jdate($obj->datea); $object->periode = $newdateperiod; $out .= dol_print_date($file->datea, 'dayhour'); diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 2eea530e96e..df139d5d60d 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -450,6 +450,10 @@ if ($resql) { print '
'; + $parameters = array('chartofaccounts' => $chartofaccounts, 'permissiontoadd' => $permissiontoadd, 'permissiontodelete' => $permissiontodelete); + $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $accounting, $action); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; diff --git a/htdocs/accountancy/admin/categories_list.php b/htdocs/accountancy/admin/categories_list.php index 1891b492296..1401252a352 100644 --- a/htdocs/accountancy/admin/categories_list.php +++ b/htdocs/accountancy/admin/categories_list.php @@ -900,7 +900,7 @@ if ($resql) { // Active print ''; if ($canbedisabled) { - print '
'.$actl[$obj->active].''; + print ''.$actl[$obj->active].''; } else { print $langs->trans("AlwaysActive"); } diff --git a/htdocs/accountancy/admin/fiscalyear_card.php b/htdocs/accountancy/admin/fiscalyear_card.php index 3d7cd6b0185..1e5b91224d9 100644 --- a/htdocs/accountancy/admin/fiscalyear_card.php +++ b/htdocs/accountancy/admin/fiscalyear_card.php @@ -94,7 +94,7 @@ if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } -if ($action == 'confirm_delete' && $confirm == "yes") { +if ($action == 'confirm_delete' && $confirm == "yes" && $permissiontoadd) { $result = $object->delete($user); if ($result >= 0) { header("Location: fiscalyear.php"); @@ -102,7 +102,7 @@ if ($action == 'confirm_delete' && $confirm == "yes") { } else { setEventMessages($object->error, $object->errors, 'errors'); } -} elseif ($action == 'add') { +} elseif ($action == 'add' && $permissiontoadd) { if (!GETPOST('cancel', 'alpha')) { $error = 0; @@ -144,7 +144,7 @@ if ($action == 'confirm_delete' && $confirm == "yes") { header("Location: ./fiscalyear.php"); exit(); } -} elseif ($action == 'update') { +} elseif ($action == 'update' && $permissiontoadd) { // Update record if (!GETPOST('cancel', 'alpha')) { $result = $object->fetch($id); @@ -166,8 +166,19 @@ if ($action == 'confirm_delete' && $confirm == "yes") { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit(); } -} +} elseif ($action == 'reopen' && $permissiontoadd && getDolGlobalString('ACCOUNTING_CAN_REOPEN_CLOSED_PERIOD')) { + $result = $object->fetch($id); + $object->status = GETPOSTINT('status'); + $result = $object->update($user); + + if ($result > 0) { + header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); + exit(); + } else { + setEventMessages($object->error, $object->errors, 'errors'); + } +} /* @@ -364,6 +375,10 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($user->hasRight('accounting', 'fiscalyear', 'write')) { print '
'; + if (getDolGlobalString('ACCOUNTING_CAN_REOPEN_CLOSED_PERIOD') && $object->status == $object::STATUS_CLOSED) { + print dolGetButtonAction($langs->trans("ReOpen"), '', 'reopen', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=reopen&token='.newToken(), 'reopen', $permissiontoadd); + } + print ''.$langs->trans('Modify').''; //print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', $permissiontodelete); diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index afbf52d24ea..05e81886fe1 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -566,7 +566,7 @@ if ($resql) { } $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook + $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $moreforfilter .= $hookmanager->resPrint; } else { diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index 02678032298..f7f53f34140 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -70,8 +70,9 @@ $sortfield = GETPOST('sortfield', 'aZ09comma'); $sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page"); if (empty($page) || $page == -1 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha') || (empty($toselect) && $massaction === '0')) { + // If $page is not defined, or '' or -1 or if we click on clear filters or if we select empty mass action $page = 0; -} // If $page is not defined, or '' or -1 or if we click on clear filters or if we select empty mass action +} $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; @@ -392,7 +393,7 @@ if ($action != 'export_csv') { print '
'; print $moreforfilter; $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook + $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/accountancy/bookkeeping/card.php b/htdocs/accountancy/bookkeeping/card.php index d1b6d6f212b..2062918581e 100644 --- a/htdocs/accountancy/bookkeeping/card.php +++ b/htdocs/accountancy/bookkeeping/card.php @@ -35,18 +35,20 @@ require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingjournal.class.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php'; +require_once DOL_DOCUMENT_ROOT.'/accountancy/class/lettering.class.php'; // Load translation files required by the page $langs->loadLangs(array("accountancy", "bills", "compta")); $action = GETPOST('action', 'aZ09'); $cancel = GETPOST('cancel', 'aZ09'); +$confirm = GETPOST('confirm', 'alpha'); $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') $id = GETPOSTINT('id'); // id of record $mode = GETPOST('mode', 'aZ09'); // '' or '_tmp' -$piece_num = GETPOSTINT("piece_num"); // id of transaction (several lines share the same transaction id) +$piece_num = GETPOSTINT("piece_num") ? GETPOSTINT("piece_num") : GETPOST('ref'); // id of transaction (several lines share the same transaction id) $accountingaccount = new AccountingAccount($db); $accountingjournal = new AccountingJournal($db); @@ -78,6 +80,9 @@ if (!empty($update)) { $action = 'confirm_update'; } +// Initialize a technical object to manage hooks of page. Note that conf->hooks_modules contains an array of hook context +$hookmanager->initHooks(array('bookkeepingcard', 'globalcard')); + $object = new BookKeeping($db); // Security check @@ -92,6 +97,7 @@ if (!$user->hasRight('accounting', 'mouvements', 'lire')) { } $permissiontoadd = $user->hasRight('accounting', 'mouvements', 'creer'); +$permissiontodelete = $user->hasRight('accounting', 'mouvements', 'supprimer'); /* @@ -211,6 +217,7 @@ if (empty($reshook)) { } $result = $object->createStd($user, false, $mode); + if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } else { @@ -224,7 +231,7 @@ if (empty($reshook)) { $action = ''; } } - } elseif ($action == "confirm_delete" && $permissiontoadd) { + } elseif ($action == "confirm_delete" && $permissiontoadd) { // Delete line $object = new BookKeeping($db); $result = $object->fetch($id, null, $mode); @@ -273,6 +280,7 @@ if (empty($reshook)) { $object->amount = 0; $result = $object->createStd($user, 0, $mode); + if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); @@ -339,6 +347,66 @@ if (empty($reshook)) { exit; } } + + // Delete all lines into the transaction + $toselect = explode(',', GETPOST('toselect', 'alphanohtml')); + + if ($action == 'deletebookkeepingwriting' && $confirm == "yes" && $permissiontodelete) { + $db->begin(); + + if (getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING')) { + $lettering = new Lettering($db); + $nb_lettering = $lettering->bookkeepingLetteringAll($toselect, true); + if ($nb_lettering < 0) { + setEventMessages('', $lettering->errors, 'errors'); + $error++; + } + } + + $nbok = 0; + $result = 0; + if (!$error) { + foreach ($toselect as $toselectid) { + $result = $object->fetch($toselectid); + if ($result >= 0 && (!isset($object->date_validation) || $object->date_validation === '')) { + $result = $object->deleteMvtNum($object->piece_num); + if ($result >= 0) { + $nbok += $result; + } else { + setEventMessages($object->error, $object->errors, 'errors'); + $error++; + break; + } + } elseif ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + $error++; + break; + } elseif (isset($object->date_validation) && $object->date_validation != '') { + setEventMessages($langs->trans("ValidatedRecordWhereFound"), null, 'errors'); + $error++; + break; + } + } + } + + if (!$error) { + $db->commit(); + + // Message for elements well deleted + if ($nbok > 1) { + setEventMessages($langs->trans("RecordsDeleted", $nbok), null, 'mesgs'); + } elseif ($nbok > 0) { + setEventMessages($langs->trans("RecordDeleted", $nbok), null, 'mesgs'); + } else { + setEventMessages($langs->trans("NoRecordDeleted"), null, 'mesgs'); + } + + header("Location: ".DOL_URL_ROOT.'/accountancy/bookkeeping/list.php?noreset=1'); + exit; + } else { + $db->rollback(); + } + } } @@ -352,6 +420,7 @@ $formaccounting = new FormAccounting($db); $title = $langs->trans("CreateMvts"); $help_url = 'EN:Module_Double_Entry_Accounting|FR:Module_Comptabilité_en_Partie_Double'; + llxHeader('', $title, $help_url, '', 0, 0, '', '', '', 'mod-accountancy accountancy-consultation page-card'); // Confirmation to delete the command @@ -431,11 +500,11 @@ if ($action == 'create') { if (!empty($object->piece_num)) { $backlink = ''.$langs->trans('BackToList').''; - if ($mode == '_tmp') { + /*if ($mode == '_tmp') { print load_fiche_titre($langs->trans("CreateMvts"), $backlink); } else { print load_fiche_titre($langs->trans("UpdateMvts"), $backlink); - } + }*/ $head = array(); $h = 0; @@ -446,13 +515,22 @@ if ($action == 'create') { print dol_get_fiche_head($head, 'transaction', '', -1); - //dol_banner_tab($object, '', $backlink); + $object->ref = (string) $object->piece_num; + $object->label = $object->doc_ref; + + $morehtmlref = '
'; + $morehtmlref .= '
'; + $morehtmlref .= $object->label; + $morehtmlref .= '
'; + + dol_banner_tab($object, 'ref', $backlink, 1, 'piece_num', 'piece_num', $morehtmlref); print '
'; + print '
'; print '
'; - print ''; + print '
'; // Account movement print ''; @@ -460,6 +538,37 @@ if ($action == 'create') { print ''; print ''; + // Ref document + print ''; + print ''; + // Date print ''; print ''; print ''; print ''; + for ($i = 2; $i <= 13; $i++) { $cursormonth = (getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1) + $i - 2); if ($cursormonth > 12) { @@ -428,17 +418,19 @@ if ($resql) { $cursoryear = ($cursormonth < getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1)) ? $y + 1 : $y; $tmp = dol_getdate(dol_get_last_day($cursoryear, $cursormonth, 'gmt'), false, 'gmt'); - print ''; } - print ''; + + print ''; + print ''; } $db->free($resql); @@ -584,7 +576,7 @@ if (getDolGlobalString('SHOW_TOTAL_OF_PREVIOUS_LISTS_IN_LIN_PAGE')) { // This pa print '
'; print '
'.($mode == '_tmp' ? ''.$langs->trans("Draft").'' : $object->piece_num).'
'; + print ''; + if ($action != 'editdocref') { + print ''; + } + print '
'; + print $langs->trans('Piece'); + print ''; + if ($permissiontoadd) { + print 'piece_num).'&mode='.urlencode((string) $mode).'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).''; + } + print '
'; + print '
'; + if ($action == 'editdocref') { + print '
'; + if ($optioncss != '') { + print ''; + } + print ''; + print ''; + print ''; + print ''; + print ''; + print '
'; + } else { + print $object->doc_ref; + } + print '
'; print ''; print ''; - // Ref document - print ''; - print ''; - print '
'; @@ -522,41 +631,11 @@ if ($action == 'create') { print '
'; - print ''; - if ($action != 'editdocref') { - print ''; - } - print '
'; - print $langs->trans('Piece'); - print ''; - if ($permissiontoadd) { - print 'piece_num).'&mode='.urlencode((string) $mode).'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).''; - } - print '
'; - print '
'; - if ($action == 'editdocref') { - print '
'; - if ($optioncss != '') { - print ''; - } - print ''; - print ''; - print ''; - print ''; - print ''; - print '
'; - } else { - print $object->doc_ref; - } - print '
'; print ''; + print '
'; print '
'; @@ -651,21 +730,52 @@ if ($action == 'create') { print '
'; - print dol_get_fiche_end(); - + print ''; print '
'; - print '
'; + + print dol_get_fiche_end(); + $result = $object->fetchAllPerMvt($piece_num, $mode); // This load $object->linesmvt if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } else { + // Variable that contains all transaction lines + $tmptoselect = array(); + $atleastonevalidated = 0; + $atleastoneexported = 0; + foreach ($object->linesmvt as $line) { + $tmptoselect[] = $line->id; + if (!empty($line->date_validation)) { + $atleastonevalidated = 1; + } + if (!empty($line->date_export) || !empty($line->date_validation)) { + $atleastoneexported = 1; + } + } + + if ($mode != '_tmp' && !$atleastonevalidated) { + print "\n".'
'."\n"; + + $parameters = array(); + $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + if (empty($reshook)) { + if ($permissiontodelete) { + if (!isset($hookmanager->resArray['no_button_edit']) || $hookmanager->resArray['no_button_edit'] != 1) { + print dolGetButtonAction('', $langs->trans('Delete'), 'delete', DOL_URL_ROOT.'/accountancy/bookkeeping/card.php?action=deletebookkeepingwriting&confirm=yes&token='.newToken().'&piece_num='.((int) $object->piece_num).'&toselect='.implode(',', $tmptoselect), '', $permissiontodelete); + } + } + } + + print '
'; + } + // List of movements print load_fiche_titre($langs->trans("ListeMvts"), '', ''); - print '
'; + print ''; if ($optioncss != '') { print ''; } @@ -745,7 +855,7 @@ if ($action == 'create') { print '
'; - print $formaccounting->select_account('', 'accountingaccount_number', 1, array(), 1, 1, 'minwidth200 maxwidth500'); + print $formaccounting->select_account($action == 'add' ? GETPOST('accountingaccount_number') : '', 'accountingaccount_number', 1, array(), 1, 1, 'minwidth200 maxwidth500'); print ''; // TODO For the moment we keep a free input text instead of a combo. The select_auxaccount has problem because: @@ -830,10 +940,12 @@ if ($action == 'create') { if ($mode == '_tmp' && $action == '' && $permissiontoadd) { print '
'; print '
'; - if ($total_debit == $total_credit) { - print ''.$langs->trans("ValidTransaction").''; + if (empty($total_debit) && empty($total_credit)) { + print ''; + } elseif ($total_debit == $total_credit) { + print ''.$langs->trans("ValidTransaction").''; } else { - print ''; + print ''; } print '   '; diff --git a/htdocs/accountancy/bookkeeping/export.php b/htdocs/accountancy/bookkeeping/export.php index f2768fd24f3..853a86e6322 100644 --- a/htdocs/accountancy/bookkeeping/export.php +++ b/htdocs/accountancy/bookkeeping/export.php @@ -459,7 +459,7 @@ if (empty($reshook)) { $param .= '&search_import_key='.urlencode($search_import_key); } - if ($action == 'setreexport') { + if ($action == 'setreexport' && $user->hasRight('accounting', 'mouvements', 'export')) { $setreexport = GETPOSTINT('value'); if (!dolibarr_set_const($db, "ACCOUNTING_REEXPORT", $setreexport, 'yesno', 0, '', $conf->entity)) { $error++; diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index bca44e90273..f6cfbf1b2e1 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -218,6 +218,8 @@ if (!$user->hasRight('accounting', 'mouvements', 'lire')) { accessforbidden(); } +$permissiontoadd = $user->hasRight('accounting', 'mouvements', 'creer'); + /* * Actions @@ -514,8 +516,8 @@ if (empty($reshook)) { } // mass actions on lettering - if (!$error && getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING') && $user->hasRight('accounting', 'mouvements', 'creer')) { - if ($massaction == 'letteringauto') { + if (!$error && getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING')) { + if ($massaction == 'letteringauto' && $permissiontoadd) { $lettering = new Lettering($db); $nb_lettering = $lettering->bookkeepingLetteringAll($toselect); if ($nb_lettering < 0) { @@ -536,7 +538,7 @@ if (empty($reshook)) { header('Location: ' . $_SERVER['PHP_SELF'] . '?noreset=1' . $param); exit(); } - } elseif ($massaction == 'letteringmanual') { + } elseif ($massaction == 'letteringmanual' && $permissiontoadd) { $lettering = new Lettering($db); $result = $lettering->updateLettering($toselect); if ($result < 0) { @@ -546,7 +548,7 @@ if (empty($reshook)) { header('Location: ' . $_SERVER['PHP_SELF'] . '?noreset=1' . $param); exit(); } - } elseif ($action == 'unletteringauto' && $confirm == "yes") { + } elseif ($action == 'unletteringauto' && $confirm == "yes" && $permissiontoadd) { $lettering = new Lettering($db); $nb_lettering = $lettering->bookkeepingLetteringAll($toselect, true); if ($nb_lettering < 0) { @@ -567,7 +569,7 @@ if (empty($reshook)) { header('Location: ' . $_SERVER['PHP_SELF'] . '?noreset=1' . $param); exit(); } - } elseif ($action == 'unletteringmanual' && $confirm == "yes") { + } elseif ($action == 'unletteringmanual' && $confirm == "yes" && $permissiontoadd) { $lettering = new Lettering($db); $nb_lettering = $lettering->deleteLettering($toselect); if ($result < 0) { diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index 607bc34cb08..a3d3cb67c94 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -203,6 +203,8 @@ if (!$user->hasRight('accounting', 'mouvements', 'lire')) { $error = 0; +$permissiontoadd = $user->hasRight('accounting', 'mouvements', 'creer'); + /* * Action @@ -476,8 +478,8 @@ if (empty($reshook)) { } // others mass actions - if (!$error && getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING') && $user->hasRight('accounting', 'mouvements', 'creer')) { - if ($massaction == 'letteringauto') { + if (!$error && getDolGlobalInt('ACCOUNTING_ENABLE_LETTERING')) { + if ($massaction == 'letteringauto' && $permissiontoadd) { $lettering = new Lettering($db); $nb_lettering = $lettering->bookkeepingLetteringAll($toselect); if ($nb_lettering < 0) { @@ -498,7 +500,7 @@ if (empty($reshook)) { header('Location: ' . $_SERVER['PHP_SELF'] . '?noreset=1' . $param); exit(); } - } elseif ($massaction == 'letteringmanual') { + } elseif ($massaction == 'letteringmanual' && $permissiontoadd) { $lettering = new Lettering($db); $result = $lettering->updateLettering($toselect); if ($result < 0) { @@ -508,7 +510,7 @@ if (empty($reshook)) { header('Location: ' . $_SERVER['PHP_SELF'] . '?noreset=1' . $param); exit(); } - } elseif ($action == 'unletteringauto' && $confirm == "yes") { + } elseif ($action == 'unletteringauto' && $confirm == "yes" && $permissiontoadd) { $lettering = new Lettering($db); $nb_lettering = $lettering->bookkeepingLetteringAll($toselect, true); if ($nb_lettering < 0) { @@ -529,7 +531,7 @@ if (empty($reshook)) { header('Location: ' . $_SERVER['PHP_SELF'] . '?noreset=1' . $param); exit(); } - } elseif ($action == 'unletteringmanual' && $confirm == "yes") { + } elseif ($action == 'unletteringmanual' && $confirm == "yes" && $permissiontoadd) { $lettering = new Lettering($db); $nb_lettering = $lettering->deleteLettering($toselect); if ($result < 0) { @@ -798,7 +800,7 @@ $moreforfilter .= '
'; $moreforfilter .= ''; $parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $moreforfilter .= $hookmanager->resPrint; } else { diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 40f04f743b2..03fffa54ed4 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -3,7 +3,8 @@ * Copyright (C) 2015-2022 Alexandre Spangaro * Copyright (C) 2015-2020 Florian Henry * Copyright (C) 2018-2024 Frédéric France - * Copyright (C) 2024 MDW + * Copyright (C) 2024 MDW + * Copyright (C) 2024 Jose MARTINEZ * * 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 @@ -68,7 +69,7 @@ class BookKeeping extends CommonObject public $doc_date; /** - * @var int Deadline for payment + * @var int|null|'' Deadline for payment */ public $date_lim_reglement; @@ -98,12 +99,12 @@ class BookKeeping extends CommonObject public $thirdparty_code; /** - * @var string subledger account + * @var string|null subledger account */ public $subledger_account; /** - * @var string subledger label + * @var string|null subledger label */ public $subledger_label; @@ -329,7 +330,7 @@ class BookKeeping extends CommonObject $this->piece_num = 0; // First check if line not yet already in bookkeeping. - // Note that we must include 'doc_type - fk_doc - numero_compte - label' to be sure to have unicity of line (because we may have several lines + // Note that we must include 'doc_type - fk_doc - numero_compte - label - subledger_account (if not empty)' to be sure to have unicity of line (because we may have several lines // with same doc_type, fk_doc, numero_compte for 1 invoice line when using localtaxes with same account) // WARNING: This is not reliable, label may have been modified. This is just a small protection. // The page that make transfer make the test on couple (doc_type - fk_doc) only. @@ -343,6 +344,9 @@ class BookKeeping extends CommonObject } $sql .= " AND numero_compte = '".$this->db->escape($this->numero_compte)."'"; $sql .= " AND label_operation = '".$this->db->escape($this->label_operation)."'"; + if (!empty($this->subledger_account)) { + $sql .= " AND subledger_account = '".$this->db->escape($this->subledger_account)."'"; + } $sql .= " AND entity = ".$conf->entity; // Do not use getEntity for accounting features $resql = $this->db->query($sql); @@ -1704,7 +1708,7 @@ class BookKeeping extends CommonObject * * @param int $piecenum Piecenum to delete * @param string $mode Mode ('' or '_tmp') - * @return int Result + * @return int Nb of record deleted */ public function deleteMvtNum($piecenum, $mode = '') { @@ -1715,6 +1719,8 @@ class BookKeeping extends CommonObject return -1; } + $nbprocessed = 0; + $this->db->begin(); // first check if line not yet in bookkeeping @@ -1735,10 +1741,13 @@ class BookKeeping extends CommonObject } $this->db->rollback(); return -1; + } else { + $nbprocessed = $this->db->affected_rows($resql); } $this->db->commit(); - return 1; + + return $nbprocessed; } /** @@ -2346,12 +2355,20 @@ class BookKeeping extends CommonObject $sql_list = array(); if (!empty($conf->cache['active_fiscal_period_cached']) && is_array($conf->cache['active_fiscal_period_cached'])) { + $i = 0; foreach ($conf->cache['active_fiscal_period_cached'] as $fiscal_period) { - $sql_list[] = "('" . $this->db->idate($fiscal_period['date_start']) . "' <= ".$this->db->sanitize($alias)."doc_date AND ".$this->db->sanitize($alias)."doc_date <= '" . $this->db->idate($fiscal_period['date_end']) . "')"; + $sql_list[$i] = "("; + $sql_list[$i] .= "'".$this->db->idate($fiscal_period['date_start']) . "' <= ".$this->db->sanitize($alias)."doc_date"; + if (!empty($fiscal_period['date_end'])) { + $sql_list[$i] .= " AND "; + $sql_list[$i] .= $this->db->sanitize($alias)."doc_date <= '" . $this->db->idate($fiscal_period['date_end'])."'"; + } + $sql_list[$i] .= ")"; + $i++; } } $sqlsanitized = implode(' OR ', $sql_list); - self::$can_modify_bookkeeping_sql_cached[$alias] = !empty($sql_list) ? " AND (".$sqlsanitized.")" : ""; + self::$can_modify_bookkeeping_sql_cached[$alias] = empty($sql_list) ? "" : " AND (".$sqlsanitized.")"; } return self::$can_modify_bookkeeping_sql_cached[$alias]; @@ -2520,7 +2537,7 @@ class BookKeeping extends CommonObject } /** - * Get list of fiscal period + * Get list of fiscal period ordered by start date. * * @param string $filter Filter * @return array|int Return integer <0 if KO, Fiscal periods : [[id, date_start, date_end, label], ...] @@ -2801,10 +2818,8 @@ class BookKeeping extends CommonObject $sql = 'SELECT'; $sql .= " t.numero_compte,"; - $sql .= " t.label_compte,"; if ($separate_auxiliary_account) { - $sql .= " t.subledger_account,"; - $sql .= " t.subledger_label,"; + $sql .= " NULLIF(t.subledger_account, '') as subledger_account,"; // fix db issues with Null or "" values } $sql .= " aa.pcg_type,"; $sql .= " (SUM(t.credit) - SUM(t.debit)) as opening_balance"; @@ -2816,10 +2831,11 @@ class BookKeeping extends CommonObject $sql .= ' AND aa.pcg_type IN (' . $this->db->sanitize(implode(',', $pcg_type_filter), 1) . ')'; $sql .= " AND DATE(t.doc_date) >= '" . $this->db->idate($fiscal_period->date_start) . "'"; $sql .= " AND DATE(t.doc_date) <= '" . $this->db->idate($fiscal_period->date_end) . "'"; - $sql .= ' GROUP BY t.numero_compte, t.label_compte, aa.pcg_type'; + $sql .= ' GROUP BY t.numero_compte, aa.pcg_type'; if ($separate_auxiliary_account) { - $sql .= ' ,t.subledger_account, t.subledger_label'; + $sql .= " , NULLIF(t.subledger_account, '')"; } + $sql .= ' HAVING (SUM(t.credit) - SUM(t.debit)) != 0 '; // Exclude rows with opening_balance = 0 $sql .= $this->db->order("t.numero_compte", "ASC"); $resql = $this->db->query($sql); @@ -2840,24 +2856,41 @@ class BookKeeping extends CommonObject $bookkeeping = new BookKeeping($this->db); $bookkeeping->doc_date = $new_fiscal_period->date_start; - $bookkeeping->date_lim_reglement = 0; - $bookkeeping->doc_ref = $new_fiscal_period->label; + + $bookkeeping->date_lim_reglement = ''; + $bookkeeping->doc_ref = $fiscal_period->label; + $bookkeeping->date_creation = $now; $bookkeeping->doc_type = 'closure'; - $bookkeeping->fk_doc = $new_fiscal_period->id; + $bookkeeping->fk_doc = $fiscal_period->id; $bookkeeping->fk_docdet = 0; // Useless, can be several lines that are source of this record to add $bookkeeping->thirdparty_code = ''; if ($separate_auxiliary_account) { $bookkeeping->subledger_account = $obj->subledger_account; - $bookkeeping->subledger_label = $obj->subledger_label; + $sql = 'SELECT'; + $sql .= " subledger_label"; + $sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element; + $sql .= " WHERE subledger_account = '" . $this->db->escape($obj->subledger_account) . "'"; + $sql .= " ORDER BY doc_date DESC"; + $sql .= " LIMIT 1"; + $result = $this->db->query($sql); + if (!$result) { + $this->errors[] = 'Error: ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); + $error++; + } + $objtmp = $this->db->fetch_object($result); + $bookkeeping->subledger_label = $objtmp->subledger_label; // latest subledger label used } else { - $bookkeeping->subledger_account = ''; - $bookkeeping->subledger_label = ''; + $bookkeeping->subledger_account = null; + $bookkeeping->subledger_label = null; } $bookkeeping->numero_compte = $obj->numero_compte; - $bookkeeping->label_compte = $obj->label_compte; + $accountingaccount = new AccountingAccount($this->db); + $accountingaccount->fetch('', $obj->numero_compte); + $bookkeeping->label_compte = $accountingaccount->label; // latest account label used $bookkeeping->label_operation = $new_fiscal_period->label; $bookkeeping->montant = $mt; @@ -2887,21 +2920,35 @@ class BookKeeping extends CommonObject $bookkeeping = new BookKeeping($this->db); $bookkeeping->doc_date = $new_fiscal_period->date_start; - $bookkeeping->date_lim_reglement = 0; - $bookkeeping->doc_ref = $new_fiscal_period->label; + + $bookkeeping->date_lim_reglement = ''; + $bookkeeping->doc_ref = $fiscal_period->label; + $bookkeeping->date_creation = $now; $bookkeeping->doc_type = 'closure'; - $bookkeeping->fk_doc = $new_fiscal_period->id; + $bookkeeping->fk_doc = $fiscal_period->id; $bookkeeping->fk_docdet = 0; // Useless, can be several lines that are source of this record to add $bookkeeping->thirdparty_code = ''; if ($separate_auxiliary_account) { - $bookkeeping->subledger_label = ''; $bookkeeping->subledger_account = $obj->subledger_account; - $bookkeeping->subledger_label = $obj->subledger_label; + $sql = 'SELECT'; + $sql .= " subledger_label"; + $sql .= " FROM " . MAIN_DB_PREFIX . $this->table_element; + $sql .= " WHERE subledger_account = '" . $this->db->escape($obj->subledger_account) . "'"; + $sql .= " ORDER BY doc_date DESC"; + $sql .= " LIMIT 1"; + $result = $this->db->query($sql); + if (!$result) { + $this->errors[] = 'Error: ' . $this->db->lasterror(); + dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); + $error++; + } + $objtmp = $this->db->fetch_object($result); + $bookkeeping->subledger_label = $objtmp->subledger_label; // latest subledger label used } else { - $bookkeeping->subledger_account = ''; - $bookkeeping->subledger_label = ''; + $bookkeeping->subledger_account = null; + $bookkeeping->subledger_label = null; } $bookkeeping->numero_compte = $accountingaccount->account_number; diff --git a/htdocs/accountancy/closure/index.php b/htdocs/accountancy/closure/index.php index 025430976cc..262282f033e 100644 --- a/htdocs/accountancy/closure/index.php +++ b/htdocs/accountancy/closure/index.php @@ -60,33 +60,57 @@ if (!is_array($fiscal_periods)) { setEventMessages($object->error, $object->errors, 'errors'); } +// Define the arrays of fiscal periods $active_fiscal_periods = array(); +$first_active_fiscal_period = null; $last_fiscal_period = null; $current_fiscal_period = null; $next_fiscal_period = null; $next_active_fiscal_period = null; if (is_array($fiscal_periods)) { - foreach ($fiscal_periods as $fiscal_period) { - if (empty($fiscal_period['status'])) { + foreach ($fiscal_periods as $fiscal_period) { // List of fiscal periods sorted by date start + if (empty($first_active_fiscal_period) && empty($fiscal_period['status'])) { + $first_active_fiscal_period = $fiscal_period; + } + if (empty($fiscal_period['status'])) { // if not closed $active_fiscal_periods[] = $fiscal_period; } - if (isset($current_fiscal_period)) { + if (isset($current_fiscal_period)) { // If we already reach then current fiscal period, then this one is the next one just after if (!isset($next_fiscal_period)) { $next_fiscal_period = $fiscal_period; } if (!isset($next_active_fiscal_period) && empty($fiscal_period['status'])) { $next_active_fiscal_period = $fiscal_period; } - } else { + } else { // If we did not found the current fiscal period if ($fiscal_period_id == $fiscal_period['id'] || (empty($fiscal_period_id) && $fiscal_period['date_start'] <= $now && $now <= $fiscal_period['date_end'])) { $current_fiscal_period = $fiscal_period; } else { - $last_fiscal_period = $fiscal_period; + $last_fiscal_period = $fiscal_period; // $last_fiscal_period is in fact $previous_fiscal_period } } } } +// If a current fiscal period open with an end and start date was not found, we autoselect the first one that is open and has a start and end date defined +if (empty($current_fiscal_period) && !empty($first_active_fiscal_period)) { + $current_fiscal_period = $first_active_fiscal_period; + $last_fiscal_period = null; + $foundcurrent = false; + foreach ($fiscal_periods as $fiscal_period) { // List of fiscal periods sorted by date start + if ($foundcurrent) { + $next_fiscal_period = $fiscal_period; + break; + } + if ($fiscal_period['id'] == $current_fiscal_period['id']) { + $foundcurrent = true; + } + if (!$foundcurrent) { + $last_fiscal_period = $fiscal_period; + } + } +} + $accounting_groups_used_for_balance_sheet_account = array_filter(array_map('trim', explode(',', getDolGlobalString('ACCOUNTING_CLOSURE_ACCOUNTING_GROUPS_USED_FOR_BALANCE_SHEET_ACCOUNT'))), 'strlen'); $accounting_groups_used_for_income_statement = array_filter(array_map('trim', explode(',', getDolGlobalString('ACCOUNTING_CLOSURE_ACCOUNTING_GROUPS_USED_FOR_INCOME_STATEMENT'))), 'strlen'); @@ -123,14 +147,27 @@ if (empty($reshook)) { $separate_auxiliary_account = GETPOST('separate_auxiliary_account', 'aZ09'); $generate_bookkeeping_records = GETPOST('generate_bookkeeping_records', 'aZ09'); - $result = $object->closeFiscalPeriod($current_fiscal_period['id'], $new_fiscal_period_id, $separate_auxiliary_account, $generate_bookkeeping_records); - if ($result < 0) { - setEventMessages($object->error, $object->errors, 'errors'); - } else { - setEventMessages($langs->trans("AccountancyClosureCloseSuccessfully"), null, 'mesgs'); + $error = 0; + if ($generate_bookkeeping_records) { + if (!getDolGlobalString('ACCOUNTING_CLOSURE_ACCOUNTING_GROUPS_USED_FOR_BALANCE_SHEET_ACCOUNT')) { + $error++; + setEventMessages($langs->trans("ErrorAccountingClosureSetupNotComplete"), null, 'errors'); + } elseif (!getDolGlobalString('ACCOUNTING_CLOSURE_ACCOUNTING_GROUPS_USED_FOR_INCOME_STATEMENT')) { + $error++; + setEventMessages($langs->trans("ErrorAccountingClosureSetupNotComplete"), null, 'errors'); + } + } - header("Location: " . $_SERVER['PHP_SELF'] . (isset($current_fiscal_period) ? '?fiscal_period_id=' . $current_fiscal_period['id'] : '')); - exit; + if (!$error) { + $result = $object->closeFiscalPeriod($current_fiscal_period['id'], $new_fiscal_period_id, $separate_auxiliary_account, $generate_bookkeeping_records); + if ($result < 0) { + setEventMessages($object->error, $object->errors, 'errors'); + } else { + setEventMessages($langs->trans("AccountancyClosureCloseSuccessfully"), null, 'mesgs'); + + header("Location: " . $_SERVER['PHP_SELF'] . (isset($current_fiscal_period) ? '?fiscal_period_id=' . $current_fiscal_period['id'] : '')); + exit; + } } } elseif ($action == 'confirm_step_3' && $confirm == "yes") { $inventory_journal_id = GETPOSTINT('inventory_journal_id'); @@ -300,10 +337,8 @@ if (!empty($current_fiscal_period)) { print load_fiche_titre($langs->trans("Closure") . " - " . $fiscal_period_nav_text, '', 'title_accountancy'); if (empty($current_fiscal_period)) { - print $langs->trans('ErrorNoFiscalPeriodActiveFound', $langs->trans("Accounting"), $langs->trans("Setup"), $langs->trans("FiscalPeriod")); -} - -if (isset($current_fiscal_period)) { + print $langs->trans('ErrorNoFiscalPeriodActiveFound', $langs->transnoentitiesnoconv("Accounting"), $langs->transnoentitiesnoconv("Setup"), $langs->transnoentitiesnoconv("FiscalPeriod")); +} else { // Step 1 $head = array(); $head[0][0] = DOL_URL_ROOT . '/accountancy/closure/index.php?fiscal_period_id=' . $current_fiscal_period['id']; @@ -369,7 +404,7 @@ if (isset($current_fiscal_period)) { if (empty($count_by_month['total']) && empty($current_fiscal_period['status'])) { $button = '' . $langs->trans("AccountancyClosureClose") . ''; } else { - $button = '' . $langs->trans("AccountancyClosureClose") . ''; + $button = '' . $langs->trans("AccountancyClosureClose") . ''; } print_barre_liste('', '', '', '', '', '', '', -1, '', '', 0, $button, '', 0, 1, 0); diff --git a/htdocs/accountancy/customer/card.php b/htdocs/accountancy/customer/card.php index f606cc48868..a7e20f22b74 100644 --- a/htdocs/accountancy/customer/card.php +++ b/htdocs/accountancy/customer/card.php @@ -101,13 +101,14 @@ $formaccounting = new FormAccounting($db); if (!empty($id)) { $sql = "SELECT f.ref, f.rowid as facid, l.fk_product, l.description, l.price,"; - $sql .= " l.qty, l.rowid, l.tva_tx, l.remise_percent, l.subprice,"; + $sql .= " l.qty, l.rowid, l.tva_tx, l.remise_percent, l.subprice, l.fk_code_ventilation,"; + $sql .= " p.rowid as product_id, p.ref as product_ref, p.label as product_label,"; if (getDolGlobalString('MAIN_PRODUCT_PERENTITY_SHARED')) { $sql .= " ppe.accountancy_code_sell as code_sell,"; } else { $sql .= " p.accountancy_code_sell as code_sell,"; } - $sql .= " l.fk_code_ventilation, aa.account_number, aa.label"; + $sql .= " aa.account_number, aa.label"; $sql .= " FROM ".MAIN_DB_PREFIX."facturedet as l"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = l.fk_product"; if (getDolGlobalString('MAIN_PRODUCT_PERENTITY_SHARED')) { @@ -139,18 +140,23 @@ if (!empty($id)) { print ''; - // Ref facture + // Ref invoice print ''; $facture_static->ref = $objp->ref; $facture_static->id = $objp->facid; print ''; print ''; - print ''; - print ''; - print ''; + print ''; + + print ''; + print ''; + + print ''; + print '
'.$langs->trans("Invoice").''.$facture_static->getNomUrl(1).'
'.$langs->trans("Line").''.nl2br($objp->description).'
'.$langs->trans("Account").''; + print '
'.$langs->trans("Description").''.dolPrintHTML($objp->description).'
'.$langs->trans("ProductLabel").''.dol_trunc($objp->product_label, 24).'
'.$langs->trans("Account").''; print $formaccounting->select_account($objp->fk_code_ventilation, 'codeventil', 1); print '
'; print dol_get_fiche_end(); diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index 59e31753f39..9594f4aa722 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -17,7 +17,6 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . - * */ /** @@ -40,17 +39,6 @@ $langs->loadLangs(array("compta", "bills", "other", "accountancy")); $validatemonth = GETPOSTINT('validatemonth'); $validateyear = GETPOSTINT('validateyear'); -// Security check -if (!isModEnabled('accounting')) { - accessforbidden(); -} -if ($user->socid > 0) { - accessforbidden(); -} -if (!$user->hasRight('accounting', 'bind', 'write')) { - accessforbidden(); -} - $accountingAccount = new AccountingAccount($db); $month_start = getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1); @@ -84,7 +72,7 @@ if (!isModEnabled('accounting')) { if ($user->socid > 0) { accessforbidden(); } -if (!$user->hasRight('accounting', 'mouvements', 'lire')) { +if (!$user->hasRight('accounting', 'bind', 'write')) { accessforbidden(); } @@ -118,7 +106,7 @@ if (($action == 'clean' || $action == 'validatehistory') && $user->hasRight('acc // End clean database } -if ($action == 'validatehistory') { +if ($action == 'validatehistory' && $user->hasRight('accounting', 'bind', 'write')) { $error = 0; $nbbinddone = 0; $nbbindfailed = 0; @@ -259,7 +247,7 @@ if ($action == 'validatehistory') { } if ($suggestedid > 0) { - $sqlupdate = "UPDATE ".MAIN_DB_PREFIX."facturedet"; + $sqlupdate = "UPDATE ".$db->prefix()."facturedet"; $sqlupdate .= " SET fk_code_ventilation = ".((int) $suggestedid); $sqlupdate .= " WHERE fk_code_ventilation <= 0 AND product_type <= 2 AND rowid = ".((int) $facture_static_det->id); @@ -320,7 +308,7 @@ if (getDolGlobalInt('INVOICE_USE_SITUATION') == 1) { $y = $year_current; -$buttonbind = ''.img_picto($langs->trans("ValidateHistory"), 'link', 'class="pictofixedwidth fa-color-unset"').$langs->trans("ValidateHistory").''; +$buttonbind = ''.img_picto($langs->trans("ValidateHistory"), 'link', 'class="pictofixedwidth fa-color-unset"').$langs->trans("ValidateHistory").''; print_barre_liste(img_picto('', 'unlink', 'class="paddingright fa-color-unset"').$langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1, 0, $buttonbind); //print load_fiche_titre($langs->trans("OverviewOfAmountOfLinesNotBound"), $buttonbind, ''); @@ -362,8 +350,9 @@ for ($i = 1; $i <= 12; $i++) { $j -= 12; } $sql .= " SUM(".$db->ifsql("MONTH(f.datef) = ".((string) $j), "fd.total_ht", "0").") AS month".str_pad((string) $j, 2, "0", STR_PAD_LEFT).","; + $sql .= " SUM(".$db->ifsql("MONTH(f.datef) = ".((string) $j), "1", "0").") AS nbmonth".str_pad((string) $j, 2, "0", STR_PAD_LEFT).","; } -$sql .= " SUM(fd.total_ht) as total"; +$sql .= " SUM(fd.total_ht) as total, COUNT(fd.rowid) as nb"; $sql .= " FROM ".MAIN_DB_PREFIX."facturedet as fd"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."facture as f ON f.rowid = fd.fk_facture"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON aa.rowid = fd.fk_code_ventilation"; @@ -420,6 +409,7 @@ if ($resql) { print $row[1]; } print '
'; - print price($row[$i]); + print ''; + print price($row[2*$i - 2]); // Add link to make binding - if (!empty(price2num($row[$i]))) { + if (!empty(price2num($row[2*$i - 2])) || !empty($row[2*$i - 1])) { print ''; print img_picto($langs->trans("ValidateHistory").' ('.$langs->trans('Month'.str_pad((string) $cursormonth, 2, '0', STR_PAD_LEFT)).' '.$cursoryear.')', 'link', 'class="marginleft2"'); print ''; } print ''.price($row[14]).''.price($row[26]).'
'; - print ''; + print ''; for ($i = 1; $i <= 12; $i++) { $j = $i + getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1) - 1; if ($j > 12) { diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 6d8dd13951f..cb14e29cce5 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -390,7 +390,7 @@ if ($result) { print_barre_liste($langs->trans("InvoiceLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit); print ''.$langs->trans("DescVentilDoneCustomer").'
'; - print '
'.$langs->trans("ChangeAccount").' '; + print '
'.$langs->trans("ChangeAccount").'
'; print $formaccounting->select_account($account_parent, 'account_parent', 2, array(), 0, 0, 'maxwidth300 maxwidthonsmartphone valignmiddle'); print '
'; diff --git a/htdocs/accountancy/expensereport/index.php b/htdocs/accountancy/expensereport/index.php index 1b272d2daee..174ff4039da 100644 --- a/htdocs/accountancy/expensereport/index.php +++ b/htdocs/accountancy/expensereport/index.php @@ -77,17 +77,17 @@ if (!$user->hasRight('accounting', 'bind', 'write')) { */ if (($action == 'clean' || $action == 'validatehistory') && $user->hasRight('accounting', 'bind', 'write')) { - // Clean database + // Clean database by removing binding done on non existing or no more existing accounts $db->begin(); - $sql1 = "UPDATE ".MAIN_DB_PREFIX."expensereport_det as erd"; + $sql1 = "UPDATE ".$db->prefix()."expensereport_det as erd"; $sql1 .= " SET fk_code_ventilation = 0"; $sql1 .= ' WHERE erd.fk_code_ventilation NOT IN'; $sql1 .= ' (SELECT accnt.rowid '; - $sql1 .= ' FROM '.MAIN_DB_PREFIX.'accounting_account as accnt'; - $sql1 .= ' INNER JOIN '.MAIN_DB_PREFIX.'accounting_system as syst'; + $sql1 .= ' FROM '.$db->prefix().'accounting_account as accnt'; + $sql1 .= ' INNER JOIN '.$db->prefix().'accounting_system as syst'; $sql1 .= ' ON accnt.fk_pcg_version = syst.pcg_version AND syst.rowid='.((int) getDolGlobalInt('CHARTOFACCOUNTS')).' AND accnt.entity = '.((int) $conf->entity).')'; - $sql1 .= ' AND erd.fk_expensereport IN (SELECT rowid FROM '.MAIN_DB_PREFIX.'expensereport WHERE entity = '.((int) $conf->entity).')'; - $sql1 .= ' AND fk_code_ventilation <> 0'; + $sql1 .= ' AND erd.fk_expensereport IN (SELECT rowid FROM '.$db->prefix().'expensereport WHERE entity = '.((int) $conf->entity).')'; + $sql1 .= " AND fk_code_ventilation <> 0"; dol_syslog("htdocs/accountancy/customer/index.php fixaccountancycode", LOG_DEBUG); $resql1 = $db->query($sql1); if (!$resql1) { @@ -100,7 +100,7 @@ if (($action == 'clean' || $action == 'validatehistory') && $user->hasRight('acc // End clean database } -if ($action == 'validatehistory') { +if ($action == 'validatehistory' && $user->hasRight('accounting', 'bind', 'write')) { $error = 0; $nbbinddone = 0; $nbbindfailed = 0; @@ -194,7 +194,7 @@ print '
'; $y = $year_current; -$buttonbind = ''.img_picto('', 'link', 'class="paddingright fa-color-unset"').$langs->trans("ValidateHistory").''; +$buttonbind = ''.img_picto($langs->trans("ValidateHistory"), 'link', 'class="pictofixedwidth fa-color-unset"').$langs->trans("ValidateHistory").''; print_barre_liste(img_picto('', 'unlink', 'class="paddingright fa-color-unset"').$langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1, 0, $buttonbind); @@ -238,8 +238,9 @@ for ($i = 1; $i <= 12; $i++) { $j -= 12; } $sql .= " SUM(".$db->ifsql("MONTH(er.date_debut) = ".((int) $j), "erd.total_ht", "0").") AS month".str_pad((string) $j, 2, "0", STR_PAD_LEFT).","; + $sql .= " SUM(".$db->ifsql("MONTH(er.date_debut) = ".((string) $j), "1", "0").") AS nbmonth".str_pad((string) $j, 2, "0", STR_PAD_LEFT).","; } -$sql .= " SUM(erd.total_ht) as total"; +$sql .= " SUM(erd.total_ht) as total, COUNT(erd.rowid) as nb"; $sql .= " FROM ".MAIN_DB_PREFIX."expensereport_det as erd"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."expensereport as er ON er.rowid = erd.fk_expensereport"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."accounting_account as aa ON aa.rowid = erd.fk_code_ventilation"; @@ -294,17 +295,17 @@ if ($resql) { $cursoryear = ($cursormonth < getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1)) ? $y + 1 : $y; $tmp = dol_getdate(dol_get_last_day($cursoryear, $cursormonth, 'gmt'), false, 'gmt'); - print '
'; } - print ''; + print ''; print ''; } $db->free($resql); @@ -371,14 +372,12 @@ if ($resql) { while ($row = $db->fetch_row($resql)) { print ''; - print ''; - //print ''; } - print ''; + print ''; print ''; } $db->free($resql); diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index 5245c67d683..44ba2ce010f 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -398,7 +398,7 @@ if ($result) { print_barre_liste($langs->trans("InvoiceLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit); print ''.$langs->trans("DescVentilDoneSupplier").'
'; - print '
'.$langs->trans("ChangeAccount").' '; + print '
'.$langs->trans("ChangeAccount").'
'; print $formaccounting->select_account($account_parent, 'account_parent', 2, array(), 0, 0, 'maxwidth300 maxwidthonsmartphone valignmiddle'); print '
'; diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index 34a49fc3d3b..ab5fe37bff3 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -56,6 +56,7 @@ $langs->loadLangs(array("companies", "bills", "members", "users", "other", "payp $action = GETPOST('action', 'aZ09'); $cancel = GETPOST('cancel', 'alpha'); $backtopage = GETPOST('backtopage', 'alpha'); +$backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); // if not set, $backtopage will be used $confirm = GETPOST('confirm', 'alpha'); $rowid = GETPOSTINT('rowid'); $id = GETPOST('id') ? GETPOSTINT('id') : $rowid; @@ -181,7 +182,7 @@ if (empty($reshook)) { } } - if ($action == 'setsocid') { + if ($action == 'setsocid' && $caneditfieldmember) { $error = 0; if (!$error) { if ($socid != $object->socid) { // If link differs from currently in database @@ -1078,9 +1079,9 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { // State if (!getDolGlobalString('MEMBER_DISABLE_STATE')) { print '
'; - print ''; + print ''; // Website print ''; diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 3aeb87792f0..39bda3d854c 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -3045,11 +3045,13 @@ class Adherent extends CommonObject $tmp = dol_getdate($now); $datetosearchfor = dol_time_plus_duree(dol_mktime(0, 0, 0, $tmp['mon'], $tmp['mday'], $tmp['year'], 'tzserver'), $daysbeforeend, 'd'); + $datetosearchforend = dol_time_plus_duree(dol_mktime(23, 59, 59, $tmp['mon'], $tmp['mday'], $tmp['year'], 'tzserver'), $daysbeforeend, 'd'); $sql = 'SELECT rowid FROM '.MAIN_DB_PREFIX.'adherent'; $sql .= " WHERE entity = ".((int) $conf->entity); // Do not use getEntity('adherent').")" here, we want the batch to be on its entity only; $sql .= " AND statut = 1"; - $sql .= " AND datefin = '".$this->db->idate($datetosearchfor)."'"; + $sql .= " AND datefin >= '".$this->db->idate($datetosearchfor)."'"; + $sql .= " AND datefin <= '".$this->db->idate($datetosearchforend)."'"; //$sql .= " LIMIT 10000"; $resql = $this->db->query($sql); diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 958e6d9940d..571445c922d 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -267,7 +267,6 @@ if (empty($reshook)) { $search_filter = ""; $search_status = ""; $search_import_key = ''; - $catid = ""; $search_all = ""; $toselect = array(); $search_datec_start = ''; @@ -521,7 +520,7 @@ if ($search_firstname) { $sql .= natural_search("d.firstname", $search_firstname); } if ($search_lastname) { - $sql .= natural_search(array("d.firstname", "d.lastname", "d.societe"), $search_lastname); + $sql .= natural_search("d.lastname", $search_lastname); } if ($search_gender != '' && $search_gender != '-1') { $sql .= natural_search("d.gender", $search_gender); @@ -530,7 +529,7 @@ if ($search_login) { $sql .= natural_search("d.login", $search_login); } if ($search_company) { - $sql .= natural_search("s.nom", $search_company); + $sql .= natural_search(array("s.nom", "d.societe"), $search_company); } if ($search_email) { $sql .= natural_search("d.email", $search_email); @@ -849,9 +848,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/adherents/stats/index.php b/htdocs/adherents/stats/index.php index 17488f72508..721aaff3b51 100644 --- a/htdocs/adherents/stats/index.php +++ b/htdocs/adherents/stats/index.php @@ -192,7 +192,7 @@ foreach ($data as $val) { $oldyear--; print ''; print ''; diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index 7062d83d122..90652107064 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -46,7 +46,7 @@ $mode = GETPOST('mode', 'aZ'); // The output mode ('list', 'kanban', 'hier $statut = (GETPOSTISSET("statut") ? GETPOST("statut", "alpha") : 1); $search_ref = GETPOST('search_ref', 'alpha'); -$search_type = GETPOST('search_type', 'alpha'); +$search_type = GETPOSTINT('search_type'); $search_lastname = GETPOST('search_lastname', 'alpha'); $search_firstname = GETPOST('search_firstname', 'alpha'); $search_login = GETPOST('search_login', 'alpha'); @@ -168,6 +168,7 @@ if (empty($reshook)) { $form = new Form($db); $subscription = new Subscription($db); $adherent = new Adherent($db); +$adht = new AdherentType($db); $accountstatic = new Account($db); $now = dol_now(); @@ -209,7 +210,7 @@ if ($search_ref) { $sql .= " AND 1 = 2"; // Always wrong } } -if ($search_type) { +if ($search_type > 0) { $sql .= natural_search(array('c.fk_type'), $search_type); } if ($search_lastname) { @@ -311,7 +312,7 @@ if ($statut != '') { $param .= "&statut=".urlencode($statut); } if ($search_type) { - $param .= "&search_type=".urlencode($search_type); + $param .= "&search_type=".((int) $search_type); } if ($date_select) { $param .= "&date_select=".urlencode($date_select); @@ -408,9 +409,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } @@ -446,7 +444,7 @@ if (!empty($arrayfields['d.ref']['checked'])) { // Type if (!empty($arrayfields['d.fk_type']['checked'])) { print ''; } diff --git a/htdocs/adherents/type_translation.php b/htdocs/adherents/type_translation.php index b219d0ae92f..c55a9db9ccf 100644 --- a/htdocs/adherents/type_translation.php +++ b/htdocs/adherents/type_translation.php @@ -59,7 +59,7 @@ if ($cancel == $langs->trans("Cancel")) { $action = ''; } -if ($action == 'delete' && GETPOST('langtodelete', 'alpha')) { +if ($action == 'delete' && GETPOST('langtodelete', 'alpha') && $user->hasRight('adherent', 'configurer')) { $object = new AdherentType($db); $object->fetch($id); $result = $object->delMultiLangs(GETPOST('langtodelete', 'alpha'), $user); diff --git a/htdocs/admin/accountant.php b/htdocs/admin/accountant.php index 0498ae77302..305a58254eb 100644 --- a/htdocs/admin/accountant.php +++ b/htdocs/admin/accountant.php @@ -105,6 +105,7 @@ if (!empty($conf->use_javascript_ajax)) { print "\n".''; - */ + Some code must be added into main when MAIN_ADD_ICONPICKER_JS is set to add of lib in html header + $out =''; + $out.=''; + */ $out .= ''; if (getDolGlobalInt('MAIN_ADD_ICONPICKER_JS')) { @@ -1313,7 +1331,7 @@ class ExtraFields } $out .= ''; } - } elseif ($type == 'sellist') { + } elseif ($type == 'sellist') { // List of values selected from a table (1 choice) $out = ''; if (!empty($conf->use_javascript_ajax) && !getDolGlobalString('MAIN_EXTRAFIELDS_DISABLE_SELECT2')) { include_once DOL_DOCUMENT_ROOT.'/core/lib/ajax.lib.php'; @@ -1322,21 +1340,60 @@ class ExtraFields $out .= ''; + print ''; + $out .= ''; // Show file date $date = (!empty($file['date']) ? $file['date'] : dol_filemtime($filedir."/".$file["name"])); @@ -2153,11 +2153,10 @@ class FormFile if ($nboflinks > 0) { include_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; } - foreach ($links as $link) { print ''; //edit mode - if ($action == 'update' && $selected === $link->id) { + if ($action == 'update' && $selected === (int) $link->id) { print ''; } } @@ -703,7 +703,7 @@ class FormTicket $langs->load('contracts'); $formcontract = new FormContract($this->db); print ''; } @@ -726,7 +726,7 @@ class FormTicket print dol_get_fiche_end(); } - print '

'; + print '
'; if ($mode == 'create') { print $form->buttonsSaveCancel(((isset($this->withreadid) && $this->withreadid > 0) ? "SendResponse" : "CreateTicket"), ($this->withcancel ? "Cancel" : "")); @@ -734,6 +734,8 @@ class FormTicket print $form->buttonsSaveCancel(((isset($this->withreadid) && $this->withreadid > 0) ? "SendResponse" : "Save"), ($this->withcancel ? "Cancel" : "")); } + print '
'; + /* print '
'; print ''; @@ -782,7 +784,7 @@ class FormTicket $ticketstat->loadCacheTypesTickets(); print '
'; if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { print ''; } @@ -1026,7 +1026,7 @@ function show_projects($conf, $langs, $db, $object, $backtopage = '', $nocreatel $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_type_contact as tc on ec.fk_c_type_contact = tc.rowid"; $sql .= " WHERE sc.fk_soc = ".((int) $object->id); $sql .= " AND p.entity IN (".getEntity('project').")"; - $sql .= " AND tc.element = 'project'"; + $sql .= " AND tc.element = 'project' AND tc.source = 'external'"; $sql .= " ORDER BY p.dateo DESC"; $result = $db->query($sql); @@ -1566,7 +1566,7 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl // Delete if ($user->hasRight('societe', 'contact', 'delete')) { - print ''; + print ''; print img_delete(); print ''; } @@ -1667,7 +1667,7 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserl // Delete if ($user->hasRight('societe', 'contact', 'delete')) { - print ''; + print ''; print img_delete(); print ''; } @@ -2233,7 +2233,7 @@ function show_actions_done($conf, $langs, $db, $filterobj, $objcon = null, $nopr foreach ($histo as $key => $value) { $actionstatic->fetch($histo[$key]['id']); // TODO Do we need this, we already have a lot of data of line into $histo - $actionstatic->type_picto = $histo[$key]['apicto']; + $actionstatic->type_picto = $histo[$key]['apicto'] ?? ''; $actionstatic->type_code = $histo[$key]['acode']; $out .= ''; @@ -2436,7 +2436,7 @@ function show_subsidiaries($conf, $langs, $db, $object) $i = -1; - $sql = "SELECT s.rowid, s.client, s.fournisseur, s.nom as name, s.name_alias, s.email, s.address, s.zip, s.town, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur, s.canvas"; + $sql = "SELECT s.rowid, s.client, s.fournisseur, s.nom as name, s.name_alias, s.email, s.address, s.zip, s.town, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur, s.canvas, s.status"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql .= " WHERE s.parent = ".((int) $object->id); $sql .= " AND s.entity IN (".getEntity('societe').")"; @@ -2476,6 +2476,7 @@ function show_subsidiaries($conf, $langs, $db, $object) $socstatic->canvas = $obj->canvas; $socstatic->client = $obj->client; $socstatic->fournisseur = $obj->fournisseur; + $socstatic->status = $obj->status; print ''; diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index abe83bbd1a3..3b46db66d5e 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -36,18 +36,18 @@ function get_tz_array() { $tzarray = array( - -11 => "Pacific/Midway", - -10 => "Pacific/Fakaofo", + -11 => "Pacific/Pago_Pago", + -10 => "Pacific/Honolulu", -9 => "America/Anchorage", -8 => "America/Los_Angeles", -7 => "America/Dawson_Creek", -6 => "America/Chicago", -5 => "America/Bogota", - -4 => "America/Anguilla", + -4 => "America/Asuncion", -3 => "America/Araguaina", -2 => "America/Noronha", -1 => "Atlantic/Azores", - 0 => "Africa/Abidjan", + 0 => "Europe/London", 1 => "Europe/Paris", 2 => "Europe/Helsinki", 3 => "Europe/Moscow", @@ -60,7 +60,8 @@ function get_tz_array() 10 => "Australia/Sydney", 11 => "Pacific/Noumea", 12 => "Pacific/Auckland", - 13 => "Pacific/Enderbury" + 13 => "Pacific/Fakaofo", + 14 => "Pacific/Kiritimati" ); return $tzarray; } @@ -129,7 +130,7 @@ function dol_time_plus_duree($time, $duration_value, $duration_unit, $ruleforend if ($duration_unit == 's') { return $time + ($duration_value); } - if ($duration_unit == 'i') { + if ($duration_unit == 'i' || $duration_unit == 'mn' || $duration_unit == 'min') { return $time + (60 * $duration_value); } if ($duration_unit == 'h') { @@ -337,7 +338,7 @@ function convertDurationtoHour($duration_value, $duration_unit) if ($duration_unit == 's') { $result = $duration_value / 3600; } - if ($duration_unit == 'i') { + if ($duration_unit == 'i' || $duration_unit == 'mn' || $duration_unit == 'min') { $result = $duration_value / 60; } if ($duration_unit == 'h') { @@ -762,7 +763,7 @@ function getGMTEasterDatetime($year) */ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', $lastday = 0, $includesaturday = -1, $includesunday = -1, $includefriday = -1, $includemonday = -1) { - global $db, $mysoc; + global $conf, $db, $mysoc; $nbFerie = 0; @@ -789,21 +790,10 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', $country_id = dol_getIdFromCode($db, $country_code, 'c_country', 'code', 'rowid'); - $i = 0; - while ((($lastday == 0 && $timestampStart < $timestampEnd) || ($lastday && $timestampStart <= $timestampEnd)) - && ($i < 50000)) { // Loop end when equals (Test on i is a security loop to avoid infinite loop) - $ferie = false; - $specialdayrule = array(); - - $jour = (int) gmdate("d", $timestampStart); - $mois = (int) gmdate("m", $timestampStart); - $annee = (int) gmdate("Y", $timestampStart); - - //print "jour=".$jour." month=".$mois." year=".$annee." includesaturday=".$includesaturday." includesunday=".$includesunday."\n"; - + if (empty($conf->cache['arrayOfActivePublicHolidays_'.$country_id])) { // Loop on public holiday defined into hrm_public_holiday for the day, month and year analyzed - // TODO Execute this request first and store results into an array, then reuse this array. - $sql = "SELECT code, entity, fk_country, dayrule, year, month, day, active"; + $tmpArrayOfPublicHolidays = array(); + $sql = "SELECT id, code, entity, fk_country, dayrule, year, month, day, active"; $sql .= " FROM ".MAIN_DB_PREFIX."c_hrm_public_holiday"; $sql .= " WHERE active = 1 and fk_country IN (0".($country_id > 0 ? ", ".$country_id : 0).")"; $sql .= " AND entity IN (0," .getEntity('holiday') .")"; @@ -814,34 +804,55 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', $i = 0; while ($i < $num_rows) { $obj = $db->fetch_object($resql); - - if (!empty($obj->dayrule) && $obj->dayrule != 'date') { // For example 'easter', '...' - $specialdayrule[$obj->dayrule] = $obj->dayrule; - } else { - $match = 1; - if (!empty($obj->year) && $obj->year != $annee) { - $match = 0; - } - if ($obj->month != $mois) { - $match = 0; - } - if ($obj->day != $jour) { - $match = 0; - } - - if ($match) { - $ferie = true; - } - } - + $tmpArrayOfPublicHolidays[$obj->id] = array('dayrule' => $obj->dayrule, 'year' => $obj->year, 'month' => $obj->month, 'day' => $obj->day); $i++; } } else { dol_syslog($db->lasterror(), LOG_ERR); return 'Error sql '.$db->lasterror(); } - //var_dump($specialdayrule)."\n"; - //print "ferie=".$ferie."\n"; + + //var_dump($tmpArrayOfPublicHolidays); + $conf->cache['arrayOfActivePublicHolidays_'.$country_id] = $tmpArrayOfPublicHolidays; + } + + $arrayOfPublicHolidays = $conf->cache['arrayOfActivePublicHolidays_'.$country_id]; + + $i = 0; + while ((($lastday == 0 && $timestampStart < $timestampEnd) || ($lastday && $timestampStart <= $timestampEnd)) + && ($i < 50000)) { // Loop end when equals (Test on i is a security loop to avoid infinite loop) + $ferie = false; + $specialdayrule = array(); + + $jour = (int) gmdate("d", $timestampStart); + $mois = (int) gmdate("m", $timestampStart); + $annee = (int) gmdate("Y", $timestampStart); + + //print "jour=".$jour." month=".$mois." year=".$annee." includesaturday=".$includesaturday." includesunday=".$includesunday."\n"; + foreach ($arrayOfPublicHolidays as $entrypublicholiday) { + if (!empty($entrypublicholiday['dayrule']) && $entrypublicholiday['dayrule'] != 'date') { // For example 'easter', '...' + $specialdayrule[$entrypublicholiday['dayrule']] = $entrypublicholiday['dayrule']; + } else { + $match = 1; + if (!empty($entrypublicholiday['year']) && $entrypublicholiday['year'] != $annee) { + $match = 0; + } + if ($entrypublicholiday['month'] != $mois) { + $match = 0; + } + if ($entrypublicholiday['day'] != $jour) { + $match = 0; + } + + if ($match) { + $ferie = true; + } + } + + $i++; + } + //var_dump($specialdayrule)."\n"; + //print "ferie=".$ferie."\n"; if (!$ferie) { // Special dayrules @@ -955,9 +966,9 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', // Geneva fast in Switzerland } } - //print "ferie=".$ferie."\n"; + //print "ferie=".$ferie."\n"; - // If we have to include Friday, Saturday and Sunday + // If we have to include Friday, Saturday and Sunday if (!$ferie) { if ($includefriday || $includesaturday || $includesunday) { $jour_julien = unixtojd($timestampStart); @@ -979,18 +990,18 @@ function num_public_holiday($timestampStart, $timestampEnd, $country_code = '', } } } - //print "ferie=".$ferie."\n"; + //print "ferie=".$ferie."\n"; - // We increase the counter of non working day + // We increase the counter of non working day if ($ferie) { $nbFerie++; } - // Increase number of days (on go up into loop) - $timestampStart = dol_time_plus_duree($timestampStart, 1, 'd'); - //var_dump($jour.' '.$mois.' '.$annee.' '.$timestampStart); + // Increase number of days (on go up into loop) + $timestampStart = dol_time_plus_duree($timestampStart, 1, 'd'); + //var_dump($jour.' '.$mois.' '.$annee.' '.$timestampStart); - $i++; + $i++; } //print "nbFerie=".$nbFerie."\n"; diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 09a2ed74e13..e8e347e7647 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -1509,7 +1509,8 @@ function dol_delete_file($file, $disableglob = 0, $nophperrors = 0, $nohook = 0, $ok = true; $globencoded = str_replace('[', '\[', $file_osencoded); $globencoded = str_replace(']', '\]', $globencoded); - $listofdir = glob($globencoded); + $listofdir = glob($globencoded); // This scan dir for files. If file does not exists, return empty. + if (!empty($listofdir) && is_array($listofdir)) { foreach ($listofdir as $filename) { if ($nophperrors) { @@ -2798,11 +2799,15 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, $accessallowed = 1; $original_file = DOL_DOCUMENT_ROOT.'/public/theme/common/'.$original_file; } elseif ($modulepart == 'medias' && !empty($dolibarr_main_data_root)) { - if (empty($entity) || empty($conf->medias->multidir_output[$entity])) { + /* the medias directory is by default a public directory accessible online for everybody, so test on permission per entity has no sense + if (isModEnabled('multicompany') && (empty($entity) || empty($conf->medias->multidir_output[$entity]))) { return array('accessallowed' => 0, 'error' => 'Value entity must be provided'); + } */ + if (empty($entity)) { + $entity = 1; } $accessallowed = 1; - $original_file = $conf->medias->multidir_output[$entity].'/'.$original_file; + $original_file = (empty($conf->medias->multidir_output[$entity]) ? $conf->medias->dir_output : $conf->medias->multidir_output[$entity]).'/'.$original_file; } elseif ($modulepart == 'logs' && !empty($dolibarr_main_data_root)) { // Wrapping for *.log files, like when used with url http://.../document.php?modulepart=logs&file=dolibarr.log $accessallowed = ($user->admin && basename($original_file) == $original_file && preg_match('/^dolibarr.*\.(log|json)$/', basename($original_file))); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 32ce70f479f..2cbcca4b9a9 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -249,7 +249,7 @@ function getDolUserString($key, $default = '', $tmpuser = null) $tmpuser = $user; } - return (string) (empty($tmpuser->conf->$key) ? $default : $tmpuser->conf->$key); + return (string) (isset($tmpuser->conf->$key) ? $tmpuser->conf->$key : $default); } /** @@ -267,7 +267,7 @@ function getDolUserInt($key, $default = 0, $tmpuser = null) $tmpuser = $user; } - return (int) (empty($tmpuser->conf->$key) ? $default : $tmpuser->conf->$key); + return (int) (isset($tmpuser->conf->$key) ? $tmpuser->conf->$key: $default); } @@ -435,6 +435,9 @@ function getEntity($element, $shared = 1, $currentobject = null) } else { $out = ''; $addzero = array('user', 'usergroup', 'cronjob', 'c_email_templates', 'email_template', 'default_values', 'overwrite_trans'); + if (getDolGlobalString('HOLIDAY_ALLOW_ZERO_IN_DIC')) { // this constant break the dictionary admin without Multicompany + $addzero[] = 'c_holiday_types'; + } if (in_array($element, $addzero)) { $out .= '0,'; } @@ -603,8 +606,12 @@ function getBrowserInfo($user_agent) $version = end($reg); } elseif (preg_match('/l[iy]n(x|ks)(\(|\/|\s)*([\d\.]+)/i', $user_agent, $reg)) { // MS products at end - $name = 'lynxlinks'; + $name = 'textbrowser'; $version = empty($reg[3]) ? '' : $reg[3]; + } elseif (preg_match('/w3m\/([\d\.]+)/i', $user_agent, $reg)) { + // MS products at end + $name = 'textbrowser'; + $version = empty($reg[1]) ? '' : $reg[1]; } if ($tablet) { @@ -1000,6 +1007,8 @@ function GETPOST($paramname, $check = 'alphanohtml', $method = 0, $filter = null $newout = $user->fk_user; } elseif ($reg[1] == 'ENTITY_ID' || $reg[1] == 'ENTITYID') { $newout = $conf->entity; + } elseif ($reg[1] == 'ID') { + $newout = '__ID__'; // We keep __ID__ we find into backtopage url } else { $newout = ''; // Key not found, we replace with empty string } @@ -1035,8 +1044,8 @@ function GETPOST($paramname, $check = 'alphanohtml', $method = 0, $filter = null } // Sanitizing for special parameters. - // Note: There is no reason to allow the backtopage, backtolist or backtourl parameter to contains an external URL. Only relative URLs are allowed. - if ($paramname == 'backtopage' || $paramname == 'backtolist' || $paramname == 'backtourl') { + // Note: There is no reason to allow the backtopage/backtopageforcancel/backtopagejs, backtolist or backtourl parameter to contains an external URL. Only relative URLs are allowed. + if (preg_match('/backtopage/', $paramname) || $paramname == 'backtolist' || $paramname == 'backtourl') { $out = str_replace('\\', '/', $out); // Can be before the loop because only 1 char is replaced. No risk to get it after other replacements. $out = str_replace(array(':', ';', '@', "\t", ' '), '', $out); // Can be before the loop because only 1 char is replaced. No risk to retrieve it after other replacements. do { @@ -1333,7 +1342,10 @@ function dol_include_once($relpath, $classname = '') * Return path of url or filesystem. Can check into alternate dir or alternate dir + main dir depending on value of $returnemptyifnotfound. * * @param string $path Relative path to file (if mode=0) or relative url (if mode=1). Ie: mydir/myfile, ../myfile - * @param int $type 0=Used for a Filesystem path, 1=Used for an URL path (output relative), 2=Used for an URL path (output full path using same host that current url), 3=Used for an URL path (output full path using host defined into $dolibarr_main_url_root of conf file) + * @param int $type 0=Used for a Filesystem path, + * 1=Used for an URL path (output relative), + * 2=Used for an URL path (output full path using same host that current url), + * 3=Used for an URL path (output full path using host defined into $dolibarr_main_url_root of conf file) * @param int $returnemptyifnotfound 0:If $type==0 and if file was not found into alternate dir, return default path into main dir (no test on it) * 1:If $type==0 and if file was not found into alternate dir, return empty string * 2:If $type==0 and if file was not found into alternate dir, test into main dir, return default path if found, empty string if not found @@ -1404,11 +1416,9 @@ function dol_buildpath($path, $type = 0, $returnemptyifnotfound = 0) if (@file_exists($dirroot.'/'.$regs[1])) { // avoid [php:warn] if ($type == 1) { $res = (preg_match('/^http/i', $conf->file->dol_url_root[$key]) ? '' : DOL_URL_ROOT).$conf->file->dol_url_root[$key].'/'.$path; - } - if ($type == 2) { + } elseif ($type == 2) { $res = (preg_match('/^http/i', $conf->file->dol_url_root[$key]) ? '' : DOL_MAIN_URL_ROOT).$conf->file->dol_url_root[$key].'/'.$path; - } - if ($type == 3) { + } elseif ($type == 3) { /*global $dolibarr_main_url_root;*/ // Define $urlwithroot @@ -1796,6 +1806,20 @@ function dol_escape_js($stringtoescape, $mode = 0, $noescapebackslashn = 0) return strtr($stringtoescape, $substitjs); } +/** + * Returns text escaped by RFC 3986 for inclusion into a clicable link. + * This method can be used on the ...in links like href="javascript:..." because when clicking on such links, the browserfirst decode the strind + * and then interpret content that can be javascript. + * Usage of this escapement should be limited to links href="javascript:...". For common URL, use urlencode instead. + * + * @param string $stringtoescape String to escape + * @return string Escaped string. + */ +function dol_escape_uri($stringtoescape) +{ + return rawurlencode($stringtoescape); +} + /** * Returns text escaped for inclusion into javascript code * @@ -1835,6 +1859,17 @@ function dol_escape_php($stringtoescape, $stringforquotes = 2) return 'Bad parameter for stringforquotes in dol_escape_php'; } +/** + * Returns text escaped for all protocols (so only alpha chars and numbers) + * + * @param string $stringtoescape String to escape + * @return string Escaped string for XML content. + */ +function dol_escape_all($stringtoescape) +{ + return preg_replace('/[^a-z0-9_]/i', '', $stringtoescape); +} + /** * Returns text escaped for inclusion into a XML string * @@ -2150,8 +2185,10 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename = // Test log level // @phan-suppress-next-line PhanPluginDuplicateArrayKey $logLevels = array(LOG_EMERG => 'EMERG', LOG_ALERT => 'ALERT', LOG_CRIT => 'CRITICAL', LOG_ERR => 'ERR', LOG_WARNING => 'WARN', LOG_NOTICE => 'NOTICE', LOG_INFO => 'INFO', LOG_DEBUG => 'DEBUG'); + if (!array_key_exists($level, $logLevels)) { - throw new Exception('Incorrect log level'); + dol_syslog('Error Bad Log Level '.$level, LOG_ERR); + $level = $logLevels[LOG_ERR]; } if ($level > getDolGlobalInt('SYSLOG_LEVEL')) { return; @@ -2673,19 +2710,19 @@ function dol_get_fiche_end($notab = 0) * Show tab footer of a card. * Note: $object->next_prev_filter can be set to restrict select to find next or previous record by $form->showrefnav. * - * @param CommonObject $object Object to show - * @param string $paramid Name of parameter to use to name the id into the URL next/previous link - * @param string $morehtml More html content to output just before the nav bar - * @param int $shownav Show Condition (navigation is shown if value is 1) - * @param string $fieldid Name of the field in DB to use to select next et previous (we make the select max and min on this field). Use 'none' for no prev/next search. - * @param string $fieldref Name of the field (object->ref) to use to select next et previous - * @param string $morehtmlref More html to show after the ref (see $morehtmlleft for before) - * @param string $moreparam More param to add in nav link url. - * @param int $nodbprefix Do not include DB prefix to forge table name - * @param string $morehtmlleft More html code to show before the ref (see $morehtmlref for after) - * @param string $morehtmlstatus More html code to show under navigation arrows - * @param int $onlybanner Put this to 1, if the card will contains only a banner (this add css 'arearefnobottom' on div) - * @param string $morehtmlright More html code to show before navigation arrows + * @param CommonObject $object Object to show + * @param string $paramid Name of parameter to use to name the id into the URL next/previous link + * @param string $morehtml More html content to output just before the nav bar + * @param int|bool $shownav Show Condition (navigation is shown if value is 1 or true) + * @param string $fieldid Name of the field in DB to use to select next et previous (we make the select max and min on this field). Use 'none' for no prev/next search. + * @param string $fieldref Name of the field (object->ref) to use to select next et previous + * @param string $morehtmlref More html to show after the ref (see $morehtmlleft for before) + * @param string $moreparam More param to add in nav link url. + * @param int $nodbprefix Do not include DB prefix to forge table name + * @param string $morehtmlleft More html code to show before the ref (see $morehtmlref for after) + * @param string $morehtmlstatus More html code to show under navigation arrows + * @param int $onlybanner Put this to 1, if the card will contains only a banner (this add css 'arearefnobottom' on div) + * @param string $morehtmlright More html code to show before navigation arrows * @return void */ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldid = 'rowid', $fieldref = 'ref', $morehtmlref = '', $moreparam = '', $nodbprefix = 0, $morehtmlleft = '', $morehtmlstatus = '', $onlybanner = 0, $morehtmlright = '') @@ -2943,7 +2980,16 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi $tmptxt = $object->getLibStatut(5, $object->alreadypaid); } $morehtmlstatus .= $tmptxt; - } elseif (in_array($object->element, array('facture', 'invoice', 'invoice_supplier', 'chargesociales', 'loan', 'tva'))) { // TODO Move this to use ->alreadypaid + } elseif (in_array($object->element, array('facture', 'invoice', 'invoice_supplier'))) { // TODO Move this to use ->alreadypaid + $totalallpayments = $object->getSommePaiement(0); + $totalallpayments += $object->getSumCreditNotesUsed(0); + $totalallpayments += $object->getSumDepositsUsed(0); + $tmptxt = $object->getLibStatut(6, $totalallpayments); + if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3)) { + $tmptxt = $object->getLibStatut(5, $totalallpayments); + } + $morehtmlstatus .= $tmptxt; + } elseif (in_array($object->element, array('chargesociales', 'loan', 'tva'))) { // TODO Move this to use ->alreadypaid $tmptxt = $object->getLibStatut(6, $object->totalpaid); if (empty($tmptxt) || $tmptxt == $object->getLibStatut(3)) { $tmptxt = $object->getLibStatut(5, $object->totalpaid); @@ -3028,6 +3074,11 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi $morehtmlref = $hookmanager->resPrint; } + // $morehtml is the right part (link "Back to list") + // $morehtmlleft is the picto or photo of banner + // $morehtmlstatus is part under the status + // $morehtmlright is part of htmlright + print '
'; print $form->showrefnav($object, $paramid, $morehtml, $shownav, $fieldid, $fieldref, $morehtmlref, $moreparam, $nodbprefix, $morehtmlleft, $morehtmlstatus, $morehtmlright); print '
'; @@ -5808,7 +5859,7 @@ function info_admin($text, $infoonimgalt = 0, $nodiv = 0, $admin = '1', $morecss */ function dol_print_error($db = null, $error = '', $errors = null) { - global $conf, $langs, $argv; + global $conf, $langs, $user, $argv; global $dolibarr_main_prod; $out = ''; @@ -5836,6 +5887,9 @@ function dol_print_error($db = null, $error = '', $errors = null) if (isset($conf->global->MAIN_FEATURES_LEVEL)) { $out .= "".$langs->trans("LevelOfFeature").": ".getDolGlobalInt('MAIN_FEATURES_LEVEL')."
\n"; } + if ($user instanceof User) { + $out .= "".$langs->trans("Login").": ".$user->login."
\n"; + } if (function_exists("phpversion")) { $out .= "".$langs->trans("PHP").": ".phpversion()."
\n"; } @@ -6322,7 +6376,7 @@ function print_barre_liste($title, $page, $file, $options = '', $sortfield = '', do { if ($pagenavastextinput) { if ($cpt == $page) { - $pagelist .= ''; + $pagelist .= ''; $pagelist .= '/'; } } else { @@ -6539,8 +6593,8 @@ function vatrate($rate, $addpercent = false, $info_bits = 0, $usestarfornpr = 0, * @param int<0,1> $form Type of formatting: 1=HTML, 0=no formatting (no by default) * @param Translate|string|null $outlangs Object langs for output. '' use default lang. 'none' use international separators. * @param int $trunc 1=Truncate if there is more decimals than MAIN_MAX_DECIMALS_SHOWN (default), 0=Does not truncate. Deprecated because amount are rounded (to unit or total amount accuracy) before being inserted into database or after a computation, so this parameter should be useless. - * @param int $rounding MINIMUM number of decimal to show: 0=no change, -1=we use min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT) - * @param int|string $forcerounding MAXIMUM number of decimal to forcerounding decimal: -1=no change, 'MU' or 'MT' or a numeric to round to MU or MT or to a given number of decimal + * @param int $rounding MINIMUM number of decimal to show: 0=no change, -1=we use min(getDolGlobalString('MAIN_MAX_DECIMALS_UNIT'), getDolGlobalString('MAIN_MAX_DECIMALS_TOT')) + * @param int|string $forcerounding MAXIMUM number of decimal to forcerounding decimal: -1=no change, -2=keep non zero part, 'MU' or 'MT' or a numeric to round to MU or MT or to a given number of decimal * @param string $currency_code To add currency symbol (''=add nothing, 'auto'=Use default currency, 'XXX'=add currency symbols for XXX currency) * @return string String with formatted amount * @@ -6601,10 +6655,11 @@ function price($amount, $form = 0, $outlangs = '', $trunc = 1, $rounding = -1, $ if (dol_strlen($decpart) > $nbdecimal) { $nbdecimal = dol_strlen($decpart); } - // Si on depasse max - $max_nbdecimal = (int) str_replace('...', '', getDolGlobalString('MAIN_MAX_DECIMALS_SHOWN')); - if ($trunc && $nbdecimal > $max_nbdecimal) { - $nbdecimal = $max_nbdecimal; + + // If nbdecimal is higher than max to show + $nbdecimalmaxshown = (int) str_replace('...', '', getDolGlobalString('MAIN_MAX_DECIMALS_SHOWN')); + if ($trunc && $nbdecimal > $nbdecimalmaxshown) { + $nbdecimal = $nbdecimalmaxshown; if (preg_match('/\.\.\./i', getDolGlobalString('MAIN_MAX_DECIMALS_SHOWN'))) { // If output is truncated, we show ... $end = '...'; @@ -7069,7 +7124,12 @@ function getTaxesFromId($vatrate, $buyer = null, $seller = null, $firstparamisid $sql .= ", ".MAIN_DB_PREFIX."c_country as c"; /*if ($mysoc->country_code == 'ES') $sql.= " WHERE t.fk_pays = c.rowid AND c.code = '".$db->escape($buyer->country_code)."'"; // vat in spain use the buyer country ?? else $sql.= " WHERE t.fk_pays = c.rowid AND c.code = '".$db->escape($seller->country_code)."'";*/ - $sql .= " WHERE t.fk_pays = c.rowid AND c.code = '".$db->escape($seller->country_code)."'"; + $sql .= " WHERE t.fk_pays = c.rowid"; + if (getDolGlobalString('SERVICE_ARE_ECOMMERCE_200238EC')) { + $sql .= " AND c.code = '".$db->escape($buyer->country_code)."'"; + } else { + $sql .= " AND c.code = '".$db->escape($seller->country_code)."'"; + } $sql .= " AND t.taux = ".((float) $vatratecleaned)." AND t.active = 1"; $sql .= " AND t.entity IN (".getEntity('c_tva').")"; if ($vatratecode) { @@ -8262,7 +8322,11 @@ function dol_htmlwithnojs($stringtoencode, $nouseofiframesandbox = 0, $check = ' $out = preg_replace('/&#x?[0-9]+/i', '', $out); // For example if we have javascript with an entities without the ; to hide the 'a' of 'javascript'. // Keep only some html tags and remove also some 'javascript:' strings - $out = dol_string_onlythesehtmltags($out, 0, ($check == 'restricthtmlallowclass' ? 0 : 1), 1); + if ($check == 'restricthtmlallowclass' || $check == 'restricthtmlallowunvalid') { + $out = dol_string_onlythesehtmltags($out, 0, 0, 1); + } else { + $out = dol_string_onlythesehtmltags($out, 0, 1, 1); + } // Keep only some html attributes and exclude non expected HTML attributes and clean content of some attributes (keep only alt=, title=...). if (getDolGlobalString('MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES')) { @@ -10119,7 +10183,7 @@ function dol_osencode($str) * Store also Code-Id into a cache to speed up next request on same table and key. * * @param DoliDB $db Database handler - * @param string $key Code or Id to get Id or Code + * @param string|int $key Code (string) or Id (int) to get Id or Code * @param string $tablename Table name without prefix * @param string $fieldkey Field to search the key into * @param string $fieldid Field to get @@ -10350,7 +10414,8 @@ function dol_eval($s, $returnvalue = 1, $hideerrors = 1, $onlysimplestring = '1' $forbiddenphpstrings = array_merge($forbiddenphpstrings, array('_ENV', '_SESSION', '_COOKIE', '_GET', '_POST', '_REQUEST', 'ReflectionFunction')); $forbiddenphpfunctions = array(); - $forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("base64_decode", "rawurldecode", "urldecode", "str_rot13", "hex2bin")); // decode string functions used to obfuscated function name + // @phpcs:ignore + $forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("base64"."_"."decode", "rawurl"."decode", "url"."decode", "str"."_rot13", "hex"."2bin")); // name of forbidden functions are split to avoid false positive $forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("fopen", "file_put_contents", "fputs", "fputscsv", "fwrite", "fpassthru", "require", "include", "mkdir", "rmdir", "symlink", "touch", "unlink", "umask")); $forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("override_function", "session_id", "session_create_id", "session_regenerate_id")); $forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("get_defined_functions", "get_defined_vars", "get_defined_constants", "get_declared_classes")); @@ -10920,7 +10985,8 @@ function complete_head_from_modules($conf, $langs, $object, &$head, &$h, $type, */ function printCommonFooter($zone = 'private') { - global $conf, $hookmanager, $user, $debugbar; + global $conf, $hookmanager, $user, $langs; + global $debugbar; global $action; global $micro_start_time; @@ -10968,6 +11034,7 @@ function printCommonFooter($zone = 'private') $relativepathstring = preg_replace('/^\//', '', $relativepathstring); $relativepathstring = preg_replace('/^custom\//', '', $relativepathstring); //$tmpqueryarraywehave = explode('&', dol_string_nohtmltag($_SERVER['QUERY_STRING'])); + if (!empty($user->default_values[$relativepathstring]['focus'])) { foreach ($user->default_values[$relativepathstring]['focus'] as $defkey => $defval) { $qualified = 0; @@ -10990,10 +11057,11 @@ function printCommonFooter($zone = 'private') } if ($qualified) { + print 'console.log("set the focus by executing jQuery(...).focus();")'."\n"; foreach ($defval as $paramkey => $paramval) { // Set focus on field print 'jQuery("input[name=\''.$paramkey.'\']").focus();'."\n"; - print 'jQuery("textarea[name=\''.$paramkey.'\']").focus();'."\n"; + print 'jQuery("textarea[name=\''.$paramkey.'\']").focus();'."\n"; // TODO KO with ckeditor print 'jQuery("select[name=\''.$paramkey.'\']").focus();'."\n"; // Not really useful, but we keep it in case of. } } @@ -11021,19 +11089,72 @@ function printCommonFooter($zone = 'private') } if ($qualified) { - foreach ($defval as $paramkey => $paramval) { - // Add property 'required' on input - print 'jQuery("input[name=\''.$paramkey.'\']").prop(\'required\',true);'."\n"; - print 'jQuery("textarea[name=\''.$paramkey.'\']").prop(\'required\',true);'."\n"; - print '// required on a select works only if key is "", so we add the required attributes but also we reset the key -1 or 0 to an empty string'."\n"; - print 'jQuery("select[name=\''.$paramkey.'\']").prop(\'required\',true);'."\n"; - print 'jQuery("select[name=\''.$paramkey.'\'] option[value=\'-1\']").prop(\'value\', \'\');'."\n"; - print 'jQuery("select[name=\''.$paramkey.'\'] option[value=\'0\']").prop(\'value\', \'\');'."\n"; + print 'console.log("set the js code to manage fields that are set as mandatory");'."\n"; + foreach ($defval as $paramkey => $paramval) { + // Solution 1: Add handler on submit to check if mandatory fields are empty + print 'var form = $(\'#'.dol_escape_js($paramkey).'\').closest("form");'."\n"; + print "form.on('submit', function(event) { + var submitter = event.originalEvent.submitter; + if (submitter) { + var buttonName = $(submitter).attr('name'); + if (buttonName == 'cancel') { + console.log('We click on cancel button so we accept submit with no need to check mandatory fields'); + return true; + } + } + + console.log('We did not click on cancel button but on something else, we check that field #".dol_escape_js($paramkey)." is not empty'); + + var tmpvalue = jQuery('#".dol_escape_js($paramkey)."').val(); + let tmptypefield = jQuery('#".dol_escape_js($paramkey)."').prop('nodeName').toLowerCase(); // Get the tag name (div, section, footer...) + + if (tmptypefield == 'textarea') { + // We must instead check the content of ckeditor + var tmpeditor = CKEDITOR.instances['".dol_escape_js($paramkey)."']; + if (tmpeditor) { + tmpvalue = tmpeditor.getData(); + console.log('For textarea tmpvalue is '+tmpvalue); + } + } + + let tmpvalueisempty = false; + if (tmpvalue === null || tmpvalue === undefined || tmpvalue === '') { + tmpvalueisempty = true; + } + if (tmpvalue === '0' && tmptypefield == 'select') { + tmpvalueisempty = true; + } + if (tmpvalueisempty) { + console.log('field has type '+tmptypefield+' and is empty, we cancel the submit'); + event.preventDefault(); // Stop submission of form to allow custom code to decide. + event.stopPropagation(); // Stop other handlers. + alert('".dol_escape_js($langs->trans("ErrorFieldRequired", $paramkey).' ('.$langs->trans("CustomMandatoryFieldRule").')')."'); + return false; + } + console.log('field has type '+tmptypefield+' and is defined to '+tmpvalue); + return true; + }); + \n"; + + // Solution 2: Add property 'required' on input + // so browser will check value and try to focus on it when submitting the form. + //print 'setTimeout(function() {'; // If we want to wait that ckeditor beuatifier has finished its job. + //print 'jQuery("input[name=\''.$paramkey.'\']").prop(\'required\',true);'."\n"; + //print 'jQuery("textarea[id=\''.$paramkey.'\']").prop(\'required\',true);'."\n"; + //print 'jQuery("select[name=\''.$paramkey.'\']").prop(\'required\',true);'."\n";*/ + //print '// required on a select works only if key is "", so we add the required attributes but also we reset the key -1 or 0 to an empty string'."\n"; + //print 'jQuery("select[name=\''.$paramkey.'\'] option[value=\'-1\']").prop(\'value\', \'\');'."\n"; + //print 'jQuery("select[name=\''.$paramkey.'\'] option[value=\'0\']").prop(\'value\', \'\');'."\n"; // Add 'field required' class on closest td for all input elements : input, textarea and select - print 'jQuery(":input[name=\'' . $paramkey . '\']").closest("tr").find("td:first").addClass("fieldrequired");' . "\n"; + //print '}, 500);'; // 500 milliseconds delay + + // Now set the class "fieldrequired" + print 'jQuery(\':input[name="' . dol_escape_js($paramkey) . '"]\').closest("tr").find("td:first").addClass("fieldrequired");'."\n"; } - // If we submit the cancel button we remove the required attributes + + + // If we submit using the cancel button, we remove the required attributes print 'jQuery("input[name=\'cancel\']").click(function() { console.log("We click on cancel button so removed all required attribute"); jQuery("input, textarea, select").each(function(){this.removeAttribute(\'required\');}); @@ -11488,12 +11609,13 @@ function getAdvancedPreviewUrl($modulepart, $relativepath, $alldata = 0, $param if ($isAllowedForPreview) { $tmpurl = DOL_URL_ROOT.'/document.php?modulepart='.urlencode($modulepart).'&attachment=0&file='.urlencode($relativepath).($param ? '&'.$param : ''); $title = $langs->transnoentities("Preview"); - //$title = '%27-alert(document.domain)-%27'; - //$tmpurl = 'file='.urlencode("'-alert(document.domain)-'_small.jpg"); + //$title = '%27-alert(document.domain)-%27'; // An example of js injection into a corrupted title string, that should be blocked by the dol_escape_uri(). + //$tmpurl = 'file='.urlencode("'-alert(document.domain)-'_small.jpg"); // An example of tmpurl that should be blocked by the dol_escape_uri() - // We need to urlencode the parameter after the dol_escape_js($tmpurl) because $tmpurl may contain n url with param file=abc%27def if file has a ' inside. - // and when we click on href with this javascript string, a urlcode is done by browser, converted the %27 of file param - return 'javascript:document_preview(\''.urlencode(dol_escape_js($tmpurl)).'\', \''.urlencode(dol_mimetype($relativepath)).'\', \''.urlencode(dol_escape_js($title)).'\')'; + // We need to do a dol_escape_uri() on the full string after the javascript: because such parts are the URI and when we click on such links, a RFC3986 decode is done, + // by the browser, converting the %27 (like when having param file=abc%27def), or when having a corrupted title), into a ', BEFORE interpreting the content that can be a js code. + // Using the dol_escape_uri guarantee that we encode for URI so decode retrieve original expected value. + return 'javascript:'.dol_escape_uri('document_preview(\''.dol_escape_js($tmpurl).'\', \''.dol_escape_js(dol_mimetype($relativepath)).'\', \''.dol_escape_js($title).'\')'); } else { return ''; } @@ -12186,13 +12308,14 @@ function dolGetStatus($statusLabel = '', $statusLabelShort = '', $html = '', $st * @param string $text Optional : short label on button. Can be escaped HTML content or full simple text. * @param string $actionType 'default', 'danger', 'email', 'clone', 'cancel', 'delete', ... * - * @param string|array $url Url for link or array of subbutton description + * @param string|array $url Url for link or array of subbutton description * - * Example when an array is used: $arrayforbutaction = array( - * 10 => array('lang'=>'propal', 'enabled'=>isModEnabled("propal"), 'perm'=>$user->hasRight('propal', 'creer'), 'label' => 'AddProp', 'url'=>'/comm/propal/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), - * 20 => array('lang'=>'orders', 'enabled'=>isModEnabled("order"), 'perm'=>$user->hasRight('commande', 'creer'), 'label' => 'CreateOrder', 'url'=>'/commande/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), - * 30 => array('lang'=>'bills', 'enabled'=>isModEnabled("invoice"), 'perm'=>$user->hasRight('facture', 'creer'), 'label' => 'CreateBill', 'url'=>'/compta/facture/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), - * ); + * Example when an array is used: + * $arrayforbutaction = array( + * 10 => array('attr' => array('class'=>''), 'lang'=>'propal', 'enabled'=>isModEnabled("propal"), 'perm'=>$user->hasRight('propal', 'creer'), 'label' => 'AddProp', 'url'=>'/comm/propal/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), + * 20 => array('attr' => array('class'=>''), 'lang'=>'mymodule', 'enabled'=>isModEnabled("mymodule"), 'perm'=>$user->hasRight('mymodule', 'write'), 'label' => 'MyModuleAction', 'urlroot'=>dol_build_patch('/mymodule/mypage.php?action=create')), + * 30 => array('attr' => array('class'=>''), 'lang'=>'mymodule', 'enabled'=>isModEnabled("mymodule"), 'perm'=>$user->hasRight('mymodule', 'write'), 'label' => 'MyModuleOtherAction', 'urlraw' => '# || external Url || javascript: || tel: || mailto:' ), + * ); ); * @param string $id Attribute id of action button. Example 'action-delete'. This can be used for full ajax confirm if this code is reused into the ->formconfirm() method. * @param int|boolean $userRight User action right * // phpcs:disable @@ -12209,7 +12332,7 @@ function dolGetStatus($statusLabel = '', $statusLabelShort = '', $html = '', $st * 'cancel-btn-label' => '', // Override label of cancel button, if empty default label use "CloseDialog" lang key * 'content' => '', // Override text of content, if empty default content use "ConfirmBtnCommonContent" lang key * 'modal' => true, // true|false to display dialog as a modal (with dark background) - * 'isDropDrown' => false, // true|false to display dialog as a dropdown (with dark background) + * 'isDropDrown' => false, // true|false to display dialog as a dropdown list (css dropdown-item with dark background) * ], * ] * // phpcs:enable @@ -12239,11 +12362,11 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = $text = $button['text'] ?? ''; $actionType = $button['actionType'] ?? ''; $tmpUrl = DOL_URL_ROOT.$button['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); - $id = $button['$id'] ?? ''; + $id = $button['id'] ?? ''; $userRight = $button['perm'] ?? 1; - $params = $button['$params'] ?? []; + $button['params'] = $button['params'] ?? []; - $out .= dolGetButtonAction($label, $text, $actionType, $tmpUrl, $id, $userRight, $params); + $out .= dolGetButtonAction($label, $text, $actionType, $tmpUrl, $id, $userRight, $button['params']); } return $out; } @@ -12256,8 +12379,21 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = if (!empty($subbutton['lang'])) { $langs->load($subbutton['lang']); } - $tmpurl = DOL_URL_ROOT.$subbutton['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); - $out .= dolGetButtonAction('', $langs->trans($subbutton['label']), 'default', $tmpurl, '', $subbutton['perm'], array('isDropDown' => true)); + + if (!empty($subbutton['urlraw'])) { + $tmpurl = $subbutton['urlraw']; // Use raw url, no url completion, use only what developer send + } else { + $tmpurl = !empty($subbutton['urlroot']) ? $subbutton['urlroot'] : $subbutton['url']; + $tmpurl = dolCompletUrlForDropdownButton($tmpurl, $params, empty($subbutton['urlroot'])); + } + + $subbuttonparam = array(); + if (!empty($subbutton['attr'])) { + $subbuttonparam['attr'] = $subbutton['attr']; + } + $subbuttonparam['isDropDown'] = (empty($params['isDropDown']) ? ($subbutton['isDropDown']??false) : $params['isDropDown']); + + $out .= dolGetButtonAction('', $langs->trans($subbutton['label']), 'default', $tmpurl, $subbutton['id'] ?? '', $subbutton['perm'], $subbuttonparam); } $out .= ""; $out .= ""; @@ -12266,8 +12402,15 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = if (!empty($subbutton['lang'])) { $langs->load($subbutton['lang']); } - $tmpurl = DOL_URL_ROOT.$subbutton['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); - $out .= dolGetButtonAction('', $langs->trans($subbutton['label']), 'default', $tmpurl, '', $subbutton['perm']); + + if (!empty($subbutton['urlraw'])) { + $tmpurl = $subbutton['urlraw']; // Use raw url, no url completion, use only what developer send + } else { + $tmpurl = !empty($subbutton['urlroot']) ? $subbutton['urlroot'] : $subbutton['url']; + $tmpurl = dolCompletUrlForDropdownButton($tmpurl, $params, empty($subbutton['urlroot'])); + } + + $out .= dolGetButtonAction('', $langs->trans($subbutton['label']), 'default', $tmpurl, '', $subbutton['perm'], $params); } } @@ -12276,7 +12419,7 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = // Here, $url is a simple link - if (!empty($params['isDropdown'])) { + if (!empty($params['isDropdown']) || !empty($params['isDropDown'])) { // Use the dropdown-item style (not for action button) $class = "dropdown-item"; } else { $class = 'butAction'; @@ -12399,6 +12542,42 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = } } + +/** + * An function to complete dropdown url in dolGetButtonAction + * + * @param string $url the Url to complete + * @param array|array $params params of dolGetButtonAction function + * @param bool $addDolUrlRoot to add root url + * @return string + */ +function dolCompletUrlForDropdownButton(string $url, array $params, bool $addDolUrlRoot = true) +{ + if (empty($url)) { + return ''; + } + + $parsedUrl = parse_url($url); + if ((isset($parsedUrl['scheme']) && in_array($parsedUrl['scheme'], ['javascript', 'mailto', 'tel'])) || strpos($url, '#') === 0) { + return $url; + } + + if (!empty($parsedUrl['query'])) { + // Use parse_str() function to parse the string passed via URL + parse_str($parsedUrl['query'], $urlQuery); + if (!isset($urlQuery['backtopage']) && isset($params['backtopage'])) { + $url.= '&backtopage='.urlencode($params['backtopage']); + } + } + + if (!isset($parsedUrl['scheme']) && $addDolUrlRoot) { + $url = DOL_URL_ROOT.$url; + } + + return $url; +} + + /** * Add space between dolGetButtonTitle * @@ -12437,7 +12616,7 @@ function getFieldErrorIcon($fieldValidationErrorMsg) * @param string $url the url for link * @param string $id attribute id of button * @param int<-2,2> $status 0 no user rights, 1 active, 2 current action or selected, -1 Feature Disabled, -2 disable Other reason use param $helpText as tooltip help - * @param array $params various params for future : recommended rather than adding more function arguments + * @param array $params various parameters for future : recommended rather than adding more function arguments * @return string html button */ function dolGetButtonTitle($label, $helpText = '', $iconClass = 'fa fa-file', $url = '', $id = '', $status = 1, $params = array()) @@ -12682,7 +12861,7 @@ function getElementProperties($elementType) $classfile = 'mailing'; $classname = 'Mailing'; $subelement = ''; - } elseif ($elementType == 'member') { + } elseif ($elementType == 'member' || $elementType == 'adherent') { $classpath = 'adherents/class'; $module = 'adherent'; $subelement = 'adherent'; @@ -12902,7 +13081,7 @@ function getElementProperties($elementType) */ function fetchObjectByElement($element_id, $element_type, $element_ref = '', $useCache = 0, $maxCacheByType = 10) { - global $db, $globalCacheForGetObjectFromCache; + global $db, $conf; $ret = 0; @@ -12924,11 +13103,11 @@ function fetchObjectByElement($element_id, $element_type, $element_ref = '', $us //var_dump($element_prop['module'].' '.$ismodenabled); if (is_array($element_prop) && (empty($element_prop['module']) || $ismodenabled)) { if ($useCache === 1 - && !empty($globalCacheForGetObjectFromCache[$element_type]) - && !empty($globalCacheForGetObjectFromCache[$element_type][$element_id]) - && is_object($globalCacheForGetObjectFromCache[$element_type][$element_id]) + && !empty($conf->cache['fetchObjectByElement'][$element_type]) + && !empty($conf->cache['fetchObjectByElement'][$element_type][$element_id]) + && is_object($conf->cache['fetchObjectByElement'][$element_type][$element_id]) ) { - return $globalCacheForGetObjectFromCache[$element_type][$element_id]; + return $conf->cache['fetchObjectByElement'][$element_type][$element_id]; } dol_include_once('/'.$element_prop['classpath'].'/'.$element_prop['classfile'].'.class.php'); @@ -12946,16 +13125,16 @@ function fetchObjectByElement($element_id, $element_type, $element_ref = '', $us } if ($useCache > 0) { - if (!isset($globalCacheForGetObjectFromCache[$element_type])) { - $globalCacheForGetObjectFromCache[$element_type] = []; + if (!isset($conf->cache['fetchObjectByElement'][$element_type])) { + $conf->cache['fetchObjectByElement'][$element_type] = []; } // Manage cache limit - if (! empty($globalCacheForGetObjectFromCache[$element_type]) && is_array($globalCacheForGetObjectFromCache[$element_type]) && count($globalCacheForGetObjectFromCache[$element_type]) >= $maxCacheByType) { - array_shift($globalCacheForGetObjectFromCache[$element_type]); + if (! empty($conf->cache['fetchObjectByElement'][$element_type]) && is_array($conf->cache['fetchObjectByElement'][$element_type]) && count($conf->cache['fetchObjectByElement'][$element_type]) >= $maxCacheByType) { + array_shift($conf->cache['fetchObjectByElement'][$element_type]); } - $globalCacheForGetObjectFromCache[$element_type][$element_id] = $objecttmp; + $conf->cache['fetchObjectByElement'][$element_type][$element_id] = $objecttmp; } return $objecttmp; @@ -13266,7 +13445,7 @@ function forgeSQLFromUniversalSearchCriteria($filter, &$errorstr = '', $noand = { global $db, $user; - if ($filter === '') { + if (is_null($filter) || !is_string($filter) || $filter === '') { return ''; } if (!preg_match('/^\(.*\)$/', $filter)) { // If $filter does not start and end with () @@ -13295,6 +13474,7 @@ function forgeSQLFromUniversalSearchCriteria($filter, &$errorstr = '', $noand = if ($noerror) { return '1 = 2'; } else { + dol_syslog("forgeSQLFromUniversalSearchCriteria Filter error - ".$errorstr, LOG_WARNING); return 'Filter error - '.$tmperrorstr; // Bad syntax of the search string, we return an error message or force a SQL not found } } diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index 00deffe10ad..b5000337f0f 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -1000,12 +1000,12 @@ function get_next_value($db, $mask, $table, $field, $where = '', $objsoc = '', $ $maskuser_value = ''; } - // Personalized field {XXX-1} à {XXX-9} + // Personalized field {XXX-1} à {XXX-99} $maskperso = array(); $maskpersonew = array(); $tmpmask = $mask; $regKey = array(); - while (preg_match('/\{([A-Z]+)\-([1-9])\}/', $tmpmask, $regKey)) { + while (preg_match('/\{([A-Z]+)\-([0-9]+)\}/', $tmpmask, $regKey)) { $maskperso[$regKey[1]] = '{'.$regKey[1].'-'.$regKey[2].'}'; // @phan-suppress-next-line PhanParamSuspiciousOrder $maskpersonew[$regKey[1]] = str_pad('', (int) $regKey[2], '_', STR_PAD_RIGHT); @@ -1353,7 +1353,7 @@ function get_next_value($db, $mask, $table, $field, $where = '', $objsoc = '', $ if ($bentityon) { // only if entity enable $maskrefclient_sql .= " AND entity IN (".getEntity($sharetable).")"; } elseif (!empty($forceentity)) { - $sql .= " AND entity IN (".$db->sanitize($forceentity).")"; + $maskrefclient_sql .= " AND entity IN (".$db->sanitize($forceentity).")"; } if ($where) { $maskrefclient_sql .= $where; //use the same optional where as general mask diff --git a/htdocs/core/lib/functions_fi.lib.php b/htdocs/core/lib/functions_fi.lib.php index 75d28b51975..e09f49bd589 100644 --- a/htdocs/core/lib/functions_fi.lib.php +++ b/htdocs/core/lib/functions_fi.lib.php @@ -1,5 +1,6 @@ + * Copyright (C) 2024 Mikko Virtanen * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,16 +38,16 @@ function dolFICalculatePaymentReference($invoice_number, $statut, $use_rf) { if ($statut >= 1) { $invoice_number = preg_replace('/[^0-9]/', '', $invoice_number); // Keep only numbers - $invoice_number = ltrim($invoice_number, '0'); //Remove any leading zero or zeros - $invoice_number = strrev($invoice_number); // Reverse the reference number - $coefficients = array(7, 3, 1, 7, 3); // Define the coefficient numbers + $invoice_number = ltrim($invoice_number, '0'); // Remove leading zeros + $coefficients = array(7, 3, 1); // Define the coefficient numbers (rotating 7, 3, 1) $sum = 0; $stlen_invoice_number = (int) strlen($invoice_number); - for ($i = 0; $i < $stlen_invoice_number; $i++) { // Calculate the sum using coefficients - $sum += (int) $invoice_number[$i] * $coefficients[$i % 5]; + // Calculate the weighted sum from right to left + for ($i = 0; $i < $stlen_invoice_number; $i++) { + $sum += (int) $invoice_number[$stlen_invoice_number - $i - 1] * $coefficients[$i % 3]; } $check_digit = (10 - ($sum % 10)) % 10; // Calculate the check digit - $bank_reference_fi = strrev($invoice_number) . $check_digit; // Concatenate the Reversed reference number and the check digit + $bank_reference_fi = $invoice_number . $check_digit; // Concatenate the reference number and the check digit if ($use_rf) { // SEPA RF creditor reference $reference_with_suffix = $bank_reference_fi . "271500"; // Append "271500" to the end of the payment reference number $remainder = (int) bcmod($reference_with_suffix, '97'); // Calculate the remainder when dividing by 97 diff --git a/htdocs/core/lib/functionsnumtoword.lib.php b/htdocs/core/lib/functionsnumtoword.lib.php index 7e16ff46de1..f349368078a 100644 --- a/htdocs/core/lib/functionsnumtoword.lib.php +++ b/htdocs/core/lib/functionsnumtoword.lib.php @@ -36,8 +36,6 @@ */ function dol_convertToWord($num, $langs, $currency = '', $centimes = false) { - global $conf; - //$num = str_replace(array(',', ' '), '', trim($num)); This should be useless since $num MUST be a php numeric value if (!$num) { return false; @@ -48,13 +46,7 @@ function dol_convertToWord($num, $langs, $currency = '', $centimes = false) } if (isModEnabled('numberwords')) { - if ($currency) { - $type = '1'; - } else { - $type = '0'; - } - - $concatWords = $langs->getLabelFromNumber($num, $type); + $concatWords = $langs->getLabelFromNumber($num, $currency); return $concatWords; } else { $TNum = explode('.', (string) $num); diff --git a/htdocs/core/lib/oauth.lib.php b/htdocs/core/lib/oauth.lib.php index 0131a05d32c..009db50596b 100644 --- a/htdocs/core/lib/oauth.lib.php +++ b/htdocs/core/lib/oauth.lib.php @@ -33,238 +33,238 @@ function getAllOauth2Array() { $list = array( - array( - 'OAUTH_AMAZON_NAME', - 'OAUTH_AMAZON_ID', - 'OAUTH_AMAZON_SECRET', - ), - array( - 'OAUTH_BITBUCKET_NAME', - 'OAUTH_BITBUCKET_ID', - 'OAUTH_BITBUCKET_SECRET', - ), - array( - 'OAUTH_BITLY_NAME', - 'OAUTH_BITLY_ID', - 'OAUTH_BITLY_SECRET', - ), - array( - 'OAUTH_BITRIX24_NAME', - 'OAUTH_BITRIX24_ID', - 'OAUTH_BITRIX24_SECRET', - ), - array( - 'OAUTH_BOX_NAME', - 'OAUTH_BOX_ID', - 'OAUTH_BOX_SECRET', - ), - array( - 'OAUTH_BUFFER_NAME', - 'OAUTH_BUFFER_ID', - 'OAUTH_BUFFER_SECRET', - ), - array( - 'OAUTH_DAILYMOTION_NAME', - 'OAUTH_DAILYMOTION_ID', - 'OAUTH_DAILYMOTION_SECRET', - ), - array( - 'OAUTH_DEVIANTART_NAME', - 'OAUTH_DEVIANTART_ID', - 'OAUTH_DEVIANTART_SECRET', - ), - array( - 'OAUTH_DROPBOX_NAME', - 'OAUTH_DROPBOX_ID', - 'OAUTH_DROPBOX_SECRET', - ), - array( - 'OAUTH_ETSY_NAME', - 'OAUTH_ETSY_ID', - 'OAUTH_ETSY_SECRET', - ), - array( - 'OAUTH_EVEONLINE_NAME', - 'OAUTH_EVEONLINE_ID', - 'OAUTH_EVEONLINE_SECRET', - ), - array( - 'OAUTH_FACEBOOK_NAME', - 'OAUTH_FACEBOOK_ID', - 'OAUTH_FACEBOOK_SECRET', - ), - array( - 'OAUTH_FITBIT_NAME', - 'OAUTH_FITBIT_ID', - 'OAUTH_FITBIT_SECRET', - ), - array( - 'OAUTH_FIVEHUNDREDPX_NAME', - 'OAUTH_FIVEHUNDREDPX_ID', - 'OAUTH_FIVEHUNDREDPX_SECRET', - ), - array( - 'OAUTH_FLICKR_NAME', - 'OAUTH_FLICKR_ID', - 'OAUTH_FLICKR_SECRET', - ), - array( - 'OAUTH_FOURSQUARE_NAME', - 'OAUTH_FOURSQUARE_ID', - 'OAUTH_FOURSQUARE_SECRET', - ), - array( - 'OAUTH_GITHUB_NAME', - 'OAUTH_GITHUB_ID', - 'OAUTH_GITHUB_SECRET', - 'OAUTH_GITHUB_DESC', - ), - array( - 'OAUTH_GOOGLE_NAME', - 'OAUTH_GOOGLE_ID', - 'OAUTH_GOOGLE_SECRET', - 'OAUTH_GOOGLE_DESC', - ), - array( - 'OAUTH_HUBIC_NAME', - 'OAUTH_HUBIC_ID', - 'OAUTH_HUBIC_SECRET', - ), - array( - 'OAUTH_INSTAGRAM_NAME', - 'OAUTH_INSTAGRAM_ID', - 'OAUTH_INSTAGRAM_SECRET', - ), - array( - 'OAUTH_LINKEDIN_NAME', - 'OAUTH_LINKEDIN_ID', - 'OAUTH_LINKEDIN_SECRET', - ), - array( - 'OAUTH_MAILCHIMP_NAME', - 'OAUTH_MAILCHIMP_ID', - 'OAUTH_MAILCHIMP_SECRET', - ), - array( - 'OAUTH_MICROSOFT_NAME', - 'OAUTH_MICROSOFT_ID', - 'OAUTH_MICROSOFT_SECRET', - ), - array( - 'OAUTH_MICROSOFT2_NAME', - 'OAUTH_MICROSOFT2_ID', - 'OAUTH_MICROSOFT2_SECRET', - ), - array( - 'OAUTH_NEST_NAME', - 'OAUTH_NEST_ID', - 'OAUTH_NEST_SECRET', - ), - array( - 'OAUTH_NETATMO_NAME', - 'OAUTH_NETATMO_ID', - 'OAUTH_NETATMO_SECRET', - ), - array( - 'OAUTH_PARROTFLOWERPOWER_NAME', - 'OAUTH_PARROTFLOWERPOWER_ID', - 'OAUTH_PARROTFLOWERPOWER_SECRET', - ), - array( - 'OAUTH_PAYPAL_NAME', - 'OAUTH_PAYPAL_ID', - 'OAUTH_PAYPAL_SECRET', - ), - array( - 'OAUTH_POCKET_NAME', - 'OAUTH_POCKET_ID', - 'OAUTH_POCKET_SECRET', - ), - array( - 'OAUTH_QUICKBOOKS_NAME', - 'OAUTH_QUICKBOOKS_ID', - 'OAUTH_QUICKBOOKS_SECRET', - ), - array( - 'OAUTH_REDDIT_NAME', - 'OAUTH_REDDIT_ID', - 'OAUTH_REDDIT_SECRET', - ), - array( - 'OAUTH_REDMINE_NAME', - 'OAUTH_REDMINE_ID', - 'OAUTH_REDMINE_SECRET', - ), - array( - 'OAUTH_RUNKEEPER_NAME', - 'OAUTH_RUNKEEPER_ID', - 'OAUTH_RUNKEEPER_SECRET', - ), - array( - 'OAUTH_SCOOPIT_NAME', - 'OAUTH_SCOOPIT_ID', - 'OAUTH_SCOOPIT_SECRET', - ), - array( - 'OAUTH_SOUNDCLOUD_NAME', - 'OAUTH_SOUNDCLOUD_ID', - 'OAUTH_SOUNDCLOUD_SECRET', - ), - array( - 'OAUTH_SPOTIFY_NAME', - 'OAUTH_SPOTIFY_ID', - 'OAUTH_SPOTIFY_SECRET', - ), - array( - 'OAUTH_STRAVA_NAME', - 'OAUTH_STRAVA_ID', - 'OAUTH_STRAVA_SECRET', - ), - array( - 'OAUTH_STRIPE_TEST_NAME', - 'OAUTH_STRIPE_TEST_ID', - 'STRIPE_TEST_SECRET_KEY', - ), - array( - 'OAUTH_STRIPE_LIVE_NAME', - 'OAUTH_STRIPE_LIVE_ID', - 'STRIPE_LIVE_SECRET_KEY', - ), - array( - 'OAUTH_TUMBLR_NAME', - 'OAUTH_TUMBLR_ID', - 'OAUTH_TUMBLR_SECRET', - ), - array( - 'OAUTH_TWITTER_NAME', - 'OAUTH_TWITTER_ID', - 'OAUTH_TWITTER_SECRET', - ), - array( - 'OAUTH_USTREAM_NAME', - 'OAUTH_USTREAM_ID', - 'OAUTH_USTREAM_SECRET', - ), - array( - 'OAUTH_VIMEO_NAME', - 'OAUTH_VIMEO_ID', - 'OAUTH_VIMEO_SECRET', - ), - array( - 'OAUTH_YAHOO_NAME', - 'OAUTH_YAHOO_ID', - 'OAUTH_YAHOO_SECRET', - ), - array( - 'OAUTH_YAMMER_NAME', - 'OAUTH_YAMMER_ID', - 'OAUTH_YAMMER_SECRET', - ), - array( - 'OAUTH_OTHER_NAME', - 'OAUTH_OTHER_ID', - 'OAUTH_OTHER_SECRET', - ) + array( + 'OAUTH_AMAZON_NAME', + 'OAUTH_AMAZON_ID', + 'OAUTH_AMAZON_SECRET', + ), + array( + 'OAUTH_BITBUCKET_NAME', + 'OAUTH_BITBUCKET_ID', + 'OAUTH_BITBUCKET_SECRET', + ), + array( + 'OAUTH_BITLY_NAME', + 'OAUTH_BITLY_ID', + 'OAUTH_BITLY_SECRET', + ), + array( + 'OAUTH_BITRIX24_NAME', + 'OAUTH_BITRIX24_ID', + 'OAUTH_BITRIX24_SECRET', + ), + array( + 'OAUTH_BOX_NAME', + 'OAUTH_BOX_ID', + 'OAUTH_BOX_SECRET', + ), + array( + 'OAUTH_BUFFER_NAME', + 'OAUTH_BUFFER_ID', + 'OAUTH_BUFFER_SECRET', + ), + array( + 'OAUTH_DAILYMOTION_NAME', + 'OAUTH_DAILYMOTION_ID', + 'OAUTH_DAILYMOTION_SECRET', + ), + array( + 'OAUTH_DEVIANTART_NAME', + 'OAUTH_DEVIANTART_ID', + 'OAUTH_DEVIANTART_SECRET', + ), + array( + 'OAUTH_DROPBOX_NAME', + 'OAUTH_DROPBOX_ID', + 'OAUTH_DROPBOX_SECRET', + ), + array( + 'OAUTH_ETSY_NAME', + 'OAUTH_ETSY_ID', + 'OAUTH_ETSY_SECRET', + ), + array( + 'OAUTH_EVEONLINE_NAME', + 'OAUTH_EVEONLINE_ID', + 'OAUTH_EVEONLINE_SECRET', + ), + array( + 'OAUTH_FACEBOOK_NAME', + 'OAUTH_FACEBOOK_ID', + 'OAUTH_FACEBOOK_SECRET', + ), + array( + 'OAUTH_FITBIT_NAME', + 'OAUTH_FITBIT_ID', + 'OAUTH_FITBIT_SECRET', + ), + array( + 'OAUTH_FIVEHUNDREDPX_NAME', + 'OAUTH_FIVEHUNDREDPX_ID', + 'OAUTH_FIVEHUNDREDPX_SECRET', + ), + array( + 'OAUTH_FLICKR_NAME', + 'OAUTH_FLICKR_ID', + 'OAUTH_FLICKR_SECRET', + ), + array( + 'OAUTH_FOURSQUARE_NAME', + 'OAUTH_FOURSQUARE_ID', + 'OAUTH_FOURSQUARE_SECRET', + ), + array( + 'OAUTH_GITHUB_NAME', + 'OAUTH_GITHUB_ID', + 'OAUTH_GITHUB_SECRET', + 'OAUTH_GITHUB_DESC', + ), + array( + 'OAUTH_GOOGLE_NAME', + 'OAUTH_GOOGLE_ID', + 'OAUTH_GOOGLE_SECRET', + 'OAUTH_GOOGLE_DESC', + ), + array( + 'OAUTH_HUBIC_NAME', + 'OAUTH_HUBIC_ID', + 'OAUTH_HUBIC_SECRET', + ), + array( + 'OAUTH_INSTAGRAM_NAME', + 'OAUTH_INSTAGRAM_ID', + 'OAUTH_INSTAGRAM_SECRET', + ), + array( + 'OAUTH_LINKEDIN_NAME', + 'OAUTH_LINKEDIN_ID', + 'OAUTH_LINKEDIN_SECRET', + ), + array( + 'OAUTH_MAILCHIMP_NAME', + 'OAUTH_MAILCHIMP_ID', + 'OAUTH_MAILCHIMP_SECRET', + ), + array( + 'OAUTH_MICROSOFT_NAME', + 'OAUTH_MICROSOFT_ID', + 'OAUTH_MICROSOFT_SECRET', + ), + array( + 'OAUTH_MICROSOFT2_NAME', + 'OAUTH_MICROSOFT2_ID', + 'OAUTH_MICROSOFT2_SECRET', + ), + array( + 'OAUTH_NEST_NAME', + 'OAUTH_NEST_ID', + 'OAUTH_NEST_SECRET', + ), + array( + 'OAUTH_NETATMO_NAME', + 'OAUTH_NETATMO_ID', + 'OAUTH_NETATMO_SECRET', + ), + array( + 'OAUTH_PARROTFLOWERPOWER_NAME', + 'OAUTH_PARROTFLOWERPOWER_ID', + 'OAUTH_PARROTFLOWERPOWER_SECRET', + ), + array( + 'OAUTH_PAYPAL_NAME', + 'OAUTH_PAYPAL_ID', + 'OAUTH_PAYPAL_SECRET', + ), + array( + 'OAUTH_POCKET_NAME', + 'OAUTH_POCKET_ID', + 'OAUTH_POCKET_SECRET', + ), + array( + 'OAUTH_QUICKBOOKS_NAME', + 'OAUTH_QUICKBOOKS_ID', + 'OAUTH_QUICKBOOKS_SECRET', + ), + array( + 'OAUTH_REDDIT_NAME', + 'OAUTH_REDDIT_ID', + 'OAUTH_REDDIT_SECRET', + ), + array( + 'OAUTH_REDMINE_NAME', + 'OAUTH_REDMINE_ID', + 'OAUTH_REDMINE_SECRET', + ), + array( + 'OAUTH_RUNKEEPER_NAME', + 'OAUTH_RUNKEEPER_ID', + 'OAUTH_RUNKEEPER_SECRET', + ), + array( + 'OAUTH_SCOOPIT_NAME', + 'OAUTH_SCOOPIT_ID', + 'OAUTH_SCOOPIT_SECRET', + ), + array( + 'OAUTH_SOUNDCLOUD_NAME', + 'OAUTH_SOUNDCLOUD_ID', + 'OAUTH_SOUNDCLOUD_SECRET', + ), + array( + 'OAUTH_SPOTIFY_NAME', + 'OAUTH_SPOTIFY_ID', + 'OAUTH_SPOTIFY_SECRET', + ), + array( + 'OAUTH_STRAVA_NAME', + 'OAUTH_STRAVA_ID', + 'OAUTH_STRAVA_SECRET', + ), + array( + 'OAUTH_STRIPETEST_NAME', + 'OAUTH_STRIPETEST_ID', + 'OAUTH_STRIPETEST_SECRET_KEY', + ), + array( + 'OAUTH_STRIPELIVE_NAME', + 'OAUTH_STRIPELIVE_ID', + 'OAUTH_STRIPELIVE_SECRET_KEY', + ), + array( + 'OAUTH_TUMBLR_NAME', + 'OAUTH_TUMBLR_ID', + 'OAUTH_TUMBLR_SECRET', + ), + array( + 'OAUTH_TWITTER_NAME', + 'OAUTH_TWITTER_ID', + 'OAUTH_TWITTER_SECRET', + ), + array( + 'OAUTH_USTREAM_NAME', + 'OAUTH_USTREAM_ID', + 'OAUTH_USTREAM_SECRET', + ), + array( + 'OAUTH_VIMEO_NAME', + 'OAUTH_VIMEO_ID', + 'OAUTH_VIMEO_SECRET', + ), + array( + 'OAUTH_YAHOO_NAME', + 'OAUTH_YAHOO_ID', + 'OAUTH_YAHOO_SECRET', + ), + array( + 'OAUTH_YAMMER_NAME', + 'OAUTH_YAMMER_ID', + 'OAUTH_YAMMER_SECRET', + ), + array( + 'OAUTH_GENERIC_NAME', + 'OAUTH_GENERIC_ID', + 'OAUTH_GENERIC_SECRET', + ) ); return $list; @@ -291,7 +291,7 @@ function getSupportedOauth2Array() ), ); if (isModEnabled('stripe')) { - $supportedoauth2array['OAUTH_STRIPE_TEST_NAME'] = array( + $supportedoauth2array['OAUTH_STRIPETEST_NAME'] = array( 'callbackfile' => 'stripetest', 'picto' => 'stripe', 'urlforapp' => '', @@ -300,7 +300,7 @@ function getSupportedOauth2Array() 'availablescopes' => 'read_write', 'returnurl' => '/core/modules/oauth/stripetest_oauthcallback.php' ); - $supportedoauth2array['OAUTH_STRIPE_LIVE_NAME'] = array( + $supportedoauth2array['OAUTH_STRIPELIVE_NAME'] = array( 'callbackfile' => 'stripelive', 'picto' => 'stripe', 'urlforapp' => '', @@ -338,13 +338,13 @@ function getSupportedOauth2Array() 'urlforcredentials' => 'https://portal.azure.com/', // User.Read is a microsoftgraph scope, if it's not working, do not select it 'availablescopes' => 'openid,offline_access,profile,email,User.Read,https://outlook.office.com/.default', - 'returnurl' => '/core/modules/oauth/microsoft_oauthcallback.php' + 'returnurl' => '/core/modules/oauth/microsoft2_oauthcallback.php' ); if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) { - $supportedoauth2array['OAUTH_OTHER_NAME'] = array( + $supportedoauth2array['OAUTH_GENERIC_NAME'] = array( 'callbackfile' => 'generic', 'picto' => 'generic', - 'urlforapp' => 'OAUTH_OTHER_DESC', + 'urlforapp' => 'OAUTH_GENERIC_DESC', 'name' => 'Other', 'urlforcredentials' => '', 'availablescopes' => 'Standard', diff --git a/htdocs/core/lib/order.lib.php b/htdocs/core/lib/order.lib.php index 2a8ccfef236..2f2d71a978b 100644 --- a/htdocs/core/lib/order.lib.php +++ b/htdocs/core/lib/order.lib.php @@ -316,7 +316,7 @@ function getCustomerOrderPieChart($socid = 0) } } if (!empty($conf->use_javascript_ajax)) { - $result .= ''; print ''; } @@ -472,7 +472,7 @@ function show_stats_for_company($product, $socid) print ''; print ''; } @@ -491,7 +491,7 @@ function show_stats_for_company($product, $socid) print ''; print ''; } @@ -510,7 +510,7 @@ function show_stats_for_company($product, $socid) print ''; print ''; } @@ -529,7 +529,7 @@ function show_stats_for_company($product, $socid) print ''; print ''; } @@ -567,7 +567,7 @@ function show_stats_for_company($product, $socid) print ''; print ''; } @@ -627,7 +627,7 @@ function show_stats_for_company($product, $socid) print ''; print ''; } diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index 5ff5b4968b5..a47234838fa 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -200,6 +200,9 @@ function dolDecrypt($chain, $key = '') //var_dump('key='.$key); $reg = array(); if (preg_match('/^dolcrypt:([^:]+):(.+)$/', $chain, $reg)) { + // Do not enable this log, except during debug + //dol_syslog("We try to decrypt the chain: ".$chain, LOG_DEBUG); + $ciphering = $reg[1]; if (function_exists('openssl_decrypt')) { if (empty($key)) { diff --git a/htdocs/core/lib/tax.lib.php b/htdocs/core/lib/tax.lib.php index 9632a893acd..62c375ed81b 100644 --- a/htdocs/core/lib/tax.lib.php +++ b/htdocs/core/lib/tax.lib.php @@ -1154,8 +1154,8 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire $sql = "SELECT d.rowid, d.product_type as dtype, e.rowid as facid, d.$f_rate as rate, d.vat_src_code as vat_src_code, d.total_ht as total_ht, d.total_ttc as total_ttc, d.total_tva as total_vat, e.note_private as descr,"; $sql .= " d.total_localtax1 as total_localtax1, d.total_localtax2 as total_localtax2, "; $sql .= " e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,"; - $sql .= " e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,"; - $sql .= " p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref"; + $sql .= " e.ref as facnum, e.ref as pref, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,"; + $sql .= " p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid"; $sql .= " FROM ".MAIN_DB_PREFIX."expensereport as e"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."expensereport_det as d ON d.fk_expensereport = e.rowid"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."payment_expensereport as p ON p.fk_expensereport = e.rowid"; @@ -1178,7 +1178,7 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire $sql .= " AND (d.product_type = -1"; $sql .= " OR e.date_debut is NOT null OR e.date_fin IS NOT NULL)"; // enhance detection of service if (getDolGlobalString('MAIN_NOT_INCLUDE_ZERO_VAT_IN_REPORTS')) { - $sql .= " AND (d.".$f_rate." <> 0 OR d.total_tva <> 0)"; + $sql .= " AND (d.".$db->sanitize($f_rate)." <> 0 OR d.total_tva <> 0)"; } $sql .= " ORDER BY e.rowid"; diff --git a/htdocs/core/lib/ticket.lib.php b/htdocs/core/lib/ticket.lib.php index 7b5a271fce9..3d38f639d97 100644 --- a/htdocs/core/lib/ticket.lib.php +++ b/htdocs/core/lib/ticket.lib.php @@ -109,6 +109,7 @@ function ticket_prepare_head($object) include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $upload_dir = $conf->ticket->dir_output."/".$object->ref; $nbFiles = count(dol_dir_list($upload_dir, 'files')); + /* disabled. Too many bugs. All file of a ticket must be stored into ticket. File must be linked to an event by column agenda_id into llx_ecmfiles. $sql = 'SELECT id FROM '.MAIN_DB_PREFIX.'actioncomm'; $sql .= " WHERE fk_element = ".(int) $object->id." AND elementtype = 'ticket'"; $resql = $db->query($sql); @@ -119,6 +120,7 @@ function ticket_prepare_head($object) $nbFiles += count(dol_dir_list($upload_msg_dir, "files")); } } + */ $head[$h][0] = DOL_URL_ROOT.'/ticket/document.php?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); if ($nbFiles > 0) { diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 7e205b0394a..f46b2181ba4 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -609,7 +609,7 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) print ''; print ''; print ''; // add filters from hooks $parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); +$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $productstatic, $action); if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } @@ -355,6 +357,10 @@ if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { } print ''."\n"; +$totalarray = [ + 'nbfield' => 0 +]; + // Fields title label // -------------------------------------------------------------------- print ''; @@ -372,7 +378,7 @@ print_liste_field_titre("QtyMin", $_SERVER["PHP_SELF"], "ppf.quantity", $param, print_liste_field_titre("UnitPrice", $_SERVER["PHP_SELF"], "ppf.unitprice", $param, "", '', $sortfield, $sortorder, 'right '); // add header cells from hooks $parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object, $action); +$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $productstatic, $action); if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } @@ -406,17 +412,17 @@ while ($i < $imaxinloop) { $productstatic->barcode = $objp->barcode; $productstatic->barcode_type = $objp->fk_barcode_type; - print ''; + print ''; // Action column if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { print ''; if (!$i) { @@ -459,10 +465,10 @@ while ($i < $imaxinloop) { print ''; if (!$i) { @@ -491,7 +497,7 @@ if ($num == 0) { $db->free($resql); $parameters = array('arrayfields' => $arrayfields, 'sql' => $sql); -$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $productstatic, $action); // Note that $action and $productstatic may have been modified by hook print $hookmanager->resPrint; print '
'.$langs->trans("TotalVente").'
'.$langs->trans("TotalVente").''; - print price($row[$i]); + print ''; + print price($row[2*$i - 2]); // Add link to make binding - if (!empty(price2num($row[$i]))) { + if (!empty(price2num($row[2*$i - 2])) || !empty($row[2*$i - 1])) { print ''; print img_picto($langs->trans("ValidateHistory").' ('.$langs->trans('Month'.str_pad((string) $cursormonth, 2, '0', STR_PAD_LEFT)).' '.$cursoryear.')', 'link', 'class="marginleft2"'); print ''; } print ''.price($row[14]).''.price($row[26]).'
'; + print ''; if ($row[0] == 'tobind') { //print ''.$langs->trans("Unknown").''; } else { print length_accountg($row[0]).' - '; } - //print ''; if ($row[0] == 'tobind') { print $langs->trans("UseMenuToSetBindindManualy", DOL_URL_ROOT.'/accountancy/expensereport/list.php?search_year='.((int) $y), $langs->transnoentitiesnoconv("ToBind")); } else { diff --git a/htdocs/accountancy/expensereport/lines.php b/htdocs/accountancy/expensereport/lines.php index c6519533a33..a07a24cf7ad 100644 --- a/htdocs/accountancy/expensereport/lines.php +++ b/htdocs/accountancy/expensereport/lines.php @@ -318,7 +318,7 @@ if ($result) { print_barre_liste($langs->trans("ExpenseReportLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit); print ''.$langs->trans("DescVentilDoneExpenseReport").'
'; - print '
'.$langs->trans("ChangeAccount").' '; + print '
'.$langs->trans("ChangeAccount").'
'; print $formaccounting->select_account($account_parent, 'account_parent', 2, array(), 0, 0, 'maxwidth300 maxwidthonsmartphone valignmiddle'); print '
'; diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index fb1a05645d2..aa17090174e 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -562,9 +562,9 @@ if ($result) { $resultmid = $db->query($sqlmid); if ($resultmid) { $objmid = $db->fetch_object($resultmid); - $tabtp[$obj->rowid][$objmid->accountancy_account_capital] = isset($tabtp[$obj->rowid][$objmid->accountancy_account_capital]) ? $tabtp[$obj->rowid][$objmid->accountancy_account_capital] - $objmid->amount_capital : $amounttouse; - $tabtp[$obj->rowid][$objmid->accountancy_account_insurance] = isset($tabtp[$obj->rowid][$objmid->accountancy_account_insurance]) ? $tabtp[$obj->rowid][$objmid->accountancy_account_insurance] - $objmid->amount_insurance : $amounttouse; - $tabtp[$obj->rowid][$objmid->accountancy_account_interest] = isset($tabtp[$obj->rowid][$objmid->accountancy_account_interest]) ? $tabtp[$obj->rowid][$objmid->accountancy_account_interest] - $objmid->amount_interes : $amounttouse; + $tabtp[$obj->rowid][$objmid->accountancy_account_capital] = isset($objmid->amount_capital) ? $tabtp[$obj->rowid][$objmid->accountancy_account_capital] - $objmid->amount_capital : 0; + $tabtp[$obj->rowid][$objmid->accountancy_account_insurance] = isset($objmid->amount_insurance) ? $tabtp[$obj->rowid][$objmid->accountancy_account_insurance] - $objmid->amount_insurance : 0; + $tabtp[$obj->rowid][$objmid->accountancy_account_interest] = isset($objmid->amount_interest) ? $tabtp[$obj->rowid][$objmid->accountancy_account_interest] - $objmid->amount_interest : 0; } } elseif ($links[$key]['type'] == 'banktransfert') { $accountLinestatic->fetch($links[$key]['url_id']); @@ -608,25 +608,6 @@ if ($result) { $tabtp[$obj->rowid]['NotDefined'] = $tabbq[$obj->rowid][$compta_bank]; } - // Check account number is ok - /*if ($action == 'writebookkeeping') // Make test now in such a case - { - reset($tabbq[$obj->rowid]); - $first_key_tabbq = key($tabbq[$obj->rowid]); - if (empty($first_key_tabbq)) - { - $error++; - setEventMessages($langs->trans('ErrorAccountancyCodeOnBankAccountNotDefined', $obj->baref), null, 'errors'); - } - reset($tabtp[$obj->rowid]); - $first_key_tabtp = key($tabtp[$obj->rowid]); - if (empty($first_key_tabtp)) - { - $error++; - setEventMessages($langs->trans('ErrorAccountancyCodeOnThirdPartyNotDefined'), null, 'errors'); - } - }*/ - // if($obj->socid)$tabtp[$obj->rowid][$compta_soc] += $amounttouse; $i++; @@ -643,7 +624,7 @@ if ($result) { //var_dump($tabtype); // Write bookkeeping -if (!$error && $action == 'writebookkeeping') { +if (!$error && $action == 'writebookkeeping' && $user->hasRight('accounting', 'bind', 'write')) { $now = dol_now(); $accountingaccountcustomer = new AccountingAccount($db); @@ -977,7 +958,7 @@ if (!$error && $action == 'writebookkeeping') { // Export -if ($action == 'exportcsv') { // ISO and not UTF8 ! +if ($action == 'exportcsv' && $user->hasRight('accounting', 'bind', 'write')) { // ISO and not UTF8 ! $sep = getDolGlobalString('ACCOUNTING_EXPORT_SEPARATORCSV'); $filename = 'journal'; diff --git a/htdocs/accountancy/journal/expensereportsjournal.php b/htdocs/accountancy/journal/expensereportsjournal.php index 8ddc948d517..34abad53a40 100644 --- a/htdocs/accountancy/journal/expensereportsjournal.php +++ b/htdocs/accountancy/journal/expensereportsjournal.php @@ -246,7 +246,7 @@ while ($i < $num) { } // Bookkeeping Write -if ($action == 'writebookkeeping' && !$error) { +if ($action == 'writebookkeeping' && !$error && $user->hasRight('accounting', 'bind', 'write')) { $now = dol_now(); $error = 0; diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index b02727da212..dce6af450d3 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -392,7 +392,7 @@ while ($i < $num) { // Bookkeeping Write -if ($action == 'writebookkeeping' && !$error) { +if ($action == 'writebookkeeping' && !$error && $user->hasRight('accounting', 'bind', 'write')) { $now = dol_now(); $error = 0; diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index 0948aacfbc4..1396c43328a 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -226,6 +226,14 @@ if ($result) { $vatdata = $vatdata_cache[$tax_id]; } else { $vatdata = getTaxesFromId($tax_id, $mysoc, $mysoc, 0); + if (getDolGlobalString('SERVICE_ARE_ECOMMERCE_200238EC')) { + $buyer = new Societe($db); + $buyer->fetch($obj->socid); + } else { + $buyer = null; // We don't need the buyer in this case + } + $seller = $mysoc; + $vatdata = getTaxesFromId($tax_id, $buyer, $seller, 0); $vatdata_cache[$tax_id] = $vatdata; } $compta_tva = (!empty($vatdata['accountancy_code_sell']) ? $vatdata['accountancy_code_sell'] : $cpttva); @@ -419,7 +427,7 @@ if ($resql) { //var_dump($errorforinvoice);exit; // Bookkeeping Write -if ($action == 'writebookkeeping' && !$error) { +if ($action == 'writebookkeeping' && !$error && $user->hasRight('accounting', 'bind', 'write')) { $now = dol_now(); $error = 0; @@ -479,7 +487,7 @@ if ($action == 'writebookkeeping' && !$error) { // Warranty if (!$errorforline && getDolGlobalString('INVOICE_USE_RETAINED_WARRANTY')) { - if (isset($tabwaranty[$key]) && is_array($tabwarranty[$key])) { + if (isset($tabwarranty[$key]) && is_array($tabwarranty[$key])) { foreach ($tabwarranty[$key] as $k => $mt) { $bookkeeping = new BookKeeping($db); $bookkeeping->doc_date = $val["date"]; diff --git a/htdocs/accountancy/journal/variousjournal.php b/htdocs/accountancy/journal/variousjournal.php index 49194a41eb9..c812ef7c7fc 100644 --- a/htdocs/accountancy/journal/variousjournal.php +++ b/htdocs/accountancy/journal/variousjournal.php @@ -114,7 +114,7 @@ $reshook = $hookmanager->executeHooks('doActions', $parameters, $user, $action); $reload = false; // Bookkeeping Write -if ($action == 'writebookkeeping') { +if ($action == 'writebookkeeping' && $user->hasRight('accounting', 'bind', 'write')) { $error = 0; $result = $object->writeIntoBookkeeping($user, $journal_data); @@ -133,7 +133,7 @@ if ($action == 'writebookkeeping') { } $reload = true; -} elseif ($action == 'exportcsv') { +} elseif ($action == 'exportcsv' && $user->hasRight('accounting', 'bind', 'write')) { // Export CSV $result = $object->exportCsv($journal_data, $date_end); if ($result < 0) { diff --git a/htdocs/accountancy/supplier/card.php b/htdocs/accountancy/supplier/card.php index 153c86b7c6c..03332e9a862 100644 --- a/htdocs/accountancy/supplier/card.php +++ b/htdocs/accountancy/supplier/card.php @@ -141,20 +141,23 @@ if (!empty($id)) { print ''; - // ref invoice + // Ref invoice print ''; $facturefournisseur_static->ref = $objp->ref; $facturefournisseur_static->id = $objp->facid; print ''; print ''; - print ''; - print ''; - print ''; - print ''; - print ''; + print ''; + + print ''; + print ''; + + print ''; + print '
'.$langs->trans("BillsSuppliers").''.$facturefournisseur_static->getNomUrl(1).'
'.$langs->trans("Line").''.stripslashes(nl2br($objp->description)).'
'.$langs->trans("ProductLabel").''.dol_trunc($objp->product_label, 24).'
'.$langs->trans("Account").''; + print '
'.$langs->trans("Description").''.dolPrintHTML($objp->description).'
'.$langs->trans("ProductLabel").''.dol_trunc($objp->product_label, 24).'
'.$langs->trans("Account").''; print $formaccounting->select_account($objp->fk_code_ventilation, 'codeventil', 1); print '
'; print dol_get_fiche_end(); diff --git a/htdocs/accountancy/supplier/index.php b/htdocs/accountancy/supplier/index.php index 12618d74181..19064b24d6d 100644 --- a/htdocs/accountancy/supplier/index.php +++ b/htdocs/accountancy/supplier/index.php @@ -81,7 +81,7 @@ if (!$user->hasRight('accounting', 'bind', 'write')) { */ if (($action == 'clean' || $action == 'validatehistory') && $user->hasRight('accounting', 'bind', 'write')) { - // Clean database + // Clean database by removing binding done on non existing or no more existing accounts $db->begin(); $sql1 = "UPDATE ".$db->prefix()."facture_fourn_det as fd"; $sql1 .= " SET fk_code_ventilation = 0"; @@ -105,7 +105,7 @@ if (($action == 'clean' || $action == 'validatehistory') && $user->hasRight('acc // End clean database } -if ($action == 'validatehistory') { +if ($action == 'validatehistory' && $user->hasRight('accounting', 'bind', 'write')) { $error = 0; $nbbinddone = 0; $nbbindfailed = 0; @@ -178,31 +178,31 @@ if ($action == 'validatehistory') { while ($i < min($num_lines, 10000)) { // No more than 10000 at once $objp = $db->fetch_object($result); - $thirdpartystatic->id = $objp->socid; - $thirdpartystatic->name = $objp->name; - $thirdpartystatic->client = $objp->client; - $thirdpartystatic->fournisseur = $objp->fournisseur; - $thirdpartystatic->code_client = $objp->code_client; - $thirdpartystatic->code_compta_client = $objp->code_compta_client; - $thirdpartystatic->code_fournisseur = $objp->code_fournisseur; - $thirdpartystatic->code_compta_fournisseur = $objp->code_compta_fournisseur; - $thirdpartystatic->email = $objp->email; - $thirdpartystatic->country_code = $objp->country_code; - $thirdpartystatic->tva_intra = $objp->tva_intra; + $thirdpartystatic->id = !empty($objp->socid) ? $objp->socid : 0; + $thirdpartystatic->name = !empty($objp->name) ? $objp->name : ""; + $thirdpartystatic->client = !empty($objp->client) ? $objp->client : ""; + $thirdpartystatic->fournisseur = !empty($objp->fournisseur) ? $objp->fournisseur : ""; + $thirdpartystatic->code_client = !empty($objp->code_client) ? $objp->code_client : ""; + $thirdpartystatic->code_compta_client = !empty($objp->code_compta_client) ? $objp->code_compta_client : ""; + $thirdpartystatic->code_fournisseur = !empty($objp->code_fournisseur) ? $objp->code_fournisseur : ""; + $thirdpartystatic->code_compta_fournisseur = !empty($objp->code_compta_fournisseur) ? $objp->code_compta_fournisseur : ""; + $thirdpartystatic->email = !empty($objp->email) ? $objp->email : ""; + $thirdpartystatic->country_code = !empty($objp->country_code) ? $objp->country_code : ""; + $thirdpartystatic->tva_intra = !empty($objp->tva_intra) ? $objp->tva_intra : ""; $thirdpartystatic->code_compta_product = $objp->company_code_buy; // The accounting account for product stored on thirdparty object (for level3 suggestion) $product_static->ref = $objp->product_ref; $product_static->id = $objp->product_id; $product_static->type = $objp->type; $product_static->label = $objp->product_label; - $product_static->status = $objp->status; - $product_static->status_buy = $objp->status_buy; + $product_static->status = !empty($objp->status) ? $objp->status : 0; + $product_static->status_buy = !empty($objp->status_buy) ? $objp->status_buy : 0; $product_static->accountancy_code_sell = $objp->code_sell; $product_static->accountancy_code_sell_intra = $objp->code_sell_intra; $product_static->accountancy_code_sell_export = $objp->code_sell_export; - $product_static->accountancy_code_buy = $objp->code_buy; - $product_static->accountancy_code_buy_intra = $objp->code_buy_intra; - $product_static->accountancy_code_buy_export = $objp->code_buy_export; + $product_static->accountancy_code_buy = !empty($objp->code_buy) ? $objp->code_buy : ""; + $product_static->accountancy_code_buy_intra = !empty($objp->code_buy_intra) ? $objp->code_buy_intra : ""; + $product_static->accountancy_code_buy_export = !empty($objp->code_buy_export) ? $objp->code_buy_export : ""; $product_static->tva_tx = $objp->tva_tx_prod; $facture_static->ref = $objp->ref; @@ -301,7 +301,7 @@ print '
'; $y = $year_current; -$buttonbind = ''.img_picto('', 'link', 'class="paddingright fa-color-unset smallpaddingimp"').$langs->trans("ValidateHistory").''; +$buttonbind = ''.img_picto($langs->trans("ValidateHistory"), 'link', 'class="pictofixedwidth fa-color-unset"').$langs->trans("ValidateHistory").''; print_barre_liste(img_picto('', 'unlink', 'class="paddingright fa-color-unset"').$langs->trans("OverviewOfAmountOfLinesNotBound"), '', '', '', '', '', '', -1, '', '', 0, '', '', 0, 1, 1, 0, $buttonbind); @@ -344,8 +344,9 @@ for ($i = 1; $i <= 12; $i++) { $j -= 12; } $sql .= " SUM(".$db->ifsql("MONTH(ff.datef) = ".((int) $j), "ffd.total_ht", "0").") AS month".str_pad((string) $j, 2, "0", STR_PAD_LEFT).","; + $sql .= " SUM(".$db->ifsql("MONTH(ff.datef) = ".((string) $j), "1", "0").") AS nbmonth".str_pad((string) $j, 2, "0", STR_PAD_LEFT).","; } -$sql .= " SUM(ffd.total_ht) as total"; +$sql .= " SUM(ffd.total_ht) as total, COUNT(ffd.rowid) as nb"; $sql .= " FROM ".$db->prefix()."facture_fourn_det as ffd"; $sql .= " LEFT JOIN ".$db->prefix()."facture_fourn as ff ON ff.rowid = ffd.fk_facture_fourn"; $sql .= " LEFT JOIN ".$db->prefix()."accounting_account as aa ON aa.rowid = ffd.fk_code_ventilation"; @@ -405,17 +406,17 @@ if ($resql) { $cursoryear = ($cursormonth < getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1)) ? $y + 1 : $y; $tmp = dol_getdate(dol_get_last_day($cursoryear, $cursormonth, 'gmt'), false, 'gmt'); - print '
'; - print price($row[$i]); + print ''; + print price($row[2*$i - 2]); // Add link to make binding - if (!empty(price2num($row[$i]))) { + if (!empty(price2num($row[2*$i - 2])) || !empty($row[2*$i - 1])) { print ''; print img_picto($langs->trans("ValidateHistory").' ('.$langs->trans('Month'.str_pad((string) $cursormonth, 2, '0', STR_PAD_LEFT)).' '.$cursoryear.')', 'link', 'class="marginleft2"'); print ''; } print ''.price($row[14]).''.price($row[26]).'
'.$langs->trans('State').''; - if ($soc->country_id) { + if ($soc->country_id || GETPOSTISSET('country_id')) { print img_picto('', 'state', 'class="pictofixedwidth"'); - print $formcompany->select_state(GETPOSTISSET('state_id') ? GETPOSTINT('state_id') : $soc->state_id, $soc->country_code); + print $formcompany->select_state(GETPOSTISSET('state_id') ? GETPOSTINT('state_id') : $soc->state_id, GETPOSTISSET('country_id') ? GETPOSTINT('country_id') : $soc->country_code); } else { print $countrynotdefined; } @@ -1298,7 +1299,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { // EMail print '
'.(getDolGlobalString("ADHERENT_MAIL_REQUIRED") ? '' : '').$langs->trans("EMail").(getDolGlobalString("ADHERENT_MAIL_REQUIRED") ? '' : '').''.img_picto('', 'object_email', 'class="pictofixedwidth"').'email).'">
'.img_picto('', 'object_email', 'class="pictofixedwidth"').'email).'">
'.$form->editfieldkey('Web', 'member_url', GETPOST('member_url', 'alpha'), $object, 0).'
'; - //print ''; + //print ''; print $oldyear; //print ''; print ''; - print ''; + print $form->selectarray("search_type", $adht->liste_array(), $search_type, 1); print''.dol_print_size($size, 1, 1).''.dol_print_size($size, 1, 1).'
'; print ''; print ''; diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index cb191810031..3158b6d47fa 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -916,12 +916,14 @@ class FormMail extends Form } // Complete substitution array with the url to make online payment - $validpaymentmethod = array(); + $paymenturl = ''; + // Set the online payment url link into __ONLINE_PAYMENT_URL__ key + require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; + $validpaymentmethod = getValidOnlinePaymentMethods(''); + if (empty($this->substit['__REF__'])) { $paymenturl = ''; } else { - // Set the online payment url link into __ONLINE_PAYMENT_URL__ key - require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; $langs->loadLangs(array('paypal', 'other')); $typeforonlinepayment = 'free'; if ($this->param["models"] == 'order' || $this->param["models"] == 'order_send') { @@ -935,14 +937,15 @@ class FormMail extends Form } $url = getOnlinePaymentUrl(0, $typeforonlinepayment, $this->substit['__REF__']); $paymenturl = $url; - - $validpaymentmethod = getValidOnlinePaymentMethods(''); } if (count($validpaymentmethod) > 0 && $paymenturl) { $langs->load('other'); $this->substit['__ONLINE_PAYMENT_TEXT_AND_URL__'] = str_replace('\n', "\n", $langs->transnoentities("PredefinedMailContentLink", $paymenturl)); $this->substit['__ONLINE_PAYMENT_URL__'] = $paymenturl; + } elseif (count($validpaymentmethod) > 0) { + $this->substit['__ONLINE_PAYMENT_TEXT_AND_URL__'] = '__ONLINE_PAYMENT_TEXT_AND_URL__'; + $this->substit['__ONLINE_PAYMENT_URL__'] = '__ONLINE_PAYMENT_URL__'; } else { $this->substit['__ONLINE_PAYMENT_TEXT_AND_URL__'] = ''; $this->substit['__ONLINE_PAYMENT_URL__'] = ''; diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index a99af668fd8..6fa34cd6535 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -524,13 +524,13 @@ class FormOther if (!empty($user->socid)) { $sql_usr .= " AND u.fk_soc = ".((int) $user->socid); } - if (getDolGlobalString('USER_HIDE_NONEMPLOYEE_IN_COMBOBOX')) { + if (getDolUserString('USER_HIDE_NONEMPLOYEE_IN_COMBOBOX', getDolGlobalString('USER_HIDE_NONEMPLOYEE_IN_COMBOBOX'))) { $sql_usr .= " AND u.employee <> 0"; } - if (getDolGlobalString('USER_HIDE_EXTERNAL_IN_COMBOBOX')) { + if (getDolUserString('USER_HIDE_EXTERNAL_IN_COMBOBOX', getDolGlobalString('USER_HIDE_EXTERNAL_IN_COMBOBOX'))) { $sql_usr .= " AND u.fk_soc IS NULL"; } - if (getDolGlobalString('USER_HIDE_INACTIVE_IN_COMBOBOX')) { + if (getDolUserString('USER_HIDE_INACTIVE_IN_COMBOBOX', getDolGlobalString('USER_HIDE_INACTIVE_IN_COMBOBOX'))) { // Can be set in setup of module User. $sql_usr .= " AND u.statut <> 0"; } @@ -1253,7 +1253,7 @@ class FormOther if (preg_match('/graph/', $box->class) && $conf->browser->layout != 'phone') { $label = $label.' '; } - $arrayboxtoactivatelabel[$box->id] = array('label' => $label, 'data-html' => img_picto('', $box->boximg, 'class="pictofixedwidth"').$langs->trans($label)); // We keep only boxes not shown for user, to show into combo list + $arrayboxtoactivatelabel[$box->id] = array('label' => $label, 'data-html' => img_picto('', $box->boximg, 'class="pictofixedwidth valignmiddle"').''.$langs->trans($label).''); // We keep only boxes not shown for user, to show into combo list } foreach ($boxidactivatedforuser as $boxid) { if (empty($boxorder)) { diff --git a/htdocs/core/class/html.formsetup.class.php b/htdocs/core/class/html.formsetup.class.php index f8e86ed503f..efc97ad63f2 100644 --- a/htdocs/core/class/html.formsetup.class.php +++ b/htdocs/core/class/html.formsetup.class.php @@ -1317,12 +1317,25 @@ class FormSetupItem public function generateOutputFieldColor() { global $langs; + $out = ''; $this->fieldAttr['disabled'] = null; $color = colorArrayToHex(colorStringToArray($this->fieldValue, array()), ''); - if ($color) { - return ''; + $useDefaultColor = false; + if (!$color && !empty($this->defaultFieldValue)) { + $color = $this->defaultFieldValue; + $useDefaultColor = true; } - return $langs->trans("Default"); + if ($color) { + $out.= ''; + } + + if ($useDefaultColor) { + $out.= ' '.$langs->trans("Default"); + } else { + $out.= ' #'.$color; + } + + return $out; } /** * generateInputFieldColor diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index 7755f5dd0ec..f2cb41d466f 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -693,7 +693,7 @@ class FormTicket if (isModEnabled('project') && !$this->ispublic) { $formproject = new FormProjets($this->db); print '
'; - print img_picto('', 'project').$formproject->select_projects(-1, $projectid, 'projectid', 0, 0, 1, 1, 0, 0, 0, '', 1, 0, 'maxwidth500'); + print img_picto('', 'project', 'class="pictofixedwidth"').$formproject->select_projects(-1, $projectid, 'projectid', 0, 0, 1, 1, 0, 0, 0, '', 1, 0, 'maxwidth500'); print '
'; - print img_picto('', 'contract'); + print img_picto('', 'contract', 'class="pictofixedwidth"'); print $formcontract->select_contract(-1, GETPOSTINT('contactid'), 'contractid', 0, 1, 1, 1); print '
'; - $selectedfields = (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); + $selectedfields = (is_array($arrayofmassactions) && count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); print $selectedfields; print '
'; + $result .= '
'; include_once DOL_DOCUMENT_ROOT.'/core/class/dolgraph.class.php'; $dolgraph = new DolGraph(); diff --git a/htdocs/core/lib/payments.lib.php b/htdocs/core/lib/payments.lib.php index c299a33ed35..357730cdac7 100644 --- a/htdocs/core/lib/payments.lib.php +++ b/htdocs/core/lib/payments.lib.php @@ -270,12 +270,12 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = 0, $freetag = 'y } if ($type == 'free') { - $out = $urltouse.'/public/payment/newpayment.php?amount='.($mode ? '' : '').$amount.($mode ? '' : '').'&tag='.($mode ? '' : '').$freetag.($mode ? '' : ''); + $out = $urltouse.'/public/payment/newpayment.php?amount='.($mode ? '' : '').price2num($amount, 'MT').($mode ? '' : '').'&tag='.($mode ? '' : '').$freetag.($mode ? '' : ''); if (getDolGlobalString('PAYMENT_SECURITY_TOKEN')) { if (!getDolGlobalString('PAYMENT_SECURITY_TOKEN_UNIQUE')) { $out .= '&securekey='.urlencode(getDolGlobalString('PAYMENT_SECURITY_TOKEN')); } else { - $out .= '&securekey='.urlencode(dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN'), 2)); + $out .= '&securekey='.urlencode(dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN'), 'sha1md5')); } } //if ($mode) $out.='&noidempotency=1'; @@ -297,7 +297,7 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = 0, $freetag = 'y $out .= "hash('" . getDolGlobalString('PAYMENT_SECURITY_TOKEN')."' + '".$type."' + order_ref)"; } if ($mode == 0) { - $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN') . $type.$ref, 2); + $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN').$type.$ref, 'sha1md5'); } $out .= ($mode ? '' : ''); } @@ -320,7 +320,7 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = 0, $freetag = 'y $out .= "hash('" . getDolGlobalString('PAYMENT_SECURITY_TOKEN')."' + '".$type."' + invoice_ref)"; } if ($mode == 0) { - $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN') . $type.$ref, 2); + $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN').$type.$ref, 'sha1md5'); } $out .= ($mode ? '' : ''); } @@ -343,7 +343,7 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = 0, $freetag = 'y $out .= "hash('" . getDolGlobalString('PAYMENT_SECURITY_TOKEN')."' + '".$type."' + contractline_ref)"; } if ($mode == 0) { - $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN') . $type.$ref, 2); + $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN').$type.$ref, 'sha1md5'); } $out .= ($mode ? '' : ''); } @@ -351,7 +351,7 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = 0, $freetag = 'y } elseif ($type == 'member' || $type == 'membersubscription') { $newtype = 'member'; $out = $urltouse.'/public/payment/newpayment.php?source=member'; - $out .= '&amount='.$amount; + $out .= '&amount='.price2num($amount, 'MT'); $out .= '&ref='.($mode ? '' : ''); if ($mode == 1) { $out .= 'member_ref'; @@ -365,11 +365,11 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = 0, $freetag = 'y $out .= '&securekey='.urlencode(getDolGlobalString('PAYMENT_SECURITY_TOKEN')); } else { $out .= '&securekey='.($mode ? '' : ''); - if ($mode == 1) { + if ($mode == 1) { // mode tuto $out .= "hash('" . getDolGlobalString('PAYMENT_SECURITY_TOKEN')."' + '".$newtype."' + member_ref)"; } - if ($mode == 0) { - $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN') . $newtype.$ref, 2); + if ($mode == 0) { // mode real + $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN').$newtype.$ref, 'sha1md5'); } $out .= ($mode ? '' : ''); } @@ -392,7 +392,7 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = 0, $freetag = 'y $out .= "hash('" . getDolGlobalString('PAYMENT_SECURITY_TOKEN')."' + '".$type."' + donation_ref)"; } if ($mode == 0) { - $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN') . $type.$ref, 2); + $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN').$type.$ref, 'sha1md5'); } $out .= ($mode ? '' : ''); } @@ -415,7 +415,7 @@ function getOnlinePaymentUrl($mode, $type, $ref = '', $amount = 0, $freetag = 'y $out .= "hash('" . getDolGlobalString('PAYMENT_SECURITY_TOKEN')."' + '".$type."' + invoice_ref)"; } if ($mode == 0) { - $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN') . $type.$ref, 2); + $out .= dol_hash(getDolGlobalString('PAYMENT_SECURITY_TOKEN').$type.$ref, 'sha1md5'); } $out .= ($mode ? '' : ''); } diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index ca1d72e1cd3..92f2c55aa73 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -814,17 +814,24 @@ function pdf_watermark(&$pdf, $outputlangs, $h, $w, $unit, $text) $watermark_x = $w / 2; $watermark_y = $h / 3; $pdf->SetFont('', 'B', 40); - $pdf->SetTextColor(255, 192, 203); + $pdf->SetTextColor(255, 0, 0); //rotate $pdf->_out(sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm', cos($watermark_angle), sin($watermark_angle), -sin($watermark_angle), cos($watermark_angle), $watermark_x * $k, ($h - $watermark_y) * $k, -$watermark_x * $k, -($h - $watermark_y) * $k)); //print watermark $pdf->SetXY($watermark_x_pos, $watermark_y_pos); + + // set alpha to semi-transparency + $pdf->SetAlpha(0.3); $pdf->Cell($w - 20, 25, $outputlangs->convToOutputCharset($text), "", 2, "C", 0); + //antirotate $pdf->_out('Q'); $pdf->SetXY($savx, $savy); + + // Restore alpha + $pdf->SetAlpha(1); } @@ -2501,10 +2508,12 @@ function pdf_getLinkedObjects(&$object, $outputlangs) $outputlangs->load('orders'); if (count($objects) > 1 && count($objects) <= (getDolGlobalInt("MAXREFONDOC") ? getDolGlobalInt("MAXREFONDOC") : 10)) { - $object->note_public = dol_concatdesc($object->note_public, $outputlangs->transnoentities("RefOrder").' :'); - foreach ($objects as $elementobject) { - $object->note_public = dol_concatdesc($object->note_public, $outputlangs->transnoentities($elementobject->ref).(empty($elementobject->ref_client) ? '' : ' ('.$elementobject->ref_client.')').(empty($elementobject->ref_supplier) ? '' : ' ('.$elementobject->ref_supplier.')').' '); - $object->note_public = dol_concatdesc($object->note_public, $outputlangs->transnoentities("OrderDate").' : '.dol_print_date($elementobject->date, 'day', '', $outputlangs)); + if (empty($object->context['DolPublicNoteAppendedGetLinkedObjects'])) { // Check if already appended before add to avoid repeat data + $object->note_public = dol_concatdesc($object->note_public, $outputlangs->transnoentities("RefOrder").' :'); + foreach ($objects as $elementobject) { + $object->note_public = dol_concatdesc($object->note_public, $outputlangs->transnoentities($elementobject->ref).(empty($elementobject->ref_client) ? '' : ' ('.$elementobject->ref_client.')').(empty($elementobject->ref_supplier) ? '' : ' ('.$elementobject->ref_supplier.')').' '); + $object->note_public = dol_concatdesc($object->note_public, $outputlangs->transnoentities("OrderDate").' : '.dol_print_date($elementobject->date, 'day', '', $outputlangs)); + } } } elseif (count($objects) == 1) { $elementobject = array_shift($objects); @@ -2534,10 +2543,12 @@ function pdf_getLinkedObjects(&$object, $outputlangs) if (count($objects) > 1) { $order = null; + + $refListsTxt = ''; if (empty($object->linkedObjects['commande']) && $object->element != 'commande') { - $object->note_public = dol_concatdesc($object->note_public, $outputlangs->transnoentities("RefOrder").' / '.$outputlangs->transnoentities("RefSending").' :'); + $refListsTxt.= $outputlangs->transnoentities("RefOrder").' / '.$outputlangs->transnoentities("RefSending").' :'; } else { - $object->note_public = dol_concatdesc($object->note_public, $outputlangs->transnoentities("RefSending").' :'); + $refListsTxt.=$outputlangs->transnoentities("RefSending").' :'; } // We concat this record info into fields xxx_value. title is overwrote. foreach ($objects as $elementobject) { @@ -2552,14 +2563,18 @@ function pdf_getLinkedObjects(&$object, $outputlangs) } } } - + $refListsTxt.= (!empty($refListsTxt)?' ':''); if (! is_object($order)) { - $object->note_public = dol_concatdesc($object->note_public, $outputlangs->transnoentities($elementobject->ref)); + $refListsTxt.= $outputlangs->transnoentities($elementobject->ref); } else { - $object->note_public = dol_concatdesc($object->note_public, $outputlangs->convToOutputCharset($order->ref).($order->ref_client ? ' ('.$order->ref_client.')' : '')); - $object->note_public = dol_concatdesc($object->note_public, ' / '.$outputlangs->transnoentities($elementobject->ref)); + $refListsTxt.= $outputlangs->convToOutputCharset($order->ref).($order->ref_client ? ' ('.$order->ref_client.')' : ''); + $refListsTxt.= ' / '.$outputlangs->transnoentities($elementobject->ref); } } + + if (empty($object->context['DolPublicNoteAppendedGetLinkedObjects'])) { // Check if already appended before add to avoid repeat data + $object->note_public = dol_concatdesc($object->note_public, $refListsTxt); + } } elseif (count($objects) == 1) { $elementobject = array_shift($objects); $order = null; @@ -2597,12 +2612,17 @@ function pdf_getLinkedObjects(&$object, $outputlangs) } } + $object->context['DolPublicNoteAppendedGetLinkedObjects'] = 1; + // For add external linked objects if (is_object($hookmanager)) { $parameters = array('linkedobjects' => $linkedobjects, 'outputlangs' => $outputlangs); $action = ''; - $hookmanager->executeHooks('pdf_getLinkedObjects', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks - if (!empty($hookmanager->resArray)) { + $reshook = $hookmanager->executeHooks('pdf_getLinkedObjects', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks + if (empty($reshook)) { + $linkedobjects = array_replace($linkedobjects, $hookmanager->resArray); // array_replace is used to preserve keys + } elseif ($reshook>0) { + // The array must be reinserted even if it is empty because clearing the array could be one of the actions performed by the hook. $linkedobjects = $hookmanager->resArray; } } diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php index da3ea50b9f9..0e8106389dd 100644 --- a/htdocs/core/lib/price.lib.php +++ b/htdocs/core/lib/price.lib.php @@ -59,8 +59,8 @@ * 1=total_vat, (main vat only) * 2=total_ttc, (total_ht + main vat + local taxes) * 3=pu_ht, - * 4=pu_vat, (main vat only) - * 5=pu_ttc, + * 4=pu_vat, (main vat only) !! should not be used + * 5=pu_ttc, !! should not be used except if it is stored in database one day * 6=total_ht_without_discount, * 7=total_vat_without_discount, (main vat only) * 8=total_ttc_without_discount, (total_ht + main vat + local taxes) @@ -194,7 +194,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt } // initialize total (may be HT or TTC depending on price_base_type) - $tot_sans_remise = $pu * $qty * $progress / 100; + $tot_sans_remise = $pu * $qty * ($progress / 100); $tot_avec_remise_ligne = $tot_sans_remise * (1 - ((float) $remise_percent_ligne / 100)); $tot_avec_remise = $tot_avec_remise_ligne * (1 - ((float) $remise_percent_global / 100)); @@ -207,16 +207,26 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt // if input unit price is 'HT', we need to have the totals with main VAT for a correct calculation if ($price_base_type != 'TTC') { - $tot_sans_remise_wt = price2num($tot_sans_remise * (1 + ($txtva / 100)), 'MU'); - $tot_avec_remise_wt = price2num($tot_avec_remise * (1 + ($txtva / 100)), 'MU'); - $pu_wt = price2num($pu * (1 + ($txtva / 100)), 'MU'); + $tot_sans_remise_withvat = price2num($tot_sans_remise * (1 + ($txtva / 100)), 'MU'); + $tot_avec_remise_withvat = price2num($tot_avec_remise * (1 + ($txtva / 100)), 'MU'); + + $tot_sans_remise_withoutvat = $tot_sans_remise; + $tot_avec_remise_withoutvat = $tot_avec_remise; + + $pu_withouttax = $pu; + $pu_withmainvat = price2num($pu * (1 + ($txtva / 100)), 'MU'); } else { - $tot_sans_remise_wt = $tot_sans_remise; - $tot_avec_remise_wt = $tot_avec_remise; - $pu_wt = $pu; + $tot_sans_remise_withvat = $tot_sans_remise; + $tot_avec_remise_withvat = $tot_avec_remise; + + $tot_sans_remise_withoutvat = price2num($tot_sans_remise / (1 + ($txtva / 100)), 'MU'); + $tot_avec_remise_withoutvat = price2num($tot_avec_remise / (1 + ($txtva / 100)), 'MU'); + + $pu_withouttax = price2num($pu / (1 + ($txtva / 100)), 'MU'); + $pu_withmainvat = $pu; } - //print 'rr'.$price_base_type.'-'.$txtva.'-'.$tot_sans_remise_wt."-".$pu_wt."-".$uselocaltax1_rate."-".$localtax1_rate."-".$localtax1_type."\n"; + //print 'rr'.$price_base_type.'-'.$txtva.'-'.$tot_sans_remise_withvat."-".$pu_withmainvat."-".$uselocaltax1_rate."-".$localtax1_rate."-".$localtax1_type."\n"; $localtaxes = array(0, 0, 0); $apply_tax = false; @@ -237,13 +247,13 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt } if ($uselocaltax1_rate && $apply_tax) { - $result[14] = price2num(($tot_sans_remise_wt * (1 + ($localtax1_rate / 100))) - $tot_sans_remise_wt, 'MT'); + $result[14] = price2num(($tot_sans_remise_withvat * (1 + ($localtax1_rate / 100))) - $tot_sans_remise_withvat, 'MT'); $localtaxes[0] += $result[14]; - $result[9] = price2num(($tot_avec_remise_wt * (1 + ($localtax1_rate / 100))) - $tot_avec_remise_wt, 'MT'); + $result[9] = price2num(($tot_avec_remise_withvat * (1 + ($localtax1_rate / 100))) - $tot_avec_remise_withvat, 'MT'); $localtaxes[1] += $result[9]; - $result[11] = price2num(($pu_wt * (1 + ($localtax1_rate / 100))) - $pu_wt, 'MU'); + $result[11] = price2num(($pu_withmainvat * (1 + ($localtax1_rate / 100))) - $pu_withmainvat, 'MU'); $localtaxes[2] += $result[11]; } @@ -264,13 +274,13 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt break; } if ($uselocaltax2_rate && $apply_tax) { - $result[15] = price2num(($tot_sans_remise_wt * (1 + ($localtax2_rate / 100))) - $tot_sans_remise_wt, 'MT'); + $result[15] = price2num(($tot_sans_remise_withvat * (1 + ($localtax2_rate / 100))) - $tot_sans_remise_withvat, 'MT'); $localtaxes[0] += $result[15]; - $result[10] = price2num(($tot_avec_remise_wt * (1 + ($localtax2_rate / 100))) - $tot_avec_remise_wt, 'MT'); + $result[10] = price2num(($tot_avec_remise_withvat * (1 + ($localtax2_rate / 100))) - $tot_avec_remise_withvat, 'MT'); $localtaxes[1] += $result[10]; - $result[12] = price2num(($pu_wt * (1 + ($localtax2_rate / 100))) - $pu_wt, 'MU'); + $result[12] = price2num(($pu_withmainvat * (1 + ($localtax2_rate / 100))) - $pu_withmainvat, 'MU'); $localtaxes[2] += $result[12]; } @@ -311,13 +321,6 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt // if there's some localtax without vat, we calculate localtaxes (we will add them at end) - //If input unit price is 'TTC', we need to have the totals without main VAT for a correct calculation - if ($price_base_type == 'TTC') { - $tot_sans_remise = price2num($tot_sans_remise / (1 + ($txtva / 100)), 'MU'); - $tot_avec_remise = price2num($tot_avec_remise / (1 + ($txtva / 100)), 'MU'); - $pu = price2num($pu / (1 + ($txtva / 100)), 'MU'); - } - $apply_tax = false; switch ($localtax1_type) { case '1': // localtax on product or service @@ -335,13 +338,13 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt break; } if ($uselocaltax1_rate && $apply_tax) { - $result[14] = price2num(($tot_sans_remise * (1 + ($localtax1_rate / 100))) - $tot_sans_remise, 'MT'); // amount tax1 for total_ht_without_discount + $result[14] = price2num(($tot_sans_remise_withoutvat * (1 + ($localtax1_rate / 100))) - $tot_sans_remise_withoutvat, 'MT'); // amount tax1 for total_ht_without_discount $result[8] += $result[14]; // total_ttc_without_discount + tax1 - $result[9] = price2num(($tot_avec_remise * (1 + ($localtax1_rate / 100))) - $tot_avec_remise, 'MT'); // amount tax1 for total_ht + $result[9] = price2num(($tot_avec_remise_withoutvat * (1 + ($localtax1_rate / 100))) - $tot_avec_remise_withoutvat, 'MT'); // amount tax1 for total_ht $result[2] += $result[9]; // total_ttc + tax1 - $result[11] = price2num(($pu * (1 + ($localtax1_rate / 100))) - $pu, 'MU'); // amount tax1 for pu_ht + $result[11] = price2num(($pu_withouttax * (1 + ($localtax1_rate / 100))) - $pu_withouttax, 'MU'); // amount tax1 for pu_ht $result[5] += $result[11]; // pu_ht + tax1 } @@ -362,13 +365,13 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt break; } if ($uselocaltax2_rate && $apply_tax) { - $result[15] = price2num(($tot_sans_remise * (1 + ($localtax2_rate / 100))) - $tot_sans_remise, 'MT'); // amount tax2 for total_ht_without_discount + $result[15] = price2num(($tot_sans_remise_withoutvat * (1 + ($localtax2_rate / 100))) - $tot_sans_remise_withoutvat, 'MT'); // amount tax2 for total_ht_without_discount $result[8] += $result[15]; // total_ttc_without_discount + tax2 - $result[10] = price2num(($tot_avec_remise * (1 + ($localtax2_rate / 100))) - $tot_avec_remise, 'MT'); // amount tax2 for total_ht + $result[10] = price2num(($tot_avec_remise_withoutvat * (1 + ($localtax2_rate / 100))) - $tot_avec_remise_withoutvat, 'MT'); // amount tax2 for total_ht $result[2] += $result[10]; // total_ttc + tax2 - $result[12] = price2num(($pu * (1 + ($localtax2_rate / 100))) - $pu, 'MU'); // amount tax2 for pu_ht + $result[12] = price2num(($pu_withouttax * (1 + ($localtax2_rate / 100))) - $pu_withouttax, 'MU'); // amount tax2 for pu_ht $result[5] += $result[12]; // pu_ht + tax2 } diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index 48c30219248..3080a4a5cbe 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -453,7 +453,7 @@ function show_stats_for_company($product, $socid) print ''; print $product->stats_propale['nb']; print ''; - print $product->stats_propale['qty']; + print price($product->stats_propale['qty'], 1, $langs, 0, 0); print '
'; print $product->stats_proposal_supplier['nb']; print ''; - print $product->stats_proposal_supplier['qty']; + print price($product->stats_proposal_supplier['qty'], 1, $langs, 0, 0); print '
'; print $product->stats_commande['nb']; print ''; - print $product->stats_commande['qty']; + print price($product->stats_commande['qty'], 1, $langs, 0, 0); print '
'; print $product->stats_commande_fournisseur['nb']; print ''; - print $product->stats_commande_fournisseur['qty']; + print price($product->stats_commande_fournisseur['qty'], 1, $langs, 0, 0); print '
'; print $product->stats_facture['nb']; print ''; - print $product->stats_facture['qty']; + print price($product->stats_facture['qty'], 1, $langs, 0, 0); print '
'; print $product->stats_facture_fournisseur['nb']; print ''; - print $product->stats_facture_fournisseur['qty']; + print price($product->stats_facture_fournisseur['qty'], 1, $langs, 0, 0); print '
'; print $product->stats_contrat['nb']; print ''; - print $product->stats_contrat['qty']; + print price($product->stats_contrat['qty'], 1, $langs, 0, 0); print '
'.$langs->trans("UseBorderOnTable").''; if ($edit) { - print ajax_constantonoff('THEME_ELDY_USEBORDERONTABLE', array(), null, 0, 0, 1); + print ajax_constantonoff('THEME_ELDY_USEBORDERONTABLE', array(), null, 0, 0, 1, 2, 0, 1); //print $form->selectyesno('THEME_ELDY_USEBORDERONTABLE', $conf->global->THEME_ELDY_USEBORDERONTABLE, 1); } else { print yn(getDolGlobalString('THEME_ELDY_USEBORDERONTABLE')); diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 6f0abb8e1ca..e1a2a3f4217 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -1023,7 +1023,7 @@ function getNbOfImagePublicURLOfObject($object) * @param int $no Numero of image (if there is several images. 1st one by default) * @param string $extName Extension to differentiate thumb file name ('', '_small', '_mini') * @return string HTML img content or '' if no image found - * @see getNbOfImagePublicURLOfObject() + * @see getNbOfImagePublicURLOfObject(), getImageFromHtmlContent() */ function getImagePublicURLOfObject($object, $no = 1, $extName = '') { @@ -1315,6 +1315,48 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so return $arrayresult; } +/** + * Return the URL of an image found into a HTML content. + * To get image from an external URL to download first, see getAllImages() + * + * @param string $htmlContent HTML content + * @param int $imageNumber The position of image. 1 by default = first image found + * @return string URL of image or '' if not foud + * @see getImagePublicURLOfObject() + */ +function getImageFromHtmlContent($htmlContent, $imageNumber = 1) +{ + $dom = new DOMDocument(); + + libxml_use_internal_errors(false); // Avoid to fill memory with xml errors + if (LIBXML_VERSION < 20900) { + // Avoid load of external entities (security problem). + // Required only if LIBXML_VERSION < 20900 + // @phan-suppress-next-line PhanDeprecatedFunctionInternal + libxml_disable_entity_loader(true); + } + + // Load HTML content into object + $dom->loadHTML($htmlContent); + + // Re-enable HTML load errors + libxml_clear_errors(); + + // Load all img tags + $images = $dom->getElementsByTagName('img'); + + // Check if nb of image is valid + if ($imageNumber > 0 && $imageNumber <= $images->length) { + // Récupère l'image correspondante (index - 1 car $imageNumber est 1-based) + $img = $images->item($imageNumber - 1); + if ($img instanceof DOMElement) { + return $img->getAttribute('src'); + } + } + + return ''; +} + /** * Download all images found into page content $tmp. * If $modifylinks is set, links to images will be replace with a link to viewimage wrapper. diff --git a/htdocs/core/lib/xcal.lib.php b/htdocs/core/lib/xcal.lib.php index 5101f70959a..8b4fef3ed5f 100644 --- a/htdocs/core/lib/xcal.lib.php +++ b/htdocs/core/lib/xcal.lib.php @@ -397,6 +397,18 @@ function build_rssfile($format, $title, $desc, $events_array, $outputfile, $filt $tmpevent['desc'] = $event->description; if (!empty($event->image)) { $tmpevent['image'] = $GLOBALS['website']->virtualhost.'/medias/'.$event->image; + } else { + include_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php'; + $tmpimage = getImageFromHtmlContent($event->content); + if ($tmpimage) { + if (strpos($tmpimage, '/') === 0) { // If $tmpimage is an absolute path + $tmpevent['image'] = $GLOBALS['website']->virtualhost.$tmpimage; + } elseif (stripos($tmpimage, 'http') === 0) { // If $tmpimage is a full URI + $tmpevent['image'] = $tmpimage; + } else { + $tmpevent['image'] = $GLOBALS['website']->virtualhost.'/medias/'.$tmpimage; + } // TODO If $tmpimage is "data:..." + } } $tmpevent['content'] = $event->content; diff --git a/htdocs/core/login/functions_ldap.php b/htdocs/core/login/functions_ldap.php index 89c910b8cf2..472e243a444 100644 --- a/htdocs/core/login/functions_ldap.php +++ b/htdocs/core/login/functions_ldap.php @@ -1,7 +1,8 @@ * Copyright (C) 2008-2021 Regis Houssin - * Copyright (C) 2024 MDW + * Copyright (C) 2024 MDW + * Copyright (C) 2024 William Mead * * 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 @@ -247,19 +248,23 @@ function check_user_password_ldap($usertotest, $passwordtotest, $entitytotest) */ dol_syslog("functions_ldap::check_user_password_ldap Authentication KO failed to connect to LDAP for '".$usertotest."'", LOG_NOTICE); if (is_resource($ldap->connection) || is_object($ldap->connection)) { // If connection ok but bind ko - // @phan-suppress-next-line PhanTypeMismatchArgumentInternal Expects LDAP\Connection, not 'resource' - $ldap->ldapErrorCode = ldap_errno($ldap->connection); - // @phan-suppress-next-line PhanTypeMismatchArgumentInternal Expects LDAP\Connection, not 'resource' - $ldap->ldapErrorText = ldap_error($ldap->connection); - dol_syslog("functions_ldap::check_user_password_ldap ".$ldap->ldapErrorCode." ".$ldap->ldapErrorText); + try { + // @phan-suppress-next-line PhanTypeMismatchArgumentInternal Expects LDAP\Connection, not 'resource' + $ldap->ldapErrorCode = ldap_errno($ldap->connection); + // @phan-suppress-next-line PhanTypeMismatchArgumentInternal Expects LDAP\Connection, not 'resource' + $ldap->ldapErrorText = ldap_error($ldap->connection); + dol_syslog("functions_ldap::check_user_password_ldap ".$ldap->ldapErrorCode." ".$ldap->ldapErrorText); + } catch (Throwable $exception) { + $ldap->ldapErrorCode = 0; + $ldap->ldapErrorText = ''; + dol_syslog('functions_ldap::check_user_password_ldap '.$exception, LOG_WARNING); + } } sleep(1); // Anti brut force protection. Must be same delay when user and password are not valid. - // Load translation files required by the page $langs->loadLangs(array('main', 'other', 'errors')); $_SESSION["dol_loginmesg"] = ($ldap->error ? $ldap->error : $langs->transnoentitiesnoconv("ErrorBadLoginPassword")); } - $ldap->unbind(); } diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index 0d91d521370..6b821ead7a7 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -69,7 +69,7 @@ function print_auguria_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout $classname = 'class="tmenu menuhider nohover"'; $idsel = 'menu'; - $menu->add('#', (getDolGlobalInt('THEME_TOPMENU_DISABLE_IMAGE') == 1 ? '' : ''), 0, $showmode, $atarget, "xxx", '', 0, $id, $idsel, $classname); + $menu->add('#', (getDolGlobalInt('THEME_TOPMENU_DISABLE_IMAGE') == 1 ? '' : ''), 0, $showmode, $atarget, "xxx", '', 0, $id, $idsel, $classname, ''); } $num = count($newTabMenu); @@ -232,7 +232,7 @@ function print_start_menu_entry_auguria($idsel, $classname, $showmode) */ function print_text_menu_entry_auguria($text, $showmode, $url, $id, $idsel, $classname, $atarget, $menuval = array()) { - global $langs, $conf; + global $langs; $classnameimg = str_replace('class="', 'class="tmenuimage ', $classname); $classnametxt = str_replace('class="', 'class="tmenulabel ', $classname); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index a56273baf0a..fe5bf3dd923 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1161,11 +1161,14 @@ function get_left_menu_home($mainmenu, &$newmenu, $usemenuhider = 1, $leftmenu = $newmenu->add("/admin/pdf.php?mainmenu=home", $langs->trans("PDF"), 1); $warnpicto = ''; + /* No warning into menu entry, the message in Email setup page is enough + A warning will be important if a DMARC record exists and SPF is not aligned. if (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail' && !getDolGlobalString('MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP')) { $langs->load("errors"); $warnpicto = img_warning($langs->trans("WarningPHPMailD")); } - if (getDolGlobalString('MAIN_MAIL_SENDMODE') && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmail')) && !getDolGlobalString('MAIN_MAIL_SMTP_SERVER')) { + */ + if (getDolGlobalString('MAIN_MAIL_SENDMODE') && in_array(getDolGlobalString('MAIN_MAIL_SENDMODE'), array('smtps', 'swiftmail')) && !getDolGlobalString('MAIN_MAIL_SMTP_SERVER')) { $langs->load("errors"); $warnpicto = img_warning($langs->trans("ErrorSetupOfEmailsNotComplete")); } diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index b0ba5d69290..1c3360e9972 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -754,7 +754,7 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it } } - return $content; + return '
'.$content.'
'; } /** @@ -2634,6 +2634,62 @@ class DolibarrModules // Can not be abstract, because we need to instantiate it return 0; } + /** + * Check for module compliance with Dolibarr rules and law + * If a module is reported by this function,it is surely a malware. Delete it as soon as possible. + * + * @return int|string Return integer <0 if Error, 0 == not compliant, 'string' with message if module not compliant + */ + public function checkForCompliance() + { + global $conf, $langs; + + // Get list of illegal modules name or ID + if (empty($conf->cache['noncompliantmodules'])) { + require_once DOL_DOCUMENT_ROOT.'/core/lib/geturl.lib.php'; + + $urlforblacklistmodules = 'https://ping.dolibarr.org/modules-blacklist.txt'; + + $result = getURLContent($urlforblacklistmodules, 'GET', '', 1, array(), array('http', 'https'), 0); // Accept http or https links on external remote server only + if (isset($result['content']) && $result['http_code'] == 200) { + $langs->load("errors"); + + // Security warning : be careful with remote data content, the module editor could be hacked (or evil) so limit to a-z A-Z 0-9 _ . - + $arrayoflines = preg_split("/[\n,]/", $result['content']); + foreach ($arrayoflines as $line) { + $tmpfieldsofline = explode(';', $line); + $modulekey = strtolower($tmpfieldsofline[0]); + $conf->cache['noncompliantmodules'][$modulekey]['name'] = $tmpfieldsofline[0]; + $conf->cache['noncompliantmodules'][$modulekey]['id'] = $tmpfieldsofline[1]; + $conf->cache['noncompliantmodules'][$modulekey]['signature'] = $tmpfieldsofline[2]; + $conf->cache['noncompliantmodules'][$modulekey]['message'] = $langs->trans(empty($tmpfieldsofline[3]) ? 'WarningModuleAffiliatedToAReportedCompany' : $tmpfieldsofline[3]); + if (!empty($tmpfieldsofline[4])) { + $message2 = $langs->trans("WarningModuleAffiliatedToAPiratPlatform", '{s}'); + $listofillegalurl = ''; + foreach (explode(" ", $tmpfieldsofline[4]) as $illegalurl) { + $listofillegalurl .= ($listofillegalurl ? ' '.$langs->trans("or").' ' : '').''.preg_replace('/[^a-z0-9\.\-]/', '', $illegalurl).''; + } + $message2 = str_replace('{s}', $listofillegalurl, $message2); + $conf->cache['noncompliantmodules'][$modulekey]['message2'] = $message2; + } + } + } + } + + if (!empty($conf->cache['noncompliantmodules'])) { + $modulekey = strtolower($this->name); + if (in_array($modulekey, array_keys($conf->cache['noncompliantmodules']))) { + $answer = trim($conf->cache['noncompliantmodules'][$modulekey]['message']); + if (!empty($conf->cache['noncompliantmodules'][$modulekey]['message2'])) { + $answer .= '
'.$conf->cache['noncompliantmodules'][$modulekey]['message2']; + } + return $answer; + } + } + + return 0; + } + /** * Helper method to declare dictionaries one at a time (rather than declaring dictionaries property by property). * diff --git a/htdocs/core/modules/asset/doc/doc_generic_asset_odt.modules.php b/htdocs/core/modules/asset/doc/doc_generic_asset_odt.modules.php index 3d767b59571..6a707b77362 100644 --- a/htdocs/core/modules/asset/doc/doc_generic_asset_odt.modules.php +++ b/htdocs/core/modules/asset/doc/doc_generic_asset_odt.modules.php @@ -333,7 +333,7 @@ class doc_generic_asset_odt extends ModelePDFAsset $srctemplatepath, array( 'PATH_TO_TMP' => $conf->asset->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) 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 9233a93f151..930b054b347 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 @@ -333,10 +333,10 @@ class doc_generic_bom_odt extends ModelePDFBom $odfHandler = new Odf( $srctemplatepath, array( - 'PATH_TO_TMP' => $conf->bom->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. - 'DELIMITER_LEFT' => '{', - 'DELIMITER_RIGHT' => '}' + 'PATH_TO_TMP' => $conf->bom->dir_temp, + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'DELIMITER_LEFT' => '{', + 'DELIMITER_RIGHT' => '}' ) ); } catch (Exception $e) { diff --git a/htdocs/core/modules/cheque/doc/pdf_blochet.class.php b/htdocs/core/modules/cheque/doc/pdf_blochet.class.php index 5cecdaa413d..560c7ad1ec9 100644 --- a/htdocs/core/modules/cheque/doc/pdf_blochet.class.php +++ b/htdocs/core/modules/cheque/doc/pdf_blochet.class.php @@ -292,7 +292,7 @@ class BordereauChequeBlochet extends ModeleChequeReceipts $pdf->SetFont('', '', $default_font_size); $pdf->SetXY(10, 32); - $pdf->MultiCell(0, 2, $outputlangs->transnoentities("BankAccount"), 0, 'L'); + $pdf->MultiCell(22, 2, $outputlangs->transnoentities("BankAccount"), 0, 'L'); pdf_bank($pdf, $outputlangs, 32, 32, $this->account, 1); $pdf->SetFont('', '', $default_font_size); diff --git a/htdocs/core/modules/cheque/mod_chequereceipt_mint.php b/htdocs/core/modules/cheque/mod_chequereceipt_mint.php index 3f760794750..7bbea64d472 100644 --- a/htdocs/core/modules/cheque/mod_chequereceipt_mint.php +++ b/htdocs/core/modules/cheque/mod_chequereceipt_mint.php @@ -124,7 +124,7 @@ class mod_chequereceipt_mint extends ModeleNumRefChequeReceipts $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql .= " FROM ".MAIN_DB_PREFIX."bordereau_cheque"; $sql .= " WHERE ref like '".$db->escape($this->prefix)."____-%'"; - $sql .= " AND entity = ".$conf->entity; + $sql .= " AND entity = ".((int) $conf->entity); $resql = $db->query($sql); if ($resql) { @@ -139,8 +139,8 @@ class mod_chequereceipt_mint extends ModeleNumRefChequeReceipts return -1; } - //$date=time(); - $date = $object->date_bordereau; + $date = (empty($object) ? dol_now() : $object->date_bordereau); + $yymm = dol_print_date($date, "%y%m"); if ($max >= (pow(10, 4) - 1)) { @@ -150,6 +150,7 @@ class mod_chequereceipt_mint extends ModeleNumRefChequeReceipts } dol_syslog(__METHOD__." return ".$this->prefix.$yymm."-".$num); + return $this->prefix.$yymm."-".$num; } } diff --git a/htdocs/core/modules/cheque/mod_chequereceipt_thyme.php b/htdocs/core/modules/cheque/mod_chequereceipt_thyme.php index 9b97481dcba..dd6eea47d85 100644 --- a/htdocs/core/modules/cheque/mod_chequereceipt_thyme.php +++ b/htdocs/core/modules/cheque/mod_chequereceipt_thyme.php @@ -128,7 +128,9 @@ class mod_chequereceipt_thyme extends ModeleNumRefChequeReceipts return 0; } - $numFinal = get_next_value($db, $mask, 'bordereau_cheque', 'ref', '', $objsoc, empty($object) ? dol_now() : $object->date_bordereau); + $date = (empty($object) ? dol_now() : $object->date_bordereau); + + $numFinal = get_next_value($db, $mask, 'bordereau_cheque', 'ref', '', $objsoc, $date); return $numFinal; } 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 529ca3a8539..3645718cfc0 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 @@ -344,7 +344,7 @@ class doc_generic_order_odt extends ModelePDFCommandes $srctemplatepath, array( 'PATH_TO_TMP' => $conf->commande->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php index e676722961a..23ef65337e3 100644 --- a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php @@ -8,7 +8,9 @@ * Copyright (C) 2015 Marcos García * Copyright (C) 2017 Ferran Marcet * Copyright (C) 2018-2024 Frédéric France - * Copyright (C) 2024 MDW + * Copyright (C) 2024 MDW + * Copyright (C) 2024 Nick Fragoulis + * Copyright (C) 2024 Joachim Kueter * * 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 @@ -557,10 +559,6 @@ class pdf_eratosthene extends ModelePDFCommandes $posYAfterImage = 0; $posYAfterDescription = 0; - if ($this->getColumnStatus('position')) { - $this->printStdColumnContent($pdf, $curY, 'position', $i + 1); - } - 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 @@ -644,6 +642,11 @@ class pdf_eratosthene extends ModelePDFCommandes $pdf->SetFont('', '', $default_font_size - 1); // We reposition the default font + // # of line + if ($this->getColumnStatus('position')) { + $this->printStdColumnContent($pdf, $curY, 'position', $i + 1); + } + // VAT Rate if ($this->getColumnStatus('vat')) { $vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails); @@ -1355,7 +1358,7 @@ class pdf_eratosthene extends ModelePDFCommandes $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { @@ -1846,7 +1849,7 @@ class pdf_eratosthene extends ModelePDFCommandes 'border-left' => true, // add left line separator ); - if (!getDolGlobalInt('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT')) { + if (!getDolGlobalInt('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT') && !getDolGlobalString('MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN')) { $this->cols['vat']['status'] = true; } 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 c5b938fe8f1..92882228e17 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 @@ -356,7 +356,7 @@ class doc_generic_contract_odt extends ModelePDFContract $srctemplatepath, array( 'PATH_TO_TMP' => $conf->contrat->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/modules/contract/doc/pdf_strato.modules.php b/htdocs/core/modules/contract/doc/pdf_strato.modules.php index 42eef159102..83695130b11 100644 --- a/htdocs/core/modules/contract/doc/pdf_strato.modules.php +++ b/htdocs/core/modules/contract/doc/pdf_strato.modules.php @@ -8,6 +8,7 @@ * Copyright (C) 2015 Marcos García * Copyright (C) 2018-2020 Frédéric France * Copyright (C) 2024 MDW + * Copyright (C) 2024 Éric Seigne * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -34,7 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/pdf.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; - +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; /** * Class to build contracts documents with model Strato @@ -261,11 +262,24 @@ class pdf_strato extends ModelePDFContract $tab_top_newpage = (!getDolGlobalInt('MAIN_PDF_DONOTREPEAT_HEAD') ? 42 : 10); // Display notes - if (!empty($object->note_public)) { + $notetoshow = empty($object->note_public) ? '' : $object->note_public; + + // Extrafields in note + $extranote = $this->getExtrafieldsInHtml($object, $outputlangs); + if (!empty($extranote)) { + $notetoshow = dol_concatdesc($notetoshow, $extranote); + } + + if (!empty($notetoshow)) { $tab_top -= 2; + $substitutionarray = pdf_getSubstitutionArray($outputlangs, null, $object); + complete_substitutions_array($substitutionarray, $outputlangs, $object); + $notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs); + $notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow); + $pdf->SetFont('', '', $default_font_size - 1); - $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top - 1, dol_htmlentitiesbr($object->note_public), 0, 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top - 1, dol_htmlentitiesbr($notetoshow), 0, 1); $nexY = $pdf->GetY(); $height_note = $nexY - $tab_top; 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 c8781cdd2cc..b60f8b9c1c8 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 @@ -342,7 +342,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition $srctemplatepath, array( 'PATH_TO_TMP' => $conf->expedition->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php index 51405083fe6..d151becb4b6 100644 --- a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php @@ -88,6 +88,7 @@ class pdf_espadon extends ModelePdfExpedition $this->description = $langs->trans("DocumentModelStandardPDF"); $this->update_main_doc_field = 1; // Save the name of generated file as the main doc when generating a doc with this template + // Dimension page $this->type = 'pdf'; $formatarray = pdf_getFormat(); $this->page_largeur = $formatarray['width']; @@ -104,7 +105,7 @@ class pdf_espadon extends ModelePdfExpedition // Get source company $this->emetteur = $mysoc; - if (!$this->emetteur->country_code) { + if (empty($this->emetteur->country_code)) { $this->emetteur->country_code = substr($langs->defaultlang, -2); // By default if not defined } @@ -179,9 +180,9 @@ class pdf_espadon extends ModelePdfExpedition $realpath = ''; + $arephoto = false; foreach ($objphoto->liste_photos($dir, 1) as $key => $obj) { - if (!getDolGlobalInt('CAT_HIGH_QUALITY_IMAGES')) { - // If CAT_HIGH_QUALITY_IMAGES not defined, we use thumb if defined and then original photo + if (!getDolGlobalInt('CAT_HIGH_QUALITY_IMAGES')) { // If CAT_HIGH_QUALITY_IMAGES not defined, we use thumb if defined and then original photo if ($obj['photo_vignette']) { $filename = $obj['photo_vignette']; } else { @@ -192,11 +193,12 @@ class pdf_espadon extends ModelePdfExpedition } $realpath = $dir.$filename; + $arephoto = true; $this->atleastonephoto = true; break; } - if ($realpath) { + if ($realpath && $arephoto) { $realpatharray[$i] = $realpath; } } @@ -318,7 +320,7 @@ class pdf_espadon extends ModelePdfExpedition } } - // Public note and Tracking code + // Displays notes. Here we are still on code executed only for the first page. $notetoshow = empty($object->note_public) ? '' : $object->note_public; // Extrafields in note @@ -660,8 +662,12 @@ class pdf_espadon extends ModelePdfExpedition $pdf->SetFont('', '', $default_font_size - 1); // We reposition the default font - // weight + // # of line + if ($this->getColumnStatus('position')) { + $this->printStdColumnContent($pdf, $curY, 'position', $i + 1); + } + // weight $weighttxt = ''; if (empty($object->lines[$i]->fk_product_type) && $object->lines[$i]->weight) { $weighttxt = round($object->lines[$i]->weight * $object->lines[$i]->qty_shipped, 5).' '.measuringUnitString(0, "weight", $object->lines[$i]->weight_units, 1); @@ -975,7 +981,12 @@ class pdf_espadon extends ModelePdfExpedition { global $conf, $langs, $mysoc; - $langs->load("orders"); + $ltrdirection = 'L'; + if ($outputlangs->trans("DIRECTION") == 'rtl') { + $ltrdirection = 'R'; + } + + $outputlangs->load("orders"); $default_font_size = pdf_getPDFFontSize($outputlangs); @@ -1014,7 +1025,7 @@ class pdf_espadon extends ModelePdfExpedition } } else { $text = $this->emetteur->name; - $pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, 'L'); + $pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, $ltrdirection); } $pdf->SetDrawColor(128, 128, 128); @@ -1131,7 +1142,7 @@ class pdf_espadon extends ModelePdfExpedition $pdf->SetTextColor(0, 0, 0); $pdf->SetFont('', '', $default_font_size - 2); $pdf->SetXY($posx, $posy - 5); - $pdf->MultiCell($widthrecbox, 5, $outputlangs->transnoentities("Sender"), 0, 'L'); + $pdf->MultiCell($widthrecbox, 5, $outputlangs->transnoentities("Sender"), 0, $ltrdirection); $pdf->SetXY($posx, $posy); $pdf->SetFillColor(230, 230, 230); $pdf->MultiCell($widthrecbox, $hautcadre, "", 0, 'R', 1); @@ -1150,7 +1161,7 @@ class pdf_espadon extends ModelePdfExpedition // Show sender information $pdf->SetXY($posx + 2, $posy); $pdf->SetFont('', '', $default_font_size - 1); - $pdf->MultiCell($widthrecbox - 2, 4, $carac_emetteur, 0, 'L'); + $pdf->MultiCell($widthrecbox - 2, 4, $carac_emetteur, 0, $ltrdirection); // If SHIPPING contact defined, we use it @@ -1188,21 +1199,23 @@ class pdf_espadon extends ModelePdfExpedition $pdf->SetTextColor(0, 0, 0); $pdf->SetFont('', '', $default_font_size - 2); $pdf->SetXY($posx + 2, $posy - 5); - $pdf->MultiCell($widthrecbox, 5, $outputlangs->transnoentities("Recipient"), 0, 'L'); + $pdf->MultiCell($widthrecbox, 5, $outputlangs->transnoentities("Recipient"), 0, $ltrdirection); $pdf->Rect($posx, $posy, $widthrecbox, $hautcadre); } // Show recipient name $pdf->SetXY($posx + 2, $posy + 3); $pdf->SetFont('', 'B', $default_font_size); - $pdf->MultiCell($widthrecbox, 2, $carac_client_name, 0, 'L'); + // @phan-suppress-next-line PhanPluginSuspiciousParamOrder + $pdf->MultiCell($widthrecbox, 2, $carac_client_name, 0, $ltrdirection); $posy = $pdf->getY(); // Show recipient information $pdf->SetXY($posx + 2, $posy); $pdf->SetFont('', '', $default_font_size - 1); - $pdf->MultiCell($widthrecbox, 4, $carac_client, 0, 'L'); + // @phan-suppress-next-line PhanPluginSuspiciousParamOrder + $pdf->MultiCell($widthrecbox, 4, $carac_client, 0, $ltrdirection); } $pdf->SetTextColor(0, 0, 0); @@ -1271,6 +1284,24 @@ class pdf_espadon extends ModelePdfExpedition */ $rank = 0; // do not use negative rank + $this->cols['position'] = array( + 'rank' => $rank, + 'width' => 10, + 'status' => getDolGlobalInt('PDF_ESPADON_ADD_POSITION') ? true : (getDolGlobalInt('PDF_ADD_POSITION') ? true : false), + 'title' => array( + 'textkey' => '#', // use lang key is useful in somme case with module + 'align' => 'C', + // 'textkey' => 'yourLangKey', // if there is no label, yourLangKey will be translated to replace label + // 'label' => ' ', // the final label + 'padding' => array(0.5, 0.5, 0.5, 0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + ), + 'content' => array( + 'align' => 'C', + 'padding' => array(1, 0.5, 1, 1.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + ), + ); + + $rank += 10; // do not use negative rank $this->cols['desc'] = array( 'rank' => $rank, 'width' => false, // only for desc @@ -1280,15 +1311,16 @@ class pdf_espadon extends ModelePdfExpedition 'align' => 'L', // 'textkey' => 'yourLangKey', // if there is no label, yourLangKey will be translated to replace label // 'label' => ' ', // the final label - 'padding' => array(0.5, 1, 0.5, 1.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + 'padding' => array(0.5, 0.5, 0.5, 0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left ), 'content' => array( - 'padding' => array(1, 0.5, 1, 1.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left 'align' => 'L', + 'padding' => array(1, 0.5, 1, 1.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left ), ); - $rank = $rank + 10; + // Image of product + $rank += 10; $this->cols['photo'] = array( 'rank' => $rank, 'width' => getDolGlobalInt('MAIN_DOCUMENTS_WITH_PICTURE_WIDTH', 20), // in mm diff --git a/htdocs/core/modules/expedition/mod_expedition_ribera.php b/htdocs/core/modules/expedition/mod_expedition_ribera.php index 7874672bb82..dc5bcb320cc 100644 --- a/htdocs/core/modules/expedition/mod_expedition_ribera.php +++ b/htdocs/core/modules/expedition/mod_expedition_ribera.php @@ -98,13 +98,21 @@ class mod_expedition_ribera extends ModelNumRefExpedition */ public function getExample() { - global $langs, $mysoc; + global $langs, $mysoc, $db; $old_code_client = $mysoc->code_client; $old_code_type = $mysoc->typent_code; $mysoc->code_client = 'CCCCCCCCCC'; $mysoc->typent_code = 'TTTTTTTTTT'; - $numExample = $this->getNextValue($mysoc, ''); + + + if (!class_exists('Expedition')) { + require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php'; + } + + $expedition = new Expedition($db); + + $numExample = $this->getNextValue($mysoc, $expedition); $mysoc->code_client = $old_code_client; $mysoc->typent_code = $old_code_type; @@ -134,7 +142,7 @@ class mod_expedition_ribera extends ModelNumRefExpedition return 0; } - $date = $shipment->date_expedition; + $date = $shipment->date_shipping; $numFinal = get_next_value($db, $mask, 'expedition', 'ref', '', $objsoc, $date); 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 aa8cc258473..ea303eae66f 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 @@ -384,7 +384,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures $srctemplatepath, array( 'PATH_TO_TMP' => $conf->facture->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index c153a9f0816..026b03ad970 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -928,7 +928,6 @@ class pdf_crabe extends ModelePDFFactures protected function _tableau_versements(&$pdf, $object, $posy, $outputlangs, $heightforfooter = 0) { // phpcs:enable - global $conf; $sign = 1; if ($object->type == 2 && getDolGlobalString('INVOICE_POSITIVE_CREDIT_NOTE')) { @@ -2176,6 +2175,8 @@ class pdf_crabe extends ModelePDFFactures if (!empty($carac_client_shipping)) { $posy += $hautcadre; + $hautcadre -= 10; // Height for the shipping address does not need to be as high as main box + // Show shipping frame $pdf->SetXY($posx + 2, $posy - 5); $pdf->SetFont('', '', $default_font_size - 2); @@ -2193,7 +2194,8 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetXY($posx + 2, $posy); $pdf->SetFont('', '', $default_font_size - 1); $pdf->MultiCell($widthrecbox - 2, 2, $carac_client_shipping, '', 'L'); - $top_shift += $hautcadre; + + $top_shift += $hautcadre + 10; } } } diff --git a/htdocs/core/modules/facture/doc/pdf_octopus.modules.php b/htdocs/core/modules/facture/doc/pdf_octopus.modules.php index ff76527981e..c958a8549c9 100644 --- a/htdocs/core/modules/facture/doc/pdf_octopus.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_octopus.modules.php @@ -1908,7 +1908,7 @@ class pdf_octopus extends ModelePDFFactures $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php index e0ac96ff8d7..548d40bcb72 100644 --- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php @@ -126,7 +126,7 @@ class pdf_sponge extends ModelePDFFactures */ public function __construct($db) { - global $conf, $langs, $mysoc; + global $langs, $mysoc; // Translations $langs->loadLangs(array("main", "bills")); @@ -714,10 +714,6 @@ class pdf_sponge extends ModelePDFFactures $posYAfterImage = 0; $posYAfterDescription = 0; - if ($this->getColumnStatus('position')) { - $this->printStdColumnContent($pdf, $curY, 'position', $i + 1); - } - if ($this->getColumnStatus('photo')) { // We start with Photo of product line if (isset($imglinesize['width']) && isset($imglinesize['height']) && ($curY + $imglinesize['height']) > ($this->page_hauteur - $page_bottom_margin)) { // If photo too high, we moved completely on new page @@ -799,6 +795,11 @@ class pdf_sponge extends ModelePDFFactures $pdf->SetFont('', '', $default_font_size - 1); // We reposition the default font + // # of line + if ($this->getColumnStatus('position')) { + $this->printStdColumnContent($pdf, $curY, 'position', $i + 1); + } + // VAT Rate if ($this->getColumnStatus('vat')) { $vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails); @@ -1444,9 +1445,9 @@ class pdf_sponge extends ModelePDFFactures $EPCQrCodeString = $object->buildEPCQrCodeString(); $pdf->write2DBarcode($EPCQrCodeString, 'QRCODE,M', $qrPosX, $qrPosY, 25, 25, $styleQr, 'N'); - $pdf->SetXY($qrPosX + 5, $posy); + $pdf->SetXY($qrPosX + 30, $posy + 5); $pdf->SetFont('', '', $default_font_size - 5); - $pdf->MultiCell(30, 3, $langs->trans("INVOICE_ADD_EPC_QR_CODEPay"), 0, 'L', 0); + $pdf->MultiCell(30, 3, $outputlangs->transnoentitiesnoconv("INVOICE_ADD_EPC_QR_CODEPay"), 0, 'L', 0); $posy = $pdf->GetY() + 2; } } @@ -1999,7 +2000,7 @@ class pdf_sponge extends ModelePDFFactures $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { @@ -2457,6 +2458,8 @@ class pdf_sponge extends ModelePDFFactures if (!empty($carac_client_shipping)) { $posy += $hautcadre; + $hautcadre = $hautcadre - 10; // Height for the shipping address does not need to be as high as main box + // Show shipping frame $pdf->SetXY($posx + 2, $posy - 5); $pdf->SetFont('', '', $default_font_size - 2); @@ -2474,7 +2477,8 @@ class pdf_sponge extends ModelePDFFactures $pdf->SetXY($posx + 2, $posy); $pdf->SetFont('', '', $default_font_size - 1); $pdf->MultiCell($widthrecbox - 2, 2, $carac_client_shipping, '', 'L'); - $shipp_shift += $hautcadre; + + $shipp_shift += $hautcadre + 10; } } } @@ -2699,7 +2703,7 @@ class pdf_sponge extends ModelePDFFactures $this->cols['totalexcltax'] = array( 'rank' => $rank, 'width' => 26, // in mm - 'status' => !getDolGlobalString('PDF_PROPAL_HIDE_PRICE_EXCL_TAX') ? true : false, + 'status' => !getDolGlobalString('PDF_INVOICE_HIDE_PRICE_EXCL_TAX') ? true : false, 'title' => array( 'textkey' => 'TotalHTShort' ), @@ -2710,7 +2714,7 @@ class pdf_sponge extends ModelePDFFactures $this->cols['totalincltax'] = array( 'rank' => $rank, 'width' => 26, // in mm - 'status' => !getDolGlobalString('PDF_PROPAL_SHOW_PRICE_INCL_TAX') ? false : true, + 'status' => !getDolGlobalString('PDF_INVOICE_SHOW_PRICE_INCL_TAX') ? false : true, 'title' => array( 'textkey' => 'TotalTTCShort' ), diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index 0bf5e587d4c..3692f6d70e6 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -125,6 +125,13 @@ class ImportXlsx extends ModeleImports $this->label_lib = 'PhpSpreadSheet'; $this->version_lib = '1.8.0'; + $arrayofstreams = stream_get_wrappers(); + if (!in_array('zip', $arrayofstreams)) { + $langs->load("errors"); + $this->error = $langs->trans('ErrorStreamMustBeEnabled', 'zip'); + return; + } + $this->datatoimport = $datatoimport; if (preg_match('/^societe_/', $datatoimport)) { $this->thirdpartyobject = new Societe($this->db); 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 fec763d30d0..f74f4340701 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 @@ -313,7 +313,7 @@ class doc_generic_member_odt extends ModelePDFMember $srctemplatepath, array( 'PATH_TO_TMP' => $conf->adherent->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/modules/modCategorie.class.php b/htdocs/core/modules/modCategorie.class.php index 315e5021796..25cb26cb1ad 100644 --- a/htdocs/core/modules/modCategorie.class.php +++ b/htdocs/core/modules/modCategorie.class.php @@ -182,7 +182,11 @@ class modCategorie extends DolibarrModules $this->export_label[$r] = 'CatProdList'; $this->export_icon[$r] = $this->picto; $this->export_enabled[$r] = 'isModEnabled("product") || isModEnabled("service")'; - $this->export_permission[$r] = array(array("categorie", "lire"), array("produit", "export")); + if (isModEnabled('product')) { + $this->export_permission[$r] = array(array("categorie", "lire"), array("produit", "export")); + } elseif (isModEnabled('service')) { + $this->export_permission[$r] = array(array("categorie", "lire"), array("service", "export")); + } $this->export_fields_array[$r] = array('cat.rowid' => "CategId", 'cat.label' => "Label", 'cat.description' => "Description", 'cat.fk_parent' => "ParentCategoryID", 'pcat.label' => "ParentCategoryLabel", 'cat.color' => "Color", 'cat.date_creation' => "DateCreation", 'cat.tms' => "DateLastModification", 'p.rowid' => 'ProductId', 'p.ref' => 'Ref', 'p.label' => 'Label'); $this->export_TypeFields_array[$r] = array('cat.rowid' => 'Numeric', 'cat.label' => "Text", 'cat.description' => "Text", 'cat.fk_parent' => 'Numeric', 'pcat.label' => 'Text', 'p.rowid' => 'Numeric', 'p.ref' => 'Text', 'p.label' => 'Text'); $this->export_entities_array[$r] = array('p.rowid' => 'product', 'p.ref' => 'product', 'p.label' => 'product'); // We define here only fields that use another picto diff --git a/htdocs/core/modules/modDataPolicy.class.php b/htdocs/core/modules/modDataPolicy.class.php index 92df539aad2..d611686f48a 100644 --- a/htdocs/core/modules/modDataPolicy.class.php +++ b/htdocs/core/modules/modDataPolicy.class.php @@ -75,7 +75,7 @@ class modDataPolicy extends DolibarrModules // Name of image file used for this module. // If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue' // If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module' - $this->picto = 'generic'; + $this->picto = 'lock'; // Defined all module parts (triggers, login, substitutions, menus, css, etc...) // for default path (eg: /datapolicy/core/xxxxx) (0=disable, 1=enable) diff --git a/htdocs/core/modules/modSalaries.class.php b/htdocs/core/modules/modSalaries.class.php index f2c1cba7aad..d82d9b4f048 100644 --- a/htdocs/core/modules/modSalaries.class.php +++ b/htdocs/core/modules/modSalaries.class.php @@ -44,8 +44,6 @@ class modSalaries extends DolibarrModules */ public function __construct($db) { - global $conf; - $this->db = $db; $this->numero = 510; // Perms from 501..519 @@ -151,16 +149,18 @@ class modSalaries extends DolibarrModules $r++; $this->export_code[$r] = $this->rights_class.'_'.$r; $this->export_label[$r] = 'SalariesAndPayments'; + $this->export_icon[$r] = 'salary'; $this->export_permission[$r] = array(array("salaries", "export")); - $this->export_fields_array[$r] = array('u.firstname'=>"Firstname", 'u.lastname'=>"Lastname", 'u.login'=>"Login", 'u.salary'=>'CurrentSalary', 'p.datep'=>'DatePayment', 'p.datesp'=>'DateStartPeriod', 'p.dateep'=>'DateEndPeriod', 'p.amount'=>'AmountPayment', 'p.num_payment'=>'Numero', 'p.label'=>'Label', 'p.note'=>'Note'); - $this->export_TypeFields_array[$r] = array('u.firstname'=>"Text", 'u.lastname'=>"Text", 'u.login'=>'Text', 'u.salary'=>"Numeric", 'p.datep'=>'Date', 'p.datesp'=>'Date', 'p.dateep'=>'Date', 'p.amount'=>'Numeric', 'p.num_payment'=>'Numeric', 'p.label'=>'Text'); + $this->export_fields_array[$r] = array('s.rowid' => 'SalaryID', 's.label'=>'Label', 's.datesp'=>'DateStartPeriod', 's.dateep'=>'DateEndPeriod', 's.amount' => 'SalaryAmount', 's.paye' => 'Status', 'u.firstname'=>"Firstname", 'u.lastname'=>"Lastname", 'u.login'=>"Login", 'u.salary'=>'CurrentSalary', 'p.datep'=>'DatePayment', 'p.amount'=>'AmountPayment', 'p.num_payment'=>'Numero', 'p.note'=>'Note'); + $this->export_TypeFields_array[$r] = array('s.rowid' => 'Numeric', 's.label'=>'Text', 's.amount' => 'Numeric', 's.paye' => 'Numeric', 'u.firstname'=>"Text", 'u.lastname'=>"Text", 'u.login'=>'Text', 'u.salary'=>"Numeric", 'p.datep'=>'Date', 's.datesp'=>'Date', 's.dateep'=>'Date', 'p.amount'=>'Numeric', 'p.num_payment'=>'Numeric'); $this->export_entities_array[$r] = array('u.firstname'=>'user', 'u.lastname'=>'user', 'u.login'=>'user', 'u.salary'=>'user', 'p.datep'=>'payment', 'p.datesp'=>'payment', 'p.dateep'=>'payment', 'p.amount'=>'payment', 'p.label'=>'payment', 'p.note'=>'payment', 'p.num_payment'=>'payment'); $this->export_sql_start[$r] = 'SELECT DISTINCT '; - $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'user as u'; - $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'payment_salary as p ON p.fk_user = u.rowid'; + $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'salary as s'; + $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON s.fk_user = u.rowid'; + $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'payment_salary as p ON p.fk_salary = s.rowid'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as cp ON p.fk_typepayment = cp.id'; - $this->export_sql_end[$r] .= ' AND u.entity IN ('.getEntity('user').')'; + $this->export_sql_end[$r] .= ' AND s.entity IN ('.getEntity('salary').')'; } diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index 42953ed61e9..0c075298d3a 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -107,13 +107,13 @@ class modSociete extends DolibarrModules $r++; /* - $this->const[$r][0] = "COMPANY_HIDE_INACTIVE_IN_COMBOBOX"; - $this->const[$r][1] = "chaine"; - $this->const[$r][2] = "0"; - $this->const[$r][3] = "hide thirdparty customer inative in combobox"; - $this->const[$r][4] = 1; - $r++; - */ + $this->const[$r][0] = "COMPANY_HIDE_INACTIVE_IN_COMBOBOX"; + $this->const[$r][1] = "chaine"; + $this->const[$r][2] = "0"; + $this->const[$r][3] = "hide thirdparty customer inative in combobox"; + $this->const[$r][4] = 1; + $r++; + */ $this->const[$r][0] = "SOCIETE_ADD_REF_IN_LIST"; $this->const[$r][1] = "yesno"; @@ -144,21 +144,21 @@ class modSociete extends DolibarrModules $this->rights[$r][4] = 'lire'; /*$r++; - $this->rights[$r][0] = 241; - $this->rights[$r][1] = 'Read thirdparties customers'; - $this->rights[$r][2] = 'r'; - $this->rights[$r][3] = 0; - $this->rights[$r][4] = 'thirdparty_customer_advance'; // Visible if option MAIN_USE_ADVANCED_PERMS is on - $this->rights[$r][5] = 'read'; + $this->rights[$r][0] = 241; + $this->rights[$r][1] = 'Read thirdparties customers'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'thirdparty_customer_advance'; // Visible if option MAIN_USE_ADVANCED_PERMS is on + $this->rights[$r][5] = 'read'; - $r++; - $this->rights[$r][0] = 242; - $this->rights[$r][1] = 'Read thirdparties suppliers'; - $this->rights[$r][2] = 'r'; - $this->rights[$r][3] = 0; - $this->rights[$r][4] = 'thirdparty_supplier_advance'; // Visible if option MAIN_USE_ADVANCED_PERMS is on - $this->rights[$r][5] = 'read'; - */ + $r++; + $this->rights[$r][0] = 242; + $this->rights[$r][1] = 'Read thirdparties suppliers'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'thirdparty_supplier_advance'; // Visible if option MAIN_USE_ADVANCED_PERMS is on + $this->rights[$r][5] = 'read'; + */ $r++; $this->rights[$r][0] = 122; // id de la permission @@ -168,21 +168,21 @@ class modSociete extends DolibarrModules $this->rights[$r][4] = 'creer'; /* $r++; - $this->rights[$r][0] = 251; - $this->rights[$r][1] = 'Create thirdparties customers'; - $this->rights[$r][2] = 'r'; - $this->rights[$r][3] = 0; - $this->rights[$r][4] = 'thirdparty_customer_advance'; // Visible if option MAIN_USE_ADVANCED_PERMS is on - $this->rights[$r][5] = 'read'; + $this->rights[$r][0] = 251; + $this->rights[$r][1] = 'Create thirdparties customers'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'thirdparty_customer_advance'; // Visible if option MAIN_USE_ADVANCED_PERMS is on + $this->rights[$r][5] = 'read'; - $r++; - $this->rights[$r][0] = 252; - $this->rights[$r][1] = 'Create thirdparties suppliers'; - $this->rights[$r][2] = 'r'; - $this->rights[$r][3] = 0; - $this->rights[$r][4] = 'thirdparty_supplier_advance'; // Visible if option MAIN_USE_ADVANCED_PERMS is on - $this->rights[$r][5] = 'read'; - */ + $r++; + $this->rights[$r][0] = 252; + $this->rights[$r][1] = 'Create thirdparties suppliers'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'thirdparty_supplier_advance'; // Visible if option MAIN_USE_ADVANCED_PERMS is on + $this->rights[$r][5] = 'read'; + */ $r++; $this->rights[$r][0] = 125; // id de la permission @@ -215,14 +215,14 @@ class modSociete extends DolibarrModules $this->rights[$r][5] = 'voir'; /* - $r++; - $this->rights[$r][0] = 263; - $this->rights[$r][1] = 'Read all third parties (without their objects) by internal users (otherwise only if commercial contact). Not effective for external users (limited to themselves).'; - $this->rights[$r][2] = 'r'; - $this->rights[$r][3] = 0; - $this->rights[$r][4] = 'client'; - $this->rights[$r][5] = 'readallthirdparties_advance'; - */ + $r++; + $this->rights[$r][0] = 263; + $this->rights[$r][1] = 'Read all third parties (without their objects) by internal users (otherwise only if commercial contact). Not effective for external users (limited to themselves).'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'client'; + $this->rights[$r][5] = 'readallthirdparties_advance'; + */ $r++; $this->rights[$r][0] = 281; // id de la permission @@ -411,6 +411,7 @@ class modSociete extends DolibarrModules 's.code_compta' => "company", 's.code_compta_fournisseur' => "company", 's.client' => "company", 's.fournisseur' => "company", 's.address' => "company", 's.zip' => "company", 's.town' => "company", 's.phone' => "company", 's.email' => "company", + 's.note_private' => 'company', 's.note_public' => "company", 't.code' => "company", 's.entity' => 'company', ); // We define here only fields that use another picto @@ -599,24 +600,24 @@ class modSociete extends DolibarrModules 'table_element' => 'c_stcomm' ), /* - 's.fk_prospectlevel' => array( - 'rule' => 'fetchidfromcodeid', - 'classfile' => '/core/class/cgenericdic.class.php', - 'class' => 'CGenericDic', - 'method' => 'fetch', - 'dict' => 'DictionaryProspectLevel', - 'element' => 'c_prospectlevel', - 'table_element' => 'c_prospectlevel' - ),*/ - // TODO - // 's.fk_incoterms' => array( - // 'rule' => 'fetchidfromcodeid', - // 'classfile' => '/core/class/cincoterm.class.php', - // 'class' => 'Cincoterm', - // 'method' => 'fetch', - // 'dict' => 'IncotermLabel' - // ) - ); + 's.fk_prospectlevel' => array( + 'rule' => 'fetchidfromcodeid', + 'classfile' => '/core/class/cgenericdic.class.php', + 'class' => 'CGenericDic', + 'method' => 'fetch', + 'dict' => 'DictionaryProspectLevel', + 'element' => 'c_prospectlevel', + 'table_element' => 'c_prospectlevel' + ),*/ + // TODO + // 's.fk_incoterms' => array( + // 'rule' => 'fetchidfromcodeid', + // 'classfile' => '/core/class/cincoterm.class.php', + // 'class' => 'Cincoterm', + // 'method' => 'fetch', + // 'dict' => 'IncotermLabel' + // ) + ); //$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t'); $this->import_regex_array[$r] = array(//field order as per structure of table llx_societe 's.status' => '^[0|1]', @@ -895,7 +896,7 @@ class modSociete extends DolibarrModules 'sr.datec' => 'date used for creating direct debit UMR formatted as '.dol_print_date( dol_now(), '%Y-%m-%d' - ), + ), 'sr.bank' => 'bank name eg: "ING-Direct"', 'sr.code_banque' => 'account sort code (GB)/Routing number (US) eg. "8456"', 'sr.code_guichet' => "bank code for office/branch", @@ -922,8 +923,8 @@ class modSociete extends DolibarrModules $this->import_fields_array[$r] = array('sr.fk_soc' => "ThirdPartyName*", 'sr.fk_user' => "User*"); $this->import_convertvalue_array[$r] = array( - 'sr.fk_soc' => array('rule' => 'fetchidfromref', 'classfile' => '/societe/class/societe.class.php', 'class' => 'Societe', 'method' => 'fetch', 'element' => 'ThirdParty'), - 'sr.fk_user' => array('rule' => 'fetchidfromref', 'classfile' => '/user/class/user.class.php', 'class' => 'User', 'method' => 'fetch', 'element' => 'User') + 'sr.fk_soc' => array('rule' => 'fetchidfromref', 'classfile' => '/societe/class/societe.class.php', 'class' => 'Societe', 'method' => 'fetch', 'element' => 'ThirdParty'), + 'sr.fk_user' => array('rule' => 'fetchidfromref', 'classfile' => '/user/class/user.class.php', 'class' => 'User', 'method' => 'fetch', 'element' => 'User') ); $this->import_examplevalues_array[$r] = array('sr.fk_soc' => "MyBigCompany", 'sr.fk_user' => "login"); } diff --git a/htdocs/core/modules/modStock.class.php b/htdocs/core/modules/modStock.class.php index ad391a1ec92..172dd642863 100644 --- a/htdocs/core/modules/modStock.class.php +++ b/htdocs/core/modules/modStock.class.php @@ -395,42 +395,45 @@ class modStock extends DolibarrModules $this->export_sql_end[$r] .= ' WHERE p.rowid = sm.fk_product AND sm.fk_entrepot = e.rowid'; $this->export_sql_end[$r] .= ' AND e.entity IN ('.getEntity('stock').')'; - // Export inventory - /* + + // Export inventories $r++; - $this->export_code[$r] = $this->rights_class.'_movement'; + $this->export_code[$r] = $this->rights_class.'_inventory'; $this->export_label[$r] = "Inventories"; // Translation key (used only if key ExportDataset_xxx_z not found) - $this->export_icon[$r] = "movement"; + $this->export_icon[$r] = "inventory"; $this->export_permission[$r] = array(array("stock", "lire")); $this->export_fields_array[$r] = array( - 'i.rowid' => 'InventoryId', 'i.ref' => 'Inventoryref', 'i.date_inventory' => 'DateInventory', + 'i.rowid' => 'InventoryId', 'i.ref' => 'InventoryRef', 'i.date_inventory' => 'DateInventory', 'i.status' => 'InventoryStatus', 'i.title' => 'InventoryTitle', 'id.rowid' => 'InventoryLineId', 'id.qty_view' => 'QtyViewed', 'id.qty_stock' => 'QtyStock', 'id.qty_regulated' => 'QtyRegulated', 'id.batch' => 'Lotserial', 'e.rowid' => 'IdWarehouse', 'e.ref' => 'LocationSummary', 'e.description' => 'DescWareHouse', 'e.lieu' => 'LieuWareHouse', 'e.address' => 'Address', 'e.zip' => 'Zip', 'e.town' => 'Town', 'p.rowid' => "ProductId", 'p.ref' => "Ref", 'p.fk_product_type' => "Type", 'p.label' => "Label", 'p.description' => "Description", 'p.note' => "Note", - 'p.price' => "Price", 'p.tva_tx' => 'VAT', 'p.tosell' => "OnSell", 'p.tobuy' => 'OnBuy', 'p.duration' => "Duration", 'p.datec' => 'DateCreation', 'p.tms' => 'DateModification' + 'p.barcode' => "Barcode", 'p.price' => "Price", 'p.tva_tx' => 'VAT', 'p.tosell' => "OnSell", 'p.tobuy' => 'OnBuy', 'p.duration' => "Duration", 'p.datec' => 'DateCreation', 'p.tms' => 'DateModification' ); if (isModEnabled('barcode')) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('p.barcode' => 'BarCode')); } $this->export_TypeFields_array[$r] = array( - 'id.rowid' => 'Numeric', 'sm.value' => 'Numeric', 'sm.datem' => 'Date', 'sm.batch' => 'Text', 'sm.label' => 'Text', 'sm.inventorycode' => 'Text', + 'id.rowid' => 'Numeric', 'e.rowid' => 'List:entrepot:ref::stock', 'e.ref' => 'Text', 'e.description' => 'Text', 'e.lieu' => 'Text', 'e.address' => 'Text', 'e.zip' => 'Text', 'e.town' => 'Text', 'p.rowid' => "Numeric", 'p.ref' => "Text", 'p.fk_product_type' => "Text", 'p.label' => "Text", 'p.description' => "Text", 'p.note' => "Text", - 'p.price' => "Numeric", 'p.tva_tx' => 'Numeric', 'p.tosell' => "Boolean", 'p.tobuy' => "Boolean", 'p.duration' => "Duree", 'p.datec' => 'Date', 'p.tms' => 'Date' + 'p.barcode' => "Text", 'p.price' => "Numeric", 'p.tva_tx' => 'Numeric', 'p.tosell' => "Boolean", 'p.tobuy' => "Boolean", 'p.duration' => "Duree", 'p.datec' => 'Date', 'p.tms' => 'Date', + 'i.rowid' => 'Numeric', 'i.ref' => 'Text', 'i.date_inventory' => 'Date', 'i.status' => 'Numeric', 'i.title' => 'Text', + 'id.qty_view' => 'Numeric', 'id.qty_stock' => 'Numeric', 'id.batch' => 'Text', + 'id.qty_regulated' => 'Numeric', 'id.fk_warehouse' => 'Numeric', ); if (isModEnabled('barcode')) { $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('p.barcode' => 'Text')); } $this->export_entities_array[$r] = array( - 'e.rowid' => 'warehouse', 'e.ref' => 'warehouse', 'e.description' => 'warehouse', 'e.lieu' => 'warehouse', 'e.address' => 'warehouse', 'e.zip' => 'warehouse', 'e.town' => 'warehouse', + 'id.qty_view' => 'inventory_line', 'id.qty_stock' => 'inventory_line', 'id.batch' => 'inventory_line', 'id.qty_regulated' => 'inventory_line', 'id.fk_warehouse' => 'inventory_line', 'id.rowid' => 'inventory_line', 'e.rowid' => 'warehouse', 'e.ref' => 'warehouse', 'e.description' => 'warehouse', 'e.lieu' => 'warehouse', 'e.address' => 'warehouse', 'e.zip' => 'warehouse', 'e.town' => 'warehouse', 'p.rowid' => "product", 'p.ref' => "product", 'p.fk_product_type' => "product", 'p.label' => "product", 'p.description' => "product", 'p.note' => "product", - 'p.price' => "product", 'p.tva_tx' => 'product', 'p.tosell' => "product", 'p.tobuy' => "product", 'p.duration' => "product", 'p.datec' => 'product', 'p.tms' => 'product' + 'p.barcode' => "product", 'p.price' => "product", 'p.tva_tx' => 'product', 'p.tosell' => "product", 'p.tobuy' => "product", 'p.duration' => "product", 'p.datec' => 'product', 'p.tms' => 'product' ); // We define here only fields that use another icon that the one defined into export_icon if (isModEnabled('productbatch')) { - $this->export_fields_array[$r]['sm.batch'] = 'Batch'; - $this->export_TypeFields_array[$r]['sm.batch'] = 'Text'; - $this->export_entities_array[$r]['sm.batch'] = 'movement'; + $this->export_fields_array[$r]['id.batch'] = 'Batch'; + $this->export_TypeFields_array[$r]['id.batch'] = 'Text'; + $this->export_entities_array[$r]['id.batch'] = 'inventory_line'; } if (isModEnabled('barcode')) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.barcode' => 'product')); @@ -440,9 +443,8 @@ class modStock extends DolibarrModules $this->export_sql_start[$r] = 'SELECT DISTINCT '; $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'product as p, '.MAIN_DB_PREFIX.'inventory as i, '.MAIN_DB_PREFIX.'inventorydet as id, '.MAIN_DB_PREFIX.'entrepot as e'; - $this->export_sql_end[$r] .= ' WHERE p.rowid = id.fk_product AND id.fk_inventory = i.rowid AND id.fk_entrepot = e.rowid'; + $this->export_sql_end[$r] .= ' WHERE p.rowid = id.fk_product AND id.fk_inventory = i.rowid AND id.fk_warehouse = e.rowid'; $this->export_sql_end[$r] .= ' AND e.entity IN ('.getEntity('stock').')'; - */ // Imports diff --git a/htdocs/core/modules/modTakePos.class.php b/htdocs/core/modules/modTakePos.class.php index 999c38a26fb..8c819c743ee 100644 --- a/htdocs/core/modules/modTakePos.class.php +++ b/htdocs/core/modules/modTakePos.class.php @@ -284,6 +284,7 @@ class modTakePos extends DolibarrModules $societe->client = 1; $societe->code_client = '-1'; $societe->code_fournisseur = '-1'; + $societe->country_id = $mysoc->country_id ? $mysoc->country_id : 1; // By default we consider the default customer is in the same country than the company $societe->note_private = "Default customer automatically created by Point Of Sale module activation. Can be used as the default generic customer in the Point Of Sale setup. Can also be edited or removed if you don't need a generic customer."; $searchcompanyid = $societe->create($user); diff --git a/htdocs/core/modules/modTicket.class.php b/htdocs/core/modules/modTicket.class.php index 84cfd9f0c83..17e6ecc9430 100644 --- a/htdocs/core/modules/modTicket.class.php +++ b/htdocs/core/modules/modTicket.class.php @@ -115,7 +115,7 @@ class modTicket extends DolibarrModules 5 => array('TICKET_DELAY_BEFORE_FIRST_RESPONSE', 'chaine', '0', 'Maximum wanted elapsed time before a first answer to a ticket (in hours). Display a warning in tickets list if not respected.', 0), 6 => array('TICKET_DELAY_SINCE_LAST_RESPONSE', 'chaine', '0', 'Maximum wanted elapsed time between two answers on the same ticket (in hours). Display a warning in tickets list if not respected.', 0), 7 => array('TICKET_NOTIFY_AT_CLOSING', 'chaine', '0', 'Default notify contacts when closing a module', 0), - 8 => array('TICKET_PRODUCT_CATEGORY', 'chaine', 0, 'The category of product that is being used for ticket accounting', 0), + 8 => array('TICKET_PRODUCT_CATEGORY', 'chaine', 0, 'The category of product that is being used to find contract to link to created ticket', 0), 9 => array('TICKET_NOTIFICATION_EMAIL_FROM', 'chaine', getDolGlobalString('MAIN_MAIL_EMAIL_FROM'), 'Email to use by default as sender for messages sent from Dolibarr', 0), 10 => array('TICKET_MESSAGE_MAIL_INTRO', 'chaine', $langs->trans('TicketMessageMailIntroText'), 'Introduction text of ticket replies sent from Dolibarr', 0), 11 => array('TICKET_MESSAGE_MAIL_SIGNATURE', 'chaine', $default_footer, 'Signature to use by default for messages sent from Dolibarr', 0), @@ -303,7 +303,7 @@ class modTicket extends DolibarrModules 'type' => 'left', 'titre' => 'NewTicket', 'mainmenu' => 'ticket', - 'url' => '/ticket/card.php?action=create', + 'url' => '/ticket/card.php?action=create&mode=init', 'langs' => 'ticket', 'position' => 102, 'enabled' => 'isModEnabled("ticket")', diff --git a/htdocs/core/modules/modVariants.class.php b/htdocs/core/modules/modVariants.class.php index 9dda6194b32..f2a1373b89c 100644 --- a/htdocs/core/modules/modVariants.class.php +++ b/htdocs/core/modules/modVariants.class.php @@ -110,15 +110,15 @@ class modVariants extends DolibarrModules $this->rights = array(); // Permission array used by this module $r = 0; - $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) + $this->rights[$r][0] = $this->numero + 1; // Permission id (must not be already used) $this->rights[$r][1] = 'Read attributes of variants'; // Permission label $this->rights[$r][4] = 'read'; // In php code, permission will be checked by test if ($user->rights->eventorganization->level1) $r++; - $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) + $this->rights[$r][0] = $this->numero + 2; // Permission id (must not be already used) $this->rights[$r][1] = 'Create/Update attributes of variants'; // Permission label $this->rights[$r][4] = 'write'; // In php code, permission will be checked by test if ($user->rights->eventorganization->level1) $r++; - $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) + $this->rights[$r][0] = $this->numero + 3; // Permission id (must not be already used) $this->rights[$r][1] = 'Delete attributes of variants'; // Permission label $this->rights[$r][4] = 'delete'; // In php code, permission will be checked by test if ($user->rights->eventorganization->level1) $r++; 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 1a784af2dcb..1607db5cd7c 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 @@ -327,7 +327,7 @@ class doc_generic_mo_odt extends ModelePDFMo $srctemplatepath, array( 'PATH_TO_TMP' => $conf->mrp->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/modules/oauth/generic_oauthcallback.php b/htdocs/core/modules/oauth/generic_oauthcallback.php index b2c75f381b4..c8bf1951f4c 100644 --- a/htdocs/core/modules/oauth/generic_oauthcallback.php +++ b/htdocs/core/modules/oauth/generic_oauthcallback.php @@ -40,7 +40,7 @@ $keyforprovider = GETPOST('keyforprovider', 'aZ09'); if (empty($keyforprovider) && !empty($_SESSION["oauthkeyforproviderbeforeoauthjump"]) && (GETPOST('code') || $action == 'delete')) { $keyforprovider = $_SESSION["oauthkeyforproviderbeforeoauthjump"]; } -$genericstring = 'OTHER'; +$genericstring = 'GENERIC'; /** @@ -138,7 +138,7 @@ if (GETPOST('code') || GETPOST('error')) { // We are coming from oauth provi // 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 code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); // This was a callback request from service, get the token try { diff --git a/htdocs/core/modules/oauth/github_oauthcallback.php b/htdocs/core/modules/oauth/github_oauthcallback.php index 23f9be92724..07153e9de32 100644 --- a/htdocs/core/modules/oauth/github_oauthcallback.php +++ b/htdocs/core/modules/oauth/github_oauthcallback.php @@ -118,7 +118,7 @@ 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 code=".dol_trunc(GETPOST('code'), 5)); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)); // This was a callback request from service, get the token try { diff --git a/htdocs/core/modules/oauth/google_oauthcallback.php b/htdocs/core/modules/oauth/google_oauthcallback.php index 2b6d484c51a..7e9288af27e 100644 --- a/htdocs/core/modules/oauth/google_oauthcallback.php +++ b/htdocs/core/modules/oauth/google_oauthcallback.php @@ -219,7 +219,7 @@ if (!GETPOST('code')) { exit(); } else { // We are coming from the return of an OAuth2 provider page. - dol_syslog("We are coming from the oauth provider page keyforprovider=".$keyforprovider." code=".dol_trunc(GETPOST('code'), 5)); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page keyforprovider=".$keyforprovider." code=".dol_trunc(GETPOST('code'), 5)); // We must validate that the $state is the same than the one into $_SESSION['oauthstateanticsrf'], return error if not. if (isset($_SESSION['oauthstateanticsrf']) && $state != $_SESSION['oauthstateanticsrf']) { diff --git a/htdocs/core/modules/oauth/microsoft2_oauthcallback.php b/htdocs/core/modules/oauth/microsoft2_oauthcallback.php index 6ee6ca64430..4692c3af7c6 100644 --- a/htdocs/core/modules/oauth/microsoft2_oauthcallback.php +++ b/htdocs/core/modules/oauth/microsoft2_oauthcallback.php @@ -17,7 +17,7 @@ */ /** - * \file htdocs/core/modules/oauth/microsoft_oauthcallback.php + * \file htdocs/core/modules/oauth/microsoft2_oauthcallback.php * \ingroup oauth * \brief Page to get oauth callback */ @@ -49,7 +49,8 @@ $genericstring = 'MICROSOFT2'; $uriFactory = new \OAuth\Common\Http\Uri\UriFactory(); //$currentUri = $uriFactory->createFromSuperGlobalArray($_SERVER); //$currentUri->setQuery(''); -$currentUri = $uriFactory->createFromAbsolute($urlwithroot.'/core/modules/oauth/microsoft_oauthcallback.php'); + +$currentUri = $uriFactory->createFromAbsolute($urlwithroot.'/core/modules/oauth/microsoft2_oauthcallback.php'); /** @@ -64,19 +65,21 @@ $httpClient = new \OAuth\Common\Http\Client\CurlClient(); //$httpClient->setCurlParameters($params); $serviceFactory->setHttpClient($httpClient); -// Dolibarr storage -$storage = new DoliStorage($db, $conf, $keyforprovider); - // Setup the credentials for the requests $keyforparamid = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; $keyforparamsecret = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; $keyforparamtenant = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_TENANT'; + +// Dolibarr storage +$storage = new DoliStorage($db, $conf, $keyforprovider, getDolGlobalString($keyforparamtenant)); + $credentials = new Credentials( getDolGlobalString($keyforparamid), getDolGlobalString($keyforparamsecret), $currentUri->getAbsoluteUri() ); + $state = GETPOST('state'); $requestedpermissionsarray = array(); @@ -94,7 +97,8 @@ if ($action != 'delete' && empty($requestedpermissionsarray)) { // $requestedpermissionsarray contains list of scopes. // Conversion into URL is done by Reflection on constant with name SCOPE_scope_in_uppercase try { - $apiService = $serviceFactory->createService(ucfirst(strtolower($genericstring)), $credentials, $storage, $requestedpermissionsarray); + $nameofservice = ucfirst(strtolower($genericstring)); + $apiService = $serviceFactory->createService($nameofservice, $credentials, $storage, $requestedpermissionsarray); } catch (Exception $e) { print $e->getMessage(); exit; @@ -122,6 +126,9 @@ if (!getDolGlobalString($keyforparamid)) { if (!getDolGlobalString($keyforparamsecret)) { accessforbidden('Setup of service is not complete. Secret key is missing'); } +if (!getDolGlobalString($keyforparamtenant)) { + accessforbidden('Setup of service is not complete. Tenant/Annuary ID key is missing'); +} /* @@ -148,7 +155,7 @@ if (GETPOST('code') || GETPOST('error')) { // We are coming from oauth provi // 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 code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); // This was a callback request from service, get the token try { diff --git a/htdocs/core/modules/oauth/microsoft_oauthcallback.php b/htdocs/core/modules/oauth/microsoft_oauthcallback.php index c8cd593bf07..486f401938a 100644 --- a/htdocs/core/modules/oauth/microsoft_oauthcallback.php +++ b/htdocs/core/modules/oauth/microsoft_oauthcallback.php @@ -42,7 +42,6 @@ if (empty($keyforprovider) && !empty($_SESSION["oauthkeyforproviderbeforeoauthju } $genericstring = 'MICROSOFT'; - /** * Create a new instance of the URI class with the current URI, stripping the query string */ @@ -64,13 +63,14 @@ $httpClient = new \OAuth\Common\Http\Client\CurlClient(); //$httpClient->setCurlParameters($params); $serviceFactory->setHttpClient($httpClient); -// Dolibarr storage -$storage = new DoliStorage($db, $conf, $keyforprovider); - // Setup the credentials for the requests $keyforparamid = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; $keyforparamsecret = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; $keyforparamtenant = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_TENANT'; + +// Dolibarr storage +$storage = new DoliStorage($db, $conf, $keyforprovider, getDolGlobalString($keyforparamtenant)); + $credentials = new Credentials( getDolGlobalString($keyforparamid), getDolGlobalString($keyforparamsecret), @@ -94,7 +94,8 @@ if ($action != 'delete' && empty($requestedpermissionsarray)) { // $requestedpermissionsarray contains list of scopes. // Conversion into URL is done by Reflection on constant with name SCOPE_scope_in_uppercase try { - $apiService = $serviceFactory->createService(ucfirst(strtolower($genericstring)), $credentials, $storage, $requestedpermissionsarray); + $nameofservice = ucfirst(strtolower($genericstring)); + $apiService = $serviceFactory->createService($nameofservice, $credentials, $storage, $requestedpermissionsarray); } catch (Exception $e) { print $e->getMessage(); exit; @@ -122,6 +123,9 @@ if (!getDolGlobalString($keyforparamid)) { if (!getDolGlobalString($keyforparamsecret)) { accessforbidden('Setup of service is not complete. Secret key is missing'); } +if (!getDolGlobalString($keyforparamtenant)) { + accessforbidden('Setup of service is not complete. Tenant/Annuary ID key is missing'); +} /* @@ -148,7 +152,7 @@ if (GETPOST('code') || GETPOST('error')) { // We are coming from oauth provi // 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 code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); // This was a callback request from service, get the token try { @@ -165,7 +169,7 @@ if (GETPOST('code') || GETPOST('error')) { // We are coming from oauth provi // Microsoft is a service that does not need state to be stored as second parameter of requestAccessToken //print $token->getAccessToken().'

'; - //print $token->getExtraParams()['id_token'].'
'; + //print $token->getExtraParams()['id_token'].'

'; //print $token->getRefreshToken().'
';exit; setEventMessages($langs->trans('NewTokenStored'), null, 'mesgs'); // Stored into object managed by class DoliStorage so into table oauth_token diff --git a/htdocs/core/modules/oauth/stripelive_oauthcallback.php b/htdocs/core/modules/oauth/stripelive_oauthcallback.php index 3fde132ea25..f8cf42ab46a 100644 --- a/htdocs/core/modules/oauth/stripelive_oauthcallback.php +++ b/htdocs/core/modules/oauth/stripelive_oauthcallback.php @@ -67,8 +67,8 @@ $serviceFactory->setHttpClient($httpClient); $storage = new DoliStorage($db, $conf, $keyforprovider); // Setup the credentials for the requests -$keyforparamid = 'OAUTH_STRIPE_LIVE'.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; -$keyforparamsecret = 'OAUTH_STRIPE_LIVE'.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; +$keyforparamid = 'OAUTH_STRIPELIVE'.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; +$keyforparamsecret = 'OAUTH_STRIPELIVE'.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; $credentials = new Credentials( getDolGlobalString($keyforparamid), getDolGlobalString($keyforparamsecret), @@ -128,7 +128,7 @@ 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 code=".dol_trunc(GETPOST('code'), 5)); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)); // This was a callback request from service, get the token try { diff --git a/htdocs/core/modules/oauth/stripetest_oauthcallback.php b/htdocs/core/modules/oauth/stripetest_oauthcallback.php index a9f50b95fc4..6189de2e255 100644 --- a/htdocs/core/modules/oauth/stripetest_oauthcallback.php +++ b/htdocs/core/modules/oauth/stripetest_oauthcallback.php @@ -67,8 +67,8 @@ $serviceFactory->setHttpClient($httpClient); $storage = new DoliStorage($db, $conf, $keyforprovider); // Setup the credentials for the requests -$keyforparamid = 'OAUTH_STRIPE_TEST'.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; -$keyforparamsecret = 'OAUTH_STRIPE_TEST'.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; +$keyforparamid = 'OAUTH_STRIPETEST'.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; +$keyforparamsecret = 'OAUTH_STRIPETEST'.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; $credentials = new Credentials( getDolGlobalString($keyforparamid), getDolGlobalString($keyforparamsecret), @@ -124,7 +124,7 @@ 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 code=".dol_trunc(GETPOST('code'), 5)); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)); // This was a callback request from service, get the token try { 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 85450edf7f0..4c8b3293894 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 @@ -339,7 +339,7 @@ class doc_generic_product_odt extends ModelePDFProduct $srctemplatepath, array( 'PATH_TO_TMP' => $conf->product->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) 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 c07cea2dbc8..679cec0a893 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 @@ -611,7 +611,7 @@ class doc_generic_project_odt extends ModelePDFProjects $srctemplatepath, array( 'PATH_TO_TMP' => $conf->project->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/modules/project/modules_project.php b/htdocs/core/modules/project/modules_project.php index d19476d7277..ecb9df70c2e 100644 --- a/htdocs/core/modules/project/modules_project.php +++ b/htdocs/core/modules/project/modules_project.php @@ -67,7 +67,7 @@ abstract class ModelePDFProjects extends CommonDocGenerator /** - * Class mere des modeles de numerotation des references de projects + * Class parent for numbering modules of tasks */ abstract class ModeleNumRefProjects extends CommonNumRefGenerator { 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 b330aaac9b2..b86f6756d44 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 @@ -547,10 +547,10 @@ class doc_generic_task_odt extends ModelePDFTask $odfHandler = new Odf( $srctemplatepath, array( - 'PATH_TO_TMP' => $conf->project->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. - 'DELIMITER_LEFT' => '{', - 'DELIMITER_RIGHT' => '}' + 'PATH_TO_TMP' => $conf->project->dir_temp, + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'DELIMITER_LEFT' => '{', + 'DELIMITER_RIGHT' => '}' ) ); } catch (Exception $e) { diff --git a/htdocs/core/modules/project/task/mod_task_simple.php b/htdocs/core/modules/project/task/mod_task_simple.php index b523fefad8c..8cc025384db 100644 --- a/htdocs/core/modules/project/task/mod_task_simple.php +++ b/htdocs/core/modules/project/task/mod_task_simple.php @@ -124,9 +124,9 @@ class mod_task_simple extends ModeleNumRefTask /** * Return next value * - * @param Societe|string $objsoc Object third party - * @param Task|string $object Object Task - * @return string|-1 Value if OK, -1 if KO + * @param null|Societe|string $objsoc Object third party + * @param null|Task|string $object Object Task + * @return string|int<-1,0> Value if OK, <=0 if KO */ public function getNextValue($objsoc, $object) { diff --git a/htdocs/core/modules/project/task/mod_task_universal.php b/htdocs/core/modules/project/task/mod_task_universal.php index 33f1ee5ac7d..20738badbce 100644 --- a/htdocs/core/modules/project/task/mod_task_universal.php +++ b/htdocs/core/modules/project/task/mod_task_universal.php @@ -121,9 +121,9 @@ class mod_task_universal extends ModeleNumRefTask /** * Return next value * - * @param Societe|string $objsoc Object third party - * @param Task|string $object Object task - * @return string|int Value if OK, 0 if KO + * @param null|Societe|string $objsoc Object third party + * @param null|Task|string $object Object Task + * @return string|int<-1,0> Value if OK, <=0 if KO */ public function getNextValue($objsoc = '', $object = '') { diff --git a/htdocs/core/modules/project/task/modules_task.php b/htdocs/core/modules/project/task/modules_task.php index f42e094ea21..36a0d041a9e 100644 --- a/htdocs/core/modules/project/task/modules_task.php +++ b/htdocs/core/modules/project/task/modules_task.php @@ -38,7 +38,7 @@ abstract class ModelePDFTask extends CommonDocGenerator /** * Return list of active generation modules * - * @param DoliDB $db Database handler + * @param DoliDB $db Database handler * @param integer $maxfilenamelength Max length of value to show * @return array List of templates */ @@ -62,5 +62,19 @@ abstract class ModelePDFTask extends CommonDocGenerator */ abstract class ModeleNumRefTask extends CommonNumRefGenerator { - // No overload code + /** + * Return next value + * + * @param null|Societe|string $objsoc Object third party + * @param null|Task|string $object Object Task + * @return string|int<-1,0> Value if OK, <=0 if KO + */ + abstract public function getNextValue($objsoc, $object); + + /** + * Return an example of numbering + * + * @return string Example + */ + abstract public function getExample(); } 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 e5fddcddd5f..160d7cf4b5f 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 @@ -376,7 +376,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales $srctemplatepath, array( 'PATH_TO_TMP' => $conf->propal->multidir_temp[$object->entity], - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 282edf31742..ffa72c9dc2f 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -1016,7 +1016,7 @@ class pdf_azur extends ModelePDFPropales $posy = $pdf->GetY() + 2; } } - if ($conf->global->FACTURE_CHQ_NUMBER == -1) { + if (getDolGlobalInt('FACTURE_CHQ_NUMBER') == -1) { $pdf->SetXY($this->marge_gauche, $posy); $pdf->SetFont('', 'B', $default_font_size - $diffsizetitle); $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByChequeOrderedTo', $this->emetteur->name), 0, 'L', 0); @@ -1035,8 +1035,8 @@ class pdf_azur extends ModelePDFPropales // If payment mode not forced or forced to VIR, show payment with BAN if (empty($object->mode_reglement_code) || $object->mode_reglement_code == 'VIR') { if (!empty($object->fk_account) || !empty($object->fk_bank) || getDolGlobalInt('FACTURE_RIB_NUMBER')) { - $bankid = (empty($object->fk_account) ? $conf->global->FACTURE_RIB_NUMBER : $object->fk_account); - if (!empty($object->fk_bank)) { + $bankid = (empty($object->fk_account) ? getDolGlobalInt('FACTURE_RIB_NUMBER') : $object->fk_account); + if (!empty($object->fk_bank) && $object->fk_bank > 0) { $bankid = $object->fk_bank; // For backward compatibility when object->fk_account is forced with object->fk_bank } $account = new Account($this->db); @@ -1516,12 +1516,12 @@ class pdf_azur extends ModelePDFPropales } else { $pdf->SetTextColor(200, 0, 0); $pdf->SetFont('', 'B', $default_font_size - 2); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorLogoFileNotFound", $logo), 0, 'L'); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("ErrorGoToGlobalSetup"), 0, 'L'); } } else { $text = $this->emetteur->name; - $pdf->MultiCell(100, 4, $outputlangs->convToOutputCharset($text), 0, $ltrdirection); + $pdf->MultiCell($w, 4, $outputlangs->convToOutputCharset($text), 0, $ltrdirection); } } @@ -1534,7 +1534,7 @@ class pdf_azur extends ModelePDFPropales $pdf->SetTextColor(128, 0, 0); $title .= ' - '.$outputlangs->transnoentities("NotValidated"); } - $pdf->MultiCell(100, 4, $title, '', 'R'); + $pdf->MultiCell($w, 4, $title, '', 'R'); $pdf->SetFont('', 'B', $default_font_size); @@ -1552,7 +1552,7 @@ class pdf_azur extends ModelePDFPropales $posy += 4; $pdf->SetXY($posx, $posy); $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R'); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("RefCustomer")." : ".$outputlangs->convToOutputCharset($object->ref_client), '', 'R'); } if (getDolGlobalString('PDF_SHOW_PROJECT_TITLE')) { @@ -1586,18 +1586,18 @@ class pdf_azur extends ModelePDFPropales $posy = $pdf->getY(); $pdf->SetXY($posx, $posy); $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("DatePropal")." : ".dol_print_date($object->date, $displaydate, false, $outputlangs, true), '', 'R'); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("DatePropal")." : ".dol_print_date($object->date, $displaydate, false, $outputlangs, true), '', 'R'); $posy += 4; $pdf->SetXY($posx, $posy); $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("DateEndPropal")." : ".dol_print_date($object->fin_validite, $displaydate, false, $outputlangs, true), '', 'R'); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("DateEndPropal")." : ".dol_print_date($object->fin_validite, $displaydate, false, $outputlangs, true), '', 'R'); if (!getDolGlobalString('MAIN_PDF_HIDE_CUSTOMER_CODE') && $object->thirdparty->code_client) { $posy += 4; $pdf->SetXY($posx, $posy); $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell(100, 3, $outputlangs->transnoentities("CustomerCode")." : ".$outputlangs->transnoentities($object->thirdparty->code_client), '', 'R'); + $pdf->MultiCell($w, 3, $outputlangs->transnoentities("CustomerCode")." : ".$outputlangs->transnoentities($object->thirdparty->code_client), '', 'R'); } // Get contact @@ -1609,7 +1609,7 @@ class pdf_azur extends ModelePDFPropales $posy += 4; $pdf->SetXY($posx, $posy); $pdf->SetTextColor(0, 0, 60); - $pdf->MultiCell(100, 3, $outputlangs->trans("SalesRepresentative")." : ".$usertmp->getFullName($langs), '', 'R'); + $pdf->MultiCell($w, 3, $outputlangs->trans("SalesRepresentative")." : ".$usertmp->getFullName($langs), '', 'R'); } } @@ -1618,7 +1618,7 @@ class pdf_azur extends ModelePDFPropales $top_shift = 0; // Show list of linked objects $current_y = $pdf->getY(); - $posy = pdf_writeLinkedObjects($pdf, $object, $outputlangs, $posx, $posy, 100, 3, 'R', $default_font_size); + $posy = pdf_writeLinkedObjects($pdf, $object, $outputlangs, $posx, $posy, $w, 3, 'R', $default_font_size); if ($current_y < $pdf->getY()) { $top_shift = $pdf->getY() - $current_y; } @@ -1758,7 +1758,7 @@ class pdf_azur extends ModelePDFPropales * Show area for the customer to sign * * @param TCPDF $pdf Object PDF - * @param Propal $object Object invoice + * @param Propal $object Object proposal * @param int $posy Position depart * @param Translate $outputlangs Object langs * @return int Position pour suite @@ -1779,7 +1779,7 @@ class pdf_azur extends ModelePDFPropales $pdf->SetFont('', '', $default_font_size - 2); $pdf->MultiCell($largcol, $tab_hl, $outputlangs->transnoentities("ProposalCustomerSignature"), 0, 'L', 1); - $pdf->SetXY($posx, $tab_top + $tab_hl); + $pdf->SetXY($posx, $tab_top + $tab_hl + 3); $pdf->MultiCell($largcol, $tab_hl * 3, '', 1, 'R'); if (getDolGlobalString('MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING')) { // Can be retrieve with getSignatureAppearanceArray() diff --git a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php index a0cf113f85e..9001cb900c0 100644 --- a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php @@ -568,10 +568,6 @@ class pdf_cyan extends ModelePDFPropales $posYAfterImage = 0; $posYAfterDescription = 0; - if ($this->getColumnStatus('position')) { - $this->printStdColumnContent($pdf, $curY, 'position', $i + 1); - } - 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 + $heightforsignature + $heightforinfotot))) { // If photo too high, we moved completely on new page @@ -606,18 +602,18 @@ class pdf_cyan extends ModelePDFPropales $this->printColDescContent($pdf, $curY, 'desc', $object, $i, $outputlangs, $hideref, $hidedesc); $pageposafter = $pdf->getPage(); - if ($pageposafter > $pageposbefore) { // There is a pagebreak + if ($pageposafter > $pageposbefore) { // There is a pagebreak (not enough space for total+free text+footer) $pdf->rollbackTransaction(true); - $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. + $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it to simple footer, so we can retry as if we have just the simple footer. $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 + $heightforsignature + $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 + if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforsignature + $heightforinfotot))) { // There is no space left for total+free text but no page break. + if ($i == ($nblines - 1)) { // No more lines, and no space left to show total, so we create a new page manually because no break page was done automatically for the last part. $pdf->AddPage('', '', true); if (!empty($tplidx)) { $pdf->useTemplate($tplidx); @@ -625,7 +621,7 @@ class pdf_cyan extends ModelePDFPropales $pdf->setPage($pageposafter + 1); } } else { - // We found a page break + // We found a page break that was done automatically and there is ow enough space for total+free text+footer. // Allows data in the first page if description is long enough to break in multiples pages if (getDolGlobalString('MAIN_PDF_DATA_ON_FIRST_PAGE')) { $showpricebeforepagebreak = 1; @@ -646,7 +642,7 @@ class pdf_cyan extends ModelePDFPropales $pdf->setTopMargin($this->marge_haute); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. - // We suppose that a too long description or photo were moved completely on next page + // We suppose that a too long description or photo were moved completely on next page, so we set the value for $curY and current page that will be used by the following output. if ($pageposafter > $pageposbefore && empty($showpricebeforepagebreak)) { $pdf->setPage($pageposafter); $curY = $tab_top_newpage; @@ -654,6 +650,11 @@ class pdf_cyan extends ModelePDFPropales $pdf->SetFont('', '', $default_font_size - 1); // We reposition the default font + // # of line + if ($this->getColumnStatus('position')) { + $this->printStdColumnContent($pdf, $curY, 'position', $i + 1); + } + // VAT Rate if ($this->getColumnStatus('vat')) { $vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails); @@ -999,7 +1000,7 @@ class pdf_cyan extends ModelePDFPropales } $posxval = 52; - if (getDolGlobalString('MAIN_PDF_DATE_TEXT')) { + if (getDolGlobalString('MAIN_PDF_DELIVERY_DATE_TEXT')) { $displaydate = "daytext"; } else { $displaydate = "day"; @@ -1133,7 +1134,7 @@ class pdf_cyan extends ModelePDFPropales // If payment mode not forced or forced to VIR, show payment with BAN if (empty($object->mode_reglement_code) || $object->mode_reglement_code == 'VIR') { if ($object->fk_account > 0 || $object->fk_bank > 0 || getDolGlobalInt('FACTURE_RIB_NUMBER')) { - $bankid = ($object->fk_account <= 0 ? $conf->global->FACTURE_RIB_NUMBER : $object->fk_account); + $bankid = ($object->fk_account <= 0 ? getDolGlobalInt('FACTURE_RIB_NUMBER') : $object->fk_account); if ($object->fk_bank > 0) { $bankid = $object->fk_bank; // For backward compatibility when object->fk_account is forced with object->fk_bank } @@ -1361,7 +1362,12 @@ class pdf_cyan extends ModelePDFPropales $totalvat = $outputlangs->transcountrynoentities("TotalLT2", $mysoc->country_code).(is_object($outputlangsbis) ? ' / '.$outputlangsbis->transcountrynoentities("TotalLT2", $mysoc->country_code) : ''); $totalvat .= ' '; - $totalvat .= vatrate(abs($tvakey), 1).$tvacompl; + if (getDolGlobalString('PDF_LOCALTAX2_LABEL_IS_CODE_OR_RATE') == 'nocodenorate') { + $totalvat .= $tvacompl; + } else { + $totalvat .= vatrate(abs($tvakey), 1).$tvacompl; + } + $pdf->MultiCell($col2x - $col1x, $tab2_hl, $totalvat, 0, 'L', 1); $total_localtax = ((isModEnabled("multicurrency") && isset($object->multicurrency_tx) && $object->multicurrency_tx != 1) ? price2num($tvaval * $object->multicurrency_tx, 'MT') : $tvaval); @@ -1404,8 +1410,7 @@ class pdf_cyan extends ModelePDFPropales $pdf->MultiCell($largcol2, $tab2_hl, price($deja_regle, 0, $outputlangs), 0, 'R', 0); /* - if ($object->close_code == 'discount_vat') - { + if ($object->close_code == 'discount_vat') { $index++; $pdf->SetFillColor(255,255,255); @@ -1432,7 +1437,7 @@ class pdf_cyan extends ModelePDFPropales $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { @@ -1844,7 +1849,7 @@ class pdf_cyan extends ModelePDFPropales $pdf->SetFont('', '', $default_font_size - 2); $pdf->MultiCell($largcol, $tab_hl, $outputlangs->transnoentities("ProposalCustomerSignature"), 0, 'L', 1); - $pdf->SetXY($posx, $tab_top + $tab_hl); + $pdf->SetXY($posx, $tab_top + $tab_hl + 3); $pdf->MultiCell($largcol, $tab_hl * 3, '', 1, 'R'); if (getDolGlobalString('MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING')) { diff --git a/htdocs/core/modules/rapport/pdf_paiement.class.php b/htdocs/core/modules/rapport/pdf_paiement.class.php index 13dc9da2488..31d227911c0 100644 --- a/htdocs/core/modules/rapport/pdf_paiement.class.php +++ b/htdocs/core/modules/rapport/pdf_paiement.class.php @@ -96,11 +96,11 @@ class pdf_paiement extends CommonDocGenerator $this->tab_height = $this->page_hauteur - $this->marge_haute - $this->marge_basse - $this->tab_top - 5; // must be > $this->line_height * $this->line_per_page and < $this->page_hauteur - $this->marge_haute - $this->marge_basse - $this->tab_top - 5; $this->posxdate = $this->marge_gauche + 2; - $this->posxpaymenttype = 42; - $this->posxinvoice = 82; - $this->posxbankaccount = 110; - $this->posxinvoiceamount = 132; - $this->posxpaymentamount = 162; + $this->posxpaymenttype = 32; + $this->posxinvoice = 72; + $this->posxbankaccount = 115; + $this->posxinvoiceamount = 135; + $this->posxpaymentamount = 167; if ($this->page_largeur < 210) { // To work with US executive format $this->line_per_page = 35; $this->posxpaymenttype -= 10; @@ -108,6 +108,7 @@ class pdf_paiement extends CommonDocGenerator $this->posxinvoiceamount -= 10; $this->posxpaymentamount -= 20; } + // which type of document will be generated: clients (client) or providers (fourn) invoices $this->doc_type = "client"; } 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 c51179964e2..082b9f20198 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 @@ -337,7 +337,7 @@ class doc_generic_reception_odt extends ModelePdfReception $srctemplatepath, array( 'PATH_TO_TMP' => $conf->reception->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) 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 5e9b54f03c1..0ea2d553516 100644 --- a/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php +++ b/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php @@ -291,7 +291,7 @@ class doc_generic_odt extends ModeleThirdPartyDoc $srctemplatepath, array( 'PATH_TO_TMP' => $conf->societe->multidir_temp[$object->entity], - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) 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 4db3e9f93d2..1739914c5f1 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 @@ -338,7 +338,7 @@ class doc_generic_stock_odt extends ModelePDFStock $srctemplatepath, array( 'PATH_TO_TMP' => $conf->product->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/modules/supplier_invoice/doc/doc_generic_supplier_invoice_odt.modules.php b/htdocs/core/modules/supplier_invoice/doc/doc_generic_supplier_invoice_odt.modules.php index 8246efc372d..0e3f2be33c7 100644 --- a/htdocs/core/modules/supplier_invoice/doc/doc_generic_supplier_invoice_odt.modules.php +++ b/htdocs/core/modules/supplier_invoice/doc/doc_generic_supplier_invoice_odt.modules.php @@ -340,7 +340,7 @@ class doc_generic_supplier_invoice_odt extends ModelePDFSuppliersInvoices $srctemplatepath, array( 'PATH_TO_TMP' => $conf->fournisseur->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php index 526490336d9..6eaafca28db 100644 --- a/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php @@ -817,7 +817,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php index 7f10f50c0f3..1c1977ce90c 100644 --- a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php +++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php @@ -181,7 +181,7 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices } // Supplier invoices take invoice date instead of creation date for the mask - $numFinal = get_next_value($db, $mask, 'facture_fourn', 'ref', '', $objsoc, $object->date); + $numFinal = get_next_value($db, $mask, 'facture_fourn', 'ref', '', $objsoc, is_object($object) ?$object->date :''); return $numFinal; } 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 a6750022925..e272fa2f9e1 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 @@ -335,7 +335,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders $srctemplatepath, array( 'PATH_TO_TMP' => $conf->fournisseur->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php b/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php index 570c8c11f54..885a25b84b5 100644 --- a/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php +++ b/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php @@ -92,7 +92,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $this->description = $langs->trans('SuppliersCommandModel'); $this->update_main_doc_field = 1; // Save the name of generated file as the main doc when generating a doc with this template - // Page size for A4 format + // Dimension page $this->type = 'pdf'; $formatarray = pdf_getFormat(); $this->page_largeur = $formatarray['width']; @@ -116,7 +116,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders // Get source company $this->emetteur = $mysoc; if (empty($this->emetteur->country_code)) { - $this->emetteur->country_code = substr($langs->defaultlang, -2); // By default, if was not defined + $this->emetteur->country_code = substr($langs->defaultlang, -2); // By default if not defined } // Define position of columns @@ -196,6 +196,8 @@ class pdf_cornas extends ModelePDFSuppliersOrders } $realpath = ''; + + $arephoto = false; foreach ($objphoto->liste_photos($dir, 1) as $key => $obj) { if (!getDolGlobalInt('CAT_HIGH_QUALITY_IMAGES')) { // If CAT_HIGH_QUALITY_IMAGES not defined, we use thumb if defined and then original photo if ($obj['photo_vignette']) { @@ -207,10 +209,12 @@ class pdf_cornas extends ModelePDFSuppliersOrders $filename = $obj['photo']; } $realpath = $dir.$filename; + $arephoto = true; + $this->atleastonephoto = true; break; } - if ($realpath) { + if ($realpath && $arephoto) { $realpatharray[$i] = $realpath; } } @@ -260,7 +264,8 @@ class pdf_cornas extends ModelePDFSuppliersOrders global $action; $reshook = $hookmanager->executeHooks('beforePDFCreation', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks - $nblines = count($object->lines); + // Set nblines with the new facture lines content after hook + $nblines = is_array($object->lines) ? count($object->lines) : 0; $pdf = pdf_getInstance($this->format); $default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance @@ -278,7 +283,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders } $pdf->SetFont(pdf_getPDFFont($outputlangs)); // Set path to the background PDF File - if (getDolGlobalString('MAIN_ADD_PDF_BACKGROUND')) { + if (!getDolGlobalString('MAIN_DISABLE_FPDI') && getDolGlobalString('MAIN_ADD_PDF_BACKGROUND')) { $pagecount = $pdf->setSourceFile($conf->mycompany->dir_output.'/' . getDolGlobalString('MAIN_ADD_PDF_BACKGROUND')); $tplidx = $pdf->importPage(1); } @@ -324,6 +329,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $tab_height = $this->page_hauteur - $tab_top - $heightforfooter - $heightforfreetext; // Incoterm + $height_incoterms = 0; if (isModEnabled('incoterm')) { $desc_incoterms = $object->getIncotermsForPDF(); if ($desc_incoterms) { @@ -339,10 +345,11 @@ class pdf_cornas extends ModelePDFSuppliersOrders $pdf->Rect($this->marge_gauche, $tab_top - 1, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $height_incoterms + 1); $tab_top = $nexY + 6; + $height_incoterms += 4; } } - // Affiche notes + // Displays notes. Here we are still on code executed only for the first page. $notetoshow = empty($object->note_public) ? '' : $object->note_public; // Extrafields in note @@ -352,7 +359,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders } $pagenb = $pdf->getPage(); - if ($notetoshow) { + if (!empty($notetoshow)) { $tab_width = $this->page_largeur - $this->marge_gauche - $this->marge_droite; $pageposbeforenote = $pagenb; @@ -374,7 +381,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders if ($pageposafternote > $pageposbeforenote) { $pdf->rollbackTransaction(true); - // prepar pages to receive notes + // prepare pages to receive notes while ($pagenb < $pageposafternote) { $pdf->AddPage(); $pagenb++; @@ -444,8 +451,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders } $height_note = $posyafter - $tab_top_newpage; $pdf->Rect($this->marge_gauche, $tab_top_newpage - 1, $tab_width, $height_note + 1); - } else { - // No pagebreak + } else { // No pagebreak $pdf->commitTransaction(); $posyafter = $pdf->GetY(); $height_note = $posyafter - $tab_top; @@ -539,12 +545,14 @@ class pdf_cornas extends ModelePDFSuppliersOrders $posYAfterImage = $curY + $imglinesize['height']; } } + // Description of product line $curX = $this->posxdesc - 1; $showpricebeforepagebreak = 1; if ($this->getColumnStatus('desc')) { $pdf->startTransaction(); + $this->printColDescContent($pdf, $curY, 'desc', $object, $i, $outputlangs, $hideref, $hidedesc, 1); $pageposafter = $pdf->getPage(); @@ -593,6 +601,11 @@ class pdf_cornas extends ModelePDFSuppliersOrders $pdf->SetFont('', '', $default_font_size - 1); // On repositionne la police par default + // # of line + if ($this->getColumnStatus('position')) { + $this->printStdColumnContent($pdf, $curY, 'position', $i + 1); + } + // VAT Rate if ($this->getColumnStatus('vat')) { $vat_rate = pdf_getlinevatrate($object, $i, $outputlangs, $hidedetails); @@ -814,11 +827,11 @@ class pdf_cornas extends ModelePDFSuppliersOrders return 1; // No error } else { - $this->error = $langs->trans("ErrorCanNotCreateDir", $dir); + $this->error = $langs->transnoentities("ErrorCanNotCreateDir", $dir); return 0; } } else { - $this->error = $langs->trans("ErrorConstantNotDefined", "SUPPLIER_OUTPUTDIR"); + $this->error = $langs->transnoentities("ErrorConstantNotDefined", "SUPPLIER_OUTPUTDIR"); return 0; } } @@ -1106,7 +1119,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { @@ -1514,6 +1527,24 @@ class pdf_cornas extends ModelePDFSuppliersOrders */ $rank = 0; // do not use negative rank + $this->cols['position'] = array( + 'rank' => $rank, + 'width' => 10, + 'status' => getDolGlobalInt('PDF_CORNAS_ADD_POSITION') ? true : (getDolGlobalInt('PDF_ADD_POSITION') ? true : false), + 'title' => array( + 'textkey' => '#', // use lang key is useful in somme case with module + 'align' => 'C', + // 'textkey' => 'yourLangKey', // if there is no label, yourLangKey will be translated to replace label + // 'label' => ' ', // the final label + 'padding' => array(0.5, 0.5, 0.5, 0.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + ), + 'content' => array( + 'align' => 'C', + 'padding' => array(1, 0.5, 1, 1.5), // Like css 0 => top , 1 => right, 2 => bottom, 3 => left + ), + ); + + $rank += 10; // do not use negative rank $this->cols['desc'] = array( 'rank' => $rank, 'width' => false, // only for desc 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 17e7fb8ae2c..d0622a1686f 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 @@ -364,7 +364,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal $srctemplatepath, array( 'PATH_TO_TMP' => $conf->supplier_proposal->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) 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 c488f8035b5..a46099083c5 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 @@ -311,7 +311,7 @@ class doc_generic_ticket_odt extends ModelePDFTicket $srctemplatepath, array( 'PATH_TO_TMP' => $conf->ticket->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) 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 8dd43bbdc32..332af37d8c7 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 @@ -342,7 +342,7 @@ class doc_generic_user_odt extends ModelePDFUser $srctemplatepath, array( 'PATH_TO_TMP' => $conf->user->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) 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 cabdf9611aa..1989ded79e3 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 @@ -363,7 +363,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup $srctemplatepath, array( 'PATH_TO_TMP' => $conf->user->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. 'DELIMITER_LEFT' => '{', 'DELIMITER_RIGHT' => '}' ) diff --git a/htdocs/core/tpl/admin_extrafields_add.tpl.php b/htdocs/core/tpl/admin_extrafields_add.tpl.php index 9102972d4dc..123ec9dcc1d 100644 --- a/htdocs/core/tpl/admin_extrafields_add.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_add.tpl.php @@ -185,7 +185,7 @@ print $formadmin->selectTypeOfFields('type', GETPOST('type', 'alpha'));
textwithpicto('', $langs->trans("ExtrafieldParamHelpselect"), 1, 0, '', 0, 2, 'helpvalue1')?> textwithpicto('', $langs->trans("ExtrafieldParamHelpsellist"), 1, 0, '', 0, 2, 'helpvalue2')?> - textwithpicto('', $langs->trans("ExtrafieldParamHelpchkbxlst"), 1, 0, '', 0, 2, 'helpvalue3')?> + textwithpicto('', $langs->trans("ExtrafieldParamHelpsellist"), 1, 0, '', 0, 2, 'helpvalue3')?> textwithpicto('', $langs->trans("ExtrafieldParamHelplink").'

'.$langs->trans("Examples").':
'.$listofexamplesforlink, 1, 0, '', 0, 2, 'helpvalue4')?>
textwithpicto('', $langs->trans("ExtrafieldParamHelpPassword"), 1, 0, '', 0, 2, 'helpvalue5')?> textwithpicto('', $langs->trans("ExtrafieldParamHelpSeparator"), 1, 0, '', 0, 2, 'helpvalue6')?> diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php index 254442a8df4..215cefa9444 100644 --- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php @@ -245,7 +245,7 @@ if (in_array($type, array_keys($typewecanchangeinto))) {
textwithpicto('', $langs->trans("ExtrafieldParamHelpselect"), 1, 0, '', 0, 2, 'helpvalue1')?> textwithpicto('', $langs->trans("ExtrafieldParamHelpsellist"), 1, 0, '', 0, 2, 'helpvalue2')?> - textwithpicto('', $langs->trans("ExtrafieldParamHelpchkbxlst"), 1, 0, '', 0, 2, 'helpvalue3')?> + textwithpicto('', $langs->trans("ExtrafieldParamHelpsellist"), 1, 0, '', 0, 2, 'helpvalue3')?> textwithpicto('', $langs->trans("ExtrafieldParamHelplink").'

'.$langs->trans("Examples").':
'.$listofexamplesforlink, 1, 0, '', 0, 2, 'helpvalue4')?>
textwithpicto('', $langs->trans("ExtrafieldParamHelpPassword"), 1, 0, '', 0, 2, 'helpvalue5')?> textwithpicto('', $langs->trans("ExtrafieldParamHelpSeparator"), 1, 0, '', 0, 2, 'helpvalue6')?> diff --git a/htdocs/core/tpl/advtarget.tpl.php b/htdocs/core/tpl/advtarget.tpl.php index edc3ae45e88..5b9195fba9a 100644 --- a/htdocs/core/tpl/advtarget.tpl.php +++ b/htdocs/core/tpl/advtarget.tpl.php @@ -293,7 +293,10 @@ if (!getDolGlobalString('MAIN_EXTRAFIELDS_DISABLED')) { $extrafields->fetch_name_optionals_label($elementtype); foreach ($extrafields->attributes[$elementtype]['label'] as $key => $val) { if ($key != 'ts_nameextra' && $key != 'ts_payeur') { - print '
'.$extrafields->attributes[$elementtype]['label'][$key]; + if (isset($extrafields->attributes[$elementtype]['langfile'][$key])) { + $langs->load($extrafields->attributes[$elementtype]['langfile'][$key]); + } + print '
'.$langs->trans($extrafields->attributes[$elementtype]['label'][$key]); if (!empty($array_query['options_'.$key]) || (is_array($array_query['options_'.$key]) && count($array_query['options_'.$key]) > 0)) { print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing'); } @@ -309,9 +312,9 @@ if (!getDolGlobalString('MAIN_EXTRAFIELDS_DISABLED')) { } elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'date') || ($extrafields->attributes[$elementtype]['type'][$key] == 'datetime')) { print ''; print '
'.$langs->trans("AdvTgtStartDt").''; - print $form->selectDate('', 'options_'.$key.'_st_dt'); + print $form->selectDate('', 'options_'.$key.'_st_dt', 0, 0, 1); print ''.$langs->trans("AdvTgtEndDt").''; - print $form->selectDate('', 'options_'.$key.'_end_dt'); + print $form->selectDate('', 'options_'.$key.'_end_dt', 0, 0, 1); print '
'; print '
'."\n"; @@ -327,19 +330,19 @@ if (!getDolGlobalString('MAIN_EXTRAFIELDS_DISABLED')) { $array_query['options_'.$key] ); print ''."\n"; - } elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'select')) { - print $formadvtargetemaling->advMultiselectarray('options_'.$key, $extrafields->attributes[$key]['param']['options'], $array_query['options_'.$key]); + } elseif ($extrafields->attributes[$elementtype]['type'][$key] == 'select') { + print $formadvtargetemaling->advMultiselectarray('options_'.$key, $extrafields->attributes[$elementtype]['param'][$key]['options'], $array_query['options_'.$key]); print ''."\n"; - } elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'sellist')) { - print $formadvtargetemaling->advMultiselectarraySelllist('options_'.$key, $extrafields->attributes[$key]['param']['options'], $array_query['options_'.$key]); + } elseif ($extrafields->attributes[$elementtype]['type'][$key] == 'sellist') { + print $formadvtargetemaling->advMultiselectarraySelllist('options_'.$key, $extrafields->attributes[$elementtype]['param'][$key]['options'], $array_query['options_'.$key]); print ''."\n"; } else { print ''; print '
'; if (is_array($array_query['options_'.$key])) { - print $extrafields->showInputField($key, implode(',', $array_query['options_'.$key])); + print $extrafields->showInputField($key, implode(',', $array_query['options_'.$key]), '', '', '', '', 0, 'societe', 1); } else { - print $extrafields->showInputField($key, $array_query['options_'.$key]); + print $extrafields->showInputField($key, $array_query['options_'.$key], '', '', '', '', 0, 'societe', 1); } print '
'; @@ -508,9 +511,9 @@ if (!getDolGlobalString('MAIN_EXTRAFIELDS_DISABLED')) { } elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'date') || ($extrafields->attributes[$elementtype]['type'][$key] == 'datetime')) { print ''; print '
'.$langs->trans("AdvTgtStartDt").''; - print $form->selectDate('', 'options_'.$key.'_st_dt_cnct'); + print $form->selectDate('', 'options_'.$key.'_st_dt_cnct', 0, 0, 1); print ''.$langs->trans("AdvTgtEndDt").''; - print $form->selectDate('', 'options_'.$key.'_end_dt_cnct'); + print $form->selectDate('', 'options_'.$key.'_end_dt_cnct', 0, 0, 1); print '
'; print '
'."\n"; print $form->textwithpicto('', $langs->trans("AdvTgtSearchDtHelp"), 1, 'help'); @@ -525,17 +528,17 @@ if (!getDolGlobalString('MAIN_EXTRAFIELDS_DISABLED')) { $array_query['options_'.$key.'_cnct'] ); print ''."\n"; - } elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'select')) { - print $formadvtargetemaling->advMultiselectarray('options_'.$key.'_cnct', $extrafields->attributes[$key]['param']['options'], $array_query['options_'.$key.'_cnct']); + } elseif ($extrafields->attributes[$elementtype]['type'][$key] == 'select') { + print $formadvtargetemaling->advMultiselectarray('options_'.$key.'_cnct', $extrafields->attributes[$elementtype]['param'][$key]['options'], $array_query['options_'.$key.'_cnct']); print ''."\n"; - } elseif (($extrafields->attributes[$elementtype]['type'][$key] == 'sellist')) { - print $formadvtargetemaling->advMultiselectarraySelllist('options_'.$key.'_cnct', $extrafields->attributes[$key]['param']['options'], $array_query['options_'.$key.'_cnct']); + } elseif ($extrafields->attributes[$elementtype]['type'][$key] == 'sellist') { + print $formadvtargetemaling->advMultiselectarraySelllist('options_'.$key.'_cnct', $extrafields->attributes[$elementtype]['param'][$key]['options'], $array_query['options_'.$key.'_cnct']); print ''."\n"; } else { if (is_array($array_query['options_'.$key.'_cnct'])) { - print $extrafields->showInputField($key, implode(',', $array_query['options_'.$key.'_cnct']), '', '_cnct'); + print $extrafields->showInputField($key, implode(',', $array_query['options_'.$key.'_cnct']), '', '_cnct', '', '', 0, 'socpeople', 1); } else { - print $extrafields->showInputField($key, $array_query['options_'.$key.'_cnct'], '', '_cnct'); + print $extrafields->showInputField($key, $array_query['options_'.$key.'_cnct'], '', '_cnct', '', '', 0, 'socpeople', 1); } print ''."\n"; } diff --git a/htdocs/core/tpl/commonfields_view.tpl.php b/htdocs/core/tpl/commonfields_view.tpl.php index 4cb908025f4..8ee77b5ffb8 100644 --- a/htdocs/core/tpl/commonfields_view.tpl.php +++ b/htdocs/core/tpl/commonfields_view.tpl.php @@ -51,8 +51,8 @@ foreach ($object->fields as $key => $val) { continue; // We don't want this field } - if (in_array($key, array('ref', 'status'))) { - continue; // Ref and status are already in dol_banner + if (in_array($key, array('rowid', 'ref', 'status'))) { + continue; // rowid, ref and status are already in dol_banner } $value = $object->$key; diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php index 32c6b6a9b58..df68da385bf 100644 --- a/htdocs/core/tpl/contacts.tpl.php +++ b/htdocs/core/tpl/contacts.tpl.php @@ -208,7 +208,7 @@ if ($permission) { // Prepare list -// TODO: replace this with direct SQL string to use $db->sort($sortfield, $sortorder) +// TODO: replace this with 1 single direct SQL (for both eyernal and external string to use $db->sort($sortfield, $sortorder) $list = array(); foreach (array('internal', 'external') as $source) { if (($object->element == 'shipping' || $object->element == 'reception') && is_object($objectsrc)) { @@ -311,7 +311,7 @@ print ''; print ''; print '
'."\n"; -print ''; +print '
'; print ''; print_liste_field_titre($arrayfields['thirdparty']['label'], $_SERVER["PHP_SELF"], "thirdparty_name", "", $param, "", $sortfield, $sortorder); diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php index ac3fea2ca4a..0c9bac901b7 100644 --- a/htdocs/core/tpl/extrafields_view.tpl.php +++ b/htdocs/core/tpl/extrafields_view.tpl.php @@ -130,7 +130,7 @@ if (empty($reshook) && !empty($object->table_element) && isset($extrafields->att } print '>'; $extrafields_collapse_num_old = $extrafields_collapse_num; - print ''; // Bank Account diff --git a/htdocs/fourn/commande/dispatch.php b/htdocs/fourn/commande/dispatch.php index 302dfca853d..f74b838b97d 100644 --- a/htdocs/fourn/commande/dispatch.php +++ b/htdocs/fourn/commande/dispatch.php @@ -1168,14 +1168,14 @@ if ($id > 0 || !empty($ref)) { $sql .= " e.rowid as warehouse_id, e.ref as entrepot,"; $sql .= " cfd.rowid as dispatchlineid, cfd.fk_product, cfd.qty, cfd.eatby, cfd.sellby, cfd.batch, cfd.comment, cfd.status, cfd.datec"; $sql .= " ,cd.rowid, cd.subprice"; - if ($conf->reception->enabled) { + if (isModEnabled('reception')) { $sql .= " ,cfd.fk_reception, r.date_delivery"; } $sql .= " FROM ".MAIN_DB_PREFIX."product as p,"; $sql .= " ".MAIN_DB_PREFIX."receptiondet_batch as cfd"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."commande_fournisseurdet as cd ON cd.rowid = cfd.fk_elementdet"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."entrepot as e ON cfd.fk_entrepot = e.rowid"; - if ($conf->reception->enabled) { + if (isModEnabled('reception')) { $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."reception as r ON cfd.fk_reception = r.rowid"; } $sql .= " WHERE cfd.fk_element = ".((int) $object->id); @@ -1197,7 +1197,7 @@ if ($id > 0 || !empty($ref)) { print ''; // Reception ref - if ($conf->reception->enabled) { + if (isModEnabled("reception")) { print ''; } // Product @@ -1271,7 +1271,11 @@ if ($id > 0 || !empty($ref)) { print ''; // Date delivery - print ''; + if (property_exists($objp, "date_delivery")) { + print ''; + } else { + print ''; + } // Batch / Eat by / Sell by if (isModEnabled('productbatch')) { diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 67ad3cbd366..382a69e0e2a 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -400,6 +400,7 @@ if (empty($reshook)) { $societe = new Societe($db); $societe->fetch($cmd->socid); $objecttmp->vat_reverse_charge = $societe->vat_reverse_charge; + $objecttmp->thirdparty = $societe; } $objecttmp->socid = $cmd->socid; $objecttmp->type = $objecttmp::TYPE_STANDARD; @@ -508,10 +509,16 @@ if (empty($reshook)) { if (($lines[$i]->product_type != 9 && empty($lines[$i]->fk_parent_line)) || $lines[$i]->product_type == 9) { $fk_parent_line = 0; } + + $tva_tx = $lines[$i]->tva_tx; + if (!empty($lines[$i]->vat_src_code) && !preg_match('/\(/', (string) $tva_tx)) { + $tva_tx .= ' ('.$lines[$i]->vat_src_code.')'; + } + $result = $objecttmp->addline( $desc, $lines[$i]->subprice, - $lines[$i]->tva_tx, + $tva_tx, $lines[$i]->localtax1_tx, $lines[$i]->localtax2_tx, $lines[$i]->qty, @@ -1321,7 +1328,7 @@ if ($resql) { $moreforfilter .= ''; } $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook + $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $moreforfilter .= $hookmanager->resPrint; } else { @@ -1762,6 +1769,9 @@ if ($resql) { print ''; } print ''; + if (!$i) { + $totalarray['nbfield']++; + } } // Ref if (!empty($arrayfields['cf.ref']['checked'])) { @@ -1835,8 +1845,8 @@ if ($resql) { } // Alias if (!empty($arrayfields['s.name_alias']['checked'])) { - print ''."\n"; if (!$i) { $totalarray['nbfield']++; @@ -1844,8 +1854,8 @@ if ($resql) { } // Town if (!empty($arrayfields['s.town']['checked'])) { - print ''; if (!$i) { $totalarray['nbfield']++; @@ -1853,8 +1863,8 @@ if ($resql) { } // Zip if (!empty($arrayfields['s.zip']['checked'])) { - print ''; if (!$i) { $totalarray['nbfield']++; @@ -1862,7 +1872,7 @@ if ($resql) { } // State if (!empty($arrayfields['state.nom']['checked'])) { - print "\n"; + print '\n"; if (!$i) { $totalarray['nbfield']++; } @@ -2079,9 +2089,9 @@ if ($resql) { print ''; } print ''; - } - if (!$i) { - $totalarray['nbfield']++; + if (!$i) { + $totalarray['nbfield']++; + } } print "\n"; diff --git a/htdocs/fourn/contact.php b/htdocs/fourn/contact.php index 0be5b7bb135..39fe1562816 100644 --- a/htdocs/fourn/contact.php +++ b/htdocs/fourn/contact.php @@ -55,7 +55,7 @@ if (!$sortorder) { $sortorder = "ASC"; } if (!$sortfield) { - $sortfield = "p.name"; + $sortfield = "p.lastname"; } $limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit; @@ -85,12 +85,12 @@ if (dol_strlen($stcomm)) { } if (dol_strlen($begin)) { - $sql .= " AND p.name LIKE '$begin%'"; + $sql .= " AND p.lastname LIKE '$begin%'"; } if ($contactname) { - $sql .= " AND p.name LIKE '%".strtolower($contactname)."%'"; - $sortfield = "p.name"; + $sql .= " AND p.lastname LIKE '%".strtolower($contactname)."%'"; + $sortfield = "p.lastname"; $sortorder = "ASC"; } @@ -110,7 +110,7 @@ if ($result) { print '
'; + print ''; print ''; print ''; diff --git a/htdocs/core/tpl/list_print_total.tpl.php b/htdocs/core/tpl/list_print_total.tpl.php index 8900665eaeb..8990ce12984 100644 --- a/htdocs/core/tpl/list_print_total.tpl.php +++ b/htdocs/core/tpl/list_print_total.tpl.php @@ -64,7 +64,8 @@ if (isset($totalarray['pos'])) { while ($i < $totalarray['nbfield']) { $i++; if (!empty($totalarray['pos'][$i])) { - printTotalValCell($totalarray['type'][$i], $sumsarray[$totalarray['pos'][$i]]); + $fieldname = preg_replace('/[^a-z0-9]/', '', $totalarray['pos'][$i]); + printTotalValCell($totalarray['type'][$i], $sumsarray[$fieldname]); } else { if ($i == 1) { print ''."\n"; - $total += $obj->duree; + $total += (isset($obj->duree) ? $obj->duree : 0); } $i++; } diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index 2a3c0a7e4e8..4e38fe07568 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -35,7 +35,7 @@ if (!defined('DOL_APPLICATION_TITLE')) { define('DOL_APPLICATION_TITLE', 'Dolibarr'); } if (!defined('DOL_VERSION')) { - define('DOL_VERSION', '20.0.0'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c + define('DOL_VERSION', '20.0.4'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c } if (!defined('EURO')) { diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 4692f6549ba..5eea5501d69 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1529,6 +1529,7 @@ class CommandeFournisseur extends CommonOrder $this->multicurrency_tx = 1; } + // We set order into draft status $this->statut = self::STATUS_DRAFT; // deprecated $this->status = self::STATUS_DRAFT; @@ -3093,7 +3094,7 @@ class CommandeFournisseur extends CommonOrder $sql .= $this->db->order("rowid", "ASC"); $sql .= $this->db->plimit(1); $resql = $this->db->query($sql); - if ($resql) { + if ($resql && $this->db->num_rows($resql)) { $obj = $this->db->fetch_object($resql); $prodid = $obj->rowid; } @@ -3375,16 +3376,17 @@ class CommandeFournisseur extends CommonOrder return ''; } - $obj = new ProductFournisseur($this->db); + $tmpproductfourn = new ProductFournisseur($this->db); $nb = 0; foreach ($this->lines as $line) { if ($line->fk_product > 0) { - $idp = $obj->find_min_price_product_fournisseur($line->fk_product, $line->qty); - if ($idp) { - $obj->fetch($idp); - if ($obj->delivery_time_days > $nb) { - $nb = $obj->delivery_time_days; + // Load delivery_time_days, return id into product_fournisseur_price + $idp = $tmpproductfourn->find_min_price_product_fournisseur($line->fk_product, $line->qty, $this->thirdparty->id); + if ($idp > 0) { + //$tmpproductfourn->fetch_product_fournisseur_price($idp); + if ($tmpproductfourn->delivery_time_days > $nb) { + $nb = $tmpproductfourn->delivery_time_days; } } } @@ -3393,12 +3395,13 @@ class CommandeFournisseur extends CommonOrder if ($nb === 0) { return ''; } else { - return $nb.' '.$langs->trans('Days'); + return $nb.' '.$langs->trans('days'); } } /** * Returns the rights used for this class + * * @return int */ public function getRights() @@ -3539,14 +3542,22 @@ class CommandeFournisseur extends CommonOrder // Build array with quantity deliverd by product foreach ($supplierorderdispatch->lines as $line) { - $qtydelivered[$line->fk_product] += $line->qty; + if (array_key_exists($line->fk_product, $qtydelivered)) { + $qtydelivered[$line->fk_product] += $line->qty; + } else { + $qtydelivered[$line->fk_product] = $line->qty; + } } foreach ($this->lines as $line) { // Exclude lines not qualified for shipment, similar code is found into interface_20_modWrokflow for customers if (!getDolGlobalString('STOCK_SUPPORTS_SERVICES') && $line->product_type > 0) { continue; } - $qtywished[$line->fk_product] += $line->qty; + if (array_key_exists($line->fk_product, $qtywished)) { + $qtywished[$line->fk_product] += $line->qty; + } else { + $qtywished[$line->fk_product] = $line->qty; + } } //Compare array @@ -4186,7 +4197,7 @@ class CommandeFournisseurLigne extends CommonOrderLine return -1; } - $sql1 = 'UPDATE '.$this->db->prefix()."commandedet SET fk_commandefourndet = NULL WHERE rowid=".((int) $this->id); + $sql1 = 'UPDATE '.$this->db->prefix()."commandedet SET fk_commandefourndet = NULL WHERE fk_commandefourndet=".((int) $this->id); $resql = $this->db->query($sql1); if (!$resql) { $this->db->rollback(); diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index a3d767b0596..79b345dab2c 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -4,7 +4,7 @@ * Copyright (C) 2004 Christophe Combelles * Copyright (C) 2005 Marc Barilley * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2010-2020 Juanjo Menent + * Copyright (C) 2010-2023 Juanjo Menent * Copyright (C) 2013-2019 Philippe Grand * Copyright (C) 2013 Florian Henry * Copyright (C) 2014-2016 Marcos García @@ -722,6 +722,7 @@ class FactureFournisseur extends CommonInvoice */ if (! $error && $this->fac_rec > 0 && $_facrec instanceof FactureFournisseurRec) { foreach ($_facrec->lines as $i => $val) { + $product_type = $_facrec->lines[$i]->product_type; if ($_facrec->lines[$i]->fk_product) { $prod = new Product($this->db); $res = $prod->fetch($_facrec->lines[$i]->fk_product); @@ -782,7 +783,7 @@ class FactureFournisseur extends CommonInvoice 0, $_facrec->lines[$i]->info_bits, 'HT', - 0, + $product_type, $_facrec->lines[$i]->rang, false, $_facrec->lines[$i]->array_options, @@ -1186,6 +1187,12 @@ class FactureFournisseur extends CommonInvoice if (empty($this->total_tva)) { $this->total_tva = 0; } + if (empty($this->total_localtax1)) { + $this->total_localtax1 = 0; + } + if (empty($this->total_localtax2)) { + $this->total_localtax2 = 0; + } if (isset($this->total_ttc)) { $this->total_ttc = (float) $this->total_ttc; } diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index a08f43fd365..7c5854ecdfb 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -671,7 +671,7 @@ class ProductFournisseur extends Product /** * Loads the price information of a provider * - * @param int $rowid Line id + * @param int $rowid Line id in product_fournisseur_price * @param int $ignore_expression Ignores the math expression for calculating price and uses the db value instead * @return int Return integer < 0 if KO, 0 if OK but not found, > 0 if OK */ @@ -883,15 +883,13 @@ class ProductFournisseur extends Product * * @param int $prodid Product id * @param float $qty Minimum quantity - * @param int $socid get min price for specific supplier + * @param int $socid Load min price for this specific supplier * @return int Return integer <0 if KO, 0=Not found of no product id provided, >0 if OK * @see list_product_fournisseur_price() */ public function find_min_price_product_fournisseur($prodid, $qty = 0, $socid = 0) { // phpcs:enable - global $conf; - if (empty($prodid)) { dol_syslog("Warning function find_min_price_product_fournisseur were called with prodid empty. May be a bug.", LOG_WARNING); return 0; @@ -919,8 +917,8 @@ class ProductFournisseur extends Product $sql = "SELECT s.nom as supplier_name, s.rowid as fourn_id,"; $sql .= " pfp.rowid as product_fourn_price_id, pfp.ref_fourn,"; $sql .= " pfp.price, pfp.quantity, pfp.unitprice, pfp.tva_tx, pfp.charges,"; - $sql .= " pfp.remise, pfp.remise_percent, pfp.fk_supplier_price_expression, pfp.delivery_time_days"; - $sql .= " ,pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code"; + $sql .= " pfp.remise, pfp.remise_percent, pfp.fk_supplier_price_expression, pfp.delivery_time_days,"; + $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 IN (".getEntity('productsupplierprice').")"; @@ -977,7 +975,9 @@ class ProductFournisseur extends Product $fourn_unitprice_with_discount = $fourn_unitprice * (1 - $record["remise_percent"] / 100); } } - if ($fourn_unitprice < $min || $min == -1) { + + if ($fourn_unitprice_with_discount < $min || $min == -1) { + $this->id = $prodid; $this->product_fourn_price_id = $record["product_fourn_price_id"]; $this->ref_supplier = $record["ref_fourn"]; $this->ref_fourn = $record["ref_fourn"]; // deprecated @@ -990,23 +990,24 @@ class ProductFournisseur extends Product $this->fourn_unitprice_with_discount = $fourn_unitprice_with_discount; $this->fourn_charges = $record["charges"]; // when getDolGlobalString('PRODUCT_CHARGES') is set $this->fourn_tva_tx = $record["tva_tx"]; - $this->fourn_id = $record["fourn_id"]; + $this->fourn_id = $record["fourn_id"]; // thirdparty id $this->fourn_name = $record["supplier_name"]; $this->delivery_time_days = $record["delivery_time_days"]; $this->fk_supplier_price_expression = $record["fk_supplier_price_expression"]; - $this->id = $prodid; $this->fourn_multicurrency_price = $record["multicurrency_price"]; $this->fourn_multicurrency_unitprice = $record["multicurrency_unitprice"]; $this->fourn_multicurrency_tx = $record["multicurrency_tx"]; $this->fourn_multicurrency_id = $record["fk_multicurrency"]; $this->fourn_multicurrency_code = $record["multicurrency_code"]; - $min = $fourn_unitprice; + + $min = $fourn_unitprice_with_discount; } } } $this->db->free($resql); - return 1; + + return $this->product_fourn_price_id; } else { $this->error = $this->db->error(); return -1; @@ -1077,12 +1078,12 @@ class ProductFournisseur extends Product public function display_price_product_fournisseur($showunitprice = 1, $showsuptitle = 1, $maxlen = 0, $notooltip = 0, $productFournList = array()) { // phpcs:enable - global $conf, $langs; + global $conf, $langs, $user; $out = ''; $langs->load("suppliers"); if (count($productFournList) > 0) { - $out .= '
'; diff --git a/htdocs/core/tpl/massactions_pre.tpl.php b/htdocs/core/tpl/massactions_pre.tpl.php index d479a223a12..33bcaf006a9 100644 --- a/htdocs/core/tpl/massactions_pre.tpl.php +++ b/htdocs/core/tpl/massactions_pre.tpl.php @@ -54,7 +54,9 @@ if ($massaction == 'preclonetasks') { } $formquestion = array( - array('type' => 'other', 'name' => 'projectid', 'label' => $langs->trans('Project') .': ', 'value' => $form->selectProjects('', 'projectid', '', '', '', '', '', '', '', 1, 1)), + // TODO If list of project is long and project is not on a thirdparty, the combo may be very long. + // Solution: Allow only sameproject for cloning tasks ? + array('type' => 'other', 'name' => 'projectid', 'label' => $langs->trans('Project') .': ', 'value' => $form->selectProjects($object->id, 'projectid', '', 0, 1, '', 0, array(), $object->socid, '1', 1, '', null, 1)), ); print $form->formconfirm($_SERVER['PHP_SELF'] . '?id=' . $object->id . $selected, $langs->trans('ConfirmMassClone'), '', 'clonetasks', $formquestion, '', 1, 300, 590); } diff --git a/htdocs/core/tpl/passwordreset.tpl.php b/htdocs/core/tpl/passwordreset.tpl.php index 9df594cd889..96b7f6ce955 100644 --- a/htdocs/core/tpl/passwordreset.tpl.php +++ b/htdocs/core/tpl/passwordreset.tpl.php @@ -29,7 +29,7 @@ if (empty($conf) || !is_object($conf)) { } // DDOS protection -$size = (int) $_SERVER['CONTENT_LENGTH']; +$size = (int) ($_SERVER['CONTENT_LENGTH'] ?? 0); if ($size > 10000) { $langs->loadLangs(array("errors", "install")); httponly_accessforbidden('
'.$langs->trans("ErrorRequestTooLarge").'
'.$langs->trans("ClickHereToGoToApp").'
', 413, 1); diff --git a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php index ec486e5b66d..5f291b9e5bd 100644 --- a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php +++ b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php @@ -2,7 +2,7 @@ /* Copyright (C) 2010 Regis Houssin * Copyright (C) 2011-2017 Laurent Destailleur * Copyright (C) 2014 Marcos García - * Copyright (C) 2022 Ferran Marcet + * Copyright (C) 2022-2024 Ferran Marcet * Copyright (C) 2023 Alexandre Janniaux * Copyright (C) 2024 MDW * @@ -248,7 +248,7 @@ class InterfaceWorkflowManager extends DolibarrTriggers $totalHTInvoices = 0; $areAllInvoicesValidated = true; foreach ($orderLinked->linkedObjects['facture'] as $key => $invoice) { - if ($invoice->statut == Facture::STATUS_VALIDATED || $object->id == $invoice->id) { + if ($invoice->statut == Facture::STATUS_VALIDATED || $invoice->statut == Facture::STATUS_CLOSED || $object->id == $invoice->id) { $totalHTInvoices += (float) $invoice->total_ht; } else { $areAllInvoicesValidated = false; @@ -331,8 +331,8 @@ class InterfaceWorkflowManager extends DolibarrTriggers $totalonlinkedelements += $element->total_ht; } } - dol_syslog("Amount of linked reception = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".($totalonlinkedelements == $object->total_ht), LOG_DEBUG); - if ($totalonlinkedelements == $object->total_ht) { + dol_syslog("Amount of linked reception = ".$totalonlinkedelements.", of invoice = ".$object->total_ht.", egality is ".((string) $totalonlinkedelements == (string) $object->total_ht), LOG_DEBUG); + if ( (string) $totalonlinkedelements == (string) $object->total_ht) { foreach ($object->linkedObjects['reception'] as $element) { $ret = $element->setClosed(); if ($ret < 0) { @@ -585,13 +585,13 @@ class InterfaceWorkflowManager extends DolibarrTriggers } } // Automatically create intervention - if (isModEnabled('intervention') && isModEnabled('ticket') && !empty($conf->workflow->enabled) && getDolGlobalString('WORKFLOW_TICKET_CREATE_INTERVENTION')) { + if (isModEnabled('intervention') && isModEnabled('ticket') && isModEnabled('workflow') && getDolGlobalString('WORKFLOW_TICKET_CREATE_INTERVENTION')) { $fichinter = new Fichinter($this->db); $fichinter->socid = (int) $object->fk_soc; $fichinter->fk_project = (int) $object->fk_project; $fichinter->fk_contrat = (int) $object->fk_contract; $fichinter->author = $user->id; - $fichinter->model_pdf = (getDolGlobalString('FICHEINTER_ADDON_PDF')) ? $conf->global->FICHEINTER_ADDON_PDF : 'soleil'; + $fichinter->model_pdf = getDolGlobalString('FICHEINTER_ADDON_PDF', 'soleil'); $fichinter->origin = $object->element; $fichinter->origin_id = $object->id; diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php index de03d945537..a4eaaf29f69 100644 --- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php +++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php @@ -1552,9 +1552,12 @@ class InterfaceActionsAuto extends DolibarrTriggers if ($ret > 0 && getDolGlobalString('MAIN_COPY_FILE_IN_EVENT_AUTO')) { if (property_exists($object, 'attachedfiles') && is_array($object->attachedfiles) && array_key_exists('paths', $object->attachedfiles) && count($object->attachedfiles['paths']) > 0) { + // Get directory of object + $tmpelems = getElementProperties($object->element.($object->module ? '@'.$object->module : '')); + $destdir = $tmpelems['dir_output'].'/'.$ret; + foreach ($object->attachedfiles['paths'] as $key => $filespath) { $srcfile = $filespath; - $destdir = $conf->agenda->dir_output.'/'.$ret; $destfile = $destdir.'/'.$object->attachedfiles['names'][$key]; if (dol_mkdir($destdir) >= 0) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; diff --git a/htdocs/core/triggers/interface_50_modEventOrganization_EventOrganization.class.php b/htdocs/core/triggers/interface_50_modEventOrganization_EventOrganization.class.php index 445bbf4ac3c..2730258a3ed 100644 --- a/htdocs/core/triggers/interface_50_modEventOrganization_EventOrganization.class.php +++ b/htdocs/core/triggers/interface_50_modEventOrganization_EventOrganization.class.php @@ -91,11 +91,11 @@ class InterfaceEventOrganization extends DolibarrTriggers $task->label = $taskLabel; $task->fk_project = $object->id; $defaultref = ''; - $obj = !getDolGlobalString('PROJECT_TASK_ADDON') ? 'mod_task_simple' : $conf->global->PROJECT_TASK_ADDON; + $classnamemodtask = getDolGlobalString('PROJECT_TASK_ADDON', 'mod_task_simple'); if (getDolGlobalString('PROJECT_TASK_ADDON') && is_readable(DOL_DOCUMENT_ROOT . "/core/modules/project/task/" . getDolGlobalString('PROJECT_TASK_ADDON') . ".php")) { require_once DOL_DOCUMENT_ROOT . "/core/modules/project/task/" . getDolGlobalString('PROJECT_TASK_ADDON') . '.php'; - $modTask = new $obj(); - $defaultref = $modTask->getNextValue($object->thirdparty, null); + $modTask = new $classnamemodtask(); + $defaultref = $modTask->getNextValue($object->thirdparty, $task); } if (is_numeric($defaultref) && $defaultref <= 0) { $defaultref = ''; diff --git a/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php b/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php index 1a92bca5b66..d35e60aec30 100644 --- a/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php +++ b/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php @@ -512,6 +512,11 @@ class InterfaceLdapsynchro extends DolibarrTriggers $object->oldcopy = clone $object; } + if (!method_exists($object->oldcopy, '_load_ldap_info')) { + dol_syslog("Trigger ".$action." was called by a function that did not set previously the method ->_load_ldap_info onto object", LOG_WARNING); + $object->oldcopy = clone $object; + } + $oldinfo = $object->oldcopy->_load_ldap_info(); $olddn = $object->oldcopy->_load_ldap_dn($oldinfo); diff --git a/htdocs/core/triggers/interface_50_modNotification_Notification.class.php b/htdocs/core/triggers/interface_50_modNotification_Notification.class.php index b9a009f7c0a..8fceee8e47a 100644 --- a/htdocs/core/triggers/interface_50_modNotification_Notification.class.php +++ b/htdocs/core/triggers/interface_50_modNotification_Notification.class.php @@ -94,7 +94,11 @@ class InterfaceNotification extends DolibarrTriggers dol_syslog("Trigger '".$this->name."' for action '".$action."' launched by ".__FILE__.". id=".$object->id); $notify = new Notify($this->db); - $notify->send($action, $object); + $resultSend = $notify->send($action, $object); + if ($resultSend < 0) { + $this->errors = array_merge($this->errors, $notify->errors); + return $resultSend; + } return 1; } diff --git a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php index b5295c891f7..ed97f3b7b40 100644 --- a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php +++ b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php @@ -183,15 +183,19 @@ class InterfaceTicketEmail extends DolibarrTriggers $see_ticket_customer = 'TicketNewEmailBodyInfosTrackUrlCustomer'; // Send email to notification email + // Note: $object->context['disableticketemail'] is set to 1 by public interface at creation because email sending is already managed by page + // $object->context['createdfrompublicinterface'] may also be defined when creation done from public interface if (getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO') && empty($object->context['disableticketemail'])) { - $sendto = !getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO') ? '' : $conf->global->TICKET_NOTIFICATION_EMAIL_TO; + $sendto = getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO'); if ($sendto) { $this->composeAndSendAdminMessage($sendto, $subject_admin, $body_admin, $object, $langs); } } // Send email to customer - if (!getDolGlobalString('TICKET_DISABLE_CUSTOMER_MAILS') && empty($object->context['disableticketemail']) && $object->notify_tiers_at_create) { + // Note: $object->context['disableticketemail'] is set to 1 by public interface at creation because email sending is already managed by page + // $object->context['createdfrompublicinterface'] may also be defined when creation done from public interface + if (empty($object->context['disableticketemail']) && $object->notify_tiers_at_create) { $sendto = ''; // if contact selected send to email's contact else send to email's thirdparty @@ -238,15 +242,17 @@ class InterfaceTicketEmail extends DolibarrTriggers $see_ticket_customer = 'TicketCloseEmailBodyInfosTrackUrlCustomer'; // Send email to notification email + // Note: $object->context['disableticketemail'] is set to 1 by public interface at creation but not at closing if (getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO') && empty($object->context['disableticketemail'])) { - $sendto = !getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO') ? '' : $conf->global->TICKET_NOTIFICATION_EMAIL_TO; + $sendto = getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO'); if ($sendto) { $this->composeAndSendAdminMessage($sendto, $subject_admin, $body_admin, $object, $langs); } } // Send email to customer. - if (!getDolGlobalString('TICKET_DISABLE_CUSTOMER_MAILS') && empty($object->context['disableticketemail'])) { + // Note: $object->context['disableticketemail'] is set to 1 by public interface at creation but not at closing + if (empty($object->context['disableticketemail'])) { $linked_contacts = $object->listeContact(-1, 'thirdparty'); $linked_contacts = array_merge($linked_contacts, $object->listeContact(-1, 'internal')); if (empty($linked_contacts) && getDolGlobalString('TICKET_NOTIFY_AT_CLOSING') && !empty($object->fk_soc)) { @@ -346,7 +352,7 @@ class InterfaceTicketEmail extends DolibarrTriggers $message_admin .= '

'.$langs->trans('Message').' :

'.$message.'


'; $message_admin .= '

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

'; - $from = getDolGlobalString('MAIN_INFO_SOCIETE_NOM') . '<' . getDolGlobalString('TICKET_NOTIFICATION_EMAIL_FROM').'>'; + $from = (getDolGlobalString('MAIN_INFO_SOCIETE_NOM') ? getDolGlobalString('MAIN_INFO_SOCIETE_NOM') . ' ' : '') . '<' . getDolGlobalString('TICKET_NOTIFICATION_EMAIL_FROM').'>'; $trackid = 'tic'.$object->id; @@ -434,7 +440,7 @@ class InterfaceTicketEmail extends DolibarrTriggers $message_customer .= '

'.$langs->trans($see_ticket).' : '.$url_public_ticket.'

'; $message_customer .= '

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

'; - $from = (!getDolGlobalString('MAIN_INFO_SOCIETE_NOM') ? '' : getDolGlobalString('MAIN_INFO_SOCIETE_NOM') . ' ').'<' . getDolGlobalString('TICKET_NOTIFICATION_EMAIL_FROM').'>'; + $from = (getDolGlobalString('MAIN_INFO_SOCIETE_NOM') ? getDolGlobalString('MAIN_INFO_SOCIETE_NOM') . ' ' : '').'<' . getDolGlobalString('TICKET_NOTIFICATION_EMAIL_FROM').'>'; $trackid = 'tic'.$object->id; diff --git a/htdocs/core/triggers/interface_95_modWebhook_WebhookTriggers.class.php b/htdocs/core/triggers/interface_95_modWebhook_WebhookTriggers.class.php index 304efb85770..0d4b5ab54cd 100644 --- a/htdocs/core/triggers/interface_95_modWebhook_WebhookTriggers.class.php +++ b/htdocs/core/triggers/interface_95_modWebhook_WebhookTriggers.class.php @@ -96,7 +96,17 @@ class InterfaceWebhookTriggers extends DolibarrTriggers $jsonstr = json_encode($resobject); - $response = getURLContent($tmpobject->url, 'POST', $jsonstr, 1, array('content-type:application/json'), array('http', 'https'), 2, -1); + $headers = array( + 'Content-Type: application/json' + //'Accept: application/json' + ); + + $method = 'POST'; + if (getDolGlobalString('WEBHOOK_POST_SEND_DATA_IN_BODY')) { + $method = 'POSTALREADYFORMATED'; + } + $response = getURLContent($tmpobject->url, $method, $jsonstr, 1, $headers, array('http', 'https'), 2, -1); + if (empty($response['curl_error_no']) && $response['http_code'] >= 200 && $response['http_code'] < 300) { $nbPosts++; } else { diff --git a/htdocs/core/triggers/interface_95_modZapier_ZapierTriggers.class.php b/htdocs/core/triggers/interface_95_modZapier_ZapierTriggers.class.php index bfb4cf8ada3..3bface98303 100644 --- a/htdocs/core/triggers/interface_95_modZapier_ZapierTriggers.class.php +++ b/htdocs/core/triggers/interface_95_modZapier_ZapierTriggers.class.php @@ -224,7 +224,7 @@ class InterfaceZapierTriggers extends DolibarrTriggers case 'ORDER_CLASSIFY_BILLED': case 'ORDER_SETDRAFT': case 'LINEORDER_INSERT': - case 'LINEORDER_UPDATE': + case 'LINEORDER_MODIFY': case 'LINEORDER_DELETE': break; // Supplier orders @@ -239,7 +239,7 @@ class InterfaceZapierTriggers extends DolibarrTriggers // case 'ORDER_SUPPLIER_RECEIVE': // case 'LINEORDER_SUPPLIER_DISPATCH': // case 'LINEORDER_SUPPLIER_CREATE': - // case 'LINEORDER_SUPPLIER_UPDATE': + // case 'LINEORDER_SUPPLIER_MODIFY': // Proposals // case 'PROPAL_CREATE': @@ -251,7 +251,7 @@ class InterfaceZapierTriggers extends DolibarrTriggers // case 'PROPAL_CLOSE_REFUSED': // case 'PROPAL_DELETE': // case 'LINEPROPAL_INSERT': - // case 'LINEPROPAL_UPDATE': + // case 'LINEPROPAL_MODIFY': // case 'LINEPROPAL_DELETE': // SupplierProposal @@ -264,7 +264,7 @@ class InterfaceZapierTriggers extends DolibarrTriggers // case 'SUPPLIER_PROPOSAL_CLOSE_REFUSED': // case 'SUPPLIER_PROPOSAL_DELETE': // case 'LINESUPPLIER_PROPOSAL_INSERT': - // case 'LINESUPPLIER_PROPOSAL_UPDATE': + // case 'LINESUPPLIER_PROPOSAL_MODIFY': // case 'LINESUPPLIER_PROPOSAL_DELETE': // Contracts @@ -274,7 +274,7 @@ class InterfaceZapierTriggers extends DolibarrTriggers // case 'CONTRACT_CLOSE': // case 'CONTRACT_DELETE': // case 'LINECONTRACT_INSERT': - // case 'LINECONTRACT_UPDATE': + // case 'LINECONTRACT_MODIFY': // case 'LINECONTRACT_DELETE': // Bills @@ -288,19 +288,19 @@ class InterfaceZapierTriggers extends DolibarrTriggers // case 'BILL_DELETE': // case 'BILL_PAYED': // case 'LINEBILL_INSERT': - // case 'LINEBILL_UPDATE': + // case 'LINEBILL_MODIFY': // case 'LINEBILL_DELETE': //Supplier Bill // case 'BILL_SUPPLIER_CREATE': - // case 'BILL_SUPPLIER_UPDATE': + // case 'BILL_SUPPLIER_MODIFY': // case 'BILL_SUPPLIER_DELETE': // case 'BILL_SUPPLIER_PAYED': // case 'BILL_SUPPLIER_UNPAYED': // case 'BILL_SUPPLIER_VALIDATE': // case 'BILL_SUPPLIER_UNVALIDATE': // case 'LINEBILL_SUPPLIER_CREATE': - // case 'LINEBILL_SUPPLIER_UPDATE': + // case 'LINEBILL_SUPPLIER_MODIFY': // case 'LINEBILL_SUPPLIER_DELETE': // Payments @@ -316,7 +316,7 @@ class InterfaceZapierTriggers extends DolibarrTriggers // Donation // case 'DON_CREATE': - // case 'DON_UPDATE': + // case 'DON_MODIFY': // case 'DON_DELETE': // Interventions @@ -325,7 +325,7 @@ class InterfaceZapierTriggers extends DolibarrTriggers // case 'FICHINTER_VALIDATE': // case 'FICHINTER_DELETE': // case 'LINEFICHINTER_CREATE': - // case 'LINEFICHINTER_UPDATE': + // case 'LINEFICHINTER_MODIFY': // case 'LINEFICHINTER_DELETE': // Members diff --git a/htdocs/datapolicy/admin/setup.php b/htdocs/datapolicy/admin/setup.php index aa76563c82e..a22fb7c4db9 100644 --- a/htdocs/datapolicy/admin/setup.php +++ b/htdocs/datapolicy/admin/setup.php @@ -1,7 +1,7 @@ * Copyright (C) 2018 Nicolas ZABOURI - * Copyright (C) 2024 MDW + * Copyright (C) 2024 MDW * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,6 +35,10 @@ $langs->loadLangs(array('admin', 'companies', 'members', 'datapolicy')); $action = GETPOST('action', 'aZ09'); $backtopage = GETPOST('backtopage', 'alpha'); +if (empty($action)) { + $action = 'edit'; +} + $arrayofparameters = array(); $arrayofparameters['ThirdParty'] = array( 'DATAPOLICY_TIERS_CLIENT' => array('css' => 'minwidth200', 'picto' => img_picto('', 'company', 'class="pictofixedwidth"')), @@ -85,6 +89,9 @@ if (!$user->admin) { /* * Actions */ + +$nbdone = 0; + foreach ($arrayofparameters as $title => $tab) { foreach ($tab as $key => $val) { // Modify constant only if key was posted (avoid resetting key to the null value) @@ -103,11 +110,19 @@ foreach ($arrayofparameters as $title => $tab) { if ($result < 0) { $error++; break; + } else { + $nbdone++; } } } } +if ($nbdone) { + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); +} +if ($action == 'update') { + $action = 'edit'; +} /* @@ -127,7 +142,9 @@ $head = datapolicyAdminPrepareHead(); print dol_get_fiche_head($head, 'settings', '', -1, ''); // Setup page goes here -echo ''.$langs->trans("datapolicySetupPage").'

'; +print ''.$langs->trans("datapolicySetupPage").'
'; +// print $form->textwithpicto('', $langs->trans('DATAPOLICY_Tooltip_SETUP')); +print '
'; if ($action == 'edit') { @@ -136,45 +153,44 @@ if ($action == 'edit') { print ''; print ''; - print ''; + //print ''; foreach ($arrayofparameters as $title => $tab) { print ''; foreach ($tab as $key => $val) { print ''; } } print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'.$langs->trans("Parameter").'
'.$langs->trans($title).'
'; print $val['picto']; - print $form->textwithpicto($langs->trans($key), $langs->trans('DATAPOLICY_Tooltip_SETUP')); + print $langs->trans($key); print ''; - print ''; foreach ($valTab as $key1 => $val1) { print ''; } print ''; + print ajax_combobox($key); print '
'; - print '
'; - print ''; - print '
'; + print $form->buttonsSaveCancel("Save", ''); print ''; print '
'; } else { print ''; - print ''; + //print ''; foreach ($arrayofparameters as $title => $tab) { print ''; foreach ($tab as $key => $val) { print ''; + print $langs->trans($key); + print ''; } } diff --git a/htdocs/dav/fileserver.php b/htdocs/dav/fileserver.php index 4ccc4510355..60a72db9feb 100644 --- a/htdocs/dav/fileserver.php +++ b/htdocs/dav/fileserver.php @@ -85,10 +85,18 @@ if (getDolGlobalString('DAV_RESTRICT_ON_IP')) { $entity = (GETPOSTINT('entity') ? GETPOSTINT('entity') : (!empty($conf->entity) ? $conf->entity : 1)); // settings -$publicDir = $conf->dav->multidir_output[$entity].'/public'; -$privateDir = $conf->dav->multidir_output[$entity].'/private'; -$ecmDir = $conf->ecm->multidir_output[$entity]; -$tmpDir = $conf->dav->multidir_output[$entity]; // We need root dir, not a dir that can be deleted +$publicDir = DOL_DATA_ROOT.'/dav/public'; +$privateDir = DOL_DATA_ROOT.'/dav/private'; +$ecmDir = DOL_DATA_ROOT.'/ecm'; +$tmpDir = DOL_DATA_ROOT.'/ecm/temp'; +if (isModEnabled('dav')) { + $publicDir = $conf->dav->multidir_output[$entity].'/public'; + $privateDir = $conf->dav->multidir_output[$entity].'/private'; +} +if (isModEnabled('ecm')) { + $ecmDir = $conf->ecm->multidir_output[$entity]; + $tmpDir = $conf->ecm->multidir_output[$entity]; // We need root dir, not a dir that can be deleted, so we use multidir_output +} //var_dump($tmpDir);mkdir($tmpDir);exit; diff --git a/htdocs/delivery/card.php b/htdocs/delivery/card.php index 909a7078dc9..f9578c62e54 100644 --- a/htdocs/delivery/card.php +++ b/htdocs/delivery/card.php @@ -59,6 +59,7 @@ if (isModEnabled('incoterm')) { $action = GETPOST('action', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); $backtopage = GETPOST('backtopage', 'alpha'); +$id = GETPOSTINT('id'); $object = new Delivery($db); $extrafields = new ExtraFields($db); @@ -78,7 +79,6 @@ $hookmanager->initHooks(array('deliverycard', 'globalcard')); $error = 0; // Security check -$id = GETPOSTINT('id'); if ($user->socid) { $socid = $user->socid; } @@ -193,7 +193,7 @@ if ($action == 'setdate_delivery' && $permissiontoadd) { } } elseif ($action == 'set_incoterms' && isModEnabled('incoterm')) { // Set incoterm - $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOSTINT('location_incoterms')); + $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOST('location_incoterms')); } // Update extrafields diff --git a/htdocs/delivery/tpl/linkedobjectblock.tpl.php b/htdocs/delivery/tpl/linkedobjectblock.tpl.php index 16eb40fc209..37318afe648 100644 --- a/htdocs/delivery/tpl/linkedobjectblock.tpl.php +++ b/htdocs/delivery/tpl/linkedobjectblock.tpl.php @@ -49,7 +49,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) { echo ''; echo ''; diff --git a/htdocs/document.php b/htdocs/document.php index e204956acd3..f0e60549d1c 100644 --- a/htdocs/document.php +++ b/htdocs/document.php @@ -103,7 +103,7 @@ $original_file = GETPOST('file', 'alphanohtml'); $hashp = GETPOST('hashp', 'aZ09'); $modulepart = GETPOST('modulepart', 'alpha'); $urlsource = GETPOST('urlsource', 'alpha'); -$entity = GETPOSTINT('entity', $conf->entity); +$entity = GETPOSTINT('entity'); // Security check if (empty($modulepart) && empty($hashp)) { @@ -220,7 +220,7 @@ $check_access = dol_check_secure_access_document($modulepart, $original_file, $e $accessallowed = $check_access['accessallowed']; $sqlprotectagainstexternals = $check_access['sqlprotectagainstexternals']; $fullpath_original_file = $check_access['original_file']; // $fullpath_original_file is now a full path name -//var_dump($fullpath_original_file.' '.$original_file.' '.$accessallowed);exit; +//var_dump($modulepart.' '.$fullpath_original_file.' '.$original_file.' '.$accessallowed);exit; if (!empty($hashp)) { $accessallowed = 1; // When using hashp, link is public so we force $accessallowed diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index ba322abf602..c6e97db9d6b 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -111,13 +111,13 @@ class EmailCollector extends CommonObject // BEGIN MODULEBUILDER PROPERTIES /** - * @var array|string,position:int,notnull?:int,visible:int,noteditable?:int,default?:string,index?:int,foreignkey?:string,searchall?:int,isameasure?:int,css?:string,csslist?:string,help?:string,showoncombobox?:int,disabled?:int,arrayofkeyval?:array,comment?:string}> Array with all fields and their property. Do not use it as a static var. It may be modified by constructor. + * @var array|string,position:int,notnull?:int,visible:int<-2,5>|string,noteditable?:int<0,1>,default?:string,index?:int,foreignkey?:string,searchall?:int<0,1>,isameasure?:int<0,1>,css?:string,csslist?:string,help?:string,showoncombobox?:int<0,2>,disabled?:int<0,1>,arrayofkeyval?:array,comment?:string,validate?:int<0,1>}> Array with all fields and their property. Do not use it as a static var. It may be modified by constructor. */ public $fields = array( 'rowid' => array('type' => 'integer', 'label' => 'TechnicalID', 'visible' => 2, 'enabled' => 1, 'position' => 1, 'notnull' => 1, 'index' => 1), 'entity' => array('type' => 'integer', 'label' => 'Entity', 'enabled' => 1, 'visible' => 0, 'default' => 1, 'notnull' => 1, 'index' => 1, 'position' => 20), 'ref' => array('type' => 'varchar(128)', 'label' => 'Ref', 'enabled' => 1, 'visible' => 1, 'notnull' => 1, 'showoncombobox' => 1, 'index' => 1, 'position' => 10, 'searchall' => 1, 'help' => 'Example: MyCollector1', 'csslist' => 'tdoverflowmax200'), - 'label' => array('type' => 'varchar(255)', 'label' => 'Label', 'visible' => 1, 'enabled' => 1, 'position' => 30, 'notnull' => -1, 'searchall' => 1, 'help' => 'Example: My Email collector', 'csslist' => 'tdoverflowmax150', 'tdcss'=>'titlefieldmiddle'), + 'label' => array('type' => 'varchar(255)', 'label' => 'Label', 'visible' => 1, 'enabled' => 1, 'position' => 30, 'notnull' => -1, 'searchall' => 1, 'help' => 'Example: My Email collector', 'csslist' => 'tdoverflowmax150', 'tdcss' => 'titlefieldmiddle'), 'description' => array('type' => 'text', 'label' => 'Description', 'visible' => -1, 'enabled' => 1, 'position' => 60, 'notnull' => -1, 'cssview' => 'small', 'csslist' => 'small tdoverflowmax200'), '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' => 'tdoverflowmax125'), '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' => 'tdoverflowmax50', 'default' => '993'), @@ -178,11 +178,6 @@ class EmailCollector extends CommonObject */ public $status; - /** - * @var integer|string date_creation - */ - public $date_creation; - /** * @var int ID */ @@ -212,7 +207,7 @@ class EmailCollector extends CommonObject public $maxemailpercollect; /** - * @var integer|string $datelastresult + * @var int|string $datelastresult */ public $datelastresult; @@ -461,7 +456,7 @@ class EmailCollector extends CommonObject * @param string $sortorder sorting order * @param int $limit sort limit * @param int $page page to start on - * @return array Array with key => EmailCollector object + * @return EmailCollector[] Array with key => EmailCollector object */ public function fetchAll(User $user, $activeOnly = 0, $sortfield = 's.rowid', $sortorder = 'ASC', $limit = 100, $page = 0) { @@ -1149,23 +1144,26 @@ class EmailCollector extends CommonObject } else { $keyforprovider = ''; } - $keyforsupportedoauth2array = preg_replace('/-.*$/', '', $keyforsupportedoauth2array); + $keyforsupportedoauth2array = preg_replace('/-.*$/', '', strtoupper($keyforsupportedoauth2array)); $keyforsupportedoauth2array = 'OAUTH_'.$keyforsupportedoauth2array.'_NAME'; - $OAUTH_SERVICENAME = 'Unknown'; - if (array_key_exists($keyforsupportedoauth2array, $supportedoauth2array) - && array_key_exists('name', $supportedoauth2array[$keyforsupportedoauth2array]) - && !empty($supportedoauth2array[$keyforsupportedoauth2array]['name'])) { - $OAUTH_SERVICENAME = $supportedoauth2array[$keyforsupportedoauth2array]['name'].(!empty($keyforprovider) ? '-'.$keyforprovider : ''); + if (!empty($supportedoauth2array)) { + $nameofservice = ucfirst(strtolower(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile'])); + $nameofservice .= ($keyforprovider ? '-'.$keyforprovider : ''); + $OAUTH_SERVICENAME = $nameofservice; + } else { + $OAUTH_SERVICENAME = 'Unknown'; } - 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); + $keyforparamtenant = 'OAUTH_'.strtoupper(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']).($keyforprovider ? '-'.$keyforprovider : '').'_TENANT'; - $token = ''; + 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); - $storage = new DoliStorage($db, $conf, $keyforprovider); + $token = ''; + + $storage = new DoliStorage($db, $conf, $keyforprovider, getDolGlobalString($keyforparamtenant)); try { $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME); @@ -1178,19 +1176,31 @@ class EmailCollector extends CommonObject // } // Token expired so we refresh it if (is_object($tokenobj) && $expire) { - $this->debuginfo .= 'Refresh token
'; + $this->debuginfo .= 'Refresh token '.$OAUTH_SERVICENAME.'
'; $credentials = new Credentials( getDolGlobalString('OAUTH_'.$this->oauth_service.'_ID'), getDolGlobalString('OAUTH_'.$this->oauth_service.'_SECRET'), - getDolGlobalString('OAUTH_'.$this->oauth_service.'_URLAUTHORIZE') - ); + getDolGlobalString('OAUTH_'.$this->oauth_service.'_URLCALLBACK') + ); $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 + + $scopes = array(); + if (preg_match('/^Microsoft/', $OAUTH_SERVICENAME)) { + //$extraparams = $tokenobj->getExtraParams(); + $tmp = explode('-', $OAUTH_SERVICENAME); + $scopes = explode(',', getDolGlobalString('OAUTH_'.strtoupper($tmp[0]).(empty($tmp[1]) ? '' : '-'.$tmp[1]).'_SCOPE')); + } + + $apiService = $serviceFactory->createService($oauthname[0], $credentials, $storage, $scopes); + + '@phan-var-force OAuth\OAuth2\Service\AbstractService|OAuth\OAuth1\Service\AbstractService $apiService'; // createService is only ServiceInterface + $refreshtoken = $tokenobj->getRefreshToken(); $tokenobj = $apiService->refreshAccessToken($tokenobj); + + // We have to save the token because answer give it only once $tokenobj->setRefreshToken($refreshtoken); $storage->storeAccessToken($OAUTH_SERVICENAME, $tokenobj); } @@ -1208,17 +1218,17 @@ class EmailCollector extends CommonObject return -1; } - $cm = new ClientManager(); - $client = $cm->make([ - 'host' => $this->host, - 'port' => $this->port, - 'encryption' => !empty($this->imap_encryption) ? $this->imap_encryption : false, - 'validate_cert' => true, - 'protocol' => 'imap', - 'username' => $this->login, - 'password' => $token, - 'authentication' => "oauth", - ]); + $cm = new ClientManager(); + $client = $cm->make([ + 'host' => $this->host, + 'port' => $this->port, + 'encryption' => !empty($this->imap_encryption) ? $this->imap_encryption : false, + 'validate_cert' => true, + 'protocol' => 'imap', + 'username' => $this->login, + 'password' => $token, + 'authentication' => "oauth", + ]); } else { // Mode LOGIN (login/pass) with PHP-IMAP $this->debuginfo .= 'doCollectOneCollector is using method MAIN_IMAP_USE_PHPIMAP=1, access_type=0 (LOGIN)
'; @@ -1406,14 +1416,14 @@ class EmailCollector extends CommonObject } } - if (empty($targetdir)) { // Use last date as filter if there is no targetdir defined. + if (empty($targetdir) || !getDolGlobalString('EMAILCOLLECTOR_NO_FILTER_ON_DATE_IF_THERE_IS_A_TARGETDIR')) { // Use the last date of successful check as a 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))); + array_push($criteria, array("SINCE" => date('j-M-Y', $fromdate - 1))); // -1 is to add a security to no forgot some email } //$search.=($search?' ':'').'SINCE 8-Apr-2022'; } @@ -1582,7 +1592,7 @@ class EmailCollector extends CommonObject if ($f) { $folder = $f[0]; if ($folder instanceof Webklex\PHPIMAP\Folder) { - $Query = $folder->messages()->where($criteria); + $Query = $folder->messages()->where($criteria); // @phan-suppress-current-line PhanPluginUnknownObjectMethodCall } else { $error++; $this->error = "Source directory ".$sourcedir." not found"; @@ -1609,6 +1619,7 @@ class EmailCollector extends CommonObject return -1; } + '@phan-var-force Webklex\PHPIMAP\Query\Query $Query'; try { //var_dump($Query->count()); if ($mode > 0) { @@ -1659,17 +1670,17 @@ class EmailCollector extends CommonObject */ dol_syslog("Start of loop on email", LOG_INFO, 1); - $iforemailloop = 0; + $richarrayofemail = array(); + foreach ($arrayofemail as $imapemail) { 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 (getDolGlobalString('MAIN_IMAP_USE_PHPIMAP')) { - $header = $imapemail->getHeader()->raw; + '@phan-var-force Webklex\PHPIMAP\Message $imapemail'; + $header = $imapemail->getHeader()->raw; // @phan-suppress-current-line PhanPluginUnknownObjectMethodCall // @phan-suppress-current-line PhanPluginUnknownObjectMethodCall $overview = $imapemail->getAttributes(); } else { $header = imap_fetchheader($connection, $imapemail, FT_UID); @@ -1679,9 +1690,26 @@ class EmailCollector extends CommonObject $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); + preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)(\r\n|\s$)/m', $header, $matches); $headers = array_combine($matches[1], $matches[2]); - //var_dump($headers);exit; + + + $richarrayofemail[] = array('imapemail' => $imapemail, 'header' => $header, 'headers' => $headers, 'overview' => $overview, 'date' => strtotime($headers['Date'])); + } + + + // Sort email found by ascending date + $richarrayofemail = dol_sort_array($richarrayofemail, 'date', 'asc'); + + + $iforemailloop = 0; + foreach ($richarrayofemail as $tmpval) { + $iforemailloop++; + + $imapemail = $tmpval['imapemail']; + $header = $tmpval['header']; + $overview = $tmpval['overview']; + $headers = $tmpval['headers']; if (!empty($headers['in-reply-to']) && empty($headers['In-Reply-To'])) { $headers['In-Reply-To'] = $headers['in-reply-to']; @@ -1698,21 +1726,30 @@ class EmailCollector extends CommonObject $headers['Subject'] = $this->decodeSMTPSubject($headers['Subject']); - $emailto = $this->decodeSMTPSubject($overview[0]->to); + if (getDolGlobalInt('MAIN_IMAP_USE_PHPIMAP')) { + $emailto = (string) $overview['to']; + } else { + $emailto = $this->decodeSMTPSubject($overview[0]->to); + } + //var_dump($headers); + //var_dump($overview);exit; $operationslog .= '
** Process email #'.dol_escape_htmltag($iforemailloop); if (getDolGlobalInt('MAIN_IMAP_USE_PHPIMAP')) { /** @var Webklex\PHPIMAP\Message $imapemail */ + '@phan-var-force Webklex\PHPIMAP\Message $imapemail'; // $operationslog .= " - ".dol_escape_htmltag((string) $imapemail); $msgid = str_replace(array('<', '>'), '', $overview['message_id']); } else { $operationslog .= " - ".dol_escape_htmltag((string) $imapemail); $msgid = str_replace(array('<', '>'), '', $overview[0]->message_id); } - $operationslog .= " - MsgId: ".$msgid." - References: ".dol_escape_htmltag($headers['References'] ?? '')." - Subject: ".dol_escape_htmltag($headers['Subject']); + $operationslog .= " - MsgId: ".$msgid; + $operationslog .= " - Date: ".($headers['Date'] ?? $langs->transnoentitiesnoconv("NotFound")); + $operationslog .= " - References: ".dol_escape_htmltag($headers['References'] ?? $langs->transnoentitiesnoconv("NotFound"))." - Subject: ".dol_escape_htmltag($headers['Subject']); - dol_syslog("-- Process email ".$iforemailloop." References: ".($headers['References'] ?? '')." Subject: ".$headers['Subject']); + dol_syslog("-- Process email #".$iforemailloop.", MsgId: ".$msgid.", Date: ".($headers['Date'] ?? '').", References: ".($headers['References'] ?? '').", Subject: ".$headers['Subject']); $trackidfoundintorecipienttype = ''; @@ -1792,7 +1829,7 @@ class EmailCollector extends CommonObject // Note: we can have // Message-ID=A, In-Reply-To=B, References=B and message can BE an answer or NOT (a transfer rewritten) $isanswer = 0; - if (preg_match('/Re\s*:\s+/i', $headers['Subject'])) { + if (preg_match('/^(回复|回覆|SV|Antw|VS|RE|Re|AW|Aw|ΑΠ|השב| תשובה | הועבר|Vá|R|RIF|BLS|Atb|RES|Odp|பதில்|YNT|ATB)\s*:\s+/i', $headers['Subject'])) { $isanswer = 1; } //if ($headers['In-Reply-To'] != $headers['Message-ID'] && empty($headers['References'])) $isanswer = 1; // If in-reply-to differs of message-id, this is a reply @@ -1809,7 +1846,7 @@ class EmailCollector extends CommonObject $isreplytook = 0; foreach ($rulesreplyto as $key => $rulereplyto) { if (preg_match('/'.preg_quote($rulereplyto, '/').'/', $headers['Reply-To'])) { - $isreplytook ++; + $isreplytook++; } } @@ -1857,10 +1894,11 @@ class EmailCollector extends CommonObject if (getDolGlobalInt('MAIN_IMAP_USE_PHPIMAP')) { /** @var Webklex\PHPIMAP\Message $imapemail */ + '@phan-var-force Webklex\PHPIMAP\Message $imapemail'; if ($imapemail->hasHTMLBody()) { $htmlmsg = $imapemail->getHTMLBody(); } - if ($imapemail->hasTextBody()) { + if ($imapemail->hasTextBody() && $imapemail->getTextBody() != "\n") { $plainmsg = $imapemail->getTextBody(); } if ($imapemail->hasAttachments()) { @@ -1965,7 +2003,21 @@ class EmailCollector extends CommonObject $to = $overview['to']; $sendtocc = empty($overview['cc']) ? '' : $overview['cc']; $sendtobcc = empty($overview['bcc']) ? '' : $overview['bcc']; - $date = $overview['date']; + + $tmpdate = $overview['date']->toDate(); // @phan-suppress-current-line PhanPluginUnknownObjectMethodCall + $tmptimezone = $tmpdate->getTimezone()->getName(); // @phan-suppress-current-line PhanPluginUnknownObjectMethodCall + + $dateemail = dol_stringtotime((string) $overview['date'], 'gmt'); // if $overview['timezone'] is "+00:00" + if (preg_match('/^([+\-])(\d\d):(\d\d)/', $tmptimezone, $reg)) { + if ($reg[1] == '+' && ($reg[2] != '00' || $reg[3] != '00')) { + $dateemail -= (3600 * (int) $reg[2]); + $dateemail -= (60 * (int) $reg[3]); + } + if ($reg[1] == '-' && ($reg[2] != '00' || $reg[3] != '00')) { + $dateemail += (3600 * (int) $reg[2]); + $dateemail += (60 * (int) $reg[3]); + } + } $subject = $overview['subject']; } else { $fromstring = $overview[0]->from; @@ -1975,7 +2027,7 @@ class EmailCollector extends CommonObject $to = $overview[0]->to; $sendtocc = !empty($overview[0]->cc) ? $overview[0]->cc : ''; $sendtobcc = !empty($overview[0]->bcc) ? $overview[0]->bcc : ''; - $date = $overview[0]->udate; + $dateemail = dol_stringtotime((string) $overview[0]->udate, 'gmt'); $subject = $overview[0]->subject; //var_dump($msgid);exit; } @@ -2038,7 +2090,7 @@ class EmailCollector extends CommonObject // var_dump($arrayofreferences); foreach ($arrayofreferences as $reference) { - //print "Process mail ".$iforemailloop." email_msgid ".$msgid.", date ".dol_print_date($date, 'dayhour').", subject ".$subject.", reference ".dol_escape_htmltag($reference)."
\n"; + //print "Process mail ".$iforemailloop." email_msgid ".$msgid.", date ".dol_print_date($dateemail, 'dayhour', 'gmt').", subject ".$subject.", reference ".dol_escape_htmltag($reference)."
\n"; if (!empty($trackidfoundintorecipienttype)) { $resultsearchtrackid = -1; // trackid found $reg[1] = $trackidfoundintorecipienttype; @@ -2115,11 +2167,11 @@ class EmailCollector extends CommonObject $objectemail = new Adherent($this->db); } /*if ($reg[1] == 'leav') { // Leave / Holiday - $objectemail = new Holiday($db); - } - if ($reg[1] == 'exp') { // ExpenseReport - $objectemail = new ExpenseReport($db); - }*/ + $objectemail = new Holiday($db); + } + if ($reg[1] == 'exp') { // ExpenseReport + $objectemail = new ExpenseReport($db); + }*/ } elseif (preg_match('/<(.*@.*)>/', $reference, $reg)) { // This is an external reference, we check if we have it in our database if (is_null($objectemail) && isModEnabled('ticket')) { @@ -2198,7 +2250,7 @@ class EmailCollector extends CommonObject $projectid = $objectemail->id; } - if (get_class($objectemail) == 'Ticket') { + if ($objectemail instanceof Ticket) { $ticketid = $objectemail->id; $changeonticket_references = false; @@ -2211,13 +2263,13 @@ class EmailCollector extends CommonObject } else { foreach ($arrayofreferences as $key => $referencetmp) { if (!str_contains($objectemail->origin_references, $referencetmp)) { - $objectemail->origin_references.= " ".$referencetmp; + $objectemail->origin_references .= " ".$referencetmp; $changeonticket_references = true; } } } if ($changeonticket_references) { - $objectemail->update($user); + $objectemail->update($user, 1); // We complete the references field, that is a field for technical tracking purpose, not a user field, so no need to execute triggers } } } @@ -2348,11 +2400,20 @@ class EmailCollector extends CommonObject dol_syslog("Execute action ".$operation['type']." actionparam=".$operation['actionparam'].' thirdpartystatic->id='.$thirdpartystatic->id.' contactstatic->id='.$contactstatic->id.' projectstatic->id='.$projectstatic->id); dol_syslog("Execute action fk_element_id=".$fk_element_id." fk_element_type=".$fk_element_type); // If a Dolibarr tracker id is found, we should now the id of object + // Try to guess if this is an email in or out. $actioncode = 'EMAIL_IN'; // If we scan the Sent box, we use the code for out email - if (preg_match('/Sent$/', $sourcedir)) { - $actioncode = 'EMAIL_OUT'; + if (preg_match('/Sent$/', $sourcedir) || preg_match('/envoyés$/i', $sourcedir)) { + $actioncode = 'EMAIL'; } + // If sender is in the list MAIL_FROM_EMAILS_TO_CONSIDER_SENDING + $arrayofemailtoconsideresender = explode(',', getDolGlobalString('MAIL_FROM_EMAILS_TO_CONSIDER_SENDING')); + foreach ($arrayofemailtoconsideresender as $emailtoconsidersender) { + if (preg_match('/'.preg_quote($emailtoconsidersender, '/').'/', $fromstring)) { + $actioncode = 'EMAIL'; + } + } + $operationslog .= '
Email will have actioncode='.$actioncode; $description = $descriptiontitle = $descriptionmeta = $descriptionfull = ''; @@ -2360,7 +2421,7 @@ class EmailCollector extends CommonObject $descriptionmeta = dol_concatdesc($descriptionmeta, $langs->trans("EmailMsgID").' : '.dol_escape_htmltag($msgid)); $descriptionmeta = dol_concatdesc($descriptionmeta, $langs->trans("MailTopic").' : '.dol_escape_htmltag($subject)); - $descriptionmeta = dol_concatdesc($descriptionmeta, $langs->trans("MailDate").($langs->trans("MailDate") != 'Date' ? ' (Date)' : '').' : '.dol_escape_htmltag(dol_print_date($date, "dayhourtext"))); + $descriptionmeta = dol_concatdesc($descriptionmeta, $langs->trans("MailDate").($langs->trans("MailDate") != 'Date' ? ' (Date)' : '').' : '.dol_escape_htmltag(dol_print_date($dateemail, "dayhourtext", "gmt"))); $descriptionmeta = dol_concatdesc($descriptionmeta, $langs->trans("MailFrom").($langs->trans("MailFrom") != 'From' ? ' (From)' : '').' : '.dol_escape_htmltag($fromstring)); if ($sender) { $descriptionmeta = dol_concatdesc($descriptionmeta, $langs->trans("Sender").($langs->trans("Sender") != 'Sender' ? ' (Sender)' : '').' : '.dol_escape_htmltag($sender)); @@ -2518,7 +2579,7 @@ class EmailCollector extends CommonObject if (!$errorforactions && ($idtouseforthirdparty || $emailtouseforthirdparty || $nametouseforthirdparty || $namealiastouseforthirdparty)) { // We make another search on thirdparty - $operationslog .= '
We have this data to search thirdparty: id='.$idtouseforthirdparty.', email='.$emailtouseforthirdparty.', name='.$nametouseforthirdparty.', name_alias='.$namealiastouseforthirdparty; + $operationslog .= '
We have this initial main data to search thirdparty: id='.$idtouseforthirdparty.', email='.$emailtouseforthirdparty.', name='.$nametouseforthirdparty.', name_alias='.$namealiastouseforthirdparty.'.'; $tmpobject = new stdClass(); $tmpobject->element = 'generic'; @@ -2534,20 +2595,22 @@ class EmailCollector extends CommonObject $namealiastouseforthirdparty = $tmpobject->name_alias; $emailtouseforthirdparty = $tmpobject->email; - $operationslog .= '
We try to search existing thirdparty with '.$idtouseforthirdparty.' '.$emailtouseforthirdparty.' '.$nametouseforthirdparty.' '.$namealiastouseforthirdparty; + $operationslog .= '
We try to search existing thirdparty with idtouseforthirdparty='.$idtouseforthirdparty.' emailtouseforthirdparty='.$emailtouseforthirdparty.' nametouseforthirdparty='.$nametouseforthirdparty.' namealiastouseforthirdparty='.$namealiastouseforthirdparty; + + // Try to find the thirdparty that match the most the information we have + $result = $thirdpartystatic->findNearest($idtouseforthirdparty, $nametouseforthirdparty, '', '', '', '', '', '', '', '', $emailtouseforthirdparty, $namealiastouseforthirdparty); - $result = $thirdpartystatic->fetch($idtouseforthirdparty, $nametouseforthirdparty, '', '', '', '', '', '', '', '', $emailtouseforthirdparty, $namealiastouseforthirdparty); if ($result < 0) { $errorforactions++; $this->error = 'Error when getting thirdparty with name '.$nametouseforthirdparty.' (may be 2 record exists with same name ?)'; $this->errors[] = $this->error; break; - } elseif ($result == 0) { + } elseif ($result == 0) { // No thirdparty found if ($operation['type'] == 'loadthirdparty') { dol_syslog("Third party with id=".$idtouseforthirdparty." email=".$emailtouseforthirdparty." name=".$nametouseforthirdparty." name_alias=".$namealiastouseforthirdparty." was not found"); - //search into contacts of thirdparty - $resultContact = $contactstatic->fetch('', '', '', $emailtouseforthirdparty); + // Search into contacts of thirdparties to try to guess the thirdparty to use + $resultContact = $contactstatic->findNearest(0, '', '', '', $emailtouseforthirdparty, '', 0); if ($resultContact > 0) { $idtouseforthirdparty = $contactstatic->socid; $result = $thirdpartystatic->fetch($idtouseforthirdparty); @@ -2603,10 +2666,12 @@ class EmailCollector extends CommonObject } } } - } else { + } else { // $result > 0 is ID of thirdparty dol_syslog("One and only one existing third party has been found"); - $operationslog .= '
Thirdparty already exists with id = '.dol_escape_htmltag($thirdpartystatic->id); + $thirdpartystatic->fetch($result); + + $operationslog .= '
Thirdparty already exists with id = '.dol_escape_htmltag($thirdpartystatic->id)." and name ".dol_escape_htmltag($thirdpartystatic->name); } } } @@ -2649,7 +2714,7 @@ class EmailCollector extends CommonObject // Search country by name or code if (!empty($contactstatic->country)) { require_once DOL_DOCUMENT_ROOT . '/core/lib/company.lib.php'; - $result = getCountry('', 3, $this->db, '', 1, $contactstatic->country); + $result = getCountry('', 3, $this->db, null, 1, $contactstatic->country); if ($result == 'NotDefined') { $errorforactions++; $this->error = "Error country not found by this name '" . $contactstatic->country . "'"; @@ -2766,8 +2831,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; // date of email - $actioncomm->datef = $date; // date of email + $actioncomm->datep = $dateemail; // date of email + $actioncomm->datef = $dateemail; // date of email $actioncomm->percentage = -1; // Not applicable $actioncomm->socid = $thirdpartystatic->id; $actioncomm->contact_id = $contactstatic->id; @@ -2818,7 +2883,7 @@ class EmailCollector extends CommonObject $operationslog .= '
Ticket Re-Opened successfully -> ref='.$objectemail->ref; } else { $errorforactions++; - $this->error = 'Error while changing the tcket status -> ref='.$objectemail->ref; + $this->error = 'Error while changing the ticket status -> ref='.$objectemail->ref; $this->errors[] = $this->error; } } @@ -3055,14 +3120,23 @@ class EmailCollector extends CommonObject $percent_opp_status = dol_getIdFromCode($this->db, 'PROSP', 'c_lead_status', 'code', 'percent'); $projecttocreate->title = $subject; - $projecttocreate->date_start = $date; // date of email + $projecttocreate->date_start = $dateemail; // date of email $projecttocreate->date_end = 0; $projecttocreate->opp_status = $id_opp_status; $projecttocreate->opp_percent = $percent_opp_status; $projecttocreate->description = dol_concatdesc(dolGetFirstLineOfText(dol_string_nohtmltag($description, 2), 10), '...'.$langs->transnoentities("SeePrivateNote").'...'); $projecttocreate->note_private = $descriptionfull; $projecttocreate->entity = $conf->entity; - $projecttocreate->email_msgid = $msgid; + // Fields when action is an email (content should be added into agenda event) + $projecttocreate->email_date = $dateemail; + $projecttocreate->email_msgid = $msgid; + $projecttocreate->email_from = $fromstring; + $projecttocreate->email_sender = $sender; + $projecttocreate->email_to = $to; + $projecttocreate->email_tocc = $sendtocc; + $projecttocreate->email_tobcc = $sendtobcc; + $projecttocreate->email_subject = $subject; + $projecttocreate->errors_to = ''; $savesocid = $projecttocreate->socid; @@ -3074,7 +3148,7 @@ class EmailCollector extends CommonObject if (empty($projecttocreate->ref)) { // Get next Ref $defaultref = ''; - $modele = !getDolGlobalString('PROJECT_ADDON') ? 'mod_project_simple' : $conf->global->PROJECT_ADDON; + $modele = getDolGlobalString('PROJECT_ADDON', 'mod_project_simple'); // Search template files $file = ''; @@ -3103,6 +3177,7 @@ class EmailCollector extends CommonObject $result = dol_include_once($reldir."core/modules/project/".$modele.'.php'); $modModuleToUseForNextValue = new $classname(); + '@phan-var-force ModeleNumRefProjects $modModuleToUseForNextValue'; $defaultref = $modModuleToUseForNextValue->getNextValue(($thirdpartystatic->id > 0 ? $thirdpartystatic : null), $projecttocreate); } $projecttocreate->ref = $defaultref; @@ -3200,8 +3275,17 @@ class EmailCollector extends CommonObject $tickettocreate->notify_tiers_at_create = getDolGlobalInt('TICKET_CHECK_NOTIFY_THIRDPARTY_AT_CREATION'); $tickettocreate->note_private = $descriptionfull; $tickettocreate->entity = $conf->entity; - $tickettocreate->email_msgid = $msgid; - $tickettocreate->email_date = $date; + // Fields when action is an email (content should be added into agenda event) + $tickettocreate->email_date = $dateemail; + $tickettocreate->email_msgid = $msgid; + $tickettocreate->email_from = $fromstring; + $tickettocreate->email_sender = $sender; + $tickettocreate->email_to = $to; + $tickettocreate->email_tocc = $sendtocc; + $tickettocreate->email_tobcc = $sendtobcc; + $tickettocreate->email_subject = $subject; + $tickettocreate->errors_to = ''; + //$tickettocreate->fk_contact = $contactstatic->id; $savesocid = $tickettocreate->socid; @@ -3243,6 +3327,7 @@ class EmailCollector extends CommonObject $result = dol_include_once($reldir."core/modules/ticket/".$modele.'.php'); $modModuleToUseForNextValue = new $classname(); + '@phan-var-force ModeleNumRefTicket $modModuleToUseForNextValue'; $defaultref = $modModuleToUseForNextValue->getNextValue(($thirdpartystatic->id > 0 ? $thirdpartystatic : null), $tickettocreate); } $tickettocreate->ref = $defaultref; @@ -3256,6 +3341,10 @@ class EmailCollector extends CommonObject $this->error = 'Failed to create ticket: Can\'t get a valid value for the field ref with numbering template = '.$modele.', thirdparty id = '.$thirdpartystatic->id; } else { // Create ticket + $tickettocreate->context['actionmsg2'] = $langs->trans("ActionAC_EMAIL_IN").' - '.$langs->trans("TICKET_CREATEInDolibarr"); + $tickettocreate->context['actionmsg'] = $langs->trans("ActionAC_EMAIL_IN").' - '.$langs->trans("TICKET_CREATEInDolibarr"); + //$tickettocreate->email_fields_no_propagate_in_actioncomm = 0; + $result = $tickettocreate->create($user); if ($result <= 0) { $errorforactions++; @@ -3317,7 +3406,7 @@ class EmailCollector extends CommonObject $candidaturetocreate->note_private = $descriptionfull; $candidaturetocreate->entity = $conf->entity; $candidaturetocreate->email_msgid = $msgid; - $candidaturetocreate->email_date = $date; // date of email + $candidaturetocreate->email_date = $dateemail; // date of email $candidaturetocreate->status = $candidaturetocreate::STATUS_DRAFT; //$candidaturetocreate->fk_contact = $contactstatic->id; @@ -3433,25 +3522,10 @@ class EmailCollector extends CommonObject if (getDolGlobalString('MAIN_IMAP_USE_PHPIMAP')) { // Move mail using PHP-IMAP dol_syslog("EmailCollector::doCollectOneCollector move message ".($imapemail->getHeader()->get('subject'))." to ".$targetdir, LOG_DEBUG); + $operationslog .= '
Move mail '.($this->uidAsString($imapemail)).' - '.$msgid.' - '.$imapemail->getHeader()->get('subject').' to '.$targetdir; - if (empty($mode)) { // $mode > 0 is test - $operationslog .= '
Move mail '.($this->uidAsString($imapemail)).' - '.$msgid.' to '.$targetdir; - - $tmptargetdir = $targetdir; - if (!getDolGlobalString('MAIL_DISABLE_UTF7_ENCODE_OF_DIR')) { - $tmptargetdir = $this->getEncodedUtf7($targetdir); - } - - $result = $imapemail->move($tmptargetdir); - - if (empty($result)) { - dol_syslog("Failed to move email into target directory ".$targetdir); - $operationslog .= '
Failed to move email into target directory '.$targetdir; - $errorforemail++; - } - } else { - $operationslog .= '
Do not move mail '.($this->uidAsString($imapemail)).' - '.$msgid.' (test mode)'; - } + $arrayofemailtodelete[$this->uidAsString($imapemail)] = $imapemail; + // Note: Real move is done later using $arrayofemailtodelete } else { dol_syslog("EmailCollector::doCollectOneCollector move message ".($this->uidAsString($imapemail))." to ".$connectstringtarget, LOG_DEBUG); $operationslog .= '
Move mail '.($this->uidAsString($imapemail)).' - '.$msgid; @@ -3461,7 +3535,7 @@ class EmailCollector extends CommonObject } } else { if (getDolGlobalString('MAIN_IMAP_USE_PHPIMAP')) { - dol_syslog("EmailCollector::doCollectOneCollector message '".($imapemail->getHeader()->get('subject'))."' using this->host=".$this->host.", this->access_type=".$this->acces_type." was set to read", LOG_DEBUG); + dol_syslog("EmailCollector::doCollectOneCollector message ".($this->uidAsString($imapemail))." '".($imapemail->getHeader()->get('subject'))."' using this->host=".$this->host.", this->access_type=".$this->acces_type." was set to read", LOG_DEBUG); } else { dol_syslog("EmailCollector::doCollectOneCollector message ".($this->uidAsString($imapemail))." to ".$connectstringtarget." was set to read", LOG_DEBUG); } @@ -3511,16 +3585,52 @@ class EmailCollector extends CommonObject // Disconnect if (getDolGlobalString('MAIN_IMAP_USE_PHPIMAP')) { + // We sort to move/delete array with the more recent first (with higher number) so renumbering does not affect number of others to delete + krsort($arrayofemailtodelete, SORT_NUMERIC); + + foreach ($arrayofemailtodelete as $imapemailnum => $imapemail) { + dol_syslog("EmailCollect::doCollectOneCollector delete email ".$imapemailnum); + + $operationslog .= "
move email ".$imapemailnum.($mode> 0 ? ' (test)' : ''); + + if (empty($mode) && empty($error)) { + $tmptargetdir = $targetdir; + if (!getDolGlobalString('MAIL_DISABLE_UTF7_ENCODE_OF_DIR')) { + $tmptargetdir = $this->getEncodedUtf7($targetdir); + } + + $result = 0; + try { + $result = $imapemail->move($tmptargetdir, false); + } catch (Exception $e) { + // Nothing to do. $result will remain 0 + $operationslog .= '
Exception !!!! '.$e->getMessage(); + } + if (empty($result)) { + dol_syslog("Failed to move email into target directory ".$targetdir); + $operationslog .= '
Failed to move email into target directory '.$targetdir; + $error++; + } + } + } + + if (empty($mode) && empty($error)) { + dol_syslog("Expunge", LOG_DEBUG); + $operationslog .= "
Expunge"; + + $client->expunge(); // To validate all moves + } + $client->disconnect(); } else { foreach ($arrayofemailtodelete as $imapemail => $msgid) { dol_syslog("EmailCollect::doCollectOneCollector delete email ".$imapemail." ".$msgid); - $operationslog .= "
delete email ".$imapemail." ".$msgid; + $operationslog .= "
delete email ".$imapemail." ".$msgid.($mode> 0 ? ' (test)' : ''); if (empty($mode) && empty($error)) { $res = imap_mail_move($connection, $imapemail, $targetdir, CP_UID); - if ($res == false) { + if (!$res) { // $errorforemail++; // Not in loop, not needed, not initialised $this->error = imap_last_error(); $this->errors[] = $this->error; diff --git a/htdocs/eventorganization/class/conferenceorboothattendee.class.php b/htdocs/eventorganization/class/conferenceorboothattendee.class.php index 6e3a3d99bd0..29079ce513d 100644 --- a/htdocs/eventorganization/class/conferenceorboothattendee.class.php +++ b/htdocs/eventorganization/class/conferenceorboothattendee.class.php @@ -203,7 +203,7 @@ class ConferenceOrBoothAttendee extends CommonObject if (isset($conf->global->EVENTORGANIZATION_FILTERATTENDEES_TYPE) && getDolGlobalString('EVENTORGANIZATION_FILTERATTENDEES_TYPE') !== '' && getDolGlobalString('EVENTORGANIZATION_FILTERATTENDEES_TYPE') !== '-1') { - $this->fields['fk_soc']['type'] .= ' AND client = '.((int) getDolGlobalInt('EVENTORGANIZATION_FILTERATTENDEES_TYPE', 0)); + $this->fields['fk_soc']['type'] .= ' AND (client:=:'.((int) getDolGlobalInt('EVENTORGANIZATION_FILTERATTENDEES_TYPE', 0) . ')'); } // Example to show how to set values of fields definition dynamically diff --git a/htdocs/eventorganization/conferenceorbooth_list.php b/htdocs/eventorganization/conferenceorbooth_list.php index b8c1b423cb9..9c93baff3af 100644 --- a/htdocs/eventorganization/conferenceorbooth_list.php +++ b/htdocs/eventorganization/conferenceorbooth_list.php @@ -820,9 +820,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/eventorganization/conferenceorboothattendee_list.php b/htdocs/eventorganization/conferenceorboothattendee_list.php index 88bfb59144f..fb6b219df07 100644 --- a/htdocs/eventorganization/conferenceorboothattendee_list.php +++ b/htdocs/eventorganization/conferenceorboothattendee_list.php @@ -603,7 +603,7 @@ if ($projectstatic->id > 0 || $confOrBooth > 0) { // Show message $message = 'global->MAIN_AGENDA_XCAL_EXPORTKEY ? urlencode(getDolGlobalString('MAIN_AGENDA_XCAL_EXPORTKEY')) : '...'); + $message .= '&exportkey='.(getDolGlobalString('MAIN_AGENDA_XCAL_EXPORTKEY') ? urlencode(getDolGlobalString('MAIN_AGENDA_XCAL_EXPORTKEY')) : '...'); $message .= "&project=".$projectstatic->id.'&module='.urlencode('conforbooth@eventorganization').'&status='.ConferenceOrBooth::STATUS_CONFIRMED.'&output=file">'.$langs->trans('DownloadICSLink').img_picto('', 'download', 'class="paddingleft"').''; print $message; print "
"; @@ -809,9 +809,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/expedition/ajax/searchfrombarcode.php b/htdocs/expedition/ajax/searchfrombarcode.php index f1f354a0438..c3438388538 100644 --- a/htdocs/expedition/ajax/searchfrombarcode.php +++ b/htdocs/expedition/ajax/searchfrombarcode.php @@ -45,7 +45,7 @@ $fk_entrepot = GETPOSTINT("fk_entrepot"); $fk_inventory = GETPOSTINT("fk_inventory"); $fk_product = GETPOSTINT("fk_product"); $reelqty = GETPOSTINT("reelqty"); -$batch = GETPOSTINT("batch"); +$batch = GETPOST("batch", "aZ09"); $mode = GETPOST("mode", "aZ"); $warehousefound = 0; diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 11d5ebb187f..0ddbb7c200d 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -183,7 +183,7 @@ if (empty($reshook)) { // Set incoterm if ($action == 'set_incoterms' && isModEnabled('incoterm')) { - $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOSTINT('location_incoterms')); + $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOST('location_incoterms')); } if ($action == 'setref_customer') { @@ -357,7 +357,7 @@ if (empty($reshook)) { } } else { //shipment line for product with no batch management and no multiple stock location - if (GETPOSTINT($qty) > 0) { + if (GETPOSTFLOAT($qty) > 0) { $totalqty += price2num(GETPOST($qty, 'alpha'), 'MS'); $subtotalqty = price2num(GETPOST($qty, 'alpha'), 'MS'); } @@ -401,7 +401,7 @@ if (empty($reshook)) { } } } else { - if (GETPOSTINT($qty) > 0 || getDolGlobalString('SHIPMENT_GETS_ALL_ORDER_PRODUCTS')) { + if (GETPOSTFLOAT($qty) > 0 || getDolGlobalString('SHIPMENT_GETS_ALL_ORDER_PRODUCTS')) { $ent = "entl".$i; $idl = "idl".$i; $entrepot_id = is_numeric(GETPOSTINT($ent)) ? GETPOSTINT($ent) : GETPOSTINT('entrepot_id'); @@ -412,7 +412,7 @@ if (empty($reshook)) { $entrepot_id = 0; } - $ret = $object->addline($entrepot_id, GETPOSTINT($idl), price2num(GETPOSTINT($qty), 'MS'), $array_options[$i]); + $ret = $object->addline($entrepot_id, GETPOSTINT($idl), price2num(GETPOSTFLOAT($qty), 'MS'), $array_options[$i]); if ($ret < 0) { setEventMessages($object->error, $object->errors, 'errors'); $error++; @@ -671,7 +671,7 @@ if (empty($reshook)) { $batch = "batchl".$detail_batch->fk_expeditiondet."_".$detail_batch->fk_origin_stock; $qty = "qtyl".$detail_batch->fk_expeditiondet.'_'.$detail_batch->id; $batch_id = GETPOSTINT($batch); - $batch_qty = GETPOSTINT($qty); + $batch_qty = GETPOSTFLOAT($qty); if (!empty($batch_id)) { if ($lotStock->fetch($batch_id) > 0 && $line->fetch($detail_batch->fk_expeditiondet) > 0) { // $line is ExpeditionLine if ($lines[$i]->entrepot_id != 0) { @@ -708,7 +708,7 @@ if (empty($reshook)) { $batch = "batchl".$line_id."_0"; $qty = "qtyl".$line_id."_0"; $batch_id = GETPOSTINT($batch); - $batch_qty = GETPOSTINT($qty); + $batch_qty = GETPOSTFLOAT($qty); $lineIdToAddLot = 0; if ($batch_qty > 0 && !empty($batch_id)) { if ($lotStock->fetch($batch_id) > 0) { @@ -768,8 +768,8 @@ if (empty($reshook)) { if ($lines[$i]->fk_product > 0) { // line without lot if ($lines[$i]->entrepot_id == 0) { - // single warehouse shipment line - $stockLocation = 0; + // single warehouse shipment line or line in several warehouses context but with warehouse not defined + $stockLocation = "entl".$line_id; $qty = "qtyl".$line_id; $line->id = $line_id; $line->entrepot_id = GETPOSTINT($stockLocation); @@ -1116,7 +1116,7 @@ if ($action == 'create') { // Document model include_once DOL_DOCUMENT_ROOT.'/core/modules/expedition/modules_expedition.php'; $list = ModelePdfExpedition::liste_modeles($db); - if (count($list) > 1) { + if (is_countable($list) && count($list) > 1) { print ""; print ''; } - if ($object->status == 6) { + if ($object->status == ExpenseReport::STATUS_CLOSED) { print ''; print ''; print ''; } - if ($object->status == $object::STATUS_CLOSED) { + if ($object->status == ExpenseReport::STATUS_CLOSED) { /* TODO this fields are not yet filled print ''; print ''; @@ -2600,12 +2600,12 @@ if ($action == 'create') { // Unit price net print ''; // Unit price with tax print ''; // Quantity @@ -2662,7 +2662,7 @@ if ($action == 'create') { let tva = jQuery("#vatrate").find(":selected").val(); let qty = jQuery(".input_qty").val(); - let path = "'.DOL_DOCUMENT_ROOT.'/expensereport/ajax/ajaxik.php"; + let path = "'.DOL_URL_ROOT.'/expensereport/ajax/ajaxik.php"; path += "?fk_c_exp_tax_cat="+tax_cat; path += "&fk_expense="+'.((int) $object->id).'; path += "&vatrate="+tva; @@ -2925,7 +2925,7 @@ if ($action != 'presend') { } // Presend form -$modelmail = 'expensereport'; +$modelmail = 'expensereport_send'; $defaulttopic = 'SendExpenseReportRef'; $diroutput = $conf->expensereport->dir_output; $trackid = 'exp'.$object->id; diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index f6a327d5a03..7bb2851d136 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1927,7 +1927,7 @@ class ExpenseReport extends CommonObject dol_syslog(get_class($this)."::addline qty=$qty, up=$up, fk_c_type_fees=$fk_c_type_fees, vatrate=$vatrate, date=$date, fk_project=$fk_project, type=$type, comments=$comments", LOG_DEBUG); - if ($this->status == self::STATUS_DRAFT) { + if ($this->status == self::STATUS_DRAFT || $this->status == self::STATUS_REFUSED) { if (empty($qty)) { $qty = 0; } @@ -2021,7 +2021,7 @@ class ExpenseReport extends CommonObject } } else { dol_syslog(get_class($this)."::addline status of expense report must be Draft to allow use of ->addline()", LOG_ERR); - $this->error = 'ErrorExpenseNotDraft'; + $this->error = 'ErrorExpenseNotDraftAndNotRefused'; return -3; } } diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 79c2704dfa0..f79a3d40b32 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -575,9 +575,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/expensereport/payment/list.php b/htdocs/expensereport/payment/list.php index 5ac0f5574c8..4354ae5da66 100644 --- a/htdocs/expensereport/payment/list.php +++ b/htdocs/expensereport/payment/list.php @@ -409,9 +409,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php index f83522693d4..9262f6d5457 100644 --- a/htdocs/exports/export.php +++ b/htdocs/exports/export.php @@ -78,7 +78,8 @@ $entitytoicon = array( 'translation' => 'generic', 'bomm' => 'bom', 'bomline' => 'bom', - 'conferenceorboothattendee' => 'contact' + 'conferenceorboothattendee' => 'contact', + 'inventory_line' => 'inventory', ); // Translation code, array duplicated in import.php, was not synchronized, TODO put it somewhere only once @@ -130,7 +131,10 @@ $entitytolang = array( 'translation' => 'Translation', 'bom' => 'BOM', 'bomline' => 'BOMLine', - 'conferenceorboothattendee' => 'Attendee' + 'mrp' => 'ManufacturingOrder', + 'conferenceorboothattendee' => 'Attendee', + 'inventory' => 'Inventory', + 'inventory_line' => 'InventoryLine' ); $array_selected = isset($_SESSION["export_selected_fields"]) ? $_SESSION["export_selected_fields"] : array(); @@ -278,7 +282,7 @@ if ($action == 'builddoc') { } $separator = GETPOST('delimiter', 'alpha'); - $max_execution_time_for_importexport = (!getDolGlobalString('EXPORT_MAX_EXECUTION_TIME') ? 300 : $conf->global->EXPORT_MAX_EXECUTION_TIME); // 5mn if not defined + $max_execution_time_for_importexport = getDolGlobalInt('EXPORT_MAX_EXECUTION_TIME', 300); // 5mn if not defined $max_time = @ini_get("max_execution_time"); if ($max_time && $max_time < $max_execution_time_for_importexport) { dol_syslog("max_execution_time=".$max_time." is lower than max_execution_time_for_importexport=".$max_execution_time_for_importexport.". We try to increase it dynamically."); @@ -520,7 +524,7 @@ if ($step == 2 && $datatoexport) { print '
'; print '
'; - print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'.$langs->trans("Parameter").'
'.$langs->trans($title).'
'; print $val['picto']; - print $form->textwithpicto($langs->trans($key), $langs->trans('DATAPOLICY_Tooltip_SETUP')); - print ''.(getDolGlobalString($key) == '' ? $langs->trans('None') : $valTab[getDolGlobalString($key)]).'
'.(getDolGlobalString($key) == '' ? ''.$valTab[''].'' : $valTab[getDolGlobalString($key)]).'
'.$langs->trans("Delivery"); if (!empty($showImportButton) && getDolGlobalString('MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES')) { - print ' '; echo ''.$objectlink->getNomUrl(1).'
".$langs->trans("DefaultModel")."'; print img_picto('', 'pdf', 'class="pictofixedwidth"'); @@ -1745,7 +1745,7 @@ if ($action == 'create') { print ''; print '
'; - if ($line->product_type == Product::TYPE_PRODUCT || getDolGlobalString('STOCK_SUPPORTS_SERVICES') || getDolGlobalString('SHIPMENT_SUPPORTS_SERVICES')) { + if ($line->product_type == Product::TYPE_PRODUCT || getDolGlobalString('STOCK_SUPPORTS_SERVICES')) { $disabled = ''; if (isModEnabled('productbatch') && $product->hasbatch()) { $disabled = 'disabled="disabled"'; @@ -1757,6 +1757,18 @@ if ($action == 'create') { if (empty($disabled) && getDolGlobalString('STOCK_ALLOW_NEGATIVE_TRANSFER')) { print ''; } + } elseif ($line->product_type == Product::TYPE_SERVICE && getDolGlobalString('SHIPMENT_SUPPORTS_SERVICES')) { + $disabled = ''; + if (isModEnabled('productbatch') && $product->hasbatch()) { + $disabled = 'disabled="disabled"'; + } + if ($warehouse_selected_id <= 0) { // We did not force a given warehouse, so we won't have no warehouse to change qty. + $disabled = 'disabled="disabled"'; + } + print ' '; + if (empty($disabled) && getDolGlobalString('STOCK_ALLOW_NEGATIVE_TRANSFER')) { + print ''; + } } else { print $langs->trans("NA"); } diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 6f140ec0b59..271f04e56a7 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -2410,7 +2410,11 @@ class Expedition extends CommonObject $error++; } - return $error; + if (!$error) { + return 1; + } else { + return -1; + } } /** diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 4ac91b134e4..776e9d592c6 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -42,7 +42,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; // Load translation files required by the page -$langs->loadLangs(array("sendings", "deliveries", 'companies', 'bills', 'products')); +$langs->loadLangs(array("sendings", "deliveries", 'companies', 'bills', 'products', 'orders')); $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'shipmentlist'; // To manage different context of search @@ -268,7 +268,7 @@ if (empty($reshook)) { $objecttmp->fk_project = $expd->fk_project; $objecttmp->multicurrency_code = !empty($expdCmdSrc->multicurrency_code) ? $expdCmdSrc->multicurrency_code : (!empty($objecttmp->thirdparty->multicurrency_code) ? $objecttmp->thirdparty->multicurrency_code : $expd->multicurrency_code); if (empty($createbills_onebythird)) { - $objecttmp->ref_client = $expd->ref_client; + $objecttmp->ref_customer = $expd->ref_customer; } $datefacture = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int')); @@ -277,7 +277,7 @@ if (empty($reshook)) { } $objecttmp->date = $datefacture; - $objecttmp->origin = 'shipping'; + $objecttmp->origin_type = 'shipping'; $objecttmp->origin_id = $id_sending; $objecttmp->array_options = $expd->array_options; // Copy extrafields @@ -344,13 +344,13 @@ if (empty($reshook)) { $desc = ($lines[$i]->desc ? $lines[$i]->desc : ''); // If we build one invoice for several sendings, we must put the ref of sending on the invoice line if (!empty($createbills_onebythird)) { - $desc = dol_concatdesc($desc, $langs->trans("Order").' '.$expd->ref.' - '.dol_print_date($expd->date, 'day')); + $desc = dol_concatdesc($desc, $langs->trans("Order").': '.$expdCmdSrc->ref. ' - '. $langs->trans("Shipment").': '.$expd->ref.($expd->date_shipping ? ' - '.dol_print_date($expd->date_shipping, 'day'):'')); } if ($lines[$i]->subprice < 0 && empty($conf->global->INVOICE_KEEP_DISCOUNT_LINES_AS_IN_ORIGIN)) { // Negative line, we create a discount line $discount = new DiscountAbsolute($db); - $discount->fk_soc = $objecttmp->socid; + $discount->socid = $objecttmp->socid; $discount->amount_ht = abs($lines[$i]->total_ht); $discount->amount_tva = abs($lines[$i]->total_tva); $discount->amount_ttc = abs($lines[$i]->total_ttc); diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index b7bac99691d..5c1844fab73 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -158,7 +158,7 @@ if (empty($reshook)) { } } elseif ($action == 'set_incoterms' && isModEnabled('incoterm')) { // Set incoterm - $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOSTINT('location_incoterms')); + $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOST('location_incoterms')); if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 920dfd08c46..9cfe25d872c 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -682,7 +682,7 @@ if (empty($reshook)) { } */ - $mailfile = new CMailFile($subject, $emailTo, $emailFrom, $message, $filedir, $mimetype, $filename, '', '', 0, -1); + $mailfile = new CMailFile($subject, $emailTo, $emailFrom, $message, $filedir, $mimetype, $filename, $emailCC, '', 0, -1); if ($mailfile) { // SEND @@ -1566,7 +1566,7 @@ if ($action == 'create') { $head = expensereport_prepare_head($object); - if ($action == 'edit' && ($object->status < 3 || $object->status == 99)) { + if ($action == 'edit' && ($object->status < 3 || $object->status == ExpenseReport::STATUS_REFUSED)) { print "
\n"; print ''; print ''; @@ -1574,7 +1574,7 @@ if ($action == 'create') { print dol_get_fiche_head($head, 'card', $langs->trans("ExpenseReport"), 0, 'trip'); - if ($object->status == 99) { + if ($object->status == ExpenseReport::STATUS_REFUSED) { print ''; } else { print ''; @@ -1640,7 +1640,7 @@ if ($action == 'create') { print '
'.$langs->trans("AUTHORPAIEMENT").''; @@ -1858,7 +1858,7 @@ if ($action == 'create') { print '
'.$langs->trans("AUTHORPAIEMENT").''; - print ''; + print ''; print ''; - print ''; + print ''; print '
'; + print '
'; // Module print ''; @@ -565,9 +569,17 @@ if ($step == 2 && $datatoexport) { print ''; print ''; print ''; print ''; print ''; @@ -608,7 +620,14 @@ if ($step == 2 && $datatoexport) { print img_object('', $entityicon).' '.$langs->trans($entitylang); print ''; - $text = (empty($objexport->array_export_special[0][$code]) ? '' : '').$langs->trans($label).(empty($objexport->array_export_special[0][$code]) ? '' : ''); + $text = (empty($objexport->array_export_special[0][$code]) ? '' : ''); + $tmplabelarray = explode(':', $label); + if (!empty($tmplabelarray[1])) { + $text .= $langs->trans($tmplabelarray[0]).' - '.$langs->trans($tmplabelarray[1]); + } else { + $text .= $langs->trans($label); + } + $text .=(empty($objexport->array_export_special[0][$code]) ? '' : ''); $tablename = getablenamefromfield($code, $sqlmaxforexport); $htmltext = ''.$langs->trans("Name").": ".$text.'
'; @@ -630,7 +649,7 @@ if ($step == 2 && $datatoexport) { if (isset($array_selected[$code]) && $array_selected[$code]) { // Selected fields print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; } @@ -727,8 +746,16 @@ if ($step == 3 && $datatoexport) { print ''; $list = ''; foreach ($array_selected as $code => $value) { - $list .= (!empty($list) ? ', ' : ''); - $list .= (isset($objexport->array_export_fields[0][$code]) ? $langs->trans($objexport->array_export_fields[0][$code]) : ''); + if (isset($objexport->array_export_fields[0][$code])) { + $list .= (!empty($list) ? ', ' : ''); + + $tmplabelarray = explode(':', $objexport->array_export_fields[0][$code]); + if (!empty($tmplabelarray[1])) { + $list .= $langs->trans($tmplabelarray[0]).' - '.$langs->trans($tmplabelarray[1]); + } else { + $list .= $langs->trans($objexport->array_export_fields[0][$code]); + } + } } print ''; @@ -788,7 +815,15 @@ if ($step == 3 && $datatoexport) { // Field name $labelName = (!empty($fieldsarray[$code]) ? $fieldsarray[$code] : ''); $ValueFilter = (!empty($array_filtervalue[$code]) ? $array_filtervalue[$code] : ''); - $text = (empty($objexport->array_export_special[0][$code]) ? '' : '').$langs->trans($labelName).(empty($objexport->array_export_special[0][$code]) ? '' : ''); + + $text = (empty($objexport->array_export_special[0][$code]) ? '' : ''); + $tmplabelarray = explode(':', $label); + if (!empty($tmplabelarray[1])) { + $text .= $langs->trans($tmplabelarray[0]).' - '.$langs->trans($tmplabelarray[1]); + } else { + $text .= $langs->trans($label); + } + $text .=(empty($objexport->array_export_special[0][$code]) ? '' : ''); $tablename = getablenamefromfield($code, $sqlmaxforexport); $htmltext = ''.$langs->trans("Name").': '.$text.'
'; @@ -907,8 +942,16 @@ if ($step == 4 && $datatoexport) { print ''; $list = ''; foreach ($array_selected as $code => $value) { - $list .= (!empty($list) ? ', ' : ''); - $list .= $langs->trans($objexport->array_export_fields[0][$code]); + if (isset($objexport->array_export_fields[0][$code])) { + $list .= (!empty($list) ? ', ' : ''); + + $tmplabelarray = explode(':', $objexport->array_export_fields[0][$code]); + if (!empty($tmplabelarray[1])) { + $list .= $langs->trans($tmplabelarray[0]).' - '.$langs->trans($tmplabelarray[1]); + } else { + $list .= $langs->trans($objexport->array_export_fields[0][$code]); + } + } } print ''; print ''; @@ -960,6 +1003,10 @@ if ($step == 4 && $datatoexport) { print ''; foreach ($array_selected as $code => $value) { + if (!isset($objexport->array_export_fields[0][$code])) { // For example when field was in predefined filter but not more active (localtax1 disabled by setup of country) + continue; + } + print ''; $entity = (!empty($objexport->array_export_entities[0][$code]) ? $objexport->array_export_entities[0][$code] : $objexport->array_export_icon[0]); @@ -978,7 +1025,14 @@ if ($step == 4 && $datatoexport) { $labelName = $objexport->array_export_fields[0][$code]; - $text = (empty($objexport->array_export_special[0][$code]) ? '' : '').$langs->trans($labelName).(empty($objexport->array_export_special[0][$code]) ? '' : ''); + $text = (empty($objexport->array_export_special[0][$code]) ? '' : ''); + $tmplabelarray = explode(':', $labelName); + if (!empty($tmplabelarray[1])) { + $text .= $langs->trans($tmplabelarray[0]).' - '.$langs->trans($tmplabelarray[1]); + } else { + $text .= $langs->trans($labelName); + } + $text .=(empty($objexport->array_export_special[0][$code]) ? '' : ''); $tablename = getablenamefromfield($code, $sqlmaxforexport); $htmltext = ''.$langs->trans("Name").': '.$text.'
'; @@ -1193,8 +1247,16 @@ if ($step == 5 && $datatoexport) { print ''; $list = ''; foreach ($array_selected as $code => $label) { - $list .= (!empty($list) ? ', ' : ''); - $list .= $langs->trans($objexport->array_export_fields[0][$code]); + if (isset($objexport->array_export_fields[0][$code])) { + $list .= (!empty($list) ? ', ' : ''); + + $tmplabelarray = explode(':', $objexport->array_export_fields[0][$code]); + if (!empty($tmplabelarray[1])) { + $list .= $langs->trans($tmplabelarray[0]).' - '.$langs->trans($tmplabelarray[1]); + } else { + $list .= $langs->trans($objexport->array_export_fields[0][$code]); + } + } } print ''; diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index cfef617a21b..c29768f40c3 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -844,7 +844,7 @@ if ($action == 'create') { $res = $soc->fetch($socid); } - if (GETPOSTINT('origin') && GETPOSTINT('originid')) { + if (GETPOST('origin', 'alphanohtml') && GETPOSTINT('originid')) { // Parse element/subelement (ex: project_task) $regs = array(); $element = $subelement = GETPOST('origin', 'alphanohtml'); @@ -1011,6 +1011,7 @@ if ($action == 'create') { if (!empty($origin) && !empty($originid) && is_object($objectsrc)) { $newclassname = $classname; if ($newclassname == 'Propal') { + $langs->load('propal'); $newclassname = 'CommercialProposal'; } print ''; @@ -1054,7 +1055,7 @@ if ($action == 'create') { print $form->buttonsSaveCancel("CreateDraftIntervention"); // Show origin lines - if (!empty($origin) && !empty($originid) && is_object($objectsrc)) { + if (!empty($origin) && !empty($originid) && is_object($objectsrc) && !getDolGlobalInt('FICHINTER_DISABLE_DETAILS')) { $title = $langs->trans('Services'); print load_fiche_titre($title); @@ -1282,14 +1283,14 @@ if ($action == 'create') { print '
'.$langs->trans("Module").''.$langs->trans("Object").''.$langs->trans("ExportableFields").''; - print ''.$langs->trans("All").""; + $morecss = ''; + $moretitle = ''; + if (!$user->hasRight('export', 'creer')) { + $morecss = ' disabled'; + $moretitle = $langs->trans("NotAllowed"); + } + print ''.$langs->trans("All").""; print ' / '; - print ''.$langs->trans("None").""; + print ''.$langs->trans("None").""; print ''.$langs->trans("ExportedFields").'
 '.img_left('default', 0, 'style="max-width: 20px"').''.img_left($moretitle, 0, 'style="max-width: 20px"').''; //print $text.'-'.$htmltext."
"; print $form->textwithpicto($text, $htmltext); @@ -643,7 +662,7 @@ if ($step == 2 && $datatoexport) { print $form->textwithpicto($text, $htmltext); //print ' ('.$code.')'; print '
'.img_right('default', 0, 'style="max-width: 20px"').''.img_right($moretitle, 0, 'style="max-width: 20px"').' 
'.$langs->trans("ExportedFields").''.$list.'
'.$langs->trans("ExportedFields").''.$list.'
'.$langs->trans("ExportedFields").''.$list.'
'.$langs->trans($newclassname).''.$objectsrc->getNomUrl(1).'
'; - if ($action != 'contrat') { - print ''; } print '
'; print $langs->trans('Contract'); print 'id.'">'; + if ($action != 'editcontract') { + print 'id.'">'; print img_edit($langs->trans('SetContract'), 1); print '
'; print '
'; - if ($action == 'contrat') { + if ($action == 'editcontract') { $formcontract = new FormContract($db); $formcontract->formSelectContract($_SERVER["PHP_SELF"].'?id='.$object->id, $object->socid, $object->fk_contrat, 'contratid', 0, 1, 1); } else { diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index 22fbbb86979..08b4b55373a 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -558,9 +558,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } @@ -1028,7 +1025,7 @@ while ($i < $imaxinloop) { print '
'; + $out .= '
'; $out .= ''; $out .= ''; $out .= ''; @@ -1095,9 +1096,12 @@ class ProductFournisseur extends Product } $out .= '
'.($showunitprice ? $langs->trans("Price").' '.$langs->trans("HT") : '').''.($showunitprice ? $langs->trans("QtyMin") : '').''.$langs->trans("Supplier").'
'; } else { - $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 ? ')' : ''); + $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") : ''); + if ($user->hasRight("fournisseur", "read")) { // Without permission, never show the best supplier seller + $out .= ($showunitprice ? '   (' : ''); + $out .= ($showsuptitle ? ''.$langs->trans("Supplier").': ' : '').$this->getSocNomUrl(1, 'supplier', $maxlen, $notooltip).' / '.$langs->trans("SupplierRef").': '.$this->ref_supplier; + $out .= ($showunitprice ? ')' : ''); + } } return $out; } diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index b89ea893078..8f3041a20ec 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -220,7 +220,7 @@ if (empty($reshook)) { // Set incoterm if ($action == 'set_incoterms' && $usercancreate) { - $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOSTINT('location_incoterms')); + $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOST('location_incoterms')); if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } @@ -1661,7 +1661,7 @@ if ($action == 'create') { if ($origin == "commande") { $cond_reglement_id = 0; $mode_reglement_id = 0; - $delivery_date = ''; + $datelivraison = ''; $objectsrc->note_private = ''; $objectsrc->note_public = ''; if ($societe = $object->thirdparty) { @@ -1685,9 +1685,9 @@ if ($action == 'create') { $demand_reason_id = (!empty($objectsrc->demand_reason_id) ? $objectsrc->demand_reason_id : (!empty($soc->demand_reason_id) ? $soc->demand_reason_id : 0)); //$remise_percent = (!empty($objectsrc->remise_percent) ? $objectsrc->remise_percent : (!empty($soc->remise_supplier_percent) ? $soc->remise_supplier_percent : 0)); //$remise_absolue = (!empty($objectsrc->remise_absolue) ? $objectsrc->remise_absolue : (!empty($soc->remise_absolue) ? $soc->remise_absolue : 0)); - $dateinvoice = !getDolGlobalString('MAIN_AUTOFILL_DATE') ? -1 : ''; + $dateinvoice = getDolGlobalString('MAIN_AUTOFILL_DATE') ? '' : -1; - $datedelivery = (!empty($objectsrc->delivery_date) ? $objectsrc->delivery_date : ''); + $datelivraison = (!empty($objectsrc->delivery_date) ? $objectsrc->delivery_date : ''); if (isModEnabled("multicurrency")) { if (!empty($objectsrc->multicurrency_code)) { @@ -1820,7 +1820,9 @@ if ($action == 'create') { $usehourmin = 1; } print img_picto('', 'action', 'class="pictofixedwidth"'); + print $form->selectDate($datelivraison ? $datelivraison : -1, 'liv_', $usehourmin, $usehourmin, 0, "set"); + print '
'.$langs->trans("Reception").''.dol_print_date($db->jdate($objp->datec), 'day').''.dol_print_date($db->jdate($objp->date_delivery), 'day').'' . dol_print_date($db->jdate($objp->date_delivery), 'day') . ''; - print $obj->alias; + print ''; + print dol_escape_htmltag($obj->alias); print ''; - print $obj->town; + print ''; + print dol_escape_htmltag($obj->town); print ''; - print $obj->zip; + print ''; + print dol_escape_htmltag($obj->zip); print '".$obj->state_name."'.dol_escape_htmltag($obj->state_name)."
'; print ''; - print_liste_field_titre("Lastname", $_SERVER["PHP_SELF"], "p.name", $begin, "", "", $sortfield, $sortorder); + print_liste_field_titre("Lastname", $_SERVER["PHP_SELF"], "p.lastname", $begin, "", "", $sortfield, $sortorder); print_liste_field_titre("Firstname", $_SERVER["PHP_SELF"], "p.firstname", $begin, "", "", $sortfield, $sortorder); print_liste_field_titre("Company", $_SERVER["PHP_SELF"], "s.nom", $begin, "", "", $sortfield, $sortorder); print_liste_field_titre("Email"); diff --git a/htdocs/fourn/facture/card-rec.php b/htdocs/fourn/facture/card-rec.php index f66b2913066..023d1177369 100644 --- a/htdocs/fourn/facture/card-rec.php +++ b/htdocs/fourn/facture/card-rec.php @@ -1,16 +1,16 @@ - * Copyright (C) 2004-2016 Laurent Destailleur - * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2013 Florian Henry - * Copyright (C) 2013 Juanjo Menent - * Copyright (C) 2015 Jean-François Ferry - * Copyright (C) 2012 Cedric Salvador - * Copyright (C) 2015 Alexandre Spangaro - * Copyright (C) 2016 Meziane Sof - * Copyright (C) 2017-2018 Frédéric France - * Copyright (C) 2023-2024 Nick Fragoulis - * Copyright (C) 2024 MDW +/* Copyright (C) 2002-2003 Rodolphe Quiedeville + * Copyright (C) 2004-2016 Laurent Destailleur + * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2013 Florian Henry + * Copyright (C) 2013 Juanjo Menent + * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2012 Cedric Salvador + * Copyright (C) 2015-2024 Alexandre Spangaro + * Copyright (C) 2016 Meziane Sof + * Copyright (C) 2017-2018 Frédéric France + * Copyright (C) 2023-2024 Nick Fragoulis + * Copyright (C) 2024 MDW * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ /** * \file htdocs/fourn/facture/card-rec.php - * \ingroup invoice fournisseurs + * \ingroup supplier invoice * \brief Page to show predefined invoice */ @@ -478,7 +478,7 @@ if (empty($reshook)) { } if ($qty < 0) { $langs->load("errors"); - setEventMessages($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), null, 'errors'); + setEventMessages($langs->trans('ErrorQtyForSupplierInvoiceCantBeNegative'), null, 'errors'); $error++; } @@ -542,8 +542,8 @@ if (empty($reshook)) { $label = ((GETPOST('product_label') && GETPOST('product_label') != $prod->label) ? GETPOST('product_label') : ''); // Update if prices fields are defined - $tva_tx = get_default_tva($mysoc, $object->thirdparty, $prod->id); - $tva_npr = get_default_npr($mysoc, $object->thirdparty, $prod->id); + $tva_tx = get_default_tva($object->thirdparty, $mysoc, $prod->id); + $tva_npr = get_default_npr($object->thirdparty, $mysoc, $prod->id); if (empty($tva_tx)) { $tva_npr = 0; } @@ -551,7 +551,7 @@ if (empty($reshook)) { // Search the correct price into loaded array product_price_by_qty using id of array retrieved into POST['pqp']. $pqp = (GETPOSTINT('pbq') ? GETPOSTINT('pbq') : 0); - $datapriceofproduct = $prod->getSellPrice($mysoc, $object->thirdparty, $pqp); + $datapriceofproduct = $prod->getSellPrice($object->thirdparty, $mysoc, $pqp); $pu_ht = $datapriceofproduct['pu_ht']; $pu_ttc = $datapriceofproduct['pu_ttc']; @@ -666,8 +666,8 @@ if (empty($reshook)) { $buyingprice = price2num(GETPOST('buying_price' . $predef) != '' ? GETPOST('buying_price' . $predef) : ''); // If buying_price is '0', we must keep this value // Local Taxes - $localtax1_tx = get_localtax($tva_tx, 1, $object->thirdparty, $mysoc, $tva_npr); - $localtax2_tx = get_localtax($tva_tx, 2, $object->thirdparty, $mysoc, $tva_npr); + $localtax1_tx = get_localtax($tva_tx, 1, $mysoc, $object->thirdparty, $tva_npr); + $localtax2_tx = get_localtax($tva_tx, 2, $mysoc, $object->thirdparty, $tva_npr); $info_bits = 0; if ($tva_npr) { $info_bits |= 0x01; @@ -785,7 +785,7 @@ if (empty($reshook)) { $special_code = 3; } - $remise_percent = price2num(GETPOST('remise_percent'), '', 2); + $remise_percent = price2num(GETPOST('remise_percent'), '', 2) ?: 0; // Check minimum price $productid = GETPOSTINT('productid'); @@ -819,7 +819,7 @@ if (empty($reshook)) { } if ($qty < 0) { $langs->load("errors"); - setEventMessages($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), null, 'errors'); + setEventMessages($langs->trans('ErrorQtyForSupplierInvoiceCantBeNegative'), null, 'errors'); $error++; } @@ -931,7 +931,7 @@ if ($action == 'create') { print ''; // Third party - print ''; + print ''; print ''; // Invoice subtype @@ -944,7 +944,7 @@ if ($action == 'create') { $note_public = GETPOSTISSET('note_public') ? GETPOST('note_public', 'restricthtml') : $object->note_public; $note_private = GETPOSTISSET('note_private') ? GETPOST('note_private', 'restricthtml') : $object->note_private; - // Help of substitution key + // Help for substitution key $substitutionarray = getCommonSubstitutionArray($langs, 2, null, $object); $substitutionarray['__INVOICE_PREVIOUS_MONTH__'] = $langs->trans("PreviousMonthOfInvoice") . ' (' . $langs->trans("Example") . ': ' . dol_print_date(dol_time_plus_duree($object->date, -1, 'm'), '%m') . ')'; @@ -1113,7 +1113,7 @@ if ($action == 'create') { $disableedit = 1; $disablemove = 1; $disableremove = 1; - $object->printObjectLines('', $mysoc, $object->thirdparty, $lineid, 0); // No date selector for template invoice + $object->printObjectLines('', $object->thirdparty, $mysoc, $lineid, 0); // No date selector for template invoice } print "
' . $langs->trans("Customer") . '' . $object->thirdparty->getNomUrl(1, 'customer') . '
' . $langs->trans("Supplier") . '' . $object->thirdparty->getNomUrl(1, 'supplier') . '
\n"; @@ -1613,7 +1613,7 @@ if ($action == 'create') { $canchangeproduct = 0; $object->statut = $object->suspended; - $object->printObjectLines($action, $mysoc, $object->thirdparty, $lineid, 0); // No date selector for template invoice + $object->printObjectLines($action, $object->thirdparty, $mysoc, $lineid, 0); // No date selector for template invoice } // Form to add new line diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 18e9b95e329..c4aada9dd7c 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -4,7 +4,7 @@ * Copyright (C) 2004 Christophe Combelles * Copyright (C) 2005 Marc Barilley * Copyright (C) 2005-2013 Regis Houssin - * Copyright (C) 2010-2019 Juanjo Menent + * Copyright (C) 2010-2023 Juanjo Menent * Copyright (C) 2013-2022 Philippe Grand * Copyright (C) 2013 Florian Henry * Copyright (C) 2014-2016 Marcos García @@ -445,7 +445,7 @@ if (empty($reshook)) { } } elseif ($action == 'set_incoterms' && isModEnabled('incoterm') && $usercancreate) { // Set incoterm - $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOSTINT('location_incoterms')); + $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOST('location_incoterms')); } elseif ($action == 'setmode' && $usercancreate) { // payment mode $result = $object->setPaymentMethods(GETPOSTINT('mode_reglement_id')); @@ -454,7 +454,7 @@ if (empty($reshook)) { $result = $object->setMulticurrencyCode(GETPOST('multicurrency_code', 'alpha')); } elseif ($action == 'setmulticurrencyrate' && $usercancreate) { // Multicurrency rate - $result = $object->setMulticurrencyRate(price2num(GETPOSTINT('multicurrency_tx')), GETPOSTINT('calculation_mode')); + $result = $object->setMulticurrencyRate(price2num(GETPOST('multicurrency_tx', 'alpha')), GETPOSTINT('calculation_mode')); } elseif ($action == 'setbankaccount' && $usercancreate) { // bank account $result = $object->setBankAccount(GETPOSTINT('fk_account')); @@ -836,7 +836,7 @@ if (empty($reshook)) { $object->fk_incoterms = GETPOSTINT('incoterm_id'); $object->location_incoterms = GETPOST('location_incoterms', 'alpha'); $object->multicurrency_code = GETPOST('multicurrency_code', 'alpha'); - $object->multicurrency_tx = GETPOSTINT('originmulticurrency_tx'); + $object->multicurrency_tx = GETPOSTFLOAT('originmulticurrency_tx'); $object->transport_mode_id = GETPOSTINT('transport_mode_id'); // Proprietes particulieres a facture de replacement @@ -1338,6 +1338,11 @@ if (empty($reshook)) { $date_end = $lines[$i]->date_end; } + $tva_tx = $lines[$i]->tva_tx; + if (!empty($lines[$i]->vat_src_code) && !preg_match('/\(/', (string) $tva_tx)) { + $tva_tx .= ' ('.$lines[$i]->vat_src_code.')'; + } + // FIXME Missing special_code into addline and updateline methods $object->special_code = $lines[$i]->special_code; @@ -1354,7 +1359,7 @@ if (empty($reshook)) { $result = $object->addline( $desc, $pu, - $lines[$i]->tva_tx, + $tva_tx, $lines[$i]->localtax1_tx, $lines[$i]->localtax2_tx, $lines[$i]->qty, @@ -2718,7 +2723,9 @@ if ($action == 'create') { require_once DOL_DOCUMENT_ROOT . '/core/lib/company.lib.php'; print '
' . $langs->trans('VATReverseCharge') . ''; // Try to propose to use VAT reverse charge even if the VAT reverse charge is not activated in the supplier card, if this corresponds to the context of use, the activation is proposed - if ($vat_reverse_charge == 1 || $societe->vat_reverse_charge == 1 || ($societe->country_code != 'FR' && isInEEC($societe) && !empty($societe->tva_intra))) { + if (GETPOSTISSET('vat_reverse_charge')) { // Check if form was submitted previously + $vat_reverse_charge = (GETPOST('vat_reverse_charge', 'alpha') == 'on' || GETPOST('vat_reverse_charge', 'alpha') == '1') ? 1 : 0; + } elseif ($vat_reverse_charge == 1 || $societe->vat_reverse_charge == 1 || ($societe->country_code != 'FR' && isInEEC($societe) && !empty($societe->tva_intra))) { $vat_reverse_charge = 1; } else { $vat_reverse_charge = 0; @@ -3198,14 +3205,12 @@ if ($action == 'create') { $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline', '', 0, 1); } - if (!$formconfirm) { - $parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid); - $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; - } + $parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid); + $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 @@ -3584,9 +3589,9 @@ if ($action == 'create') { // Show link for "recalculate" if ($object->getVentilExportCompta() == 0) { $s = '' . $langs->trans("ReCalculate") . ' '; - $s .= '' . $langs->trans("Mode1") . ''; + $s .= '' . $langs->trans("Mode1") . ''; $s .= ' / '; - $s .= '' . $langs->trans("Mode2") . ''; + $s .= '' . $langs->trans("Mode2") . ''; print '
'; print $form->textwithtooltip($s, $langs->trans("CalculationRuleDesc", $calculationrulenum) . '
' . $langs->trans("CalculationRuleDescSupplier"), 2, 1, img_picto('', 'help'), '', 3, '', 0, 'recalculate'); print '       '; @@ -4093,7 +4098,7 @@ if ($action == 'create') { } // Reverse back money or convert to reduction - if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE || $object->type == FactureFournisseur::TYPE_DEPOSIT || $object->type == FactureFournisseur::TYPE_STANDARD) { + if ($object->status != FactureFournisseur::STATUS_DRAFT && ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE || $object->type == FactureFournisseur::TYPE_DEPOSIT || $object->type == FactureFournisseur::TYPE_STANDARD)) { // For credit note only if ($object->type == FactureFournisseur::TYPE_CREDIT_NOTE && $object->status == 1 && $object->paid == 0) { if ($resteapayer == 0) { diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 4dd80889eb2..e6597b29ce3 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -1067,9 +1067,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/fourn/paiement/list.php b/htdocs/fourn/paiement/list.php index 39a031a74bb..4c4e68df2fa 100644 --- a/htdocs/fourn/paiement/list.php +++ b/htdocs/fourn/paiement/list.php @@ -369,7 +369,7 @@ if ($search_all) { $moreforfilter = ''; $parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $moreforfilter .= $hookmanager->resPrint; } else { diff --git a/htdocs/fourn/product/list.php b/htdocs/fourn/product/list.php index e0dd5a9af29..14e213e01e8 100644 --- a/htdocs/fourn/product/list.php +++ b/htdocs/fourn/product/list.php @@ -39,6 +39,7 @@ $langs->loadLangs(array('products', 'suppliers')); // Get Parameters $action = GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'; // The action 'create'/'add', 'edit'/'update', 'view', ... +$massaction = GETPOST('massaction', 'alpha'); $toselect = GETPOST('toselect', 'array:int'); // Array of ids of elements selected into a list $optioncss = GETPOST('optioncss', 'alpha'); $mode = GETPOST('mode', 'aZ'); // The output mode ('list', 'kanban', 'hierarchy', 'calendar', ...) @@ -226,7 +227,7 @@ if (!$resql) { $num = $db->num_rows($resql); $i = 0; - +$help_url = ''; if ($num == 1 && (GETPOST("mode") == 'search')) { $objp = $db->fetch_object($resql); header("Location: ".DOL_URL_ROOT."/product/card.php?id=".$objp->rowid); @@ -301,10 +302,11 @@ print ''; print ''; print ''; +$moreforfilter = ''; $topicmail = "Information"; $modelmail = "product"; $objecttmp = new Product($db); -$trackid = 'prod'.$object->id; +$trackid = 'prod'.$productstatic->id; include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; @@ -341,7 +343,7 @@ 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)) { + if (in_array($productstatic->id, $arrayofselected)) { $selected = 1; } - print ''; + 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)) { + if (in_array($productstatic->id, $arrayofselected)) { $selected = 1; } - print ''; + print ''; } print '
'."\n"; diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index 8bf3c96ef74..1102ed53dc7 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -1100,6 +1100,13 @@ class Holiday extends CommonObject $this->errors[] = "Error ".$this->db->lasterror(); } + if (!$error) { + $result = $this->insertExtraFields(); + if ($result < 0) { + $error++; + } + } + if (!$error) { if (!$notrigger) { // Call trigger diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php index 20e8272821c..b197a6d39a8 100644 --- a/htdocs/holiday/list.php +++ b/htdocs/holiday/list.php @@ -222,8 +222,6 @@ if (empty($reshook)) { } - - /* * View */ @@ -575,9 +573,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array('type' => $type); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } @@ -634,7 +629,7 @@ if (!empty($arrayfields['cp.fk_validator']['checked'])) { if ($user->hasRight('holiday', 'readall')) { print ''; $validator = new UserGroup($db); - $excludefilter = $user->admin ? '' : 'u.rowid <> '.$user->id; + $excludefilter = $user->admin ? '' : 'u.rowid <> '.((int) $user->id); $valideurobjects = $validator->listUsersForGroup($excludefilter, 1); $valideurarray = array(); foreach ($valideurobjects as $val) { diff --git a/htdocs/holiday/view_log.php b/htdocs/holiday/view_log.php index 10f4c5402ea..1f7a95c706e 100644 --- a/htdocs/holiday/view_log.php +++ b/htdocs/holiday/view_log.php @@ -337,7 +337,7 @@ if (!empty($arrayfields['cpl.rowid']['checked'])) { // Filter: Date if (!empty($arrayfields['cpl.date_action']['checked'])) { print ''; - print ''; + print ''; print $formother->selectyear($search_year, 'search_year', 1, 10, 5, 0, 0, '', 'valignmiddle width75', true); print ''; } @@ -345,7 +345,7 @@ if (!empty($arrayfields['cpl.date_action']['checked'])) { // Filter: Validator if (!empty($arrayfields['cpl.fk_user_action']['checked'])) { $validator = new UserGroup($db); - $excludefilter = $user->admin ? '' : 'u.rowid <> '.$user->id; + $excludefilter = $user->admin ? '' : 'u.rowid <> '.((int) $user->id); $valideurobjects = $validator->listUsersForGroup($excludefilter, 1); $valideurarray = array(); foreach ($valideurobjects as $val) { @@ -560,8 +560,8 @@ while ($i < min($num, $limit)) { } if ($log_holiday == '2') { - print ''; - print ''.$langs->trans('NoRecordFound').''; + print ''; + print ''.$langs->trans('NoRecordFound').''; print ''; } diff --git a/htdocs/hrm/class/evaluation.class.php b/htdocs/hrm/class/evaluation.class.php index be26c853199..dc0cdfa6c08 100644 --- a/htdocs/hrm/class/evaluation.class.php +++ b/htdocs/hrm/class/evaluation.class.php @@ -171,7 +171,7 @@ class Evaluation extends CommonObject */ public function __construct(DoliDB $db) { - global $conf, $langs, $user; + global $langs, $user; $this->db = $db; @@ -186,7 +186,7 @@ class Evaluation extends CommonObject } if (!$user->hasRight('hrm', 'evaluation', 'readall')) { - $this->fields['fk_user']['type'] .= ':rowid IN('.$this->db->sanitize(implode(", ", $user->getAllChildIds(1))).')'; + $this->fields['fk_user']['type'] .= ':t.rowid:IN:'.$this->db->sanitize(implode(",", $user->getAllChildIds(1))); } $this->date_eval = dol_now(); diff --git a/htdocs/hrm/evaluation_list.php b/htdocs/hrm/evaluation_list.php index 8106d149b1c..38ea2077848 100644 --- a/htdocs/hrm/evaluation_list.php +++ b/htdocs/hrm/evaluation_list.php @@ -488,9 +488,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array('type'=>$type); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/hrm/skill_list.php b/htdocs/hrm/skill_list.php index 0adb700e0b9..53ab598e4ec 100644 --- a/htdocs/hrm/skill_list.php +++ b/htdocs/hrm/skill_list.php @@ -476,9 +476,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array('type'=>$type); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index 869bddbb3fd..660ba435eec 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -783,6 +783,16 @@ if ($step == 4 && $datatoimport) { $classname = "Import".ucfirst($model); require_once $dir.$file; $obj = new $classname($db, $datatoimport); + + if (!empty($obj->error)) { + $langs->load("errors"); + $param = '&datatoimport='.$datatoimport.'&format='.$format; + setEventMessages($obj->error, null, 'errors'); + header("Location: ".$_SERVER["PHP_SELF"].'?step=3'.$param.'&filetoimport='.urlencode($relativepath)); + exit; + } + + if ($model == 'csv') { $obj->separator = $separator_used; $obj->enclosure = $enclosure; diff --git a/htdocs/includes/OAuth/Common/Storage/DoliStorage.php b/htdocs/includes/OAuth/Common/Storage/DoliStorage.php index 070a5d2b92a..d3de6d20280 100644 --- a/htdocs/includes/OAuth/Common/Storage/DoliStorage.php +++ b/htdocs/includes/OAuth/Common/Storage/DoliStorage.php @@ -71,8 +71,9 @@ class DoliStorage implements TokenStorageInterface * @param DoliDB $db Database handler * @param \Conf $conf Conf object * @param string $keyforprovider Key to manage several providers of the same type. For example 'abc' will be added to 'Google' to defined storage key. + * @param string $tenant Value of tenant if used */ - public function __construct(DoliDB $db, \Conf $conf, $keyforprovider = '') + public function __construct(DoliDB $db, \Conf $conf, $keyforprovider = '', $tenant = '') { $this->db = $db; $this->conf = $conf; @@ -80,6 +81,7 @@ class DoliStorage implements TokenStorageInterface $this->token = ''; $this->tokens = array(); $this->states = array(); + $this->tenant = $tenant; //$this->key = $key; //$this->stateKey = $stateKey; } @@ -381,7 +383,7 @@ class DoliStorage implements TokenStorageInterface { // Set/Reset tenant now so it will be defined for. // TODO We must store it into the table llx_oauth_token - $this->tenant = getDolGlobalString('OAUTH_MICROSOFT'.($this->keyforprovider ? '-'.$this->keyforprovider : '').'_TENANT'); + //$this->tenant = getDolGlobalString('OAUTH_MICROSOFT'.($this->keyforprovider ? '-'.$this->keyforprovider : '').'_TENANT'); return $this->tenant; } diff --git a/htdocs/includes/OAuth/OAuth2/Service/AbstractService.php b/htdocs/includes/OAuth/OAuth2/Service/AbstractService.php index b6f89118d83..bc28762c688 100644 --- a/htdocs/includes/OAuth/OAuth2/Service/AbstractService.php +++ b/htdocs/includes/OAuth/OAuth2/Service/AbstractService.php @@ -218,12 +218,31 @@ abstract class AbstractService extends BaseAbstractService implements ServiceInt 'refresh_token' => $refreshToken, ); + // @CHANGE LDR + //global $conf; $conf->global->OAUTH_ADD_SCOPE_AND_TENANT_IN_REFRESH_MESSAGE = 1; + if (getDolGlobalString('OAUTH_ADD_SCOPE_AND_TENANT_IN_REFRESH_MESSAGE')) { + if (!empty($this->scopes)) { + $parameters['scope'] = implode($this->getScopesDelimiter(), $this->scopes); + } + if ($this->storage->getTenant()) { + $parameters['tenant'] = $this->storage->getTenant(); + } + } + //var_dump($parameters); + $responseBody = $this->httpClient->retrieveResponse( $this->getAccessTokenEndpoint(), $parameters, $this->getExtraOAuthHeaders() ); - //print $responseBody;exit; // We must have a result "{"token_type":"Bearer","scope... + + + // @CHANGE LDR + $data = json_decode((string) $responseBody, true); + if (is_array($data) && !empty($data['error_description'])) { + print 'Oauth2 AbstractService error received: '.$data['error_description']; + } + //print $responseBody;exit; // We must have a result string "{"token_type":"Bearer","error_description":...,"scope... $token = $this->parseAccessTokenResponse($responseBody); $this->storage->storeAccessToken($this->service(), $token); diff --git a/htdocs/includes/OAuth/OAuth2/Service/Microsoft2.php b/htdocs/includes/OAuth/OAuth2/Service/Microsoft2.php index 727cd05b842..83149fc639a 100644 --- a/htdocs/includes/OAuth/OAuth2/Service/Microsoft2.php +++ b/htdocs/includes/OAuth/OAuth2/Service/Microsoft2.php @@ -10,7 +10,7 @@ use OAuth\Common\Http\Client\ClientInterface; use OAuth\Common\Storage\TokenStorageInterface; use OAuth\Common\Http\Uri\UriInterface; -class Microsoft extends AbstractService +class Microsoft2 extends AbstractService { const SCOPE_BASIC = 'basic'; const SCOPE_OFFLINE_ACCESS = 'offline_access'; diff --git a/htdocs/includes/jquery/plugins/jcrop/index.html b/htdocs/includes/jquery/plugins/jcrop/index.html deleted file mode 100644 index 209c929c61d..00000000000 --- a/htdocs/includes/jquery/plugins/jcrop/index.html +++ /dev/null @@ -1,50 +0,0 @@ - - -Jcrop: the jQuery Image Cropping Plugin - - - -
-

Jcrop Image Cropping Plugin

- - - Jcrop - is the image cropping plugin for - jQuery.
- You've successfully unpacked Jcrop. -
- -

Static Demos

- - - -

Live Demo

- - - -

Jcrop Links

- - - -
- - © 2008 Kelly Hallman and DeepLiquid.com
- Free software released under - MIT License -
-
- - - - diff --git a/htdocs/includes/jquery/plugins/jpicker/Example.html b/htdocs/includes/jquery/plugins/jpicker/Example.html deleted file mode 100644 index b93bd0152e3..00000000000 --- a/htdocs/includes/jquery/plugins/jpicker/Example.html +++ /dev/null @@ -1,774 +0,0 @@ - - - - - - Digital Magic Productions - jPicker - A jQuery Color Picker Plugin - - - - - - - -
-

jPicker - A jQuery Color Picker Plugin.

-

- jPicker is a fast, lightweight jQuery plugin for including an advanced color picker in your web projects. It has been painstakenly ported from John Dyers' awesome work on his picker using the Prototype framework.

- jPicker supports all current browsers and has been extensively tested in Chrome, Firefox, IE5.5+, Safari, and Opera.

- If you are updating a current version, you MUST always use the CSS and image files from the download as there may have been changes.

- If you are moving from a V1.0.* version, you MUST read the docs below to implement some changes to the Color object returned by the callback functions.

- View John Dyer's prototype plugin here.

- View jPicker details a docs below.

- Check out the source from Google Code. -



-

jPicker Inline Example

-

- jPicker can be used inline by binding to any block level element.

- jPicker() -- no arguments -

-<script type="text/javascript">        
-  $(document).ready(
-    function()
-    {
-      $('#Inline').jPicker();
-    });
-</script>
-<div id="Inline"></div>
-
-



-

jPicker Expandable Example

-

- jPicker can also display only a small picker icon that opens a popup for editing.

- jPicker({ window: { expandable: true }}) -

-<script type="text/javascript">
-  $(document).ready(
-    function()
-    {
-      $('#Expandable').jPicker(
-        {
-          window:
-          {
-            expandable: true
-          }
-        });
-    });
-</script>
-<span id="Expandable"></span>
- -



-

jPicker Alpha Channel Example

-

- jPicker can also pick colors with alpha (transparency) values.

- jPicker({ window: { expandable: true }}) -

-<script type="text/javascript">        
-  $(document).ready(
-    function()
-    {
-      $('#Alpha').jPicker(
-        {
-          window:
-          {
-            expandable: true
-          },
-          color:
-          {
-            alphaSupport: true,
-            active: new $.jPicker.Color({ ahex: '99330099' })
-          }
-        });
-    });
-</script>
-<span id="Alpha"></span>
- -



-

jPicker Binded Example

-

- jPicker can also be binded to an input element.

- jPicker() -- no arguments -

-<script type="text/javascript">        
-  $(document).ready(
-    function()
-    {
-      $('#Binded').jPicker();
-    });
-</script>
-<input id="Binded" type="text" value="e2ddcf" />
- -



-

Multiple jPicker Binded Example

-

- jPicker can also be binded to multiple elements at a time.

- jPicker() -- no arguments -

-<script type="text/javascript">        
-  $(document).ready(
-    function()
-    {
-      $('.Multiple').jPicker();
-    });
-</script>
-<input class="Multiple" type="text" value="e2ddcf" /><br />
-<input class="Multiple" type="text" value="" /><br />
-<input class="Multiple" type="text" value="fda0f7" />
-
-
-
-



-

jPicker Callback Functions

-

- Register for callback function to have it interact with your page.

- jPicker([settings, [commitCallback, [liveCallback, [cancelCallback]]]]) -

-<script type="text/javascript">
-  $(document).ready(
-    function()
-    {
-      var LiveCallbackElement = $('#Live'),
-          LiveCallbackButton = $('#LiveButton');  // you don't want it searching this
-                                                  // on every live callback!!!
-      $('#Callbacks').jPicker(
-        {},
-        function(color, context)
-        {
-          var all = color.val('all');
-          alert('Color chosen - hex: ' + (all && '#' + all.hex || 'none') +
-            ' - alpha: ' + (all && all.a + '%' || 'none'));
-          $('#Commit').css(
-            {
-              backgroundColor: all && '#' + all.hex || 'transparent'
-            }); // prevent IE from throwing exception if hex is empty
-        },
-        function(color, context)
-        {
-          if (context == LiveCallbackButton.get(0)) alert('Color set from button');
-          var hex = color.val('hex');
-          LiveCallbackElement.css(
-            {
-              backgroundColor: hex && '#' + hex || 'transparent'
-            }); // prevent IE from throwing exception if hex is empty
-        },
-        function(color, context)
-        {
-          alert('"Cancel" Button Clicked');
-        });      
-      $('#LiveButton').click(
-        function()
-        {
-          $.jPicker.List[0].color.active.val('hex', 'e2ddcf', this);
-        });
-    });
-</script>
-<input id="Callbacks" type="text" value="e2ddcf" />
-<span id="Commit" style="background-color: #e2ddcf; display: block; --
-          float: left; height: 50px; margin: 10px; width: 50px;"> --
-          Commit</span>
-<span id="Live" style="display: block; float: left; height: 50px; --
-          margin: 10px; width: 50px;">Live</span>
-<input id="LiveButton" type="button" value="Set To #e2ddcf" />
-
- Commit - Live - -



-

jPicker Settings And Colors

-

- Use the "val" method on the active color for interaction with the picker.

- (jQuery).jPicker.List[index] -

-<script type="text/javascript">        
-  $(document).ready(
-    function()
-    {
-      $('#AlterColors').jPicker();
-      $('#GetActiveColor').click(
-        function()
-        {
-          alert($.jPicker.List[0].color.active.val('ahex'));
-        });
-      $('#GetRG').click(
-        function()
-        {
-          var rg=$.jPicker.List[0].color.active.val('rg');
-          alert('red: ' + rg.r + ', green: ' + rg.g);
-        });
-      $('#SetHue').click(
-        function()
-        {
-          $.jPicker.List[0].color.active.val('h', 133);
-        });
-      $('#SetValue').click(
-        function()
-        {
-          $.jPicker.List[0].color.active.val('v', 38);
-        });
-      $('#SetRG').click(
-        function()
-        {
-          $.jPicker.List[0].color.active.val('rg', { r: 213, g: 118 });
-        });
-    });
-</script>
-<input id="AlterColors" type="text" value="e2ddcf" /><br />
-<input id="GetActiveColor" type="button" value="Get Active Color" /><br />
-<input id="GetRG" type="button" value="Get Red/Green Value" /><br />
-<input id="SetHue" type="button" value="Set Hue To 133" /><br />
-<input id="SetValue" type="button" value="Set Value To 38" /><br />
-<input id="SetRG" type="button" value="Set Red/Green To 213, 118" />
-
-
-
-
-
- -



-

jPicker Core

-

- jPicker Core function - returns the jQuery object.

- jPicker([settings, [commitCallback, [liveCallback, [cancelCallback]]]]) -



-

Settings

-

- settings [object]: (with defaults)
-

-{
-  window: // used to define the position of the popup window
-          // only useful in binded mode
-  {
-    title: null, // any title for the jPicker window itself - displays
-                 // "Drag Markers To Pick A Color" if left null
-    position:
-    {
-      x: 'screenCenter', // acceptable values "left", "center", "right",
-                         // "screenCenter", or relative px value
-      y: 'top', // acceptable values "top", "bottom", "center", or relative px
-                // value
-    },
-    expandable: false, // default to large static picker - set to true to make an
-                       // expandable picker (small icon with popup) - set
-                       // automatically when binded to input element
-    liveUpdate: true, // set false if you want the user to click "OK" before the
-                      // binded input box updates values (always "true" for
-                      // expandable picker)
-    alphaSupport: false, // set to true to enable alpha picking
-    alphaPrecision: 0, // set decimal precision for alpha percentage display -
-                       // hex codes do not map directly to percentage integers -
-                       // range 0-2
-    updateInputColor: true // set to false to prevent binded input colors from
-                           // changing
-  },
-  color:
-  {
-    mode: 'h', // acceptable values "h" (hue), "s" (saturation), "v" (brightness),
-               // "r" (red), "g" (green), "b" (blue), "a" (alpha)
-    active: new $.jPicker.Color({ hex: 'ffc000' }), // accepts any declared
-               // jPicker.Color object or hex string WITH OR WITHOUT '#'
-    quickList: // this list of quick pick colors - override for a different list
-      [
-        new $.jPicker.Color({ h: 360, s: 33, v: 100}), // accepts any declared
-               // jPicker.Color object or hex string WITH OR WITHOUT '#'
-        new $.jPicker.Color({ h: 360, s: 66, v: 100}),
-        (...) // removed for brevity
-        new $.jPicker.Color({ h: 330, s: 100, v: 50}),
-        new $.jPicker.Color()
-      ]
-  },
-  images
-  {
-    clientPath: '/jPicker/images/', // Path to image files
-    colorMap: // colorMap size and arrow icon
-    {
-      width: 256, // Map width - don't override unless using a smaller image set
-      height: 256, // Map height - don't override unles using a smaller image set
-      arrow:
-      {
-        file: 'mappoint.gif', // Arrow icon image file
-        width: 15, // Arrow icon width
-        height: 15 // Arrow icon height
-      }
-    },
-    colorBar: // colorBar size and arrow icon
-    {
-      width: 20, // Bar width - don't override unless using a smaller image set
-      height: 256, // Bar height - don't override unless using a smaller image set
-      arrow:
-      {
-        file: 'rangearrows.gif', // Arrow icon image file
-        width: 40, // Arrow icon width
-        height: 9 // Arrow icon height
-      }
-    },
-    picker: // picker icon and size
-    {
-      file: 'picker.gif', // Picker icon image file
-      width: 25, // Picker width - don't override unless using a smaller image set
-      height: 24 // Picker height - don't override unless using a smaller image set
-    }
-  },
-  localization:
-  {
-    text:
-    {
-      title: 'Drag Markers To Pick A Color',
-      newColor: 'new',
-      currentColor: 'current',
-      ok: 'OK',
-      cancel: 'Cancel'
-    },
-    tooltips:
-    {
-      colors:
-      {
-        newColor: 'New Color - Press “OK” To Commit',
-        currentColor: 'Click To Revert To Original Color'
-      },
-      buttons:
-      {
-        ok: 'Commit To This Color Selection',
-        cancel: 'Cancel And Revert To Original Color'
-      },
-      hue:
-      {
-        radio: 'Set To “Hue” Color Mode',
-        textbox: 'Enter A “Hue” Value (0-360°)'
-      },
-      saturation:
-      {
-        radio: 'Set To “Saturation” Color Mode',
-        textbox: 'Enter A “Saturation” Value (0-100%)'
-      },
-      brightness:
-      {
-        radio: 'Set To “Brightness” Color Mode',
-        textbox: 'Enter A “Brightness” Value (0-100%)'
-      },
-      red:
-      {
-        radio: 'Set To “Red” Color Mode',
-        textbox: 'Enter A “Red” Value (0-255)'
-      },
-      green:
-      {
-        radio: 'Set To “Green” Color Mode',
-        textbox: 'Enter A “Green” Value (0-255)'
-      },
-      blue:
-      {
-        radio: 'Set To “Blue” Color Mode',
-        textbox: 'Enter A “Blue” Value (0-255)'
-      },
-      alpha:
-      {
-        radio: 'Set To “Alpha” Color Mode',
-        textbox: 'Enter A “Alpha” Value (0-100)'
-      },
-      hex:
-      {
-        textbox: 'Enter A “Hex” Color Value (#000000-#ffffff)',
-        alpha: 'Enter A “Alpha” Value (#00-#ff)'
-      }
-    }
-  }
-}
-



-

Callback Pattern

-

- function(jPicker.Color color, object context){...} -



-

jPicker List

-

- The list of active jPicker objects.

- (jQuery).jPicker.List[] -



-

jPicker Color Class

-

- Definition of the jPicker.Color class.
-

-(jQuery).jPicker.Color()
-(jQuery).jPicker.Color({ ahex: 'ffffffff' })
-(jQuery).jPicker.Color({ hex: 'ffffff', [a: (0-255)] })
-(jQuery).jPicker.Color({ r: (0-255), g: (0-255), b: (0-255), [a: (0-255)] })
-(jQuery).jPicker.Color({ h: (0-360), s: (0-100), v: (0-100), [a: (0-255)] })
-{
-  val: function(name, value, context),
-  bind: function(callback) where callback is function(color, [context]),
-  unbind: function(callback)
-}
-
-method "val" usage
-
-val(name) : get value
-
-  'r':     red         (0-255)
-  'g':     green       (0-255)
-  'b':     blue        (0-255)
-  'a':     alpha       (0-255)
-  'h':     hue         (0-360)
-  's':     saturation  (0-100)
-  'v':     value       (0-100)
-  'hex':   hex         (000000-ffffff)
-  'ahex':  ahex        (00000000-ffffffff)
-  'all':   all         all
-  
-  ex. Usage
-
-    val('r'):     (0-255)
-    val('h'):     (0-360)
-    val('hex'):   (000000-ffffff)
-    val('rg'):    { r: (0-255), g: (0-255) }
-    val('rgba'):  { r: (0-255), g: (0-255), b: (0-255), a: (0-255) }
-    val('hvga'):  { h: (0-255), v: (0-100), g: (0-255), a: (0-255) }
-    val('all'):   { r: (0-255), g: (0-255), b: (0-255), a: (0-255), h: (0-360) --
-                    s: (0-100), v: (0-100), hex: (000000-ffffff), --
-                    ahex: (00000000-ffffffff) }
-
-val(name, value, [context]) : set value
-
-  'r':     red         (0-255)
-  'g':     green       (0-255)
-  'b':     blue        (0-255)
-  'a':     alpha       (0-255)
-  'h':     hue         (0-360)
-  's':     saturation  (0-100)
-  'v':     value       (0-100)
-  'hex':   hex         (000000-ffffff)
-  'ahex':  ahex        (00000000-ffffffff)
-  
-  ex. Usage
-
-    val('r', (0-255)) || val('r', { r: (0-255) })
-    val('h', (0-360)) || val('h', { h: (0-360) })
-    val('hex', (000000-ffffff)) || val('hex', { hex: (000000-ffffff) })
-    val('rg', { r: (0-255), g: (0-255) })
-    val('rgba', { r: (-255), g: (0-255), b: (0-255), a: (0-255) })
-    val(null, { r: (0-255), g: (0-255) })
-    val('hvga'):  incorrect usage - cannot set hsv AND rgb as they will conflict
-



-

jPicker ColorMethod Utility Class

-

- Static methods for altering and retrieving different color spaces.
-

-(jQuery).jPicker.ColorMethods.hexToRgba:
-    function(hex)
-    returns { r: (0-255), g: (0-255), b: (0-255), a: (0-255) }
-    
-(jQuery).jPicker.ColorMethods.validateHex:
-    function(hex)
-    returns new hex string
-    
-(jQuery).jPicker.ColorMethods.rgbaToHex:
-    function({ r: (0-255), g: (0-255), b: (0-255), a: (0-255) })
-    returns hex string
-    
-(jQuery).jPicker.ColorMethods.intToHex:
-    function(number)
-    returns hex string
-    
-(jQuery).jPicker.ColorMethods.hexToInt:
-    function(hex)
-    return integer
-
-(jQuery).jPicker.ColorMethods.rgbToHsv:
-    function({ r: (0-255), g: (0-255), b: (0-255) })
-    returns { h: (0-360), s: (0-100), v: (0-100) }
-
-(jQuery).jPicker.ColorMethods.hsvToRgb:
-    function({ h: (0-360), s: (0-100), v: (0-100) })
-    returns { r: (0-255), g: (0-255), b: (0-255) }
-
-



-

Known Issues

-
    -
  • -

    Attaching multiple jPicker objects on a single page will slow performance.

    -
      -
    • jPicker creates a new instance of the picker for every element. Performance will suffer when binding dozens of instances.
    • -
    -
  • -

-

Coming Soon

-
    -
  • -
      -
    • Will consider supporting jQuery ThemeRoller CSS API for theming the UI if demand exists.
    • -
    -
  • -

-

Planned For Future Release

-
    -
  • - Move the jPicker object to a single instance that all selection instances point to. -
      -
    • This will result in much faster operation and initialization for pages with multiple pickers.
    • -
    -
  • -
  • Add activateCallback option for calling a callback function when the jPicker is activated or its binding is switched to a different picker element.
  • -

-

Change Log

-
    -
  • -

    V1.1.5:

    -
      -
    • Corrected Color object constructor to allow setting of the "alpha" value as per the documentation which previously didn't work.
    • -
    • Added support for translucency for quickList colors with checkered background - Only available if "alphaSupport" is enabled.
    • -
    • Restricted default color to "alpha" of 255 if "alphaSupport" is disabled - It will now assign an explicit alpha of 255 when disabled.
    • -
    • Added new setting variable "alphaPrecision" which indicates the number of decimal points to allow in the alpha percentage display - Now defaults to 0.
    • -
    -
  • -
  • -

    V1.1.4:

    -
      -
    • Changed "alpha" range from 0-100 to 0-255 to correct truncating and rounding errors caused by attempting to get an integer percentage that matches a hex value.
    • -
    • "alpha" percentage display will now show up to 1 decimal point for more accurate representation of "alpha" value.
    • -
    • Color object now accepts "alpha" values in a range of 0-255 and also returns the same when getting the "alpha" value. You will need to run ((alpha * 100) / 255) to retrieve a percentage value.
    • -
    • Reworked the table layout and labels to remove the need for the label to reference the radio input box. This reduces injected code and removes the need to generate unique ids on the radio buttons.
    • -
    • Transparent/invisible caret on NULL color is now corrected - uses the same caret color as a white color.
    • -
    • Setting a binded input value of "" or no value attribute will now create a NULL color on initialization instead of the settings default color.
    • -
    • Added a dynamic, invisible "iframe" behind a dialog picker in all browsers that fail jQuery.support.boxModel (currently IE <= 7 Quirks Mode). This prevents "select" box from showing through the picker.
    • -
    -
  • -
  • -

    V1.1.3:

    -
      -
    • Now adding popup color pickers to document.body instead of inline with the popup control. This corrects issues with the picker not showing beyond a relative container scope.
    • -
    • No longer need to hide popup icon in Internet Explorer for picker elements lower in the DOM than the currently active one since the picker itself is attached to document.body (it is always higher in the DOM now).
    • -
    • Popup pickers are now bring-to-front selectable. Clicking on the picker will bring it above all other pickers on the page instead of having to drag one out from underneath another.
    • -
    • Corrected jPicker.List/setTimeout bug which allowed an instance to bind to the List in an order other than the order the initialization function was called.
    • -
    • Added a updateInputColor option (default true) to allow for a binded input field that does not automatically update its background/text color.
    • -
    -
    -
  • -
  • -

    V1.1.2:

    -
      -
    • Reworked the find methods and contexts for element searches. Now using ":first" instead of ".eq(0)" to take advantage of early out searches. Much faster initialization of the picker, on the order of 6 times.
    • -
    • Now using setTimeout for calling visual updates. Dramatically improved marker dragging in all browsers. Reduces blocking as re-rendering is internal to the browser and independent of the other javascript still in progress.
    • -
    • Marker updates can now cancel a previous valueChanged event when a new mouseMove event comes in. IE8 marker dragging is still slower, much over 5 times faster than it was.
    • -
    • Reworked entire quickPick list creation. It now adds up source code and does a single "html" method instead of multiple "append" methods. This is a large part of the speed increase on initialization.
    • -
    • The vast majority of all running scripts on both initialization and dragging is now occupied altering the style rules and finding elements (init only) instead of jPicker code.
    • -
    • All methods previously called with global context now use the "call" method for using the context of the class running the method. "this" in a callback is now the DOM node (jQuery style) and jPicker instead of "window".
    • -
    • Added "effects" section of window settings to allow different show/hide effects and durations.
    • -
    • Removed change log and read me from the full source code to separate files (ChangeLog.txt and ReadMe.txt) and an HTML demonstration/documentation page (Example.txt).
    • -
    -
    -
  • -
  • -

    V1.1.1:

    -
      -
    • Correct IE exception caused by attempting to set "#transparent" to CSS background-color.
    • -
    -
    -
  • -
  • -

    V1.1.0:

    -
      -
    • Reworked nearly the entire plugin including the internal and external event model, bindings, DOM searches, classes, and overall presentation.
    • -
    • The Color object now supports a changed event that you can bind to (or just bind to the picker events still included).
    • -
    • Event order has been reversed, instead of an change event on the map/bar/text fields updating the display, they now update the Color object which then fires the events that update the display.
    • -
    • alphaSupport re-implemented by request - default behavior is off.
    • -
    • Hex code now only 6 characters again.
    • -
    • Color object can now have its value changed from code, using the "val" method, and it will fire all events necessary to update the display.
    • -
    • Removed all "get_*" methods from the color object, instead opting for a single "val" method for getting and setting, more in line with familiar jQuery methods.
    • -
    • Better rendering for all IE versions in Quirks mode.
    • -
    -
    -
  • -
  • -

    V1.0.13:

    -
      -
    • Updated transparency algorithm for red/green/blue color modes. The algorithm from John Dyers' color picker was close but incorrect. Bar colors are now pixel perfect with the new algorithm.
    • -
    • Changed from using "background-position" on the color maps to an element of full height using the "top" attribute for image-map location using "overflow: hidden" to hide overdraw.
    • -
    • IE7/8 ignores opacity on elements taller than 4096px. Image maps therefore no longer include a blank first map so the Bar is just under 4096. Blank is now accomplished by setting the "top" setting to below the map display.
    • -
    • New colorBar picker image that does not draw outside of the element since the elements now hide overdraw.
    • -
    • Added IE5.5/6 support for the picker. This is why it now uses maps of full height and the "top" attribute for map locations.
    • -
    • Moved the images in the maps to 4 pixels apart from each other. IE7/8 change the first pixel of the bottom-border of 2px to partially transparent showing a portion of a different color map without this.
    • -
    -
    -
  • -
  • -

    V1.0.12:

    -
      -
    • Added minified CSS file.
    • -
    • Added IE7/8 Quirks Mode support.
    • -
    • Added configurable string constants for all text and tooltips. You can now change the default values for different languages.
    • -
    • Privatized the RGBA values in the Color object for better NULL handling. YOU MUST USE THE NEW GET FUNCTIONS TO ACCESS THE COLOR PROPERTIES.
    • -
    • Better NULL color handling and an additional "No Color Selected" quick pick color.
    • -
    • More consistent behavior across multiple versions of browsers.
    • -
    • Added alpha response to the binded color picker icon.
    • -
    • Removed "alphaSupport" variable. It is now always supported.
    • -
    -
    -
  • -
  • -

    V1.0.11b:

    -
      -
    • Corrected NULL behavior in IE. jQuery was getting an exception when attempting to assign a backgroundColor style of '#'. Now assigns 'transparent' if color is NULL.
    • -
    • Can now create new Color object WITH OR WITHOUT the '#' prefix.
    • -
    -
    -
  • -
  • -

    V1.0.11:

    -
      -
    • Added ability for NULL colors (delete the hex value). Color will be returned as color.hex == ''. Can set the default color to an empty hex string as well.
    • -
    • cancelCallback now returns the original color for use in programming responses.
    • -
    -
    -
  • -
  • -

    V1.0.10:

    -
      -
    • Corrected table layout and tweaked display for more consisent presentation. Nice catch from Jonathan Pasquier.
    • -
    -
    -
  • -
  • -

    V1.0.9:

    -
      -
    • Added optional title variable for each jPicker window.
    • -
    -
    -
  • -
  • -

    V1.0.8:

    -
      -
    • Moved all images into a few sprites - now using backgroundPosition to change color maps and bars instead of changing the image - this should be faster to download and run.
    • -
    -
    -
  • -
  • -

    V1.0.7:

    -
      -
    • RENAMED CSS FILE TO INCLUDE VERSION NUMBER!!! YOU MUST USE THIS VERSIONED CSS FILE!!! There will be no need to do your own CSS version number increments from now on.
    • -
    • Added opacity feedback to color preview boxes.
    • -
    • Removed reliance on "id" value of containing object. Subobjects are now found by class and container instead of id's. This drastically reduces injected code.
    • -
    • Removed (jQuery).jPicker.getListElementById(id) function since "id" is no longer incorporated or required.
    • -
    -
    -
  • -
  • -

    V1.0.6:

    -
      -
    • Corrected picker bugs introduced with 1.0.5.
    • -
    • Removed alpha slider bar until activated - default behavior for alpha is now OFF.
    • -
    • Corrected Color constructor bug not allowing values of 0 for initial value (it was evaluating false and missing the init code - Thanks Pavol).
    • -
    • Removed title tags (tooltips) from color maps and bars - They get in the way in some browsers (e.g. IE - dragging marker does NOT prevent or hide the tooltip).
    • -
    • THERE WERE CSS FILE CHANGES WITH THIS UPDATE!!! IF YOU USE NEVER-EXPIRE HEADERS, YOU WILL NEED TO INCREMENT YOUR CSS FILE VERSION NUMBER!!!
    • -
    -
    -
  • -
  • -

    V1.0.5:

    -
      -
    • Added opacity support to picker and color/callback methods. New property "a" (alpha - range from 0-100) in all color objects now - defaults to 100% opaque. (Thank you Pavol)
    • -
    • Added title attributes to input elements - gives short tooltip directions on what button or field does.
    • -
    • Commit callback used to fire on control initialization (twice actually) - This has been corrected, it does not fire on initialization.
    • -
    • THERE WERE CSS FILE CHANGES WITH THIS UPDATE!!! IF YOU USE NEVER-EXPIRE HEADERS, YOU WILL NEED TO INCREMENT YOUR CSS FILE VERSION NUMBER!!!
    • -
    -
    -
  • -
  • -

    V1.0.4:

    -
      -
    • Added ability for smaller picker icon with expandable window on any DOM element (not just input).
    • -
    • "draggable" property renamed to "expandable" and its scope increased to create small picker icon or large static picker.
    • -
    -
    -
  • -
  • -

    V1.0.3

    -
      -
    • Added cancelCallback function for registering an external function when user clicks cancel button. (Thank you Jeff and Pavol)
    • -
    -
    -
  • -
  • -

    V1.0.2

    -
      -
    • Random bug fixes - speed concerns.
    • -
    -
    -
  • -
  • -

    V1.0.1

    -
      -
    • Corrected closure based memeory leak - there may be others?
    • -
    -
    -
  • -
  • -

    V1.0.0

    -
      -
    • First Release.
    • -
    -
    -
  • -
-
- - \ No newline at end of file diff --git a/htdocs/includes/odtphp/Segment.php b/htdocs/includes/odtphp/Segment.php index 928cefcd1bf..85789ee8017 100644 --- a/htdocs/includes/odtphp/Segment.php +++ b/htdocs/includes/odtphp/Segment.php @@ -114,13 +114,13 @@ class Segment implements IteratorAggregate, Countable // Remove the IF tag $this->xml = str_replace('[!-- IF '.$key.' --]', '', $this->xml); // Remove everything between the ELSE tag (if it exists) and the ENDIF tag - $reg = '@(\[!--\sELSE\s' . $key . '\s--\](.*))?\[!--\sENDIF\s' . $key . '\s--\]@smU'; // U modifier = all quantifiers are non-greedy + $reg = '@(\[!--\sELSE\s' . preg_quote($key, '@') . '\s--\](.*))?\[!--\sENDIF\s' . preg_quote($key, '@') . '\s--\]@smU'; // U modifier = all quantifiers are non-greedy $this->xml = preg_replace($reg, '', $this->xml); } // Else the value is false, then two cases: no ELSE and we're done, or there is at least one place where there is an ELSE clause, then we replace it else { // Find all conditional blocks for this variable: from IF to ELSE and to ENDIF - $reg = '@\[!--\sIF\s' . $key . '\s--\](.*)(\[!--\sELSE\s' . $key . '\s--\](.*))?\[!--\sENDIF\s' . $key . '\s--\]@smU'; // U modifier = all quantifiers are non-greedy + $reg = '@\[!--\sIF\s' . preg_quote($key, '@') . '\s--\](.*)(\[!--\sELSE\s' . preg_quote($key, '@') . '\s--\](.*))?\[!--\sENDIF\s' . preg_quote($key, '@') . '\s--\]@smU'; // U modifier = all quantifiers are non-greedy preg_match_all($reg, $this->xml, $matches, PREG_SET_ORDER); foreach ($matches as $match) { // For each match, if there is an ELSE clause, we replace the whole block by the value in the ELSE clause if (!empty($match[3])) $this->xml = str_replace($match[0], $match[3], $this->xml); diff --git a/htdocs/includes/odtphp/odf.php b/htdocs/includes/odtphp/odf.php index 42fc9cd2a1a..0fa6d65e907 100644 --- a/htdocs/includes/odtphp/odf.php +++ b/htdocs/includes/odtphp/odf.php @@ -562,7 +562,7 @@ IMG; else return; // Search all tags found into condition to complete $this->vars, so we will proceed all tests even if not defined - $reg='@\[!--\sIF\s([{}a-zA-Z0-9\.\,_]+)\s--\]@smU'; + $reg='@\[!--\sIF\s([\[\]{}a-zA-Z0-9\.\,_]+)\s--\]@smU'; $matches = array(); preg_match_all($reg, $xml, $matches, PREG_SET_ORDER); @@ -584,7 +584,7 @@ IMG; // Remove the IF tag $xml = str_replace('[!-- IF '.$key.' --]', '', $xml); // Remove everything between the ELSE tag (if it exists) and the ENDIF tag - $reg = '@(\[!--\sELSE\s' . $key . '\s--\](.*))?\[!--\sENDIF\s' . $key . '\s--\]@smU'; // U modifier = all quantifiers are non-greedy + $reg = '@(\[!--\sELSE\s' . preg_quote($key, '@') . '\s--\](.*))?\[!--\sENDIF\s' . preg_quote($key, '@') . '\s--\]@smU'; // U modifier = all quantifiers are non-greedy $xml = preg_replace($reg, '', $xml); /*if ($sav != $xml) { @@ -597,7 +597,7 @@ IMG; //dol_syslog("Var ".$key." is not defined, we remove the IF, ELSE and ENDIF "); //$sav=$xml; // Find all conditional blocks for this variable: from IF to ELSE and to ENDIF - $reg = '@\[!--\sIF\s' . $key . '\s--\](.*)(\[!--\sELSE\s' . $key . '\s--\](.*))?\[!--\sENDIF\s' . $key . '\s--\]@smU'; // U modifier = all quantifiers are non-greedy + $reg = '@\[!--\sIF\s' . preg_quote($key, '@') . '\s--\](.*)(\[!--\sELSE\s' . preg_quote($key, '@') . '\s--\](.*))?\[!--\sENDIF\s' . preg_quote($key, '@') . '\s--\]@smU'; // U modifier = all quantifiers are non-greedy preg_match_all($reg, $xml, $matches, PREG_SET_ORDER); foreach ($matches as $match) { // For each match, if there is an ELSE clause, we replace the whole block by the value in the ELSE clause if (!empty($match[3])) $xml = str_replace($match[0], $match[3], $xml); @@ -740,7 +740,7 @@ IMG; // Add the image to the Manifest (which maintains a list of images, necessary to avoid "Corrupt ODT file. Repair?" when opening the file with LibreOffice) $this->addImageToManifest($imageValue); } - if (! $this->file->addFromString('./META-INF/manifest.xml', $this->manifestXml)) { + if (! $this->file->addFromString('META-INF/manifest.xml', $this->manifestXml)) { throw new OdfException('Error during file export: manifest.xml'); } $this->file->close(); @@ -843,7 +843,7 @@ IMG; // using windows libreoffice that must be in path // using linux/mac libreoffice that must be in path // Note PHP Config "fastcgi.impersonate=0" must set to 0 - Default is 1 - $command ='soffice --headless -env:UserInstallation=file:\''.$conf->user->dir_temp.'/odtaspdf\' --convert-to pdf --outdir '. escapeshellarg(dirname($name)). " ".escapeshellarg($name); + $command ='soffice --headless -env:UserInstallation=file:'.(getDolGlobalString('MAIN_ODT_ADD_SLASH_FOR_WINDOWS') ? '///' : '').'\''.$conf->user->dir_temp.'/odtaspdf\' --convert-to pdf --outdir '. escapeshellarg(dirname($name)). " ".escapeshellarg($name); } elseif (preg_match('/unoconv/', getDolGlobalString('MAIN_ODT_AS_PDF'))) { // If issue with unoconv, see https://github.com/dagwieers/unoconv/issues/87 @@ -928,7 +928,7 @@ IMG; if (!empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $name=preg_replace('/\.od(x|t)/i', '', $name); header('Content-type: application/pdf'); - header('Content-Disposition: attachment; filename="'.$name.'.pdf"'); + header('Content-Disposition: attachment; filename="'.basename($name).'.pdf"'); readfile($name.".pdf"); } } diff --git a/htdocs/includes/tecnickcom/tcpdf/include/barcodes/pdf417.php b/htdocs/includes/tecnickcom/tcpdf/include/barcodes/pdf417.php index 3b1774eaae4..9a58a21f673 100644 --- a/htdocs/includes/tecnickcom/tcpdf/include/barcodes/pdf417.php +++ b/htdocs/includes/tecnickcom/tcpdf/include/barcodes/pdf417.php @@ -878,7 +878,7 @@ class PDF417 { $txtarr = array(); // array of characters and sub-mode switching characters $codelen = strlen($code); for ($i = 0; $i < $codelen; ++$i) { - $chval = ord($code{$i}); + $chval = ord($code[$i]); if (($k = array_search($chval, $this->textsubmodes[$submode])) !== false) { // we are on the same sub-mode $txtarr[] = $k; @@ -888,7 +888,7 @@ class PDF417 { // search new sub-mode if (($s != $submode) AND (($k = array_search($chval, $this->textsubmodes[$s])) !== false)) { // $s is the new submode - if (((($i + 1) == $codelen) OR ((($i + 1) < $codelen) AND (array_search(ord($code{($i + 1)}), $this->textsubmodes[$submode]) !== false))) AND (($s == 3) OR (($s == 0) AND ($submode == 1)))) { + if (((($i + 1) == $codelen) OR ((($i + 1) < $codelen) AND (array_search(ord($code[($i + 1)]), $this->textsubmodes[$submode]) !== false))) AND (($s == 3) OR (($s == 0) AND ($submode == 1)))) { // shift (temporary change only for this char) if ($s == 3) { // shift to puntuaction @@ -952,7 +952,7 @@ class PDF417 { $cw = array_merge($cw, $cw6); } else { for ($i = 0; $i < $sublen; ++$i) { - $cw[] = ord($code{$i}); + $cw[] = ord($code[$i]); } } $code = $rest; diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index 09aa559393f..17c054182ed 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -97,7 +97,7 @@ if (@file_exists($forcedfile)) { session_start(); // To be able to keep info into session (used for not losing pass during navigation. pass must not transit through parameters) -pHeader($langs->trans("ConfigurationFile"), "step1", "set", "", (empty($force_dolibarr_js_JQUERY) ? '' : $force_dolibarr_js_JQUERY.'/'), 'main-inside-bis'); +pHeader($langs->trans("DolibarrSetup").' - '.$langs->trans("ConfigurationFile"), "step1", "set", "", (empty($force_dolibarr_js_JQUERY) ? '' : $force_dolibarr_js_JQUERY.'/'), 'main-inside-bis'); // Test if we can run a first install process if (!is_writable($conffile)) { diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index 46111f46912..bc8ffafb9d2 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -592,9 +592,11 @@ function pHeader($subtitle, $next, $action = 'set', $param = '', $forcejqueryurl print DOL_VERSION; print '

'; - print ''.$langs->trans("DolibarrSetup"); + print ''; if ($subtitle) { - print ' - '.$subtitle; + print $subtitle; + } else { + print $langs->trans("DolibarrSetup"); } print ''."\n"; diff --git a/htdocs/install/mysql/data/llx_c_action_trigger.sql b/htdocs/install/mysql/data/llx_c_action_trigger.sql index da8d3d8b492..a6c2b504489 100644 --- a/htdocs/install/mysql/data/llx_c_action_trigger.sql +++ b/htdocs/install/mysql/data/llx_c_action_trigger.sql @@ -108,7 +108,7 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MEMBER_DELETE','Member deleted','Executed when a member is deleted','member',26); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('MEMBER_EXCLUDE','Member excluded','Executed when a member is excluded','member',27); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_VALIDATE','Intervention validated','Executed when a intervention is validated','ficheinter',30); -insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_MODIFY','Intervention modify','Executed when a intervention is modify','ficheinter',30); +insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_MODIFY','Intervention modified','Executed when a intervention is modify','ficheinter',30); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_CLASSIFY_BILLED','Intervention set billed','Executed when a intervention is set to billed (when option FICHINTER_CLASSIFY_BILLED is set)','ficheinter',32); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_CLASSIFY_UNBILLED','Intervention set unbilled','Executed when a intervention is set to unbilled (when option FICHINTER_CLASSIFY_BILLED is set)','ficheinter',33); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_REOPEN','Intervention opened','Executed when a intervention is re-opened','ficheinter',34); @@ -142,7 +142,6 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('USER_DELETE','User update','Executed when a user is deleted','user',303); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('USER_NEW_PASSWORD','User update','Executed when a user is change password','user',304); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('USER_ENABLEDISABLE','User update','Executed when a user is enable or disable','user',305); -insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('FICHINTER_MODIFY','Intervention modified','Executed when a intervention is modified','ficheinter',19); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_VALIDATE','BOM validated','Executed when a BOM is validated','bom',650); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_UNVALIDATE','BOM unvalidated','Executed when a BOM is unvalidated','bom',651); insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('BOM_CLOSE','BOM disabled','Executed when a BOM is disabled','bom',652); diff --git a/htdocs/install/mysql/data/llx_c_type_contact.sql b/htdocs/install/mysql/data/llx_c_type_contact.sql index 07178dacdcd..7271ba2d38b 100644 --- a/htdocs/install/mysql/data/llx_c_type_contact.sql +++ b/htdocs/install/mysql/data/llx_c_type_contact.sql @@ -120,4 +120,4 @@ insert into llx_c_type_contact (element, source, code, libelle, active ) values insert into llx_c_type_contact (element, source, code, libelle, active ) values ('conferenceorbooth', 'external', 'RESPONSIBLE', 'Booth responsible', 1); -- Thirdparty -insert into llx_c_type_contact (element, source, code, libelle, active ) values ('societe', 'internal', 'SALESREPTHIRD', 'Sales Representative', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('societe', 'external', 'SALESREPTHIRD', 'Sales Representative', 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 e89b5ade7ba..d0636d8afa0 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 @@ -370,6 +370,7 @@ ALTER TABLE llx_actioncomm_reminder ADD UNIQUE uk_actioncomm_reminder_unique (fk ALTER TABLE llx_actioncomm_reminder ADD INDEX idx_actioncomm_reminder_status (status); ALTER TABLE llx_inventorydet ADD COLUMN fk_warehouse integer DEFAULT 0; +ALTER TABLE llx_inventorydet ADD COLUMN batch varchar(128) DEFAULT NULL; ALTER TABLE llx_inventorydet ADD UNIQUE uk_inventorydet(fk_inventory, fk_warehouse, fk_product, batch); ALTER TABLE llx_commandedet ADD COLUMN ref_ext varchar(255) AFTER label; diff --git a/htdocs/install/mysql/migration/17.0.0-18.0.0.sql b/htdocs/install/mysql/migration/17.0.0-18.0.0.sql index f7ee869690e..97c755ab299 100644 --- a/htdocs/install/mysql/migration/17.0.0-18.0.0.sql +++ b/htdocs/install/mysql/migration/17.0.0-18.0.0.sql @@ -571,3 +571,6 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value UPDATE llx_menu SET url = '/fourn/paiement/list.php?mainmenu=billing&leftmenu=suppliers_bills_payment' WHERE leftmenu = 'suppliers_bills_payment'; UPDATE llx_paiement SET ref = rowid WHERE ref IS NULL OR ref = ''; + +-- rename const WORKFLOW_EXPEDITION_CLASSIFY_CLOSED_INVOICE to WORKFLOW_RECEPTION_CLASSIFY_CLOSED_INVOICE +UPDATE llx_const SET name = 'WORKFLOW_RECEPTION_CLASSIFY_CLOSED_INVOICE' WHERE name = 'WORKFLOW_EXPEDITION_CLASSIFY_CLOSED_INVOICE'; diff --git a/htdocs/install/mysql/migration/18.0.0-19.0.0.sql b/htdocs/install/mysql/migration/18.0.0-19.0.0.sql index 75a150fc262..aa869240a42 100644 --- a/htdocs/install/mysql/migration/18.0.0-19.0.0.sql +++ b/htdocs/install/mysql/migration/18.0.0-19.0.0.sql @@ -219,4 +219,6 @@ UPDATE llx_c_type_contact SET element = 'stocktransfer' WHERE element = 'StockTr UPDATE llx_c_units SET scale = 1 WHERE code = 'S'; -UPDATE llx_c_tva SET taux = 3, note = 'Νήσων υπερμειωμένος Φ.Π.Α.' WHERE fk_pays = 102 AND taux = 16; +UPDATE llx_c_tva SET taux = 3 WHERE fk_pays = 102 AND taux = 16; + +UPDATE llx_menu SET url = CONCAT(url, '&mode=init') WHERE fk_mainmenu = 'ticket' AND titre = 'NewTicket' AND url LIKE '/ticket/card.php?action=create%' AND url NOT LIKE '%mode=init%'; diff --git a/htdocs/install/mysql/migration/19.0.0-20.0.0.sql b/htdocs/install/mysql/migration/19.0.0-20.0.0.sql index f0696fba61d..ec3053a6a40 100644 --- a/htdocs/install/mysql/migration/19.0.0-20.0.0.sql +++ b/htdocs/install/mysql/migration/19.0.0-20.0.0.sql @@ -56,6 +56,9 @@ DELETE FROM llx_boxes_def WHERE file = 'box_members.php'; UPDATE llx_c_units SET scale = 1 WHERE code = 'S'; +UPDATE llx_menu SET url = CONCAT(url, '&mode=init') WHERE fk_mainmenu = 'ticket' AND titre = 'NewTicket' AND url LIKE '/ticket/card.php?action=create%' AND url NOT LIKE '%mode=init%'; + + -- Use unique keys for extrafields ALTER TABLE llx_actioncomm_extrafields DROP INDEX idx_actioncomm_extrafields; ALTER TABLE llx_actioncomm_extrafields ADD UNIQUE INDEX uk_actioncomm_extrafields (fk_object); @@ -265,6 +268,8 @@ ALTER TABLE llx_ticket ADD COLUMN origin_references text DEFAULT NULL; ALTER TABLE llx_expensereport MODIFY COLUMN model_pdf varchar(255) DEFAULT NULL; ALTER TABLE llx_fichinter_rec MODIFY COLUMN modelpdf varchar(255) DEFAULT NULL; +ALTER TABLE llx_hrm_evaluation MODIFY COLUMN modelpdf varchar(255) DEFAULT NULL; + ALTER TABLE llx_societe ADD COLUMN geolat double(24,8) DEFAULT NULL; ALTER TABLE llx_societe ADD COLUMN geolong double(24,8) DEFAULT NULL; ALTER TABLE llx_societe ADD COLUMN geopoint point DEFAULT NULL; @@ -344,7 +349,8 @@ ALTER TABLE llx_societe_commerciaux ADD COLUMN fk_c_type_contact_code varchar(32 -- VPGSQL8.2 DROP INDEX uk_societe_commerciaux; ALTER TABLE llx_societe_commerciaux ADD UNIQUE INDEX uk_societe_commerciaux_c_type_contact (fk_soc, fk_user, fk_c_type_contact_code); ALTER TABLE llx_c_type_contact ADD INDEX idx_c_type_contact_code (code); -ALTER TABLE llx_societe_commerciaux ADD CONSTRAINT fk_societe_commerciaux_fk_c_type_contact_code FOREIGN KEY (fk_c_type_contact_code) REFERENCES llx_c_type_contact(code); +--Removed, not unique. ALTER TABLE llx_societe_commerciaux ADD CONSTRAINT fk_societe_commerciaux_fk_c_type_contact_code FOREIGN KEY (fk_c_type_contact_code) REFERENCES llx_c_type_contact(code); +ALTER TABLE llx_societe_commerciaux DROP FOREIGN KEY fk_societe_commerciaux_fk_c_type_contact_code; ALTER TABLE llx_societe_commerciaux ADD CONSTRAINT fk_societe_commerciaux_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe(rowid); ALTER TABLE llx_societe_commerciaux ADD CONSTRAINT fk_societe_commerciaux_fk_user FOREIGN KEY (fk_user) REFERENCES llx_user(rowid); @@ -415,3 +421,7 @@ UPDATE llx_c_units SET short_label = 'mn' WHERE short_label = 'i' AND code = 'MI ALTER TABLE llx_c_holiday_types DROP INDEX uk_c_holiday_types; ALTER TABLE llx_c_holiday_types ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER rowid; ALTER TABLE llx_c_holiday_types ADD UNIQUE INDEX uk_c_holiday_types (entity, code); + + +-- Add ref_ext to asset_model to use various CommonOjbect methods +ALTER TABLE llx_asset_model ADD COLUMN ref_ext varchar(255) AFTER ref; diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index 9b4d9c7e17a..fb7a53a16a9 100644 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -313,7 +313,7 @@ drop table tmp_societe_double; -- 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); +create table tmp_accounting_account_double as (select account_number, fk_pcg_version, entity, 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, entity having count(rowid) >= 2); --select * from tmp_accounting_account_double; delete from llx_accounting_account where (rowid) in (select max_rowid from tmp_accounting_account_double); --update to avoid duplicate, delete to delete drop table tmp_accounting_account_double; @@ -422,7 +422,7 @@ drop table tmp_c_shipment_mode; -- Restore id of user on link for payment of expense report drop table tmp_bank_url_expense_user; -create table tmp_bank_url_expense_user (select e.fk_user_author, bu2.fk_bank from llx_expensereport as e, llx_bank_url as bu2 where bu2.url_id = e.rowid and bu2.type = 'payment_expensereport'); +create table tmp_bank_url_expense_user as (select e.fk_user_author, bu2.fk_bank from llx_expensereport as e, llx_bank_url as bu2 where bu2.url_id = e.rowid and bu2.type = 'payment_expensereport'); update llx_bank_url as bu set url_id = (select e.fk_user_author from tmp_bank_url_expense_user as e where e.fk_bank = bu.fk_bank) where (bu.url_id = 0 OR bu.url_id IS NULL) and bu.type ='user'; drop table tmp_bank_url_expense_user; @@ -680,3 +680,6 @@ alter table llx_product_attribute_combination_price_level drop index fk_product_ alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_62; alter table llx_product_attribute_combination_price_level drop index fk_product_attribute_combinati_63; ALTER TABLE llx_product_attribute_combination_price_level ADD UNIQUE INDEX uk_prod_att_comb_price_level(fk_product_attribute_combination, fk_price_level); + +-- delete a constant that should not be set +DELETE FROM llx_const WHERE name = 'INVOICE_USE_RETAINED_WARRANTY' AND value = -1; diff --git a/htdocs/install/mysql/tables/llx_asset_model-asset.sql b/htdocs/install/mysql/tables/llx_asset_model-asset.sql index 8c285515986..9a264204e58 100644 --- a/htdocs/install/mysql/tables/llx_asset_model-asset.sql +++ b/htdocs/install/mysql/tables/llx_asset_model-asset.sql @@ -25,6 +25,7 @@ CREATE TABLE llx_asset_model( rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL, entity integer DEFAULT 1 NOT NULL, -- multi company id ref varchar(128) NOT NULL, + ref_ext varchar(255), label varchar(255) NOT NULL, asset_type smallint NOT NULL, fk_pays integer DEFAULT 0, diff --git a/htdocs/install/mysql/tables/llx_bookcal_availabilities-bookcal.key.sql b/htdocs/install/mysql/tables/llx_bookcal_availabilities-bookcal.key.sql index 95a0ae1a4a4..79a7fe83472 100644 --- a/htdocs/install/mysql/tables/llx_bookcal_availabilities-bookcal.key.sql +++ b/htdocs/install/mysql/tables/llx_bookcal_availabilities-bookcal.key.sql @@ -16,7 +16,6 @@ -- BEGIN MODULEBUILDER INDEXES ALTER TABLE llx_bookcal_availabilities ADD INDEX idx_bookcal_availabilities_rowid (rowid); -ALTER TABLE llx_bookcal_availabilities ADD INDEX idx_bookcal_availabilities_ref (ref); ALTER TABLE llx_bookcal_availabilities ADD CONSTRAINT llx_bookcal_availabilities_fk_user_creat FOREIGN KEY (fk_user_creat) REFERENCES llx_user(rowid); ALTER TABLE llx_bookcal_availabilities ADD INDEX idx_bookcal_availabilities_status (status); ALTER TABLE llx_bookcal_availabilities ADD INDEX idx_bookcal_availabilities_type (type); @@ -27,4 +26,3 @@ ALTER TABLE llx_bookcal_availabilities ADD CONSTRAINT llx_bookcal_availabilities --ALTER TABLE llx_bookcal_availabilities ADD UNIQUE INDEX uk_bookcal_availabilities_fieldxy(fieldx, fieldy); --ALTER TABLE llx_bookcal_availabilities ADD CONSTRAINT llx_bookcal_availabilities_fk_field FOREIGN KEY (fk_field) REFERENCES llx_bookcal_myotherobject(rowid); - diff --git a/htdocs/install/mysql/tables/llx_don-don.key.sql b/htdocs/install/mysql/tables/llx_don-don.key.sql index 2aef1dbd5be..0f1c06133c1 100644 --- a/htdocs/install/mysql/tables/llx_don-don.key.sql +++ b/htdocs/install/mysql/tables/llx_don-don.key.sql @@ -20,7 +20,7 @@ ALTER TABLE llx_don ADD UNIQUE INDEX idx_don_uk_ref (ref, entity); ALTER TABLE llx_don ADD INDEX idx_don_fk_soc (fk_soc); -ALTER TABLE llx_don ADD INDEX idx_don_fk_project (fk_project); +ALTER TABLE llx_don ADD INDEX idx_don_fk_project (fk_projet); ALTER TABLE llx_don ADD INDEX idx_don_fk_user_author (fk_user_author); ALTER TABLE llx_don ADD INDEX idx_don_fk_user_valid (fk_user_valid); diff --git a/htdocs/install/mysql/tables/llx_mrp_mo-mrp.key.sql b/htdocs/install/mysql/tables/llx_mrp_mo-mrp.key.sql index 0bf20b1b48e..6f8aead90c8 100644 --- a/htdocs/install/mysql/tables/llx_mrp_mo-mrp.key.sql +++ b/htdocs/install/mysql/tables/llx_mrp_mo-mrp.key.sql @@ -1,4 +1,4 @@ --- Copyright (C) ---Put here your own copyright and developer email--- +-- Copyright (C) 2024 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 diff --git a/htdocs/install/mysql/tables/llx_mrp_mo_extrafields-mrp.key.sql b/htdocs/install/mysql/tables/llx_mrp_mo_extrafields-mrp.key.sql index cad0d9ffd79..da8e70b6375 100644 --- a/htdocs/install/mysql/tables/llx_mrp_mo_extrafields-mrp.key.sql +++ b/htdocs/install/mysql/tables/llx_mrp_mo_extrafields-mrp.key.sql @@ -1,4 +1,4 @@ --- Copyright (C) 2019 Alicealalalamdskfldmjgdfgdfhfghgfh Adminson +-- Copyright (C) 2024 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 diff --git a/htdocs/install/mysql/tables/llx_mrp_mo_extrafields-mrp.sql b/htdocs/install/mysql/tables/llx_mrp_mo_extrafields-mrp.sql index 96dc828134e..bcabab0d617 100644 --- a/htdocs/install/mysql/tables/llx_mrp_mo_extrafields-mrp.sql +++ b/htdocs/install/mysql/tables/llx_mrp_mo_extrafields-mrp.sql @@ -1,4 +1,4 @@ --- Copyright (C) 2019 Alicealalalamdskfldmjgdfgdfhfghgfh Adminson +-- 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 diff --git a/htdocs/install/mysql/tables/llx_societe.sql b/htdocs/install/mysql/tables/llx_societe.sql index cf6275e48c4..50b454fa281 100644 --- a/htdocs/install/mysql/tables/llx_societe.sql +++ b/htdocs/install/mysql/tables/llx_societe.sql @@ -31,10 +31,10 @@ create table llx_societe ref_ext varchar(255), -- reference into an external system (not used by dolibarr) - statut tinyint DEFAULT 0, -- statut + statut tinyint DEFAULT 0, -- statut (deprecated) parent integer, - status tinyint DEFAULT 1, -- cessation d'activité ( 1 -- en activité, 0 -- cessation d'activité) + status tinyint DEFAULT 1, -- active or not ( 1 -- active, 0 -- closed or not open) code_client varchar(24), -- code client code_fournisseur varchar(24), -- code fournisseur diff --git a/htdocs/install/mysql/tables/llx_societe_commerciaux.key.sql b/htdocs/install/mysql/tables/llx_societe_commerciaux.key.sql index 1672ff659c1..f4bc719c4ba 100644 --- a/htdocs/install/mysql/tables/llx_societe_commerciaux.key.sql +++ b/htdocs/install/mysql/tables/llx_societe_commerciaux.key.sql @@ -17,6 +17,6 @@ -- =================================================================== ALTER TABLE llx_societe_commerciaux ADD UNIQUE INDEX uk_societe_commerciaux_c_type_contact (fk_soc, fk_user, fk_c_type_contact_code); -ALTER TABLE llx_societe_commerciaux ADD CONSTRAINT fk_societe_commerciaux_fk_c_type_contact_code FOREIGN KEY (fk_c_type_contact_code) REFERENCES llx_c_type_contact(code); +--Removed, not unique. ALTER TABLE llx_societe_commerciaux ADD CONSTRAINT fk_societe_commerciaux_fk_c_type_contact_code FOREIGN KEY (fk_c_type_contact_code) REFERENCES llx_c_type_contact(code); ALTER TABLE llx_societe_commerciaux ADD CONSTRAINT fk_societe_commerciaux_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe(rowid); ALTER TABLE llx_societe_commerciaux ADD CONSTRAINT fk_societe_commerciaux_fk_user FOREIGN KEY (fk_user) REFERENCES llx_user(rowid); diff --git a/htdocs/install/pgsql/functions/functions-bom.sql b/htdocs/install/pgsql/functions/functions-bom.sql new file mode 100644 index 00000000000..e31c64e170e --- /dev/null +++ b/htdocs/install/pgsql/functions/functions-bom.sql @@ -0,0 +1,23 @@ +-- ============================================================================ +-- Copyright (C) 2024 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 . +-- +-- ============================================================================ + + +CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_bom_bom FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); +CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_bom_bom_extrafields FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); +CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_bom_bomline FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); +CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_bom_bomline_extrafields FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); diff --git a/htdocs/install/pgsql/functions/functions-mo.sql b/htdocs/install/pgsql/functions/functions-mo.sql new file mode 100644 index 00000000000..37b92ae5269 --- /dev/null +++ b/htdocs/install/pgsql/functions/functions-mo.sql @@ -0,0 +1,23 @@ +-- ============================================================================ +-- Copyright (C) 2024 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 . +-- +-- ============================================================================ + + +CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_mrp_mo FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); +CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_mrp_mo_extrafields FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); +CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_mrp_production FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); +CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_mrp_production_extrafields FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); diff --git a/htdocs/install/pgsql/functions/functions.sql b/htdocs/install/pgsql/functions/functions.sql index 1d3587c8e7c..5260a44a8c3 100644 --- a/htdocs/install/pgsql/functions/functions.sql +++ b/htdocs/install/pgsql/functions/functions.sql @@ -75,10 +75,6 @@ CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_bank_account FOR EAC CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_bank_account_extrafields FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_blockedlog FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_blockedlog_authority FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); -CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_bom_bom FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); -CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_bom_bom_extrafields FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); -CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_bom_bomline FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); -CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_bom_bomline_extrafields FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_bordereau_cheque FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_boxes_def FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_c_email_templates FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); @@ -127,10 +123,6 @@ CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_fichinterdet_extrafi CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_delivery FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_localtax FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_menu FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); -CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_mrp_mo FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); -CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_mrp_mo_extrafields FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); -CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_mrp_production FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); -CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_mrp_production_extrafields FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_notify FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_notify_def FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); CREATE TRIGGER update_customer_modtime BEFORE UPDATE ON llx_paiement FOR EACH ROW EXECUTE PROCEDURE update_modified_column_tms(); diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php index 845127210ca..20b6a9572bc 100644 --- a/htdocs/install/repair.php +++ b/htdocs/install/repair.php @@ -73,13 +73,11 @@ if (!is_object($conf)) { * View */ -pHeader('', "upgrade2", GETPOST('action', 'aZ09')); +pHeader($langs->trans("Repair"), "upgrade2", GETPOST('action', 'aZ09')); // Action to launch the repair script $actiondone = 1; -print '

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

'; - print '
'; print $langs->trans("SetAtLeastOneOptionAsUrlParameter"); print '
'; @@ -1298,23 +1296,67 @@ if ($ok && GETPOST('force_utf8_on_tables', 'alpha')) { if ($force_utf8_on_tables == 'confirmed') { $sql = 'SET FOREIGN_KEY_CHECKS=0'; print ''; + print ''.$sql.''; $resql = $db->query($sql); } + $foreignkeystorestore = array(); + + // First loop to delete foreign keys + foreach ($listoftables as $table) { + // do not convert llx_const if mysql encrypt/decrypt is used + if ($conf->db->dolibarr_main_db_encryption != 0 && preg_match('/\_const$/', $table[0])) { + continue; + } + if ($table[1] == 'VIEW') { + print ''.$table[0].' is a '.$table[1].' (Skipped)'; + continue; + } + + // Special case of tables with foreign key on varchar fields + $arrayofforeignkey = array( + 'llx_accounting_account' => 'fk_accounting_account_fk_pcg_version', + 'llx_accounting_system' => 'fk_accounting_account_fk_pcg_version', + 'llx_c_type_contact' => 'fk_societe_commerciaux_fk_c_type_contact_code', + 'llx_societe_commerciaux' => 'fk_societe_commerciaux_fk_c_type_contact_code' + ); + + foreach ($arrayofforeignkey as $tmptable => $foreignkeyname) { + if ($table[0] == $tmptable) { + print ''; + $sqltmp = "ALTER TABLE ".$db->sanitize($table[0])." DROP FOREIGN KEY ".$db->sanitize($foreignkeyname); + print $sqltmp; + if ($force_utf8_on_tables == 'confirmed') { + $resqltmp = $db->query($sqltmp); + } else { + print ' - Disabled'; + } + print ''; + $foreignkeystorestore[$tmptable] = $foreignkeyname; + } + } + } + foreach ($listoftables as $table) { // do not convert llx_const if mysql encrypt/decrypt is used if ($conf->db->dolibarr_main_db_encryption != 0 && preg_match('/\_const$/', $table[0])) { continue; } if ($table[1] == 'VIEW') { - print ''.$table[0].' is a '.$table[1].' (Skipped)'; + print ''.$table[0].' is a '.$table[1].' (Skipped)'; continue; } + $collation = 'utf8_unicode_ci'; + $defaultcollation = $db->getDefaultCollationDatabase(); + if (preg_match('/general/', $defaultcollation)) { + $collation = 'utf8_general_ci'; + } + print ''; print $table[0]; - $sql1 = "ALTER TABLE ".$table[0]." ROW_FORMAT=dynamic"; - $sql2 = "ALTER TABLE ".$table[0]." CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci"; + $sql1 = "ALTER TABLE ".$db->sanitize($table[0])." ROW_FORMAT=dynamic"; + $sql2 = "ALTER TABLE ".$db->sanitize($table[0])." CONVERT TO CHARACTER SET utf8 COLLATE ".$db->sanitize($collation); print ''; print ''; if ($force_utf8_on_tables == 'confirmed') { @@ -1324,17 +1366,45 @@ if ($ok && GETPOST('force_utf8_on_tables', 'alpha')) { } else { $resql2 = false; } - print ' - Done ('.(($resql1 && $resql2) ? 'OK' : 'KO').')'; + print ' - Done '.(($resql1 && $resql2) ? '(OK)' : '(KO)'); } else { - print ' - Disabled'; + print ' - Disabled'; } print ''; + flush(); + ob_flush(); + } + + // Restore dropped foreign keys + foreach ($foreignkeystorestore as $tmptable => $foreignkeyname) { + $stringtofindinline = "ALTER TABLE .* ADD CONSTRAINT ".$db->sanitize($foreignkeyname); + $fileforkeys = DOL_DOCUMENT_ROOT.'/install/mysql/tables/'.$tmptable.'.key.sql'; + //print 'Search in '.$fileforkeys.' to get '.$stringtofindinline."
\n"; + + $handle = fopen($fileforkeys, 'r'); + if ($handle) { + while (($line = fgets($handle)) !== false) { + // Process the line read. + if (preg_match('/^'.$stringtofindinline.'/i', $line)) { + $resqltmp = $db->query($line); + print ''; + print $line; + print ' - Done '.($resqltmp ? '(OK)' : '(KO)'); + print ''; + break; + } + } + fclose($handle); + } + flush(); + ob_flush(); } // Enable foreign key checking if ($force_utf8_on_tables == 'confirmed') { $sql = 'SET FOREIGN_KEY_CHECKS=1'; print ''; + print ''.$sql.''; $resql = $db->query($sql); } } else { @@ -1349,29 +1419,74 @@ if ($ok && GETPOST('force_utf8mb4_on_tables', 'alpha')) { if ($db->type == "mysql" || $db->type == "mysqli") { $force_utf8mb4_on_tables = GETPOST('force_utf8mb4_on_tables', 'alpha'); + $listoftables = $db->DDLListTablesFull($db->database_name); // Disable foreign key checking for avoid errors if ($force_utf8mb4_on_tables == 'confirmed') { $sql = 'SET FOREIGN_KEY_CHECKS=0'; print ''; + print ''.$sql.''; $resql = $db->query($sql); } + $foreignkeystorestore = array(); + + // First loop to delete foreign keys + foreach ($listoftables as $table) { + // do not convert llx_const if mysql encrypt/decrypt is used + if ($conf->db->dolibarr_main_db_encryption != 0 && preg_match('/\_const$/', $table[0])) { + continue; + } + if ($table[1] == 'VIEW') { + print ''.$table[0].' is a '.$table[1].' (Skipped)'; + continue; + } + + // Special case of tables with foreign key on varchar fields + $arrayofforeignkey = array( + 'llx_accounting_account' => 'fk_accounting_account_fk_pcg_version', + 'llx_accounting_system' => 'fk_accounting_account_fk_pcg_version', + 'llx_c_type_contact' => 'fk_societe_commerciaux_fk_c_type_contact_code', + 'llx_societe_commerciaux' => 'fk_societe_commerciaux_fk_c_type_contact_code' + ); + + foreach ($arrayofforeignkey as $tmptable => $foreignkeyname) { + if ($table[0] == $tmptable) { + print ''; + $sqltmp = "ALTER TABLE ".$db->sanitize($table[0])." DROP FOREIGN KEY ".$db->sanitize($foreignkeyname); + print $sqltmp; + if ($force_utf8mb4_on_tables == 'confirmed') { + $resqltmp = $db->query($sqltmp); + } else { + print ' - Disabled'; + } + print ''; + $foreignkeystorestore[$tmptable] = $foreignkeyname; + } + } + } + foreach ($listoftables as $table) { // do not convert llx_const if mysql encrypt/decrypt is used if ($conf->db->dolibarr_main_db_encryption != 0 && preg_match('/\_const$/', $table[0])) { continue; } if ($table[1] == 'VIEW') { - print ''.$table[0].' is a '.$table[1].' (Skipped)'; + print ''.$table[0].' is a '.$table[1].' (Skipped)'; continue; } + $collation = 'utf8mb4_unicode_ci'; + $defaultcollation = $db->getDefaultCollationDatabase(); + if (preg_match('/general/', $defaultcollation)) { + $collation = 'utf8mb4_general_ci'; + } + print ''; print $table[0]; - $sql1 = "ALTER TABLE ".$table[0]." ROW_FORMAT=dynamic"; - $sql2 = "ALTER TABLE ".$table[0]." CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; + $sql1 = "ALTER TABLE ".$db->sanitize($table[0])." ROW_FORMAT=dynamic"; + $sql2 = "ALTER TABLE ".$db->sanitize($table[0])." CONVERT TO CHARACTER SET utf8mb4 COLLATE ".$db->sanitize($collation); print ''; print ''; if ($force_utf8mb4_on_tables == 'confirmed') { @@ -1381,19 +1496,45 @@ if ($ok && GETPOST('force_utf8mb4_on_tables', 'alpha')) { } else { $resql2 = false; } - print ' - Done ('.(($resql1 && $resql2) ? 'OK' : 'KO').')'; + print ' - Done '.(($resql1 && $resql2) ? '(OK)' : '(KO)'); } else { - print ' - Disabled'; + print ' - Disabled'; } print ''; flush(); ob_flush(); } + // Restore dropped foreign keys + foreach ($foreignkeystorestore as $tmptable => $foreignkeyname) { + $stringtofindinline = "ALTER TABLE .* ADD CONSTRAINT ".$db->sanitize($foreignkeyname); + $fileforkeys = DOL_DOCUMENT_ROOT.'/install/mysql/tables/'.$tmptable.'.key.sql'; + //print 'Search in '.$fileforkeys.' to get '.$stringtofindinline."
\n"; + + $handle = fopen($fileforkeys, 'r'); + if ($handle) { + while (($line = fgets($handle)) !== false) { + // Process the line read. + if (preg_match('/^'.$stringtofindinline.'/i', $line)) { + $resqltmp = $db->query($line); + print ''; + print $line; + print ' - Done '.($resqltmp ? '(OK)' : '(KO)'); + print ''; + break; + } + } + fclose($handle); + } + flush(); + ob_flush(); + } + // Enable foreign key checking if ($force_utf8mb4_on_tables == 'confirmed') { $sql = 'SET FOREIGN_KEY_CHECKS=1'; print ''; + print ''.$sql.''; $resql = $db->query($sql); } } else { @@ -1439,9 +1580,9 @@ if ($ok && GETPOST('force_collation_from_conf_on_tables', 'alpha')) { } else { $resql2 = false; } - print ' - Done ('.(($resql1 && $resql2) ? 'OK' : 'KO').')'; + print ' - Done '.(($resql1 && $resql2) ? '(OK)' : '(KO)'); } else { - print ' - Disabled'; + print ' - Disabled'; } print ''; } diff --git a/htdocs/install/step1.php b/htdocs/install/step1.php index 50d807803e5..615cd9cd142 100644 --- a/htdocs/install/step1.php +++ b/htdocs/install/step1.php @@ -162,7 +162,7 @@ $error = 0; dolibarr_install_syslog("--- step1: entering step1.php page"); -pHeader($langs->trans("ConfigurationFile"), "step2"); +pHeader($langs->trans("DolibarrSetup").' - '.$langs->trans("ConfigurationFile"), "step2"); // Test if we can run a first install process if (!is_writable($conffile)) { diff --git a/htdocs/install/step2.php b/htdocs/install/step2.php index 0686e19acae..78704659a3a 100644 --- a/htdocs/install/step2.php +++ b/htdocs/install/step2.php @@ -93,11 +93,12 @@ dolibarr_install_syslog("--- step2: entering step2.php page"); '@phan-var-force string $dolibarr_main_db_prefix'; // From configuraiotn file or install/inc.php + /* * View */ -pHeader($langs->trans("CreateDatabaseObjects"), "step4"); +pHeader($langs->trans("DolibarrSetup").' - '.$langs->trans("CreateDatabaseObjects"), "step4"); // Test if we can run a first install process if (!is_writable($conffile)) { diff --git a/htdocs/install/step4.php b/htdocs/install/step4.php index c93f4c815e1..dee25c701c9 100644 --- a/htdocs/install/step4.php +++ b/htdocs/install/step4.php @@ -59,7 +59,7 @@ $ok = 0; * View */ -pHeader($langs->trans("AdminAccountCreation"), "step5"); +pHeader($langs->trans("DolibarrSetup").' - '.$langs->trans("AdminAccountCreation"), "step5"); // Test if we can run a first install process if (!is_writable($conffile)) { diff --git a/htdocs/install/step5.php b/htdocs/install/step5.php index 29166c03f5d..4d1764cc3cf 100644 --- a/htdocs/install/step5.php +++ b/htdocs/install/step5.php @@ -126,7 +126,7 @@ if ($action == "set") { $morehtml = ''; -pHeader($langs->trans("SetupEnd"), "step5", 'set', '', '', 'main-inside main-inside-borderbottom'); +pHeader($langs->trans("DolibarrSetup").' - '.$langs->trans("SetupEnd"), "step5", 'set', '', '', 'main-inside main-inside-borderbottom'); print '
'; // Test if we can run a first install process diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 68cbd675b32..53c9d12c399 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -533,6 +533,7 @@ if (!GETPOST('action', 'aZ09') || preg_match('/upgrade/i', GETPOST('action', 'aZ 'MAIN_MODULE_FOURNISSEUR' => 'newboxdefonly', 'MAIN_MODULE_FICHEINTER' => 'newboxdefonly', 'MAIN_MODULE_HOLIDAY' => 'newboxdefonly', + 'MAIN_MODULE_LOAN' => 'newboxdefonly', 'MAIN_MODULE_MARGIN' => 'menuonly', 'MAIN_MODULE_MRP' => 'menuonly', 'MAIN_MODULE_OPENSURVEY' => 'newboxdefonly', @@ -4132,7 +4133,7 @@ function migrate_delete_old_files($db, $langs, $conf) foreach ($filetodeletearray as $filetodelete) { //print ''DOL_DOCUMENT_ROOT.$filetodelete."
\n"; - if (file_exists(DOL_DOCUMENT_ROOT.$filetodelete) || preg_match('/\*/', $filetodelete)) { + if (preg_match('/\*/', $filetodelete) || file_exists(DOL_DOCUMENT_ROOT.$filetodelete)) { //print "Process file ".$filetodelete."\n"; $result = dol_delete_file(DOL_DOCUMENT_ROOT.$filetodelete, 0, 0, 0, null, true, false); if (!$result) { @@ -4197,7 +4198,7 @@ function migrate_delete_old_dir($db, $langs, $conf) * @param DoliDB $db Database handler * @param Translate $langs Object langs * @param Conf $conf Object conf - * @param array $listofmodule List of modules, like array('MODULE_KEY_NAME'=>', $reloadmode) + * @param array $listofmodule List of modules, like array('MODULE_KEY_NAME'=>$reloadmode, ...) * @param int $force 1=Reload module even if not already loaded * @return int Return integer <0 if KO, >0 if OK */ @@ -4227,22 +4228,24 @@ function migrate_reload_modules($db, $langs, $conf, $listofmodule = array(), $fo 'MAIN_MODULE_PRODUIT' => array('class' => 'modProduct'), 'MAIN_MODULE_SERVICE' => array('class' => 'modService'), 'MAIN_MODULE_COMMANDE' => array('class' => 'modCommande'), + 'MAIN_MODULE_DON' => array('class' => 'modDon'), 'MAIN_MODULE_FACTURE' => array('class' => 'modFacture'), 'MAIN_MODULE_FICHEINTER' => array('class' => 'modFicheinter'), 'MAIN_MODULE_FOURNISSEUR' => array('class' => 'modFournisseur'), - 'MAIN_MODULE_HOLIDAY' => array('class' => 'modHoliday', 'remove' => 1), 'MAIN_MODULE_EXPEDITION' => array('class' => 'modExpedition'), 'MAIN_MODULE_EXPENSEREPORT' => array('class' => 'modExpenseReport'), - 'MAIN_MODULE_DON' => array('class' => 'modDon'), - 'MAIN_MODULE_ECM' => array('class' => 'modECM', 'remove' => 1), - 'MAIN_MODULE_KNOWLEDGEMANAGEMENT' => array('class' => 'modKnowledgeManagement', 'remove' => 1), 'MAIN_MODULE_EVENTORGANIZATION' => array('class' => 'modEventOrganization', 'remove' => 1), + 'MAIN_MODULE_ECM' => array('class' => 'modECM', 'remove' => 1), + 'MAIN_MODULE_HOLIDAY' => array('class' => 'modHoliday', 'remove' => 1), + 'MAIN_MODULE_KNOWLEDGEMANAGEMENT' => array('class' => 'modKnowledgeManagement', 'remove' => 1), + 'MAIN_MODULE_LOAN' => array('class' => 'modLoan', 'remove' => 1), 'MAIN_MODULE_PAYBOX' => array('class' => 'modPaybox', 'remove' => 1), 'MAIN_MODULE_PROPAL' => array('class' => 'modPropale'), 'MAIN_MODULE_SUPPLIERPROPOSAL' => array('class' => 'modSupplierProposal', 'remove' => 1), 'MAIN_MODULE_OPENSURVEY' => array('class' => 'modOpenSurvey', 'remove' => 1), 'MAIN_MODULE_PRODUCTBATCH' => array('class' => 'modProductBatch', 'remove' => 1), 'MAIN_MODULE_TAKEPOS' => array('class' => 'modTakePos', 'remove' => 1), + 'MAIN_MODULE_VARIANTS' => array('class' => 'modVariants', 'remove' => 1), 'MAIN_MODULE_EMAILCOLLECTOR' => array('class' => 'modEmailCollector', 'remove' => 1), ); diff --git a/htdocs/intracommreport/list.php b/htdocs/intracommreport/list.php index 9c5741ac040..83f66ef141a 100644 --- a/htdocs/intracommreport/list.php +++ b/htdocs/intracommreport/list.php @@ -424,9 +424,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/knowledgemanagement/knowledgerecord_list.php b/htdocs/knowledgemanagement/knowledgerecord_list.php index 1fa05a34202..52b4227e491 100644 --- a/htdocs/knowledgemanagement/knowledgerecord_list.php +++ b/htdocs/knowledgemanagement/knowledgerecord_list.php @@ -516,9 +516,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/langs/am_ET/admin.lang b/htdocs/langs/am_ET/admin.lang index 134d69c0261..2a744aa1f7c 100644 --- a/htdocs/langs/am_ET/admin.lang +++ b/htdocs/langs/am_ET/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=የእሴቶቹ ዝርዝር የቅርጸት ቁልፍ፣ እሴት (ቁልፉ '0' ሊሆን የማይችልበት) መስመሮች መሆን አለባቸው

ለምሳሌ :
1,value1
2,value2,
3,value3n
... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=መለኪያዎች ObjectName:Classpath
አገባብ መሆን አለባቸው የነገር ስም: ክፍል ExtrafieldParamHelpSeparator=ለቀላል መለያየት ባዶ ያቆዩ
ለሚሰበሰብ መለያየት ይህንን ወደ 1 ያዋቅሩት (ለአዲስ ክፍለ ጊዜ በነባሪነት ክፈት፣ ከዚያ ለእያንዳንዱ ክፍለ ጊዜ ሁኔታ ይቀመጣል)
ይህን ወደ 2 አዘጋጅ ለሚፈርስ መለያየት (ለአዲስ ክፍለ ጊዜ በነባሪነት ወድቋል፣ ከዚያ ሁኔታ ለእያንዳንዱ ተጠቃሚ ክፍለ ጊዜ ይጠበቃል) LibraryToBuildPDF=ለፒዲኤፍ ማመንጨት የሚያገለግል ላይብረሪ @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s በመቀጠል የተቆረጠው የደ ModuleCompanyCodeSupplierDigitaria=%s በመቀጠል የተቆራረጠው የአቅራቢ ስም በቁምፊዎች ብዛት፡ %s ለአቅራቢው የሂሳብ ኮድ። Use3StepsApproval=በነባሪ የግዢ ትዕዛዞች በ2 የተለያዩ ተጠቃሚዎች (አንድ እርምጃ/ተጠቃሚ ለመፍጠር እና አንድ እርምጃ/ተጠቃሚ ለማጽደቅ። ተጠቃሚው ለመፍጠር እና ለማጽደቅ ሁለቱንም ፍቃድ ካለው አንድ እርምጃ/ተጠቃሚ በቂ እንደሚሆን ልብ ይበሉ) . በዚህ አማራጭ የሶስተኛ ደረጃ/የተጠቃሚ ማጽደቅን ለማስተዋወቅ መጠየቅ ይችላሉ፣ መጠኑ ከተለየ እሴት ከፍ ያለ ከሆነ (ስለዚህ 3 እርምጃዎች አስፈላጊ ይሆናሉ፡ 1=ማረጋገጫ፣ 2=የመጀመሪያ ማፅደቅ እና መጠኑ በቂ ከሆነ 3=ሁለተኛ ማረጋገጫ)።
ይህን አንድ ማጽደቅ (2 እርምጃዎች) በቂ ከሆነ ወደ ባዶ ያዋቅሩት፣ ሁልጊዜ ሁለተኛ ማጽደቅ (3 እርምጃዎች) የሚያስፈልግ ከሆነ በጣም ዝቅተኛ እሴት (0.1) ያቀናብሩት። UseDoubleApproval=መጠኑ (ያለ ታክስ) ከ... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- አንዳንድ የኢሜል አገልግሎት አቅራቢዎች (እንደ ያሁ ያሉ) ከሌላ አገልጋይ ከራሳቸው አገልጋይ ኢሜይል እንዲልኩ አይፈቅዱም። አሁን ያላችሁት ዝግጅት የኢሜል አቅራቢዎን አገልጋይ ሳይሆን ኢሜል ለመላክ የመተግበሪያውን አገልጋይ ይጠቀማል ስለዚህ አንዳንድ ተቀባዮች (ከዲኤምአርሲ ገዳቢ ፕሮቶኮል ጋር የሚስማማው) ኢሜልዎን እና አንዳንድ የኢሜል አቅራቢዎችን መቀበል ይችሉ እንደሆነ የኢሜል አቅራቢዎን ይጠይቃሉ ። (እንደ ያሁ አይነት) አገልጋዩ የእነሱ ስላልሆነ "አይ" የሚል ምላሽ ሊሰጥ ይችላል፣ ስለዚህ ከተላኩ ኢሜይሎችዎ ውስጥ ጥቂቶቹ ለማድረስ ተቀባይነት ላይኖራቸው ይችላል (የኢሜል አቅራቢዎን የመላኪያ ኮታም ይጠንቀቁ)። +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- የእራስዎን የኢሜል አገልግሎት አቅራቢ SMTP አገልጋይ ኢሜይሎችን ለመላክ እንዲሁ አስደሳች ነው ስለዚህ ከመተግበሪያው የተላኩ ኢሜይሎች በሙሉ ወደ የመልእክት ሳጥንዎ "የተላኩ" ማውጫ ውስጥ ይቀመጣሉ። WarningPHPMailD=ስለዚህ የኢሜል መላኪያ ዘዴን ወደ "SMTP" እሴት ለመቀየር ይመከራል. WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. WarningPHPMail2=የኢሜል SMTP አቅራቢዎ የኢሜል ደንበኛን ለአንዳንድ የአይፒ አድራሻዎች መገደብ ካለበት (በጣም አልፎ አልፎ) ይህ የመልእክት ተጠቃሚ ወኪሉ (MUA) ለኢአርፒ CRM መተግበሪያዎ የአይፒ አድራሻ ነው፡ %s። -WarningPHPMailSPF=በላኪ ኢሜል አድራሻዎ ውስጥ ያለው የጎራ ስም በSPF መዝገብ ከተጠበቀ (የእርስዎን የጎራ ስም ሬጅስትር ይጠይቁ) በጎራዎ ዲ ኤን ኤስ የ SPF መዝገብ ውስጥ የሚከተሉትን አይፒዎች ማከል አለብዎት: %s። -ActualMailSPFRecordFound=ትክክለኛው የSPF መዝገብ ተገኝቷል (ለኢሜል %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=መግለጫ ለማሳየት ጠቅ ያድርጉ DependsOn=ይህ ሞጁል ሞጁሉን ያስፈልገዋል RequiredBy=ይህ ሞጁል በሞጁል(ዎች) ያስፈልጋል @@ -867,7 +868,7 @@ Permission255=የሌሎች ተጠቃሚዎችን የይለፍ ቃል ቀይር Permission256=ሌሎች ተጠቃሚዎችን ይሰርዙ ወይም ያሰናክሉ። Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=የሁሉንም ሶስተኛ ወገኖች ያለእቃዎቻቸው መዳረሻን ያራዝሙ (ተጠቃሚው የሽያጭ ተወካይ የሆነባቸው ሶስተኛ ወገኖች ብቻ አይደሉም)
ለውጭ ተጠቃሚዎች ውጤታማ አይደለም (ሁልጊዜ ለውሳኔ ሃሳቦች በራሳቸው ብቻ የተገደቡ፣ ትዕዛዞች፣ ደረሰኞች፣ ኮንትራቶች፣ ወዘተ)።
ለፕሮጀክቶች ውጤታማ አይደለም (የፕሮጀክት ፈቃዶች፣ የታይነት እና የምደባ ጉዳዮች ላይ ያሉ ህጎች ብቻ)። Permission271=CA አንብብ Permission272=ደረሰኞች ያንብቡ @@ -944,7 +945,7 @@ Permission776=የወጪ ሪፖርቶችን ይክፈሉ። Permission777=ሁሉንም የወጪ ሪፖርቶች ያንብቡ (የተጠቃሚው የበታች ያልሆኑትም ጭምር) Permission778=የሁሉንም ሰው የወጪ ሪፖርቶችን ይፍጠሩ/ ያስተካክሉ Permission779=የወጪ ሪፖርቶችን ወደ ውጪ ላክ -Permission1001=አክሲዮኖችን ያንብቡ +Permission1001=Read warehouses and stocks Permission1002=መጋዘኖችን ይፍጠሩ / ያሻሽሉ Permission1003=መጋዘኖችን ሰርዝ Permission1004=የአክሲዮን እንቅስቃሴዎችን ያንብቡ @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=የሬጌክስ ማጣሪያ ዋጋን ለማፅ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=ለደንበኞች ወይም አቅራቢዎች ንዑስ መለያዎችን ሲያመነጩ የተወሰኑ ቃላትን ያጽዱ RemoveSpecialWordsHelp=የደንበኛውን ወይም የአቅራቢውን ሂሳብ ከማስላትዎ በፊት የሚጸዱትን ቃላት ይግለጹ። ";" ይጠቀሙ በእያንዳንዱ ቃል መካከል -GDPRContact=የውሂብ ጥበቃ ኦፊሰር (DPO፣ የውሂብ ግላዊነት ወይም የGDPR እውቂያ) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=በመረጃ ስርዓትዎ ውስጥ የግል መረጃን ካከማቻሉ፣ ለአጠቃላይ የውሂብ ጥበቃ ደንብ ኃላፊነት ያለበትን አድራሻ እዚህ መሰየም ይችላሉ። HelpOnTooltip=በመሳሪያ ጫፍ ላይ እንዲታይ የእገዛ ጽሑፍ HelpOnTooltipDesc=ይህ መስክ በቅጽ ላይ ሲታይ ጽሑፉ በመሳሪያ ጥቆማ ውስጥ እንዲታይ የጽሁፍ ወይም የትርጉም ቁልፍ እዚህ ያስቀምጡ @@ -2218,7 +2219,7 @@ CreateCandidature=የሥራ ማመልከቻ ይፍጠሩ FormatZip=ዚፕ MainMenuCode=የምናሌ መግቢያ ኮድ (ዋና ምናሌ) ECMAutoTree=ራስ-ሰር የ ECM ዛፍን አሳይ -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=ክፍት የሚሆንበት ሰዓቶች OpeningHoursDesc=የድርጅትዎን መደበኛ የስራ ሰዓቶች እዚህ ያስገቡ። ResourceSetup=የመርጃ ሞጁል ውቅር @@ -2264,7 +2265,7 @@ LargerThan=ይበልጣል IfTrackingIDFoundEventWillBeLinked=የአንድ ነገር መከታተያ መታወቂያ በኢሜል ውስጥ ከተገኘ ወይም ኢሜይሉ አስቀድሞ የተሰበሰበ እና ከአንድ ነገር ጋር የተገናኘ ኢሜይል መልስ ከሆነ የተፈጠረው ክስተት በቀጥታ ከሚታወቀው ተዛማጅ ነገር ጋር ይገናኛል። WithGMailYouCanCreateADedicatedPassword=በጂሜይል መለያ፣ የ2 ደረጃዎች ማረጋገጫን ካነቁ፣ ከhttps://myaccount.google.com/ የራስዎን መለያ ይለፍ ቃል ከመጠቀም ለመተግበሪያው የተለየ ሁለተኛ የይለፍ ቃል መፍጠር ይመከራል። EmailCollectorTargetDir=ኢሜይሉን በተሳካ ሁኔታ ሲሰራ ወደ ሌላ መለያ/ማውጫ መውሰድ የሚፈለግ ባህሪ ሊሆን ይችላል። ይህንን ባህሪ ለመጠቀም የማውጫውን ስም ብቻ ያዘጋጁ (በስም ልዩ ቁምፊዎችን አይጠቀሙ)። የመግቢያ/የመፃፍ መለያ መጠቀም እንዳለቦት ልብ ይበሉ። -EmailCollectorLoadThirdPartyHelp=ይህን እርምጃ የኢሜል ይዘቱን ተጠቅመው በውሂብ ጎታዎ ውስጥ ያለውን የሶስተኛ ወገን ለማግኘት እና ለመጫን (ፍለጋ በ'መታወቂያ'፣ 'ስም'፣ 'name_alias'፣'email' መካከል በተገለጸው ንብረት ላይ ይከናወናል)። የተገኘው (ወይም የተፈጠረ) ሶስተኛ ወገን እሱን ለሚፈልጉ እርምጃዎች ይጠቅማል።
ለምሳሌ ከሕብረቁምፊ የወጣ ስም ያለው ሶስተኛ ወገን መፍጠር ከፈለጉ ' ስም፡ ስም ለማግኘት' በሰውነት ውስጥ ይገኛል፣ የላኪውን ኢሜል እንደ ኢሜል ይጠቀሙ፣ የመለኪያ መስኩን እንደዚህ ማዘጋጀት ይችላሉ፡
'email=HEADER:^ከ:(. *);ስም=የወጣ፡አካል፡ስም፡\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=ማስጠንቀቂያ፡ ብዙ የኢሜል አገልጋዮች (እንደ ጂሜይል ያሉ) ሕብረቁምፊ ላይ ሲፈልጉ ሙሉ የቃላት ፍለጋ እያደረጉ ነው እና ሕብረቁምፊው በከፊል በአንድ ቃል ውስጥ ብቻ ከተገኘ ውጤቱን አይመልሱም። በዚህ ምክንያት ልዩ ቁምፊዎችን ተጠቀም በፍለጋ መስፈርት ውስጥ የነባር ቃላት አካል ካልሆኑ ችላ ይባላሉ።
በአንድ ቃል ላይ ፍለጋን ለማግለል (ቃል ከሆነ ኢሜይል ይመልሱ አልተገኘም) ፣ መጠቀም ይችላሉ! ከቃሉ በፊት ቁምፊ (በአንዳንድ የመልዕክት አገልጋዮች ላይ ላይሰራ ይችላል). EndPointFor=የመጨረሻ ነጥብ ለ%s : %s DeleteEmailCollector=ኢሜል ሰብሳቢውን ሰርዝ @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=የሶስተኛ ወገን ስም - የሶስተኛ ወገን ALIAS_THIRDPARTY=የሶስተኛ ወገን ተለዋጭ ስም - የሶስተኛ ወገን ስም PDFIn2Languages=በፒዲኤፍ ውስጥ መለያዎችን በ2 የተለያዩ ቋንቋዎች አሳይ (ይህ ባህሪ ለተወሰኑ ሁለት ቋንቋዎች ላይሰራ ይችላል) PDF_USE_ALSO_LANGUAGE_CODE=በፒዲኤፍዎ ውስጥ አንዳንድ ጽሑፎች በ2 የተለያዩ ቋንቋዎች በተመሳሳይ የመነጨ ፒዲኤፍ እንዲባዙ ከፈለጉ፣ እዚህ ሁለተኛ ቋንቋ ማዘጋጀት አለብዎት ስለዚህ የመነጨ ፒዲኤፍ በተመሳሳይ ገጽ ውስጥ 2 የተለያዩ ቋንቋዎችን ይይዛል ፣ ፒዲኤፍ ሲያመነጭ የሚመረጠው እና ይህ (() ይህንን የሚደግፉት ጥቂት የፒዲኤፍ አብነቶች ብቻ ናቸው)። ለ 1 ቋንቋ በፒዲኤፍ ባዶ ያስቀምጡ። -PDF_USE_A=በነባሪ ቅርጸት ፒዲኤፍ ፋንታ የፒዲኤፍ ሰነዶችን በፒዲኤፍ/ኤ ቅርጸት ይፍጠሩ +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=የFontAwesome አዶ ኮድ እዚህ ያስገቡ። FontAwesome ምን እንደሆነ ካላወቁ፣ አጠቃላይ ዋጋ ያለው የ fa-address-book መጠቀም ይችላሉ። RssNote=ማሳሰቢያ፡ እያንዳንዱ የአርኤስኤስ መጋቢ ፍቺ በዳሽቦርድ ውስጥ እንዲገኝ ማንቃት ያለብዎትን መግብር ያቀርባል JumpToBoxes=ወደ ማዋቀር ይዝለሉ -> መግብሮች @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/am_ET/datapolicy.lang b/htdocs/langs/am_ET/datapolicy.lang index e1271208faa..bd46345f7c7 100644 --- a/htdocs/langs/am_ET/datapolicy.lang +++ b/htdocs/langs/am_ET/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = የውሂብ ግላዊነት መመሪያ # Module description 'ModuledatapolicyDesc' Module4100Desc = የውሂብ ግላዊነትን ለማስተዳደር ሞጁል (ከGDPR ጋር መስማማት) - -# # Administration page -# datapolicySetup = የሞዱል ውሂብ የግላዊነት መመሪያ ማዋቀር Deletion = የውሂብ መሰረዝ datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = ፕሮስፔክተር/ደንበኛ DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = ወይም ተስፋ/ ደንበኛም አይደለም። DATAPOLICY_CONTACT_FOURNISSEUR = አቅራቢ DATAPOLICY_ADHERENT = አባል -DATAPOLICY_Tooltip_SETUP = የግንኙነት አይነት - ለእያንዳንዱ አይነት ምርጫዎን ያመልክቱ. -DATAPOLICYMail = ኢሜይሎች ማዋቀር -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = የኢሜል ይዘት -DATAPOLICYSUBSITUTION = በኢሜልዎ ውስጥ የሚከተሉትን ተለዋዋጮች መጠቀም ይችላሉ (LINKACCEPT የሰውየውን ስምምነት የሚቀዳ አገናኝ ለመፍጠር ይፈቅዳል፣ LINKREFUSED የሰውየውን እምቢተኝነት ለመመዝገብ ያስችላል) -DATAPOLICYACCEPT = ከስምምነት በኋላ መልእክት -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = ለሁሉም ተዛማጅ እውቂያዎች የGDPR ኢሜል መላክ ይችላሉ (እስካሁን ኢሜይል ላላገኙ እና ስለ GDPR ስምምነታቸው ምንም ነገር ላላመዘገቡበት)። ይህንን ለማድረግ የሚከተለውን አዝራር ይጠቀሙ. SendAgreement = ኢሜይሎችን ላክ AllAgreementSend = ሁሉም ኢሜይሎች ተልከዋል። TXTLINKDATAPOLICYACCEPT = ለ "ስምምነት" አገናኝ ጽሑፍ TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: የግል መረጃን ማካሄድ DATAPOLICY_consentement = የግል መረጃን ለማስኬድ የተገኘ ስምምነት DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = የሶስተኛ ወገን ስም አይስጡ -DATAPOLICY_POPUP_ANONYME_TEXTE = ተዛማጅ ነገሮች ስላሉ ይህን አድራሻ ከዶሊባር መሰረዝ አይችሉም። በGDPR መሠረት፣ ግዴታዎችዎን ለማክበር ይህን ሁሉ ውሂብ እንዳይታወቅ ያደርጋሉ። መቀጠል ይፈልጋሉ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = ተንቀሳቃሽነት GDPR -DATAPOLICY_PORTABILITE_TITLE = የግል ውሂብ ወደ ውጭ መላክ -DATAPOLICY_PORTABILITE_CONFIRMATION = የዚህን እውቂያ የግል ውሂብ ወደ ውጭ መላክ ይፈልጋሉ። ኧረ ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = የ%s ስም-አልባ - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = የ GDPR ኢሜይል ይላኩ። MailSent = ኢሜል ተልኳል። - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/am_ET/dict.lang b/htdocs/langs/am_ET/dict.lang index 94ee0b6d67d..32b7f088c3b 100644 --- a/htdocs/langs/am_ET/dict.lang +++ b/htdocs/langs/am_ET/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=ሲኤፍፒ ፍራንክ CurrencySingXPF=ሲኤፍፒ ፍራንክ CurrencyCentEUR=ሳንቲም CurrencyCentSingEUR=መቶ -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=ሺህ #### Input reasons ##### DemandReasonTypeSRC_INTE=ኢንተርኔት diff --git a/htdocs/langs/am_ET/errors.lang b/htdocs/langs/am_ET/errors.lang index d2c684fd91f..cf14cd9f0ea 100644 --- a/htdocs/langs/am_ET/errors.lang +++ b/htdocs/langs/am_ET/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=ተጠቃሚው የሚፈጀውን ጊዜ ማስገ ErrorTaskAlreadyAssigned=ተግባር አስቀድሞ ለተጠቃሚ ተሰጥቷል። ErrorModuleFileSeemsToHaveAWrongFormat=የሞጁሉ ጥቅል የተሳሳተ ቅርጸት ያለው ይመስላል። ErrorModuleFileSeemsToHaveAWrongFormat2=At least one mandatory directory must exists into zip of module: %s or %s -ErrorFilenameDosNotMatchDolibarrPackageRules=የሞጁሉ ጥቅል ስም (%s አይመሳሰልም የሚጠበቀው ስም አገባብ፡ %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=ስህተት፣ የተባዛ የማስነሻ ስም %s። ቀድሞውንም ከ%s ተጭኗል። ErrorNoWarehouseDefined=ስህተት፣ ምንም መጋዘኖች አልተገለጹም። ErrorBadLinkSourceSetButBadValueForRef=የሚጠቀሙበት አገናኝ ልክ አይደለም። የመክፈያ 'ምንጭ' ይገለጻል፣ የ'ref' ዋጋ ግን ልክ አይደለም። @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/am_ET/mails.lang b/htdocs/langs/am_ET/mails.lang index d248c98f407..38008cdb435 100644 --- a/htdocs/langs/am_ET/mails.lang +++ b/htdocs/langs/am_ET/mails.lang @@ -32,6 +32,8 @@ NewMailing=አዲስ ኢሜል ማድረግ NewSMSing=New smsing EditMailing=ኢሜል መላክን ያርትዑ ResetMailing=ኢሜል መላክን እንደገና ላክ +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=ኢሜል መላክን ሰርዝ PreviewMailing=ኢሜል መላክን አስቀድመው ይመልከቱ CreateMailing=ኢሜል ፍጠር @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=ኢሜይል ተቀባይ ባዶ ነው። WarningNoEMailsAdded=ወደ ተቀባይ ዝርዝር የሚታከል አዲስ ኢሜይል የለም። ConfirmValidMailing=እርግጠኛ ነዎት ይህን ኢሜል ማረጋገጥ ይፈልጋሉ? 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? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=እርግጠኛ ነዎት ይህን ኢሜል መሰረዝ ይፈልጋሉ? NbOfUniqueEMails=የልዩ ኢሜይሎች ቁጥር NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=ኢሜይሉን የሚልክለት ተቀባይ የለ EmailOptedOut=የኢሜል ባለቤት በዚህ ኢሜይል እንዳያገኘው ጠይቀዋል። EvenUnsubscribe=መርጠው የወጡ ኢሜይሎችን ያካትቱ EvenUnsubscribeDesc=ኢሜይሎችን እንደ ዒላማ ሲመርጡ መርጠው የወጡ ኢሜይሎችን ያካትቱ። ለምሳሌ ለግዴታ አገልግሎት ኢሜይሎች ይጠቅማል። -XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/am_ET/stripe.lang b/htdocs/langs/am_ET/stripe.lang index 56b088ad4d0..34d55358b8a 100644 --- a/htdocs/langs/am_ET/stripe.lang +++ b/htdocs/langs/am_ET/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=ዩአርኤል ለኮንትራት ToOfferALinkForOnlinePaymentOnFreeAmount=ምንም አይነት ነገር ሳይኖር የ%s የመስመር ላይ ክፍያ ገጽ ለማቅረብ URL. ToOfferALinkForOnlinePaymentOnMemberSubscription=ለአባል ምዝገባ %s የመስመር ላይ ክፍያ ገጽ ለማቅረብ URL. ToOfferALinkForOnlinePaymentOnDonation=ዩአርኤል ለልገሳ ክፍያ %s የመስመር ላይ መክፈያ ገጽ ለማቅረብ -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) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Setup your Stripe with url %s to have payment created automatically when validated by Stripe. AccountParameter=የመለያ መለኪያዎች UsageParameter=የአጠቃቀም መለኪያዎች @@ -77,4 +78,13 @@ TERMINAL_LOCATION=ለ Stripe ተርሚናሎች ቦታ (አድራሻ) RequestDirectDebitWithStripe=ቀጥታ ዴቢትን በ Stripe ይጠይቁ RequesCreditTransferWithStripe=በ Stripe የብድር ማስተላለፍ ይጠይቁ STRIPE_SEPA_DIRECT_DEBIT=የቀጥታ ዴቢት ክፍያዎችን በStripe በኩል ያንቁ +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=Stripe Connect ሁነታ +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/ar_EG/commercial.lang b/htdocs/langs/ar_EG/commercial.lang index 2d1397eb341..e0fae282fb0 100644 --- a/htdocs/langs/ar_EG/commercial.lang +++ b/htdocs/langs/ar_EG/commercial.lang @@ -24,3 +24,4 @@ ListOfProspects=قائمة الفرص LastDoneTasks=أحدث %s خطوات مكتملة LastActionsToDo=أقدم %s خطوات غير مكتملة DraftPropals=مسودة العروض التجارية +NoSignature=لم توقع diff --git a/htdocs/langs/ar_SA/admin.lang b/htdocs/langs/ar_SA/admin.lang index ebc5c05291b..44545c60092 100644 --- a/htdocs/langs/ar_SA/admin.lang +++ b/htdocs/langs/ar_SA/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=يجب أن تكون قائمة القيم أسطرً ExtrafieldParamHelpcheckbox=يجب أن تكون قائمة القيم أسطرًا تحتوي على مفتاح تنسيق ، القيمة (حيث لا يمكن أن يكون المفتاح "0")

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

على سبيل المثال:
1 ، value1
2 ، value2 a0342fccfda19bda19b342 ... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=يجب أن تكون المعلمات ObjectName: Classpath
البنية: اسم الكائن: Classpath ExtrafieldParamHelpSeparator=احتفظ به فارغًا لفاصل بسيط
اضبط هذا على 1 لفاصل مطوي (يفتح افتراضيًا للجلسة الجديدة ، ثم يتم الاحتفاظ بالحالة لكل جلسة مستخدم)
اضبط هذا على 2 لفاصل مطوي (مطوي افتراضيًا لجلسة جديدة ، ثم يتم الاحتفاظ بالحالة قبل كل جلسة مستخدم) LibraryToBuildPDF=المكتبة المستخدمة لتوليد ملفات صيغة المستندات المتنقلة @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s متبوعًا باسم العميل ال ModuleCompanyCodeSupplierDigitaria=%s متبوعًا باسم المورد المقطوع بعدد الأحرف: %s لكود محاسبة المورد. Use3StepsApproval=بشكل افتراضي ، يجب إنشاء أوامر الشراء والموافقة عليها من قبل مستخدمين مختلفين (خطوة واحدة / مستخدم للإنشاء وخطوة واحدة / مستخدم للموافقة. لاحظ أنه إذا كان لدى المستخدم إذن للإنشاء والموافقة ، فستكون خطوة واحدة / مستخدم كافية) . يمكنك أن تطلب من خلال هذا الخيار تقديم خطوة ثالثة / موافقة مستخدم ، إذا كان المبلغ أعلى من قيمة مخصصة (لذلك ستكون 3 خطوات ضرورية: 1 = التحقق من الصحة ، 2 = الموافقة الأولى و 3 = الموافقة الثانية إذا كان المبلغ كافياً).
اضبط هذا على فارغ إذا كانت موافقة واحدة (خطوتان) كافية ، اضبطه على قيمة منخفضة جدًا (0.1) إذا كانت الموافقة الثانية (3 خطوات) مطلوبة دائمًا. UseDoubleApproval=استخدم موافقة من 3 خطوات عندما يكون المبلغ (بدون ضريبة) أعلى من ... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- لا يسمح لك بعض مزودي خدمة البريد الإلكتروني (مثل Yahoo) بإرسال بريد إلكتروني من خادم آخر غير الخادم الخاص بهم. يستخدم الإعداد الحالي الخاص بك خادم التطبيق لإرسال بريد إلكتروني وليس خادم مزود البريد الإلكتروني الخاص بك ، لذلك سيطلب بعض المستلمين (المتوافق مع بروتوكول DMARC المقيد) ، مزود البريد الإلكتروني الخاص بك ما إذا كان بإمكانهم قبول بريدك الإلكتروني وبعض موفري البريد الإلكتروني (مثل Yahoo) قد تستجيب بـ "لا" لأن الخادم ليس خادمهم ، لذلك قد لا يتم قبول عدد قليل من رسائل البريد الإلكتروني المرسلة للتسليم (كن حذرًا أيضًا من حصة الإرسال لمزود البريد الإلكتروني الخاص بك). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- يعد استخدام خادم SMTP الخاص بموفر خدمة البريد الإلكتروني الخاص بك لإرسال رسائل البريد الإلكتروني أمرًا مثيرًا للاهتمام أيضًا ، لذا سيتم أيضًا حفظ جميع رسائل البريد الإلكتروني المرسلة من التطبيق في دليل "البريد المرسل" الخاص بصندوق البريد الخاص بك. WarningPHPMailD=ولذلك يوصى بتغيير طريقة إرسال رسائل البريد الإلكتروني إلى القيمة "SMTP". WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. WarningPHPMail2=إذا كان موفر البريد الإلكتروني SMTP بحاجة إلى تقييد عميل البريد الإلكتروني لبعض عناوين IP (نادر جدًا) ، فهذا هو عنوان IP الخاص بوكيل مستخدم البريد (MUA) لتطبيق ERP CRM الخاص بك: %s . -WarningPHPMailSPF=إذا كان اسم المجال في عنوان البريد الإلكتروني الخاص بالمرسل محميًا بسجل SPF (اسأل مسجل اسم المجال الخاص بك) ، يجب عليك إضافة عناوين IP التالية في سجل SPF الخاص بـ DNS لمجالك: %s . -ActualMailSPFRecordFound=تم العثور على سجل SPF الفعلي (للبريد الإلكتروني %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=انقر لإظهار الوصف DependsOn=تحتاج هذه الوحدة إلى الوحدة (الوحدات) RequiredBy=هذه الوحدة مطلوبة من قبل الوحدة (الوحدات) @@ -867,7 +868,7 @@ Permission255=إنشاء / تعديل بلده معلومات المستخدم Permission256=تعديل بنفسه كلمة المرور Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=قم بتوسيع الوصول إلى جميع الأطراف الثالثة بدون كائناتهم (ليس فقط الأطراف الثالثة التي يكون المستخدم ممثل بيع لها).
غير فعال للمستخدمين الخارجيين (يقتصر الأمر دائمًا على أنفسهم فيما يتعلق بالعروض والأوامر والفواتير والعقود وما إلى ذلك).
غير فعال للمشاريع (فقط القواعد المتعلقة بأذونات المشروع والرؤية ومسائل التعيين). Permission271=قراءة في كاليفورنيا Permission272=قراءة الفواتير @@ -944,7 +945,7 @@ Permission776=دفع نفقة تقارير Permission777=قراءة جميع تقارير المصاريف (حتى تلك الخاصة بالمستخدم وليس المرؤوسين) Permission778=إنشاء / تعديل تقارير المصروفات للجميع Permission779=تقارير حساب التصدير -Permission1001=قراءة مخزونات +Permission1001=Read warehouses and stocks Permission1002=إنشاء / تعديل المستودعات Permission1003=حذف المستودعات Permission1004=قراءة تحركات الأسهم @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=مرشح Regex لتنظيف القيمة (COMPANY_ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=تنظيف كلمات معينة عند إنشاء حسابات فرعية للعملاء أو الموردين RemoveSpecialWordsHelp=حدد الكلمات المراد تنظيفها قبل حساب حساب العميل أو مورد. إستخدم "؛" بين كل كلمة -GDPRContact=مسؤول حماية البيانات (DPO أو خصوصية البيانات أو جهة اتصال GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=إذا قمت بتخزين البيانات الشخصية في نظام المعلومات الخاص بك ، فيمكنك تسمية جهة الاتصال المسؤولة عن اللائحة العامة لحماية البيانات هنا HelpOnTooltip=نص المساعدة للظهور في تلميح الأداة HelpOnTooltipDesc=ضع نصًا أو مفتاح ترجمة هنا حتى يظهر النص في تلميح عندما يظهر هذا الحقل في نموذج @@ -2218,7 +2219,7 @@ CreateCandidature=إنشاء طلب وظيفة FormatZip=الرمز البريدي MainMenuCode=رمز دخول القائمة (mainmenu) ECMAutoTree=عرض شجرة ECM التلقائية -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=ساعات الافتتاح OpeningHoursDesc=ادخل هنا ساعات الافتتاح لشركتك ResourceSetup=تكوين وحدة الموارد @@ -2264,7 +2265,7 @@ LargerThan=أكبر من IfTrackingIDFoundEventWillBeLinked=لاحظ أنه إذا تم العثور على معرف تتبع لكائن ما في البريد الإلكتروني، أو إذا كان البريد الإلكتروني عبارة عن إجابة لرسالة بريد إلكتروني تم جمعها بالفعل و مرتبطة بكائن ما، فسيتم إنشاء الحدث تلقائيًا مرتبطة بالكائن المعروف ذي الصلة. WithGMailYouCanCreateADedicatedPassword=باستخدام حساب GMail، إذا قمت بتمكين التحقق بخطوتين، فمن المستحسن إنشاء كلمة مرور ثانية مخصصة للتطبيق بدلاً من استخدام كلمة مرور حسابك الخاص من https://myaccount.google.com/. EmailCollectorTargetDir=قد يكون نقل البريد الإلكتروني إلى دليل آخر وسم/دليلًا آخر عندما تمت معالجته بنجاح. ما عليك سوى تعيين اسم الدليل هنا لاستخدام هذه الميزة (لا تستخدم أحرفًا خاصة في الاسم). لاحظ أنه يجب عليك أيضًا استخدام حساب تسجيل الدخول للقراءة/الكتابة. -EmailCollectorLoadThirdPartyHelp=يمكنك استخدام هذا الإجراء لاستخدام محتوى البريد الإلكتروني للعثور على و وتحميل جهة خارجية موجودة في قاعدة بياناتك (سيتم إجراء البحث على الخاصية المحددة بين 'id' و'name' ، "الاسم المستعار"، "البريد الإلكتروني"). سيتم استخدام الطرف الثالث الذي تم العثور عليه (أو إنشاؤه) لمتابعة الإجراءات التي تحتاج إليه.
على سبيل المثال، إذا كنت تريد إنشاء طرف ثالث باسم مستخرج من سلسلة ' الاسم: الاسم المراد العثور عليه موجود في النص، استخدم البريد الإلكتروني للمرسل كبريد إلكتروني، يمكنك تعيين حقل المعلمة مثل هذا:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=تحذير: تقوم الكثير من خوادم البريد الإلكتروني (مثل Gmail) بإجراء عمليات بحث كاملة عن الكلمات عند البحث عن سلسلة و لن يعرض نتيجة إذا تم العثور على السلسلة جزئيًا فقط في كلمة. لهذا السبب أيضًا، سيتم تجاهل استخدام الأحرف الخاصة في معايير البحث إذا لم تكن جزءًا من الكلمات الموجودة.
لإجراء بحث استبعاد عن كلمة (قم بإرجاع البريد الإلكتروني إذا كانت الكلمة لم يتم العثور عليه)، يمكنك استخدام ! الحرف قبل الكلمة (قد لا يعمل على بعض خوادم البريد). EndPointFor=نقطة النهاية لـ %s: %s DeleteEmailCollector=حذف مُجمع البريد الإلكتروني @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=اسم الطرف الثالث - الاسم المستعار ل ALIAS_THIRDPARTY=الاسم المستعار لجهة خارجية - اسم الجهة الخارجية PDFIn2Languages=إظهار التسميات في ملف PDF بلغتين مختلفتين (قد لا تعمل هذه الميزة مع بعض اللغات) PDF_USE_ALSO_LANGUAGE_CODE=اذا كنت ترغب في تكرار بعض النصوص بلغتين مختلفتين في ملفاتك المولدة بصيغة المستندات المتنقلة . يجب عليك ان ان تحدد اللغة الثانية هنا حتى يتسنى للملفات المولدة ان تحتوي على لغتين في نفس الصفحة . اللغة المختارة اثناء توليد المستند واللغة المختارة هنا (فقط بعض قوالب صيغة المستندات المتنقلة تدعم هذه الميزة) . ابق الخيار فارغاً للتوليد بلغة واحدة -PDF_USE_A=قم بإنشاء مستندات PDF بتنسيق PDF/A بدلاً من التنسيق الافتراضي PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=أدخل هنا رمز رمز FontAwesome. إذا كنت لا تعرف ما هو FontAwesome ، فيمكنك استخدام القيمة العامة fa-address-book. RssNote=ملاحظة: كل تعريف لمصدر اخبار مختصرة يوفر بريمج يجب تفعيله ليكون متاحا في لوحة المعلومات JumpToBoxes=اذهب الى الاعدادت -> البريمجات @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ar_SA/commercial.lang b/htdocs/langs/ar_SA/commercial.lang index 80e2fd7b042..0c77514d2d3 100644 --- a/htdocs/langs/ar_SA/commercial.lang +++ b/htdocs/langs/ar_SA/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=هل أنت متأكد من حذف هذا الحدث؟ CardAction=بطاقة الحدث ActionOnCompany=شركة ذات صلة ActionOnContact=جهة اتصال ذات صلة +ActionOnUser=Related user TaskRDVWith=لقاء مع %s ShowTask=عرض المهمة ShowAction=عرض الحدث @@ -47,7 +48,6 @@ LastProspectToContact=للاتصال LastProspectContactInProcess=الاتصال قيد الانجاز LastProspectContactDone=تم الاتصال ActionAffectedTo=تم تعيين الحدث لـ -ActionDoneBy=تم تنفيذ الحدث بواسطة ActionAC_TEL=اتصال هاتفي ActionAC_FAX=إرسال فاكس ActionAC_PROP=إرسال الاقتراح بالبريد @@ -78,16 +78,25 @@ WelcomeOnOnlineSignaturePageProposal=مرحبًا بك في الصفحة لقب WelcomeOnOnlineSignaturePageContract=مرحبًا بك في %s صفحة توقيع العقد بتنسيق PDF WelcomeOnOnlineSignaturePageFichinter=مرحبًا بك في صفحة توقيع ملف PDF للتدخل %s WelcomeOnOnlineSignaturePageSociete_rib=مرحبًا بك في %s صفحة توقيع PDF الخاصة بتفويض SEPA +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=تسمح لك هذه الشاشة بقبول وتوقيع أو رفض عرض أسعار / عرض تجاري ThisScreenAllowsYouToSignDocFromContract=تتيح لك هذه الشاشة توقيع العقد بتنسيق PDF عبر الإنترنت. ThisScreenAllowsYouToSignDocFromFichinter=تسمح لك هذه الشاشة بالتوقيع على المداخلة بصيغة PDF عبر الإنترنت. ThisScreenAllowsYouToSignDocFromSociete_rib=تتيح لك هذه الشاشة التوقيع على تفويض SEPA بتنسيق PDF عبر الإنترنت. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=هذه معلومات على الوثيقة لقبولها أو رفضها ThisIsInformationOnDocumentToSignContract=هذه معلومات عن العقد للتوقيع ThisIsInformationOnDocumentToSignFichinter=هذه معلومات عن التدخل للتوقيع ThisIsInformationOnDocumentToSignSociete_rib=هذه معلومات عن تفويض SEPA للتوقيع +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=توقيع عرض الأسعار / العرض التجاري %s SignatureContractRef=توقيع العقد %s SignatureFichinterRef=توقيع التدخل %s SignatureSociete_ribRef=توقيع تفويض SEPA %s FeatureOnlineSignDisabled=تم تعطيل ميزة التوقيع عبر الإنترنت أو تم إنشاء المستند قبل تمكين الميزة +NoSignature=لم يتم التوقيع +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/ar_SA/companies.lang b/htdocs/langs/ar_SA/companies.lang index b02fd4803fe..cc6b15aecfa 100644 --- a/htdocs/langs/ar_SA/companies.lang +++ b/htdocs/langs/ar_SA/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=تسجيل الدخول الى دوليبار NoDolibarrAccess=لا يوجد وصول دوليبار ExportDataset_company_1=الأطراف الثالثة (الشركات / المؤسسات / الأشخاص الطبيعيون) وممتلكاتهم ExportDataset_company_2=جهات الاتصال وخصائصها +ExportDataset_company_3=حسابات بنكية لأطراف ثالثة ImportDataset_company_1=الأطراف الثالثة وممتلكاتهم ImportDataset_company_2=جهات اتصال | عناوين وسمات إضافية للأطراف الثالثة ImportDataset_company_3=حسابات بنكية لأطراف ثالثة diff --git a/htdocs/langs/ar_SA/datapolicy.lang b/htdocs/langs/ar_SA/datapolicy.lang index 9223c32536e..18bf9ec7c02 100644 --- a/htdocs/langs/ar_SA/datapolicy.lang +++ b/htdocs/langs/ar_SA/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,13 +15,10 @@ Module4100Name = سياسة خصوصية البيانات # Module description 'ModuledatapolicyDesc' Module4100Desc = نموذج لإدارة خصوصية البيانات (التوافق مع اللائحة العامة لحماية البيانات) - -# # Administration page -# datapolicySetup = نموذج إعداد سياسة خصوصية البيانات Deletion = حذف البيانات -datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). +datapolicySetupPage = وفقًا لقوانين بلدانك (مثال المادة 5 من اللائحة العامة لحماية البيانات)، يجب الاحتفاظ بالبيانات الشخصية لفترة من الوقت. بما لا يتجاوز المدة المطلوبة للبيانات للغرض الذي تم جمعها من أجله، باستثناء الأغراض الأرشفية.
سيتم الحذف تلقائيًا بعد مدة معينة دون أحداث (المدة والتي ستشير إليها أدناه). NB_MONTHS = %s شهر ONE_YEAR = 1 سنة NB_YEARS = %s سنة @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = احتمال/العميل DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = ولا احتمال/ ولا العميل DATAPOLICY_CONTACT_FOURNISSEUR = المورد DATAPOLICY_ADHERENT = عضو -DATAPOLICY_Tooltip_SETUP = نوع جهة الاتصال - حدد اختياراتك لكل نوع. -DATAPOLICYMail = إعداد رسائل البريد الإلكتروني -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = محتوى البريد الإلكتروني -DATAPOLICYSUBSITUTION = يمكنك استخدام المتغيرات التالية في بريدك الإلكتروني (يسمح LINKACCEPT بإنشاء رابط يسجل موافقة الشخص، ويتيح LINKREFUSED تسجيل رفض الشخص): -DATAPOLICYACCEPT = رسالة بعد الاتفاق -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = يمكنك إرسال بريد إلكتروني بالقانون العام لحماية البيانات (GDPR) إلى جميع جهات الاتصال ذات الصلة (الذين لم يتلقوا بعد رسالة بريد إلكتروني و والتي لم تسجل أي شيء بشأن اتفاقية القانون العام لحماية البيانات الخاصة بهم). للقيام بذلك، استخدم الزر التالي. SendAgreement = إرسال رسائل البريد الإلكتروني AllAgreementSend = تم إرسال كافة رسائل البريد الإلكتروني TXTLINKDATAPOLICYACCEPT = نص الرابط "الاتفاقية" -TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# +TXTLINKDATAPOLICYREFUSE = نص الرابط "الخلاف" # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = اللائحة العامة لحماية البيانات: معالجة البيانات الشخصية DATAPOLICY_consentement = تم الحصول على الموافقة لمعالجة البيانات الشخصية -DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = إخفاء هوية طرف ثالث -DATAPOLICY_POPUP_ANONYME_TEXTE = لا يمكنك حذف جهة الاتصال هذه من Dolibarr نظرًا لوجود عناصر ذات صلة. وفقًا للائحة العامة لحماية البيانات، ستجعل جميع هذه البيانات مجهولة المصدر لاحترام التزاماتك. هل ترغب في الاستمرار ؟ - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = قابلية النقل الناتج المحلي الإجمالي -DATAPOLICY_PORTABILITE_TITLE = تصدير البيانات الشخصية -DATAPOLICY_PORTABILITE_CONFIRMATION = تريد تصدير البيانات الشخصية لجهة الاتصال هذه. هل أنت متأكد ؟ - -# +DATAPOLICY_opposition_traitement = يعارض معالجة بياناته الشخصية +DATAPOLICY_opposition_prospection = يعارض معالجة بياناته الشخصية لأغراض التنقيب # Notes added during an anonymization -# -ANONYMISER_AT = تم إخفاء هوية %s - -DATAPOLICY_date = Date of agreement/disagreement GDPR -DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = إرسال البريد الإلكتروني اللائحة العامة لحماية البيانات +DATAPOLICY_date = تاريخ الاتفاق/الخلاف الناتج المحلي الإجمالي +DATAPOLICY_send = تاريخ إرسال البريد الإلكتروني للاتفاقية MailSent = تم ارسال البريد الالكتروني - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion +NUMBER_MONTH_BEFORE_DELETION = عدد الأشهر قبل الحذف diff --git a/htdocs/langs/ar_SA/dict.lang b/htdocs/langs/ar_SA/dict.lang index 3e899a67d98..fbcc0a3d822 100644 --- a/htdocs/langs/ar_SA/dict.lang +++ b/htdocs/langs/ar_SA/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=الحراجية المعتمدة الفرنك CurrencySingXPF=الحراجية المعتمدة الفرنك CurrencyCentEUR=سنتا CurrencyCentSingEUR=سنت -CurrencyCentINR=بيزة -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=بيزة CurrencyThousandthSingTND=الألف #### Input reasons ##### DemandReasonTypeSRC_INTE=الإنترنت diff --git a/htdocs/langs/ar_SA/errors.lang b/htdocs/langs/ar_SA/errors.lang index 82b6452d30f..5f6e80c9d7f 100644 --- a/htdocs/langs/ar_SA/errors.lang +++ b/htdocs/langs/ar_SA/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=User must be assigned to task to be able to enter tim ErrorTaskAlreadyAssigned=Task already assigned to user ErrorModuleFileSeemsToHaveAWrongFormat=The module package seems to have a wrong format. ErrorModuleFileSeemsToHaveAWrongFormat2=يجب أن يوجد دليل إلزامي واحد على الأقل في ملف مضغوط للوحدة النمطية: %s أو %s -ErrorFilenameDosNotMatchDolibarrPackageRules=The name of the module package (%s) does not match expected name syntax: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the 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. @@ -422,3 +422,4 @@ OperNotDefined=طريقة الدفع غير محددة ErrorThisContactXIsAlreadyDefinedAsThisType=تم تعريف %s بالفعل كجهة اتصال لهذا النوع. ErrorThisGroupIsAlreadyDefinedAsThisType=تم بالفعل تعريف جهات الاتصال بهذه المجموعة كجهة اتصال لهذا النوع. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/ar_SA/mails.lang b/htdocs/langs/ar_SA/mails.lang index 606fd052fdd..acdaca68a89 100644 --- a/htdocs/langs/ar_SA/mails.lang +++ b/htdocs/langs/ar_SA/mails.lang @@ -32,6 +32,8 @@ NewMailing=مراسلة جديدة NewSMSing=الرسائل القصيرة الجديدة EditMailing=تحرير مراسلة ResetMailing=إعادة إرساله عبر البريد الإلكتروني +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=حذف البريد الإلكتروني PreviewMailing=معاينة مراسلة CreateMailing=إنشاء مراسلة @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=البريد الإلكتروني المتلقي فا WarningNoEMailsAdded=بريد الكتروني جديدة تضاف الى قائمة المتلقي. ConfirmValidMailing=Are you sure you want to validate this emailing? ConfirmResetMailing=تحذير ، من خلال إعادة تهيئة البريد الإلكتروني %s ، ستسمح بإعادة إرسال هذا البريد الإلكتروني في بريد مجمع. هل انت متأكد من أنك تريد أن تفعل هذا؟ +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=هل أنت متأكد أنك تريد حذف هذا البريد الإلكتروني؟ NbOfUniqueEMails=عدد رسائل البريد الإلكتروني الفريدة NbOfUniquePhones=عدد الهواتف الفريدة @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=لم يعد هناك مستلم لإرسال البري EmailOptedOut=لقد طلب مالك البريد الإلكتروني عدم الاتصال به عبر هذا البريد الإلكتروني بعد الآن EvenUnsubscribe=قم بتضمين رسائل البريد الإلكتروني الخاصة بإلغاء الاشتراك EvenUnsubscribeDesc=قم بتضمين رسائل البريد الإلكتروني الخاصة بإلغاء الاشتراك عند تحديد رسائل البريد الإلكتروني كأهداف. مفيد لرسائل البريد الإلكتروني الخاصة بالخدمة الإلزامية على سبيل المثال. -XEmailsDoneYActionsDone=%s رسائل البريد الإلكتروني المؤهلة مسبقًا، %s تمت معالجة رسائل البريد الإلكتروني بنجاح (لسجل %s / تم تنفيذ الإجراءات) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=يمكنك عمل بعض التعليمات لبريدك الإلكتروني (على سبيل المثال: إنشاء صورة في قالب البريد الإلكتروني...) ModelTemplate=قالب البريد الإلكتروني YouCanChooseAModelForYouMailContent= يمكنك اختيار أحد نماذج القوالب أو إنشاء نموذج باستخدام الذكاء الاصطناعي TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/ar_SA/stripe.lang b/htdocs/langs/ar_SA/stripe.lang index d20a1cda460..25fc42aac72 100644 --- a/htdocs/langs/ar_SA/stripe.lang +++ b/htdocs/langs/ar_SA/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL لتقديم صفحة دفع عب ToOfferALinkForOnlinePaymentOnFreeAmount=عنوان URL لعرض صفحة دفع عبر الإنترنت %s بأي مبلغ مع عدم وجود عنصر موجود ToOfferALinkForOnlinePaymentOnMemberSubscription=عنوان URL لتقديم صفحة دفع عبر الإنترنت %s لاشتراك عضو ToOfferALinkForOnlinePaymentOnDonation=عنوان URL لعرض صفحة دفع عبر الإنترنت %s لدفع تبرع -YouCanAddTagOnUrl=يمكنك أيضًا إضافة معلمة url & tag = قيمة إلى أي من عناوين URL هذه (إلزامي فقط للدفع غير المرتبط بكائن) لإضافة علامة تعليق الدفع الخاصة بك.
بالنسبة إلى عنوان URL للدفعات التي لا تحتوي على كائن موجود ، يمكنك أيضًا إضافة المعلمة & noidempotency = 1 بحيث يمكن استخدام نفس الرابط مع نفس العلامة عدة مرات (قد تقصر بعض أوضاع الدفع الدفع على 1 لكل رابط مختلف بدون ذلك معامل) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=قم بإعداد Stripe باستخدام عنوان url %s ليتم إنشاء الدفع تلقائيًا عند التحقق من صحته بواسطة Stripe. AccountParameter=حساب المعلمات UsageParameter=استخدام المعلمات @@ -75,5 +76,15 @@ CreationOfPaymentModeMustBeDoneFromStripeInterface=نظرًا لقواعد ال STRIPE_CARD_PRESENT=البطاقة موجودة للمحطات الشريطية TERMINAL_LOCATION=الموقع (العنوان) لـ Stripe Terminals RequestDirectDebitWithStripe=طلب الخصم المباشر مع الشريط +RequesCreditTransferWithStripe=طلب تحويل الرصيد مع Stripe STRIPE_SEPA_DIRECT_DEBIT=تمكين مدفوعات الخصم المباشر من خلال Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=وضع ربط الشريط +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/az_AZ/admin.lang b/htdocs/langs/az_AZ/admin.lang index 354a8ee6648..459bf5845f3 100644 --- a/htdocs/langs/az_AZ/admin.lang +++ b/htdocs/langs/az_AZ/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametrlər ObjectName:Classpath
Sintaksis: ObjectName:Classpath olmalıdır ExtrafieldParamHelpSeparator=Sadə ayırıcı üçün boş saxlayın
Dağlanan ayırıcı üçün bunu 1-ə təyin edin (defolt olaraq yeni sessiya üçün açılır, sonra status hər istifadəçi sessiyası üçün saxlanılır)
Bunu yığışdıran ayırıcı üçün 2-yə təyin edin (yeni sessiya üçün defolt olaraq yığışdırılır, sonra status hər istifadəçi seansından əvvəl saxlanılır) LibraryToBuildPDF=PDF yaratmaq üçün istifadə olunan kitabxana @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s və ardınca simvolların sayına görə k ModuleCompanyCodeSupplierDigitaria=%s və ardınca simvolların sayına görə kəsilmiş təchizatçı adı: təchizatçının uçot kodu üçün %s. Use3StepsApproval=Varsayılan olaraq, Satınalma Sifarişləri 2 müxtəlif istifadəçi tərəfindən yaradılmalı və təsdiqlənməlidir (bir addım/istifadəçi yaratmaq və bir addım/istifadəçi təsdiq etmək üçün. Qeyd edək ki, əgər istifadəçinin həm yaratmaq, həm də təsdiq etmək icazəsi varsa, bir addım/istifadəçi kifayət edəcək) . Məbləğ ayrılmış dəyərdən yüksəkdirsə, bu seçimlə üçüncü addım/istifadəçi təsdiqini təqdim etməyi xahiş edə bilərsiniz (buna görə də 3 addım lazım olacaq: 1=təsdiqləmə, 2=ilk təsdiq və 3=məbləğ kifayətdirsə, ikinci təsdiq).
Bir təsdiq (2 addım) kifayətdirsə, bunu boş olaraq təyin edin, ikinci təsdiq (3 addım) həmişə tələb olunursa, onu çox aşağı dəyərə (0.1) təyin edin. UseDoubleApproval=Məbləğ (vergisiz) daha yüksək olduqda 3 addımlı təsdiqdən istifadə edin... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Bəzi E-poçt Xidməti Provayderləri (məsələn, Yahoo) sizə öz serverindən fərqli olaraq başqa serverdən e-poçt göndərməyə icazə vermir. Cari quraşdırmanız e-poçt provayderinizin serverindən deyil, e-poçt göndərmək üçün tətbiqin serverindən istifadə edir, beləliklə, bəzi alıcılar (məhdudlaşdırıcı DMARC protokolu ilə uyğun gələn) e-poçt provayderinizdən e-poçtunuzu və bəzi e-poçt provayderlərinizi qəbul edə bilməyəcəyini soruşacaqlar. (Yahoo kimi) server onlara məxsus olmadığı üçün "yox" cavabı verə bilər, ona görə də göndərdiyiniz e-poçtların bir qismi çatdırılma üçün qəbul edilə bilməz (e-poçt provayderinizin göndərmə kvotasına da diqqət yetirin). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- E-poçt göndərmək üçün öz E-poçt Xidməti Provayderinizin SMTP serverindən istifadə etmək də maraqlıdır, ona görə də proqramdan göndərilən bütün e-poçtlar poçt qutunuzun “Göndərilmiş” kataloqunda saxlanacaq. WarningPHPMailD=Buna görə də e-poçtların göndərilmə üsulunu "SMTP" dəyərinə dəyişdirmək tövsiyə olunur. WarningPHPMailDbis=Əgər həqiqətən e-poçt göndərmək üçün defolt "PHP" metodunu saxlamaq istəyirsinizsə, bu xəbərdarlığa məhəl qoymayın və ya %sburaya klikləməklə onu silin%s. WarningPHPMail2=E-poçt SMTP provayderiniz e-poçt müştərisini bəzi IP ünvanlarla məhdudlaşdırmalıdırsa (çox nadirdir), bu, ERP CRM tətbiqiniz üçün poçt istifadəçisi agentinin (MUA) IP ünvanıdır: %s. -WarningPHPMailSPF=Göndərən e-poçt ünvanınızdakı domen adı SPF qeydi ilə qorunursa (domen adı reyestrindən soruşun), siz domeninizin DNS-nin SPF qeydinə aşağıdakı IP-ləri əlavə etməlisiniz: %s. -ActualMailSPFRecordFound=Faktiki SPF qeydi tapıldı (e-poçt üçün %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Təsviri göstərmək üçün klikləyin DependsOn=Bu modula modul(lar) lazımdır RequiredBy=Bu modul modul(lar) tərəfindən tələb olunur @@ -867,7 +868,7 @@ Permission255=Digər istifadəçilərin parolunu dəyişdirin Permission256=Digər istifadəçiləri silin və ya söndürün Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Obyektləri OLMADAN bütün üçüncü tərəflərə girişi genişləndirin (yalnız istifadəçinin satış nümayəndəsi olduğu üçüncü tərəflər deyil).
Xarici istifadəçilər üçün effektiv deyil (təkliflər üçün həmişə özləri ilə məhdudlaşır, sifarişlər, hesab-fakturalar, müqavilələr və s.).
Layihələr üçün effektiv deyil (yalnız layihə icazələri, görünürlük və təyinat məsələləri ilə bağlı qaydalar). Permission271=CA oxuyun Permission272=Fakturaları oxuyun @@ -944,7 +945,7 @@ Permission776=Xərc hesabatlarını ödəyin Permission777=Bütün xərc hesabatlarını oxuyun (hətta istifadəçinin tabeliyində olmayanlar belə) Permission778=Hər kəsin xərc hesabatlarını yaradın/dəyişdirin Permission779=İxrac xərcləri hesabatları -Permission1001=Səhmləri oxuyun +Permission1001=Read warehouses and stocks Permission1002=Anbarlar yaradın/dəyişdirin Permission1003=Anbarları silin Permission1004=Birja hərəkətlərini oxuyun @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Təmiz dəyər üçün regex filtri (COMPANY_DIGIT DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Müştərilər və ya təchizatçılar üçün sub-hesablar yaradan zaman müəyyən sözləri təmizləyin RemoveSpecialWordsHelp=Müştəri və ya təchizatçı hesabını hesablamadan əvvəl təmizlənəcək sözləri göstərin. ";" istifadə edin hər söz arasında -GDPRContact=Məlumatların Mühafizəsi Məmuru (DPO, Məlumat Məxfiliyi və ya GDPR əlaqəsi) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Şəxsi məlumatlarınızı İnformasiya Sisteminizdə saxlayırsınızsa, burada Ümumi Məlumatların Qorunması Qaydasına cavabdeh olan kontaktın adını çəkə bilərsiniz HelpOnTooltip=Alət ipucunda göstərmək üçün kömək mətni HelpOnTooltipDesc=Bu sahə formada görünəndə mətnin alət ipucunda görünməsi üçün bura mətn və ya tərcümə düyməsini qoyun @@ -2218,7 +2219,7 @@ CreateCandidature=İş ərizəsi yaradın FormatZip=Zip MainMenuCode=Menyuya giriş kodu (əsas menyu) ECMAutoTree=Avtomatik ECM ağacını göstərin -OperationParamDesc=Bəzi məlumatları çıxarmaq üçün istifadə ediləcək qaydaları müəyyənləşdirin və ya əməliyyat üçün istifadə ediləcək dəyərləri təyin edin.

Şirkət adını buradan çıxarmaq üçün nümunə e-poçt mövzusunu müvəqqəti dəyişənə çevirin:
tmp_var=EXTRACT:SUBJECT:Şirkətdən mesaj ([^\n]*)

Yaratmaq üçün obyektin xassələrini təyin etmək üçün nümunələr:
objproperty1=SET:sabit kodlu dəyər
objproperty2=SET:__tmp_var__
objFETIperty: value. yalnız mülkiyyət artıq müəyyən edilmədikdə təyin edilir)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:\\y s([^\\s]*)

Bir neçə xassə çıxarmaq və ya təyin etmək üçün yeni sətirdən istifadə edin. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Açılış saatları OpeningHoursDesc=Buraya şirkətinizin müntəzəm iş saatlarını daxil edin. ResourceSetup=Resurs modulunun konfiqurasiyası @@ -2264,7 +2265,7 @@ LargerThan=-dən böyük IfTrackingIDFoundEventWillBeLinked=Nəzərə alın ki, e-poçtda obyektin izləmə identifikatoru tapılarsa və ya e-poçt artıq toplanmış və obyektlə əlaqələndirilmiş e-poçtun cavabıdırsa, yaradılmış hadisə avtomatik olaraq məlum əlaqəli obyektlə əlaqələndiriləcəkdir. WithGMailYouCanCreateADedicatedPassword=GMail hesabı ilə, əgər 2 addımlı doğrulamanı aktiv etmisinizsə, https://myaccount.google.com/ ünvanından öz hesab parolunuzdan istifadə etmək əvəzinə proqram üçün xüsusi ikinci parol yaratmaq tövsiyə olunur. EmailCollectorTargetDir=E-poçt uğurla işləndikdən sonra onu başqa etiketə/kataloqa köçürmək arzu olunan davranış ola bilər. Bu funksiyadan istifadə etmək üçün sadəcə olaraq kataloqun adını təyin edin (adda xüsusi simvollardan istifadə etməyin). Qeyd edək ki, siz həmçinin oxumaq/yazmaq giriş hesabından istifadə etməlisiniz. -EmailCollectorLoadThirdPartyHelp=Siz verilənlər bazanızda mövcud üçüncü tərəfi tapmaq və yükləmək üçün e-poçt məzmunundan istifadə etmək üçün bu əməliyyatdan istifadə edə bilərsiniz (axtarış 'id','ad','ad_alias','email' arasında müəyyən edilmiş əmlakda aparılacaq). Tapılmış (və ya yaradılmış) üçüncü tərəf ehtiyac duyan aşağıdakı əməliyyatlar üçün istifadə olunacaq.
Məsələn, əgər siz sətirdən çıxarılmış adla üçüncü tərəf yaratmaq istəyirsinizsə ' Ad: tapmaq üçün ad' bədəndə təqdim olunur, göndərənin e-poçtunu e-poçt kimi istifadə edin, parametr sahəsini belə təyin edə bilərsiniz:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Xəbərdarlıq: bir çox e-poçt serverləri (məsələn, Gmail) sətirdə axtarış edərkən tam söz axtarışı edir və sətir yalnız qismən sözdə tapılarsa, nəticə qaytarmayacaq. Bu səbəbdən də, mövcud sözlərin bir hissəsi olmadıqda, axtarış meyarlarında xüsusi simvollardan istifadə etinasız sayılacaq.
Sözdə axtarışı istisna etmək üçün (söz varsa e-poçtu qaytarın. tapılmadı), istifadə edə bilərsiniz! sözdən əvvəl simvol (bəzi poçt serverlərində işləməyə bilər). EndPointFor=%s üçün son nöqtə: %s DeleteEmailCollector=E-poçt kollektorunu silin @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Üçüncü tərəf adı - Üçüncü tərəf ləqəbi ALIAS_THIRDPARTY=Üçüncü tərəf ləqəbi - Üçüncü tərəfin adı PDFIn2Languages=PDF-də etiketləri 2 fərqli dildə göstərin (bu funksiya bəzi dillərdə işləməyə bilər) PDF_USE_ALSO_LANGUAGE_CODE=PDF-inizdə bəzi mətnlərin eyni yaradılmış PDF-də 2 müxtəlif dildə dublikat edilməsini istəyirsinizsə, burada bu ikinci dili təyin etməlisiniz ki, yaradılan PDF eyni səhifədə 2 müxtəlif dildən ibarət olsun, PDF yaradarkən seçilən dil və bu ( yalnız bir neçə PDF şablonu bunu dəstəkləyir). Hər PDF üçün 1 dil üçün boş saxlayın. -PDF_USE_A=Standart PDF formatı əvəzinə PDF/A formatında PDF sənədləri yaradın +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=FontAwesome ikonasının kodunu buraya daxil edin. FontAwesome nə olduğunu bilmirsinizsə, ümumi dəyər fa-ünvan kitabından istifadə edə bilərsiniz. RssNote=Qeyd: Hər bir RSS lent tərifi vidceti təmin edir ki, onun idarə panelində mövcud olması üçün onu aktivləşdirməlisiniz JumpToBoxes=Quraşdırma -> Vidjetlərə keçin @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/az_AZ/datapolicy.lang b/htdocs/langs/az_AZ/datapolicy.lang index 9973bdbd285..f26f8130653 100644 --- a/htdocs/langs/az_AZ/datapolicy.lang +++ b/htdocs/langs/az_AZ/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Məlumat Məxfilik Siyasəti # Module description 'ModuledatapolicyDesc' Module4100Desc = Məlumat Məxfiliyini idarə etmək üçün modul (GDPR ilə uyğunluq) - -# # Administration page -# datapolicySetup = Modul Məlumatlarının Məxfilik Siyasətinin Quraşdırılması Deletion = Məlumatların silinməsi datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Perspektiv/Müştəri DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Nə perspektiv/Nə müştəri DATAPOLICY_CONTACT_FOURNISSEUR = Təchizatçı DATAPOLICY_ADHERENT = Üzv -DATAPOLICY_Tooltip_SETUP = Əlaqə növü - Hər növ üçün seçimlərinizi göstərin. -DATAPOLICYMail = E-poçtların qurulması -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = E-poçtun məzmunu -DATAPOLICYSUBSITUTION = Siz e-poçtunuzda aşağıdakı dəyişənlərdən istifadə edə bilərsiniz (LINKACCEPT şəxsin razılığını qeyd edən link yaratmağa imkan verir, LINK REFUSED şəxsin imtinasını qeyd etməyə imkan verir): -DATAPOLICYACCEPT = Razılaşmadan sonra mesaj -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Siz bütün müvafiq kontaktlarınıza (hələ e-poçt almamış və GDPR müqaviləsi haqqında heç nə qeydiyyatdan keçirmədiyiniz) GDPR e-poçtu göndərə bilərsiniz. Bunu etmək üçün aşağıdakı düyməni istifadə edin. SendAgreement = E-poçt göndərin AllAgreementSend = Bütün e-poçtlar göndərildi TXTLINKDATAPOLICYACCEPT = "Razılaşma" linki üçün mətn TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: Şəxsi məlumatların emalı DATAPOLICY_consentement = Şəxsi məlumatların emalı üçün alınan razılıq DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Üçüncü tərəfi anonimləşdirin -DATAPOLICY_POPUP_ANONYME_TEXTE = Bu kontaktı Dolibarr-dan silə bilməzsiniz, çünki əlaqəli elementlər var. GDPR-ə uyğun olaraq, öhdəliklərinizə hörmət etmək üçün bütün bu məlumatları anonim edəcəksiniz. Davam etmək istərdinizmi? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Daşınma GDPR -DATAPOLICY_PORTABILITE_TITLE = Şəxsi məlumatların ixracı -DATAPOLICY_PORTABILITE_CONFIRMATION = Bu kontaktın şəxsi məlumatlarını ixrac etmək istəyirsiniz. Sən əminsən ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = %s anonimləşdirildi - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = GDPR e-poçtunu göndərin MailSent = E-poçt göndərildi - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/az_AZ/dict.lang b/htdocs/langs/az_AZ/dict.lang index ec315d97142..dcc9087751e 100644 --- a/htdocs/langs/az_AZ/dict.lang +++ b/htdocs/langs/az_AZ/dict.lang @@ -1,313 +1,316 @@ # Dolibarr language file - Source file is en_US - dict -CountryFR=France -CountryBE=Belgium -CountryIT=Italy -CountryES=Spain -CountryDE=Germany -CountryCH=Switzerland +CountryFR=Fransa +CountryBE=Belçika +CountryIT=İtaliya +CountryES=İspaniya +CountryDE=Almaniya +CountryCH=İsveçrə # 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=Ivoiry Coast -CountrySN=Senegal +CountryGB=Birləşmiş Krallıq +CountryUK=Birləşmiş Krallıq +CountryIE=İrlandiya +CountryCN=Çin +CountryTN=Tunis +CountryUS=Amerika Birləşmiş Ştatları +CountryMA=Mərakeş +CountryDZ=Əlcəzair +CountryCA=Kanada +CountryTG=Getmək +CountryGA=Qabon +CountryNL=Hollandiya +CountryHU=Macarıstan +CountryRU=Rusiya +CountrySE=İsveç +CountryCI=Fil Dişi Sahili +CountrySN=Seneqal 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 +CountryCM=Kamerun +CountryPT=Portuqaliya +CountrySA=Səudiyyə Ərəbistanı +CountryMC=Monako +CountryAU=Avstraliya +CountrySG=Sinqapur +CountryAF=Əfqanıstan +CountryAX=Aland adaları +CountryAL=Albaniya +CountryAS=Amerika Samoası CountryAD=Andorra -CountryAO=Angola +CountryAO=Anqola CountryAI=Anguilla -CountryAQ=Antarctica -CountryAG=Antigua and Barbuda -CountryAM=Armenia +CountryAQ=Antarktida +CountryAG=Antiqua və Barbuda +CountryAM=Ermənistan CountryAW=Aruba -CountryAT=Austria -CountryAZ=Azerbaijan -CountryBS=Bahamas -CountryBH=Bahrain -CountryBD=Bangladesh +CountryAT=Avstriya +CountryAZ=Azərbaycan +CountryBS=Baham adaları +CountryBH=Bəhreyn +CountryBD=Banqladeş CountryBB=Barbados -CountryBY=Belarus -CountryBZ=Belize +CountryBY=Belarusiya +CountryBZ=Beliz 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 +CountryBM=Bermud adaları +CountryBT=Butan +CountryBO=Boliviya +CountryBA=Bosniya və Herseqovina +CountryBW=Botsvana +CountryBV=Buvet adası +CountryBR=Braziliya +CountryIO=Britaniya Hind okeanı ərazisi +CountryBN=Bruney Darussalam +CountryBG=Bolqarıstan CountryBF=Burkina Faso CountryBI=Burundi -CountryKH=Cambodia +CountryKH=Kamboca 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 +CountryKY=Kayman adaları +CountryCF=Mərkəzi Afrika Respublikası +CountryTD=Çad +CountryCL=Çili +CountryCX=Milad adası +CountryCC=Kokos (Kiling) adaları +CountryCO=Kolumbiya +CountryKM=Komor adaları +CountryCG=Konqo +CountryCD=Konqo, Demokratik Respublikası +CountryCK=Kuk adaları +CountryCR=Kosta Rika +CountryHR=Xorvatiya +CountryCU=Kuba +CountryCY=Kipr +CountryCZ=Çexiya Respublikası +CountryDK=Danimarka +CountryDJ=Cibuti +CountryDM=Dominika +CountryDO=Dominik respublikası +CountryEC=Ekvador +CountryEG=Misir 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) +CountryGQ=Ekvatorial Qvineya +CountryER=Eritreya +CountryEE=Estoniya +CountryET=Efiopiya +CountryFK=Folklend adaları +CountryFO=Farer adaları +CountryFJ=Fici adaları +CountryFI=Finlandiya +CountryGF=Fransız Qvianası +CountryPF=Fransız Polineziyası +CountryTF=Fransanın cənub əraziləri +CountryGM=Qambiya +CountryGE=Gürcüstan +CountryGH=Qana +CountryGI=Cəbəllütariq +CountryGR=Yunanıstan +CountryGL=Qrenlandiya +CountryGD=Qrenada +CountryGP=Qvadelupa +CountryGU=Quam +CountryGT=Qvatemala +CountryGN=Qvineya +CountryGW=Qvineya-Bisau +CountryGY=Qayana +CountryHT=Haiti +CountryHM=Heard Island və McDonald +CountryVA=Müqəddəs Taxt-Tac (Vatikan Dövləti) 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 +CountryHK=Honq Konq +CountryIS=İslandiya +CountryIN=Hindistan +CountryID=İndoneziya +CountryIR=İran +CountryIQ=İraq +CountryIL=İsrail +CountryJM=Yamayka +CountryJP=Yaponiya +CountryJO=İordaniya +CountryKZ=Qazaxıstan +CountryKE=Keniya CountryKI=Kiribati -CountryKP=North Korea -CountryKR=South Korea -CountryKW=Kuwait -CountryKG=Kyrgyzstan +CountryKP=Simali Koreya +CountryKR=Cənubi Koreya +CountryKW=Küveyt +CountryKG=Qırğızıstan 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 +CountryLV=Latviya +CountryLB=Livan +CountryLS=Lesoto +CountryLR=Liberiya +CountryLY=Liviya +CountryLI=Lixtenşteyn +CountryLT=Litva +CountryLU=Lüksemburq +CountryMO=Makao +CountryMK=Makedoniya, keçmiş Yuqoslaviya +CountryMG=Madaqaskar +CountryMW=Malavi +CountryMY=Malayziya +CountryMV=Maldiv adaları CountryML=Mali CountryMT=Malta -CountryMH=Marshall Islands -CountryMQ=Martinique -CountryMR=Mauritania -CountryMU=Mauritius +CountryMH=Marşal adaları +CountryMQ=Martinika +CountryMR=Mavritaniya +CountryMU=Mavrikiy CountryYT=Mayotte -CountryMX=Mexico -CountryFM=Micronesia +CountryMX=Meksika +CountryFM=Mikroneziya CountryMD=Moldova -CountryMN=Mongolia -CountryMS=Monserrat -CountryMZ=Mozambique -CountryMM=Myanmar (Burma) -CountryNA=Namibia +CountryMN=Monqolustan +CountryMS=Montserrat +CountryMZ=Mozambik +CountryMM=Myanma (Birma) +CountryNA=Namibiya CountryNR=Nauru CountryNP=Nepal -CountryAN=Netherlands Antilles -CountryNC=New Caledonia -CountryNZ=New Zealand -CountryNI=Nicaragua +CountryAN=Hollandiya Antilləri +CountryNC=Yeni Kaledoniya +CountryNZ=Yeni Zelandiya +CountryNI=Nikaraqua CountryNE=Niger -CountryNG=Nigeria +CountryNG=Nigeriya CountryNU=Niue -CountryNF=Norfolk Island -CountryMP=Northern Mariana Islands -CountryNO=Norway +CountryNF=Norfolk adası +CountryMP=Şimali Mariana adaları +CountryNO=Norveç CountryOM=Oman CountryPK=Pakistan CountryPW=Palau -CountryPS=Palestinian Territory, Occupied +CountryPS=Fələstin ərazisi, işğal olunub CountryPA=Panama -CountryPG=Papua New Guinea -CountryPY=Paraguay +CountryPG=Papua Yeni Qvineya +CountryPY=Paraqvay 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 +CountryPH=Filippin +CountryPN=Pitkern adaları +CountryPL=Polşa +CountryPR=Puerto Riko +CountryQA=Qətər +CountryRE=Birləşmə +CountryRO=Rumıniya +CountryRW=Ruanda +CountrySH=Müqəddəs Yelena +CountryKN=Saint Kitts və Nevis +CountryLC=Müqəddəs Lusiya +CountryPM=Saint Pierre və Miquelon +CountryVC=Sent Vinsent və Qrenadinlər CountryWS=Samoa CountrySM=San Marino -CountryST=Sao Tome and Principe -CountryRS=Serbia -CountrySC=Seychelles +CountryST=Sao Tome və Prinsipi +CountryRS=Serbiya +CountrySC=Seyşel adaları 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 +CountrySK=Slovakiya +CountrySI=Sloveniya +CountrySB=Solomon adaları +CountrySO=Somali +CountryZA=Cənubi Afrika +CountryGS=Cənubi Corciya və Cənubi Sandviç Adaları +CountryLK=Şri 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 +CountrySR=Surinam +CountrySJ=Svalbard və Jan Mayen +CountrySZ=Svazilend +CountrySY=suriyalı +CountryTW=Tayvan +CountryTJ=Tacikistan +CountryTZ=Tanzaniya +CountryTH=Tayland +CountryTL=Şərqi Timor 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 +CountryTO=Tonqa +CountryTT=Trinidad və Tobaqo +CountryTR=Türkiyə +CountryTM=Türkmənistan +CountryTC=Turks və Kaykos adaları +CountryTV=tuvalu +CountryUG=Uqanda +CountryUA=Ukrayna +CountryAE=Birləşmiş Ərəb Əmirlikləri +CountryUM=Amerika Birləşmiş Ştatlarının Kiçik Xarici Adaları +CountryUY=Uruqvay +CountryUZ=Özbəkistan 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 +CountryVE=Venesuela +CountryVN=Vyetnam +CountryVG=Virgin Adaları, Britaniya +CountryVI=Virgin Adaları, ABŞ +CountryWF=Wallis və Futuna +CountryEH=Qərbi Sahara +CountryYE=Yəmən +CountryZM=Zambiya +CountryZW=Zimbabve +CountryGG=Gernsey +CountryIM=İnsan adası +CountryJE=Cersi +CountryME=Monteneqro CountryBL=Saint Barthelemy -CountryMF=Saint Martin +CountryMF=Müqəddəs Martin +CountryXK=Kosovo ##### Civilities ##### -CivilityMME=Mrs. -CivilityMR=Mr. -CivilityMLE=Ms. -CivilityMTRE=Master -CivilityDR=Doctor +CivilityMME=Xanım. +CivilityMMEShort=Xanım. +CivilityMR=Cənab. +CivilityMRShort=Cənab. +CivilityMLE=Xanım. +CivilityMTRE=Ustad +CivilityDR=Həkim ##### 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 +Currencyeuros=avro +CurrencyAUD=AU Dolları +CurrencySingAUD=AU Dolları +CurrencyCAD=CAN Dolları +CurrencySingCAD=CAN Dolları +CurrencyCHF=İsveçrə frankı +CurrencySingCHF=İsveçrə frankı +CurrencyEUR=avro +CurrencySingEUR=avro +CurrencyFRF=Fransız frankı +CurrencySingFRF=Fransız frankı +CurrencyGBP=GB Funt +CurrencySingGBP=GB Funt +CurrencyINR=Hindistan rupisi +CurrencySingINR=Hindistan rupisi +CurrencyMAD=dirhəm +CurrencySingMAD=dirhəm 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 +CurrencyMUR=Mavrikiy rupisi +CurrencySingMUR=Mavrikiy rupisi +CurrencyNOK=Norveç kronu +CurrencySingNOK=Norveç kronu +CurrencyTND=Tunis dinarı +CurrencySingTND=Tunis dinarı +CurrencyUSD=ABŞ dolları +CurrencySingUSD=ABŞ dolları +CurrencyUAH=Grivnası +CurrencySingUAH=Grivnası 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 +CurrencyXPF=CFP frankı +CurrencySingXPF=CFP frankı +CurrencyCentEUR=sent +CurrencyCentSingEUR=sent +CurrencyCentINR=paise +CurrencyCentSingINR=paisa +CurrencyThousandthSingTND=mininci #### 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 +DemandReasonTypeSRC_INTE=İnternet +DemandReasonTypeSRC_CAMP_MAIL=Poçt kampaniyası +DemandReasonTypeSRC_CAMP_EMAIL=E-poçt kampaniyası +DemandReasonTypeSRC_CAMP_PHO=Telefon kampaniyası +DemandReasonTypeSRC_CAMP_FAX=Faks kampaniyası +DemandReasonTypeSRC_COMM=Kommersiya əlaqəsi +DemandReasonTypeSRC_SHOP=Mağaza əlaqəsi +DemandReasonTypeSRC_WOM=Ağızdan gələn söz +DemandReasonTypeSRC_PARTNER=tərəfdaş +DemandReasonTypeSRC_EMPLOYEE=işçi +DemandReasonTypeSRC_SPONSORING=Sponsorluq +DemandReasonTypeSRC_SRC_CUSTOMER=Müştərinin daxil olan əlaqəsi #### Paper formats #### PaperFormatEU4A0=Format 4A0 PaperFormatEU2A0=Format 2A0 @@ -318,20 +321,20 @@ 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 +PaperFormatUSLETTER=ABŞ məktubunu formatlayın +PaperFormatUSLEGAL=Hüquqi ABŞ formatı +PaperFormatUSEXECUTIVE=Executive US formatı +PaperFormatUSLEDGER=Ledger/Tabloid formatı +PaperFormatCAP1=Format P1 Kanada +PaperFormatCAP2=Format P2 Kanada +PaperFormatCAP3=Format P3 Kanada +PaperFormatCAP4=Format P4 Kanada +PaperFormatCAP5=Format P5 Kanada +PaperFormatCAP6=Format P6 Kanada #### Expense report categories #### -ExpAutoCat=Car +ExpAutoCat=Avtomobil ExpCycloCat=Moped -ExpMotoCat=Motorbike +ExpMotoCat=Motosiklet ExpAuto3CV=3 CV ExpAuto4CV=4 CV ExpAuto5CV=5 CV @@ -342,18 +345,18 @@ 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 +ExpAuto3PCV=3 CV və daha çox +ExpAuto4PCV=4 CV və daha çox +ExpAuto5PCV=5 CV və daha çox +ExpAuto6PCV=6 CV və daha çox +ExpAuto7PCV=7 CV və daha çox +ExpAuto8PCV=8 CV və daha çox +ExpAuto9PCV=9 CV və daha çox +ExpAuto10PCV=10 CV və daha çox +ExpAuto11PCV=11 CV və daha çox +ExpAuto12PCV=12 CV və daha çox +ExpAuto13PCV=13 CV və daha çox +ExpCyclo=Tutum 50 sm3-ə qədərdir +ExpMoto12CV=Motosiklet 1 və ya 2 CV +ExpMoto345CV=Motosiklet 3, 4 və ya 5 CV +ExpMoto5PCV=Motosiklet 5 CV və daha çox diff --git a/htdocs/langs/az_AZ/errors.lang b/htdocs/langs/az_AZ/errors.lang index ee5d276eb7b..02376842e5f 100644 --- a/htdocs/langs/az_AZ/errors.lang +++ b/htdocs/langs/az_AZ/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=İstehlak olunan vaxtı daxil edə bilmək üçün is ErrorTaskAlreadyAssigned=Tapşırıq artıq istifadəçiyə təyin edilib ErrorModuleFileSeemsToHaveAWrongFormat=Modul paketində səhv format var. ErrorModuleFileSeemsToHaveAWrongFormat2=At least one mandatory directory must exists into zip of module: %s or %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Modul paketinin adı (%s) uyğun gəlmir gözlənilən ad sintaksisi: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Xəta, tətik adının dublikatı %s. Artıq %s saytından yüklənib. ErrorNoWarehouseDefined=Xəta, anbar müəyyən edilməmişdir. ErrorBadLinkSourceSetButBadValueForRef=İstifadə etdiyiniz link etibarlı deyil. Ödəniş üçün "mənbə" müəyyən edilib, lakin "ref" üçün dəyər etibarlı deyil. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/az_AZ/mails.lang b/htdocs/langs/az_AZ/mails.lang index 0c057faff04..a89c6e0831f 100644 --- a/htdocs/langs/az_AZ/mails.lang +++ b/htdocs/langs/az_AZ/mails.lang @@ -32,6 +32,8 @@ NewMailing=Yeni e-poçt NewSMSing=New smsing EditMailing=E-poçt göndərişini redaktə edin ResetMailing=E-poçtu yenidən göndərin +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=E-poçtu silin PreviewMailing=E-poçt göndərişinə ön baxış CreateMailing=E-poçt yaradın @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=E-poçt alıcısı boşdur WarningNoEMailsAdded=Alıcının siyahısına əlavə etmək üçün yeni E-poçt yoxdur. ConfirmValidMailing=Bu e-poçtu təsdiqləmək istədiyinizə əminsiniz? ConfirmResetMailing=Xəbərdarlıq, e-poçt göndərişini yenidən başlatmaqla %s, icazə verəcəksiniz bu e-poçtun toplu poçtla yenidən göndərilməsi. Bunu etmək istədiyinizə əminsiniz? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Bu e-poçtu silmək istədiyinizə əminsiniz? NbOfUniqueEMails=Unikal e-poçtların sayı NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=E-poçtu göndərmək üçün daha alıcı yoxdur EmailOptedOut=E-poçt sahibi daha bu e-poçt ilə onunla əlaqə saxlamamağı xahiş etdi EvenUnsubscribe=İmtina e-poçtlarını daxil edin EvenUnsubscribeDesc=E-poçtları hədəf olaraq seçdiyiniz zaman imtina e-poçtlarını daxil edin. Məsələn, məcburi xidmət e-poçtları üçün faydalıdır. -XEmailsDoneYActionsDone=%s e-poçt əvvəlcədən təyin edilib, %s e-poçt uğurla işlənib (b0ecb2ec87f49fzrekord üçün / görülən işlər) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/az_AZ/stripe.lang b/htdocs/langs/az_AZ/stripe.lang index 7a112707b19..64b8d29be52 100644 --- a/htdocs/langs/az_AZ/stripe.lang +++ b/htdocs/langs/az_AZ/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=Müqavilə xətti üçün %s onlayn ToOfferALinkForOnlinePaymentOnFreeAmount=Mövcud obyekti olmayan istənilən məbləğin %s onlayn ödəniş səhifəsini təklif etmək üçün URL ToOfferALinkForOnlinePaymentOnMemberSubscription=Üzv abunəliyi üçün %s onlayn ödəniş səhifəsi təklif etmək üçün URL ToOfferALinkForOnlinePaymentOnDonation=İanənin ödənilməsi üçün %s onlayn ödəniş səhifəsi təklif etmək üçün URL -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) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Ödəniş avtomatik yaradılan zaman %s URL ilə Stripe-i quraşdırın. Stripe tərəfindən təsdiq edilmişdir. AccountParameter=Hesab parametrləri UsageParameter=İstifadə parametrləri @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Zolaqlı Terminallar üçün yer (ünvan). RequestDirectDebitWithStripe=Stripe ilə birbaşa debit tələb edin RequesCreditTransferWithStripe=Stripe ilə kredit köçürməsini tələb edin STRIPE_SEPA_DIRECT_DEBIT=Stripe vasitəsilə birbaşa debet ödənişlərini aktivləşdirin +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=Stripe Connect rejimi +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/bg_BG/admin.lang b/htdocs/langs/bg_BG/admin.lang index e3e7c3ee2c0..15ff1fc9572 100644 --- a/htdocs/langs/bg_BG/admin.lang +++ b/htdocs/langs/bg_BG/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Списъкът със стойности трябв ExtrafieldParamHelpcheckbox=Списъкът със стойности трябва да бъде във формат key,value (където key не може да бъде '0')

например:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=Списъкът със стойности трябва да бъде във формат key,value (където key не може да бъде '0')

например:
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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Параметрите трябва да бъдат ObjectName:Classpath
Синтаксис: ObjectName:Classpath ExtrafieldParamHelpSeparator=Оставете празно за обикновен разделител
Посочете стойност 1 за разделител, който се свива (отворен по подразбиране за нова сесия, а след това състоянието се запазва за всяка потребителска сесия)
Посочете стойност 2 за разделител, който се свива (свит по подразбиране за нова сесия, а след това състоянието се запазва за всяка потребителска сесия). LibraryToBuildPDF=Използвана библиотека за създаване на PDF файлове @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, последвано от съкрате ModuleCompanyCodeSupplierDigitaria=%s, последвано от съкратеното име на доставчика според броя на знаци: %s за счетоводния код на доставчика. Use3StepsApproval=По подразбиране поръчките за покупки трябва да бъдат създадени и одобрени от двама различни потребители (една стъпка / потребител за създаване и друга стъпка / потребител за одобрение. Обърнете внимание, че ако потребителят има разрешение да създава и одобрява, една стъпка / потребител ще бъде достатъчно). С тази опция може да поискате да въведете трета стъпка / потребител за одобрение, ако сумата е по-висока от определена стойност (така ще са необходими 3 стъпки: 1 = валидиране, 2 = първо одобрение и 3 = второ одобрение, ако количеството е достатъчно).
Оставете това поле празно, ако едно одобрение (в 2 стъпки) е достатъчно или посочете много ниска стойност (например: 0,1), за да се изисква винаги второ одобрение (в 3 стъпки). UseDoubleApproval=Използване на одобрение в 3 стъпки, когато сумата (без данък) е по-голяма от... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Някои доставчици на имейл услуги (като Yahoo) не ви позволяват да изпращате имейл от друг сървър, освен техния собствен сървър. Вашата текуща настройка използва сървъра на приложението за изпращане на имейл, а не сървъра на вашия имейл доставчик, така че някои получатели (този, който е съвместим с ограничителния DMARC протокол), ще попитат вашия имейл доставчик дали могат да приемат вашия имейл и някои имейл доставчици (като Yahoo) може да отговори „не“, защото сървърът не е техен, така че малко от изпратените от вас имейли може да не бъдат приети за доставка (внимавайте и за квотата за изпращане на вашия имейл доставчик). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Използването на SMTP сървъра на вашия собствен доставчик на имейл услуги за изпращане на имейли също е интересно, така че всички имейли, изпратени от приложението, също ще бъдат запазени в директорията „Изпратени“ на вашата пощенска кутия. WarningPHPMailD=Поради това се препоръчва да промените метода на изпращане на имейли на стойността "SMTP". WarningPHPMailDbis=Ако наистина искате да запазите метода по подразбиране "PHP" за изпращане на имейли, просто игнорирайте това предупреждение или го премахнете, като %sщракнете тук%s. WarningPHPMail2=Ако вашият SMTP доставчик трябва да ограничи имейл клиента до някои IP адреси (много рядко), това е IP адресът на потребителския агент за поща (MUA) за вашето ERP CRM приложение: %s . -WarningPHPMailSPF=Ако името на домейна във вашия имейл адрес на изпращача е защитено от SPF запис (попитайте регистъра на името на вашия домейн), трябва да добавите следните IP адреси в SPF записа на DNS на вашия домейн: %s. -ActualMailSPFRecordFound=Намерен действителен SPF запис (за имейл %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Кликнете, за да се покаже описание DependsOn=Този модул се нуждае от модул(и) RequiredBy=Този модул изисква модул(и) @@ -867,7 +868,7 @@ Permission255=Променяне на парола на други потреб Permission256=Изтриване или деактивиране на други потребители Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Разширете достъпа до всички контрагенти БЕЗ техните обекти (не само контрагенти, за които потребителят е търговски представител).
Не е в сила за външни потребители (винаги ограничени до себе си за предложения, поръчки, фактури, договори и др.).
Не е в сила за проекти ( само правила за проект права, видимостта и присвояването имат значение). Permission271=Преглед на CA Permission272=Преглед на фактури @@ -944,7 +945,7 @@ Permission776=Плащане на разходни отчети Permission777=Прочетете всички отчети за разходите (дори тези на потребители, а не на подчинени) Permission778=Създайте/промени отчети за разходите на всички Permission779=Експортиране на разходни отчети -Permission1001=Преглед на наличности +Permission1001=Read warehouses and stocks Permission1002=Създаване / променяне на складове Permission1003=Изтриване на складове Permission1004=Преглед на движения на наличности @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex филтър за чиста стойнос DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Изчистете определени думи, когато генерирате подакаунти за клиенти или доставчици RemoveSpecialWordsHelp=Посочете думите за почистване, преди да изчислите Клиент или сметката на доставчика. Използвай ";" между всяка дума -GDPRContact=Длъжностно лице по защита на данните (DPO, защита на лични данни или GDPR контакт) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ако съхранявате лични данни във вашата информационна система, можете да посочите контакта, който отговаря за Общия регламент за защита на данните тук HelpOnTooltip=Подсказка HelpOnTooltipDesc=Поставете тук текст или ключ за превод, който да се покаже в подсказка, когато това поле се появи във формуляр @@ -2218,7 +2219,7 @@ CreateCandidature=Създайте заявление за работа FormatZip=Zip MainMenuCode=Код на меню (главно меню) ECMAutoTree=Показване на автоматично ECM дърво -OperationParamDesc=Дефинирайте правилата, които да използвате за извличане на някои данни, или задайте стойности, които да използвате за операция.

Пример за извличане на Компания име от тема на имейл във временна променлива:
tmp_var=EXTRACT:SUBJECT:Съобщение от Компания ([^\n]*)

Примери за задаване на свойствата на обект за създаване:
objproperty1=SET:твърдо кодирана стойност
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:стойност (стойност се задава само ако свойството вече не е дефинирано)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Моят Компания името е\\s([^\\s]*)

Използвайте нов линия за извличане или задаване на няколко свойства. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Работно време OpeningHoursDesc=Въведете тук редовното работно време на вашата фирма. ResourceSetup=Конфигурация на модул Ресурси @@ -2264,7 +2265,7 @@ LargerThan=По-голям от IfTrackingIDFoundEventWillBeLinked=Обърнете внимание, че ако в имейла бъде намерен идентификационен номер за проследяване на обект или ако имейлът е отговор на имейл, който вече е събран и свързан с обект, създаденото събитие ще бъде автоматично свързани с известния свързан обект. WithGMailYouCanCreateADedicatedPassword=С GMail акаунт, ако сте активирали проверката в 2 стъпки, се препоръчва да създадете специална втора парола за приложението, вместо да използвате собствената си парола за акаунт от https://myaccount.google.com/. EmailCollectorTargetDir=Може да е желано поведение имейлът да се премести в друг етикет/директория, когато е обработен успешно. Просто задайте името на директорията тук, за да използвате тази функция (НЕ използвайте специални знаци в името). Обърнете внимание, че трябва да използвате и акаунт за влизане за четене/запис. -EmailCollectorLoadThirdPartyHelp=Можете да използвате това действие, за да използвате съдържанието на имейла, за да намерите и заредите съществуваща трета страна във вашата база данни (търсенето ще се извърши по дефинираното свойство сред „id“, „name“, „name_alias“, „email“). Намерената (или създадена) трета страна ще бъде използвана за следните действия, които се нуждаят от нея.
Например, ако искате да създадете трета страна с име, извлечено от низ ' Име: име за намиране' присъства в основния текст, използвайте имейла на подателя като имейл, можете да зададете полето за параметър по следния начин:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Предупреждение: много сървъри за електронна поща (като Gmail) извършват пълно търсене на думи, когато търсят по низ и няма да върнат резултат, ако низът е намерен само частично в дума. Поради тази причина също използването на специални знаци в критерии за търсене ще бъде игнорирано, ако не са част от съществуващи думи.
За да направите изключване на търсене на дума (върнете имейл, ако думата не е намерен), можете да използвате ! символ преди думата (може да не работи на някои пощенски сървъри). EndPointFor=Крайна точка за %s: %s DeleteEmailCollector=Изтриване на имейл колекционер @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=контрагент име - контрагент псевдо ALIAS_THIRDPARTY=контрагент псевдоним - контрагент име PDFIn2Languages=Показване на етикети в PDF на 2 различни езика (тази функция може да не работи за няколко езика) PDF_USE_ALSO_LANGUAGE_CODE=Ако искате да имате някои текстове във вашия PDF файл, дублирани на 2 различни езика в един и същ генериран PDF файл, трябва да посочите тук този втори език, така че генерираният PDF файл да съдържа 2 различни езика на една и съща страница, избраният при генериране на PDF и този (само няколко PDF шаблона поддържат това). Запазете празно за един език в PDF файла. -PDF_USE_A=Генерирайте PDF документи с формат PDF/A вместо формат PDF по подразбиране +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Въведете тук кода за FontAwesome икона. Ако не знаете какво е FontAwesome, може да използвате стандартната стойност fa-address book. RssNote=Забележка: Всяка дефиниция на RSS канал предоставя изпълним модул, който трябва да активирате, за да бъде наличен в таблото за управление JumpToBoxes=Отидете до Настройка -> Приспособления @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/bg_BG/commercial.lang b/htdocs/langs/bg_BG/commercial.lang index 1ca5a6f8e6d..f1c076b330d 100644 --- a/htdocs/langs/bg_BG/commercial.lang +++ b/htdocs/langs/bg_BG/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Сигурни ли сте, че искате да изтр CardAction=Карта ActionOnCompany=Свързан контрагент ActionOnContact=Свързан контакт +ActionOnUser=Related user TaskRDVWith=Среща с %s ShowTask=Показване на задача ShowAction=Показване на събитие @@ -47,7 +48,6 @@ LastProspectToContact=Да се контактува LastProspectContactInProcess=В процес на контактуване LastProspectContactDone=Осъществен контакт ActionAffectedTo=Събитие, възложено на -ActionDoneBy=Събитие, извършено от ActionAC_TEL=Телефонно обаждане ActionAC_FAX=Изпращане на факс ActionAC_PROP=Изпращане на предложение по имейл @@ -64,26 +64,39 @@ ActionAC_SHIP=Изпращане на пратка по пощата ActionAC_SUP_ORD=Изпращане на поръчка за покупка по пощата ActionAC_SUP_INV=Изпращане на фактура за доставка по пощата ActionAC_OTH=Друго -ActionAC_OTH_AUTO=Other auto -ActionAC_MANUAL=Events inserted manually (by a user) -ActionAC_AUTO=Events inserted automatically +ActionAC_OTH_AUTO=Друг автомобил +ActionAC_MANUAL=Събития, въведени ръчно (от потребител) +ActionAC_AUTO=Вмъкнати събития автоматично ActionAC_OTH_AUTOShort=Други -ActionAC_EVENTORGANIZATION=Event organization events +ActionAC_EVENTORGANIZATION=Организиране на събития събития Stats=Статистика от продажби StatusProsp=Статус на потенциален клиент DraftPropals=Чернови търговски предложения NoLimit=Няма лимит ToOfferALinkForOnlineSignature=Връзка за онлайн подпис WelcomeOnOnlineSignaturePageProposal=Добре дошли на страницата за приемане на търговски предложения от %s -WelcomeOnOnlineSignaturePageContract=Welcome to %s Contract PDF Signing Page -WelcomeOnOnlineSignaturePageFichinter=Welcome to %s Intervention PDF Signing Page +WelcomeOnOnlineSignaturePageContract=Добре дошли в страницата за подписване на PDF файлове %s Договор +WelcomeOnOnlineSignaturePageFichinter=Добре дошли в %s Страница за подписване на PDF за намеса +WelcomeOnOnlineSignaturePageSociete_rib=Добре дошли в %s страницата за подписване на PDF мандат за SEPA +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=Този екран позволява да приемете и подпишете или да отхвърлите оферта / търговско предложение -ThisScreenAllowsYouToSignDocFromContract=This screen allow you to sign contract on PDF format online. -ThisScreenAllowsYouToSignDocFromFichinter=This screen allow you to sign intervention on PDF format online. +ThisScreenAllowsYouToSignDocFromContract=Този екран ви позволява да подписвате Договор в PDF формат онлайн. +ThisScreenAllowsYouToSignDocFromFichinter=Този екран ви позволява да подпишете интервенция в PDF формат онлайн. +ThisScreenAllowsYouToSignDocFromSociete_rib=Този екран ви позволява да подпишете SEPA мандат в PDF формат онлайн. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=Това е информация за документа, който да приемете или отхвърлите. -ThisIsInformationOnDocumentToSignContract=This is information on contract to sign -ThisIsInformationOnDocumentToSignFichinter=This is information on intervention to sign +ThisIsInformationOnDocumentToSignContract=Това е информация за Договор за подпис +ThisIsInformationOnDocumentToSignFichinter=Това е информация за интервенция за подписване +ThisIsInformationOnDocumentToSignSociete_rib=Това е информация за SEPA мандат за подписване +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Подписване на оферта / търговско предложение %s -SignatureContractRef=Signature of contract %s -SignatureFichinterRef=Signature of intervention %s +SignatureContractRef=Подпис на Договор %s +SignatureFichinterRef=Сигнатура за намеса %s +SignatureSociete_ribRef=Подпис на SEPA мандат %s FeatureOnlineSignDisabled=Функцията за онлайн подписване е деактивирана или документът е генериран преди активирането на функцията +NoSignature=Отхвърлено +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/bg_BG/companies.lang b/htdocs/langs/bg_BG/companies.lang index 7c875fb73e3..29a4cc8be2c 100644 --- a/htdocs/langs/bg_BG/companies.lang +++ b/htdocs/langs/bg_BG/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr потребител NoDolibarrAccess=Няма достъп до Dolibarr ExportDataset_company_1=Контрагенти (фирми / фондации / физически лица) и техните характеристики ExportDataset_company_2=Контакти и техните характеристики +ExportDataset_company_3=Банкови сметки на контрагенти ImportDataset_company_1=Контрагенти и техните характеристики ImportDataset_company_2=Допълнителни контакти / адреси и атрибути към контрагента ImportDataset_company_3=Банкови сметки на контрагенти diff --git a/htdocs/langs/bg_BG/datapolicy.lang b/htdocs/langs/bg_BG/datapolicy.lang index ed48ca466e3..27aaf178111 100644 --- a/htdocs/langs/bg_BG/datapolicy.lang +++ b/htdocs/langs/bg_BG/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Политика за поверителност на данните # Module description 'ModuledatapolicyDesc' Module4100Desc = Модул за управление на поверителността на данните (съответствие с GDPR) - -# # Administration page -# datapolicySetup = Настройка на политиката за поверителност на данните на модула Deletion = Изтриване на данни datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Проспект/Клиент DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Нито перспектива/Нито Клиент DATAPOLICY_CONTACT_FOURNISSEUR = Доставчик DATAPOLICY_ADHERENT = Член -DATAPOLICY_Tooltip_SETUP = Тип контакт - Посочете избора си за всеки тип. -DATAPOLICYMail = Настройка на имейли -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Съдържание на имейла -DATAPOLICYSUBSITUTION = Можете да използвате следните променливи във вашия имейл (LINKACCEPT позволява да се създаде връзка, записваща съгласието на лицето, LINKREFUSED позволява да се запише отказът на лицето): -DATAPOLICYACCEPT = Съобщение след споразумение -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Можете да изпратите имейл за GDPR до всички ваши съответни контакти (които все още не са получили имейл и за които не сте регистрирали нищо относно тяхното споразумение за GDPR). За да направите това, използвайте следния бутон. SendAgreement = Изпращайте имейли AllAgreementSend = Всички имейли са изпратени TXTLINKDATAPOLICYACCEPT = Текст за връзката "договор" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: Обработка на лични данни DATAPOLICY_consentement = Получено съгласие за обработка на лични данни DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Анонимизирайте трета страна -DATAPOLICY_POPUP_ANONYME_TEXTE = Не можете да изтриете този контакт от Dolibarr, защото има свързани елементи. В съответствие с GDPR вие ще направите всички тези данни анонимни, за да спазите задълженията си. Искате ли да продължите? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Преносимост GDPR -DATAPOLICY_PORTABILITE_TITLE = Експорт на лични данни -DATAPOLICY_PORTABILITE_CONFIRMATION = Искате да експортирате личните данни на този контакт. Сигурен ли си ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Анонимизира %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Изпратете имейл за GDPR MailSent = Имейлът беше изпратен - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/bg_BG/dict.lang b/htdocs/langs/bg_BG/dict.lang index e2b72bf7ee4..3face655164 100644 --- a/htdocs/langs/bg_BG/dict.lang +++ b/htdocs/langs/bg_BG/dict.lang @@ -21,7 +21,7 @@ CountryNL=Холандия CountryHU=Унгария CountryRU=Русия CountrySE=Швеция -CountryCI=Ivory Coast +CountryCI=Бряг на слоновата кост CountrySN=Сенегал CountryAR=Аржентина CountryCM=Камерун @@ -137,7 +137,7 @@ CountryLV=Латвия CountryLB=Ливан CountryLS=Лесото CountryLR=Либерия -CountryLY=Libya +CountryLY=Либия CountryLI=Лихтенщайн CountryLT=Литва CountryLU=Люксембург @@ -247,7 +247,7 @@ CountryJE=Жарсе CountryME=Черна гора CountryBL=Сен Бартелми CountryMF=Свети Мартин -CountryXK=Kosovo +CountryXK=Косово ##### Civilities ##### CivilityMME=г-жа @@ -295,8 +295,8 @@ CurrencyXPF=Френски тихоокеански франкове CurrencySingXPF=Френски тихоокеански франк CurrencyCentEUR=центa CurrencyCentSingEUR=цент -CurrencyCentINR=пайса -CurrencyCentSingINR=пайси +CurrencyCentINR=пайси +CurrencyCentSingINR=пайса CurrencyThousandthSingTND=хиляден #### Input reasons ##### DemandReasonTypeSRC_INTE=Интернет diff --git a/htdocs/langs/bg_BG/errors.lang b/htdocs/langs/bg_BG/errors.lang index 459e0e1c095..1fd3e7b56e8 100644 --- a/htdocs/langs/bg_BG/errors.lang +++ b/htdocs/langs/bg_BG/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Потребителят трябва да бъде ErrorTaskAlreadyAssigned=Задачата вече е назначена към потребителя ErrorModuleFileSeemsToHaveAWrongFormat=Модулния пакет изглежда има грешен формат. ErrorModuleFileSeemsToHaveAWrongFormat2=Най-малко една задължителна директория трябва да съществува в архива на модул: %s или %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Името на модулния пакет (%s) не съответства на очаквания синтаксис: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Грешка, дублиращо име на тригера %s. Вече е зареден от %s. ErrorNoWarehouseDefined=Грешка, не са дефинирани складове. ErrorBadLinkSourceSetButBadValueForRef=Използваната от вас връзка не е валидна. Определен е 'източник' за плащане, но стойността на '№' не е валидна. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/bg_BG/mails.lang b/htdocs/langs/bg_BG/mails.lang index a3518340134..ee594183ccd 100644 --- a/htdocs/langs/bg_BG/mails.lang +++ b/htdocs/langs/bg_BG/mails.lang @@ -32,6 +32,8 @@ NewMailing=Нов масов имейл NewSMSing=New smsing EditMailing=Променяне на масов имейл ResetMailing=Повторно изпращане на масов имейл +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Изтриване на масов имейл PreviewMailing=Преглед на масови имейли CreateMailing=Създаване на масов имейл @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Липсва получател на имейла WarningNoEMailsAdded=Няма нов имейл за добавяне към списъка на получателите. ConfirmValidMailing=Сигурни ли сте, че искате да валидирате този масов имейл? ConfirmResetMailing=Внимание, чрез повторно инициализиране на масовия имейл %s ще позволите повторното изпращане на този масов имейл. Сигурни ли сте, че искате да направите това? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Сигурни ли сте, че искате да изтриете този масов имейл? NbOfUniqueEMails=Брой уникални имейли NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Няма повече получател, на кого EmailOptedOut=Собственикът на имейл е поискал да не се свързва повече с него с този имейл EvenUnsubscribe=Включете имейли за отказване EvenUnsubscribeDesc=Включете имейли за отказ, когато изберете имейли като цели. Полезно за задължителни служебни имейли например. -XEmailsDoneYActionsDone=%s имейли са предварително квалифицирани, %s имейли са обработени успешно (за запис %s /извършени действия) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/bg_BG/stripe.lang b/htdocs/langs/bg_BG/stripe.lang index b270be1a85f..8e2c33e9a8c 100644 --- a/htdocs/langs/bg_BG/stripe.lang +++ b/htdocs/langs/bg_BG/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL адрес, предлагащ %s ToOfferALinkForOnlinePaymentOnFreeAmount=URL адрес, предлагащ %s страница за онлайн плащане на свободна сума без съществуващ обект ToOfferALinkForOnlinePaymentOnMemberSubscription=URL адрес, предлагащ %s страница за онлайн плащане на абонамент за членство ToOfferALinkForOnlinePaymentOnDonation=URL адрес, предлагащ %s страница за онлайн плащане като дарение -YouCanAddTagOnUrl=Може също да добавите URL параметър &tag=стойност към който и да е от тези URL адреси (задължително само за плащане, което не е свързано с обект), за да добавите собствен таг за плащане.
Към URL адреса за плащания без съществуващ обект може също да добавите параметъра &noidempotency=1, така че една и съща връзка да се използва няколко пъти със същият таг (някои начини за плащане могат да ограничат плащането до едно за всяка различна връзка без този параметър) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Настройте Stripe с URL %s, за да се създава автоматично плащане след като бъде потвърдено от Stripe. AccountParameter=Параметри на акаунта UsageParameter=Параметри за използване @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Местоположение (адрес) за Stripe терм RequestDirectDebitWithStripe=Искане Директен дебит със Stripe RequesCreditTransferWithStripe=Искане Кредитен превод със Stripe STRIPE_SEPA_DIRECT_DEBIT=Активирайте плащанията с директен дебит чрез Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=Режим Stripe Connect +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/bn_BD/admin.lang b/htdocs/langs/bn_BD/admin.lang index 86444c2cc5d..4b363e7eb1e 100644 --- a/htdocs/langs/bn_BD/admin.lang +++ b/htdocs/langs/bn_BD/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=পরামিতি হতে হবে ObjectName:Classpath
সিনট্যাক্স: ObjectName:Classpath ExtrafieldParamHelpSeparator=একটি সাধারণ বিভাজকের জন্য খালি রাখুন
কোলাপসিং সেপারেটরের জন্য এটি 1 এ সেট করুন (নতুন সেশনের জন্য ডিফল্টরূপে খোলা, তারপর প্রতিটি ব্যবহারকারীর সেশনের জন্য স্থিতি রাখা হয়)
কোলাপসিং সেপারেটরের জন্য এটিকে 2 এ সেট করুন (নতুন সেশনের জন্য ডিফল্টরূপে ভেঙে পড়ে, তারপর প্রতিটি ব্যবহারকারীর সেশনের আগে স্থিতি রাখা হয়) LibraryToBuildPDF=পিডিএফ তৈরির জন্য ব্যবহৃত লাইব্রেরি @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s তারপরে অক্ষরের ModuleCompanyCodeSupplierDigitaria=%s তারপরে অক্ষরের সংখ্যা দ্বারা কাটা সরবরাহকারীর নাম: সরবরাহকারী অ্যাকাউন্টিং কোডের জন্য %s। Use3StepsApproval=ডিফল্টরূপে, ক্রয় আদেশগুলি 2টি ভিন্ন ব্যবহারকারীর দ্বারা তৈরি এবং অনুমোদিত হতে হবে (একটি ধাপ/ব্যবহারকারী তৈরি করতে এবং এক ধাপ/ব্যবহারকারী অনুমোদনের জন্য। মনে রাখবেন যে ব্যবহারকারীর যদি তৈরি এবং অনুমোদন করার উভয়েরই অনুমতি থাকে, তবে একটি ধাপ/ব্যবহারকারী যথেষ্ট হবে) . আপনি এই বিকল্পের মাধ্যমে একটি তৃতীয় ধাপ/ব্যবহারকারীর অনুমোদন প্রবর্তন করতে বলতে পারেন, যদি পরিমাণ একটি উৎসর্গীকৃত মানের থেকে বেশি হয় (তাই 3টি ধাপের প্রয়োজন হবে: 1=বৈধকরণ, 2=প্রথম অনুমোদন এবং 3=দ্বিতীয় অনুমোদন যদি যথেষ্ট হয়)।
একটি অনুমোদন (2 পদক্ষেপ) যথেষ্ট হলে এটিকে খালি হিসাবে সেট করুন, যদি দ্বিতীয় অনুমোদন (3 ধাপ) সর্বদা প্রয়োজন হয় তবে এটিকে খুব কম মান (0.1) এ সেট করুন। UseDoubleApproval=একটি 3 ধাপ অনুমোদন ব্যবহার করুন যখন পরিমাণ (ট্যাক্স ছাড়া) এর থেকে বেশি হয়... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- কিছু ইমেল পরিষেবা প্রদানকারী (যেমন ইয়াহু) আপনাকে তাদের নিজস্ব সার্ভারের পরিবর্তে অন্য সার্ভার থেকে একটি ইমেল পাঠাতে দেয় না। আপনার বর্তমান সেটআপ ইমেল পাঠানোর জন্য অ্যাপ্লিকেশনের সার্ভার ব্যবহার করে এবং আপনার ইমেল প্রদানকারীর সার্ভার নয়, তাই কিছু প্রাপক (নিষেধাজ্ঞামূলক DMARC প্রোটোকলের সাথে সামঞ্জস্যপূর্ণ), আপনার ইমেল প্রদানকারীকে জিজ্ঞাসা করবে তারা আপনার ইমেল এবং কিছু ইমেল প্রদানকারী গ্রহণ করতে পারে কিনা (ইয়াহুর মতো) "না" উত্তর দিতে পারে কারণ সার্ভারটি তাদের নয়, তাই আপনার পাঠানো কিছু ইমেল বিতরণের জন্য গৃহীত নাও হতে পারে (আপনার ইমেল প্রদানকারীর পাঠানোর কোটা সম্পর্কেও সতর্ক থাকুন)। +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- ইমেল পাঠানোর জন্য আপনার নিজস্ব ইমেল পরিষেবা প্রদানকারীর SMTP সার্ভার ব্যবহার করাও আকর্ষণীয় তাই অ্যাপ্লিকেশন থেকে পাঠানো সমস্ত ইমেলগুলি আপনার মেলবক্সের "প্রেরিত" ডিরেক্টরিতেও সংরক্ষিত হবে৷ WarningPHPMailD=তাই ই-মেইল পাঠানোর পদ্ধতিকে "SMTP" মানতে পরিবর্তন করার পরামর্শ দেওয়া হচ্ছে। WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. WarningPHPMail2=যদি আপনার ইমেল SMTP প্রদানকারীর ইমেল ক্লায়েন্টকে কিছু আইপি ঠিকানায় সীমাবদ্ধ করতে হয় (খুব বিরল), এটি আপনার ERP CRM অ্যাপ্লিকেশনের জন্য মেল ব্যবহারকারী এজেন্টের (MUA) IP ঠিকানা: %s। -WarningPHPMailSPF=যদি আপনার প্রেরকের ইমেল ঠিকানার ডোমেন নামটি একটি SPF রেকর্ড দ্বারা সুরক্ষিত থাকে (আপনার ডোমেন নাম রেজিস্টারকে জিজ্ঞাসা করুন), আপনাকে অবশ্যই আপনার ডোমেনের DNS-এর SPF রেকর্ডে নিম্নলিখিত IPগুলি যোগ করতে হবে: %s। -ActualMailSPFRecordFound=প্রকৃত SPF রেকর্ড পাওয়া গেছে (ইমেলের জন্য %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=বর্ণনা প্রদর্শন করতে ক্লিক করুন DependsOn=এই মডিউলটির মডিউল(গুলি) প্রয়োজন RequiredBy=এই মডিউলটি মডিউল(গুলি) দ্বারা প্রয়োজনীয় @@ -867,7 +868,7 @@ Permission255=অন্যান্য ব্যবহারকারীদে Permission256=অন্যান্য ব্যবহারকারীদের মুছুন বা অক্ষম করুন Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=তাদের বস্তু ছাড়াই সমস্ত তৃতীয় পক্ষের অ্যাক্সেস প্রসারিত করুন (কেবল তৃতীয় পক্ষ নয় যার জন্য ব্যবহারকারী একজন বিক্রয় প্রতিনিধি)।
বহিরাগত ব্যবহারকারীদের জন্য কার্যকর নয় (প্রস্তাবের জন্য সর্বদা নিজেদের মধ্যে সীমাবদ্ধ, অর্ডার, ইনভয়েস, চুক্তি, ইত্যাদি)।
প্রকল্পের জন্য কার্যকর নয় (শুধুমাত্র প্রকল্পের অনুমতি, দৃশ্যমানতা এবং অ্যাসাইনমেন্ট সংক্রান্ত বিষয়ে নিয়ম)। Permission271=সিএ পড়ুন Permission272=চালান পড়ুন @@ -944,7 +945,7 @@ Permission776=খরচ রিপোর্ট প্রদান Permission777=সমস্ত খরচ রিপোর্ট পড়ুন (এমনকি ব্যবহারকারীর অধীনস্থ নয়) Permission778=প্রত্যেকের ব্যয়ের প্রতিবেদন তৈরি/পরিবর্তন করুন Permission779=রপ্তানি ব্যয় প্রতিবেদন -Permission1001=স্টক পড়ুন +Permission1001=Read warehouses and stocks Permission1002=গুদাম তৈরি/পরিবর্তন করুন Permission1003=গুদামগুলি মুছুন Permission1004=স্টক আন্দোলন পড়ুন @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=মান পরিষ্কার করতে DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=গ্রাহক বা সরবরাহকারীদের জন্য উপ-অ্যাকাউন্ট তৈরি করার সময় নির্দিষ্ট শব্দগুলি পরিষ্কার করুন RemoveSpecialWordsHelp=গ্রাহক বা সরবরাহকারী অ্যাকাউন্ট গণনা করার আগে পরিষ্কার করতে হবে এমন শব্দগুলি উল্লেখ করুন। ব্যবহার করা ";" প্রতিটি শব্দের মধ্যে -GDPRContact=ডেটা সুরক্ষা অফিসার (DPO, ডেটা গোপনীয়তা বা GDPR যোগাযোগ) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=আপনি যদি আপনার ইনফরমেশন সিস্টেমে ব্যক্তিগত ডেটা সঞ্চয় করেন, তাহলে আপনি এখানে সাধারণ ডেটা সুরক্ষা প্রবিধানের জন্য দায়ী পরিচিতের নাম দিতে পারেন HelpOnTooltip=টুলটিপে দেখানোর জন্য পাঠ্য সাহায্য করুন HelpOnTooltipDesc=এই ক্ষেত্রটি একটি ফর্মে উপস্থিত হলে একটি টুলটিপে পাঠ্য দেখানোর জন্য এখানে পাঠ্য বা একটি অনুবাদ কী রাখুন @@ -2218,7 +2219,7 @@ CreateCandidature=চাকরির আবেদন তৈরি করুন FormatZip=জিপ MainMenuCode=মেনু এন্ট্রি কোড (মেনমেনু) ECMAutoTree=স্বয়ংক্রিয় ECM গাছ দেখান -OperationParamDesc=কিছু ডেটা বের করতে ব্যবহার করার নিয়মগুলি সংজ্ঞায়িত করুন বা অপারেশনের জন্য ব্যবহার করার জন্য মানগুলি সেট করুন৷

থেকে কোম্পানির নাম বের করার উদাহরণ একটি অস্থায়ী পরিবর্তনশীল মধ্যে ইমেল বিষয়:
tmp_var=EXTRACT:SUBJECT:কোম্পানীর বার্তা ([^\n]*)

তৈরি করার জন্য একটি বস্তুর বৈশিষ্ট্য সেট করার উদাহরণ:
objproperty1=SET:একটি হার্ড কোডেড মান
objproperty2=SET:__tmp_var__
objproperty3=YMPvalue:YMPVALue সম্পত্তি ইতিমধ্যে সংজ্ঞায়িত না থাকলেই সেট করা হয়)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY is:My s([^\\s]*)

বিভিন্ন বৈশিষ্ট্যগুলি বের করতে বা সেট করতে একটি নতুন লাইন ব্যবহার করুন৷ +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=খোলার সময় OpeningHoursDesc=আপনার কোম্পানির নিয়মিত খোলার সময় এখানে লিখুন। ResourceSetup=রিসোর্স মডিউল কনফিগারেশন @@ -2264,7 +2265,7 @@ LargerThan=চেয়ে বড় IfTrackingIDFoundEventWillBeLinked=মনে রাখবেন যে যদি ইমেলের মধ্যে একটি বস্তুর একটি ট্র্যাকিং আইডি পাওয়া যায়, বা যদি ইমেলটি ইতিমধ্যেই সংগ্রহ করা একটি ইমেলের উত্তর হয় এবং একটি বস্তুর সাথে লিঙ্ক করা হয়, তৈরি ইভেন্টটি স্বয়ংক্রিয়ভাবে পরিচিত সম্পর্কিত বস্তুর সাথে লিঙ্ক করা হবে। WithGMailYouCanCreateADedicatedPassword=একটি GMail অ্যাকাউন্টের সাথে, আপনি যদি 2 ধাপের বৈধতা সক্ষম করেন, তাহলে https://myaccount.google.com/ থেকে আপনার নিজের অ্যাকাউন্টের পাসওয়ার্ড ব্যবহার না করে অ্যাপ্লিকেশনটির জন্য একটি ডেডিকেটেড দ্বিতীয় পাসওয়ার্ড তৈরি করার পরামর্শ দেওয়া হয়। EmailCollectorTargetDir=এটি সফলভাবে প্রক্রিয়া করা হলে ইমেলটিকে অন্য ট্যাগ/ডিরেক্টরিতে স্থানান্তর করা একটি পছন্দসই আচরণ হতে পারে। এই বৈশিষ্ট্যটি ব্যবহার করতে এখানে শুধু ডিরেক্টরির নাম সেট করুন (নামে বিশেষ অক্ষর ব্যবহার করবেন না)। মনে রাখবেন যে আপনাকে অবশ্যই একটি পঠন/লেখা লগইন অ্যাকাউন্ট ব্যবহার করতে হবে। -EmailCollectorLoadThirdPartyHelp=আপনি আপনার ডাটাবেসে বিদ্যমান তৃতীয় পক্ষকে খুঁজে পেতে এবং লোড করতে ইমেল সামগ্রী ব্যবহার করতে এই ক্রিয়াটি ব্যবহার করতে পারেন ('আইডি', 'নাম', 'নাম_আলিয়াস', 'ইমেল'-এর মধ্যে সংজ্ঞায়িত সম্পত্তিতে অনুসন্ধান করা হবে)। পাওয়া (বা তৈরি করা) তৃতীয় পক্ষকে নিম্নলিখিত ক্রিয়াকলাপের জন্য ব্যবহার করা হবে যেগুলির জন্য এটি প্রয়োজন৷
উদাহরণস্বরূপ, যদি আপনি একটি স্ট্রিং থেকে বের করা একটি নাম দিয়ে একটি তৃতীয় পক্ষ তৈরি করতে চান ' নাম: নাম: খুঁজে বের করতে নাম' বডিতে উপস্থিত, প্রেরকের ইমেলটিকে ইমেল হিসাবে ব্যবহার করুন, আপনি প্যারামিটার ক্ষেত্রটি এভাবে সেট করতে পারেন:
'email=HEADER:^From:(। *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=সতর্কতা: অনেক ইমেল সার্ভার (যেমন Gmail) একটি স্ট্রিং অনুসন্ধান করার সময় সম্পূর্ণ শব্দ অনুসন্ধান করছে এবং যদি স্ট্রিংটি শুধুমাত্র একটি শব্দে আংশিকভাবে পাওয়া যায় তবে ফলাফল প্রদান করবে না। এই কারণেও, একটি অনুসন্ধানের মানদণ্ডে বিশেষ অক্ষর ব্যবহার করলে তা উপেক্ষা করা হবে যদি সেগুলি বিদ্যমান শব্দগুলির অংশ নয়৷
কোনও শব্দের উপর একটি বাদ অনুসন্ধান করতে (শব্দ থাকলে ইমেল ফেরত দিন পাওয়া যায় না), আপনি ব্যবহার করতে পারেন! শব্দের আগে অক্ষর (কিছু মেল সার্ভারে কাজ নাও করতে পারে)। EndPointFor=%s এর জন্য শেষ বিন্দু : %s DeleteEmailCollector=ইমেল সংগ্রাহক মুছুন @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=তৃতীয় পক্ষের নাম - তৃতী ALIAS_THIRDPARTY=তৃতীয় পক্ষের উপনাম - তৃতীয় পক্ষের নাম PDFIn2Languages=পিডিএফ-এ 2টি ভিন্ন ভাষায় লেবেল দেখান (এই বৈশিষ্ট্যটি কয়েকটি ভাষার জন্য কাজ নাও করতে পারে) PDF_USE_ALSO_LANGUAGE_CODE=আপনি যদি আপনার পিডিএফের কিছু পাঠ্য একই জেনারেটেড পিডিএফ-এ 2টি ভিন্ন ভাষায় সদৃশ করতে চান, তাহলে আপনাকে অবশ্যই এখানে এই দ্বিতীয় ভাষাটি সেট করতে হবে যাতে জেনারেট করা পিডিএফে একই পৃষ্ঠায় 2টি ভিন্ন ভাষা থাকবে, যেটি PDF তৈরি করার সময় বেছে নেওয়া হয় এবং এটি ( শুধুমাত্র কয়েকটি পিডিএফ টেমপ্লেট এটি সমর্থন করে)। পিডিএফ প্রতি 1টি ভাষার জন্য খালি রাখুন। -PDF_USE_A=ডিফল্ট ফরম্যাট PDF এর পরিবর্তে PDF/A ফরম্যাট সহ পিডিএফ ডকুমেন্ট তৈরি করুন +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=এখানে একটি FontAwesome আইকনের কোড লিখুন। আপনি যদি না জানেন যে FontAwesome কি, আপনি জেনেরিক মান fa-address-book ব্যবহার করতে পারেন। RssNote=দ্রষ্টব্য: প্রতিটি RSS ফিড সংজ্ঞা একটি উইজেট প্রদান করে যেটি ড্যাশবোর্ডে উপলব্ধ থাকতে আপনাকে অবশ্যই সক্ষম করতে হবে JumpToBoxes=সেটআপে যান -> উইজেট @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/bn_BD/datapolicy.lang b/htdocs/langs/bn_BD/datapolicy.lang index 44d0d710492..b064cfa6a0d 100644 --- a/htdocs/langs/bn_BD/datapolicy.lang +++ b/htdocs/langs/bn_BD/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = ডেটা গোপনীয়তা নীতি # Module description 'ModuledatapolicyDesc' Module4100Desc = ডেটা গোপনীয়তা পরিচালনা করার মডিউল (জিডিপিআরের সাথে সামঞ্জস্যপূর্ণ) - -# # Administration page -# datapolicySetup = মডিউল ডেটা গোপনীয়তা নীতি সেটআপ Deletion = ডেটা মুছে ফেলা datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = প্রত্যাশা গ্রাহ DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = না সম্ভাবনা/না গ্রাহক DATAPOLICY_CONTACT_FOURNISSEUR = সরবরাহকারী DATAPOLICY_ADHERENT = সদস্য -DATAPOLICY_Tooltip_SETUP = যোগাযোগের ধরন - প্রতিটি প্রকারের জন্য আপনার পছন্দগুলি নির্দেশ করুন৷ -DATAPOLICYMail = ইমেল সেটআপ -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = ইমেইলের বিষয়বস্তু -DATAPOLICYSUBSITUTION = আপনি আপনার ইমেলে নিম্নলিখিত ভেরিয়েবলগুলি ব্যবহার করতে পারেন (LINKACCEPT ব্যক্তির চুক্তি রেকর্ড করে একটি লিঙ্ক তৈরি করতে দেয়, LINKREFUSED ব্যক্তির অস্বীকৃতি রেকর্ড করা সম্ভব করে তোলে): -DATAPOLICYACCEPT = চুক্তির পর বার্তা -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = আপনি আপনার সমস্ত প্রাসঙ্গিক পরিচিতিদের একটি GDPR ইমেল পাঠাতে পারেন (যারা এখনও একটি ইমেল পাননি এবং যার জন্য আপনি তাদের GDPR চুক্তি সম্পর্কে কিছু নিবন্ধন করেননি)। এটি করতে, নিম্নলিখিত বোতামটি ব্যবহার করুন। SendAgreement = ইমেইল পাঠান AllAgreementSend = সব ইমেইল পাঠানো হয়েছে TXTLINKDATAPOLICYACCEPT = লিঙ্কের জন্য পাঠ্য "চুক্তি" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = জিডিপিআর: ব্যক্তিগত তথ্য প্রক্রিয়াকরণ DATAPOLICY_consentement = ব্যক্তিগত তথ্য প্রক্রিয়াকরণের জন্য সম্মতি প্রাপ্ত DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = একটি তৃতীয় পক্ষ বেনামী -DATAPOLICY_POPUP_ANONYME_TEXTE = আপনি Dolibarr থেকে এই পরিচিতি মুছে ফেলতে পারবেন না কারণ সেখানে সম্পর্কিত আইটেম আছে। জিডিপিআর অনুসারে, আপনি আপনার বাধ্যবাধকতাগুলিকে সম্মান করতে এই সমস্ত ডেটা বেনামী করে দেবেন। আপনি কি অবিরত করতে চান ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = পোর্টেবিলিটি জিডিপিআর -DATAPOLICY_PORTABILITE_TITLE = ব্যক্তিগত তথ্য রপ্তানি -DATAPOLICY_PORTABILITE_CONFIRMATION = আপনি এই পরিচিতির ব্যক্তিগত ডেটা রপ্তানি করতে চান৷ তুমি কি নিশ্চিত ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = বেনামী %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = GDPR ইমেল পাঠান MailSent = ইমেল পাঠানো হয়েছে - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/bn_BD/dict.lang b/htdocs/langs/bn_BD/dict.lang index 68ecc390b09..959360b7498 100644 --- a/htdocs/langs/bn_BD/dict.lang +++ b/htdocs/langs/bn_BD/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=CFP Francs CurrencySingXPF=CFP Franc CurrencyCentEUR=সেন্ট CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=thousandth #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/bn_BD/errors.lang b/htdocs/langs/bn_BD/errors.lang index 2b408e616f0..ad74c9c11a1 100644 --- a/htdocs/langs/bn_BD/errors.lang +++ b/htdocs/langs/bn_BD/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=User must be assigned to task to be able to enter tim 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 +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the 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. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/bn_BD/mails.lang b/htdocs/langs/bn_BD/mails.lang index e3ac5fd5ff3..7682c088708 100644 --- a/htdocs/langs/bn_BD/mails.lang +++ b/htdocs/langs/bn_BD/mails.lang @@ -32,6 +32,8 @@ NewMailing=নতুন ইমেইল NewSMSing=New smsing EditMailing=ইমেল সম্পাদনা করুন ResetMailing=ইমেল পুনরায় পাঠান +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=ইমেল মুছুন PreviewMailing=পূর্বরূপ ইমেল CreateMailing=ইমেল তৈরি করুন @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=ইমেল প্রাপক খালি WarningNoEMailsAdded=প্রাপকের তালিকায় যোগ করার জন্য কোনো নতুন ইমেল নেই। ConfirmValidMailing=আপনি কি এই ইমেল যাচাই করার বিষয়ে নিশ্চিত? ConfirmResetMailing=সতর্কতা, %s ইমেল পুনরায় শুরু করার মাধ্যমে, আপনি অনুমতি দেবেন একটি বাল্ক মেইলিং এই ইমেল পুনরায় পাঠান. আপনি কি সত্যি এটা করতে চান? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=আপনি কি এই ইমেল মুছে ফেলার বিষয়ে নিশ্চিত? NbOfUniqueEMails=অনন্য ইমেলের সংখ্যা NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=ইমেল পাঠাতে আর কোন প্ EmailOptedOut=ইমেলের মালিক অনুরোধ করেছেন এই ইমেলের মাধ্যমে তার সাথে আর যোগাযোগ না করার জন্য EvenUnsubscribe=অপ্ট-আউট ইমেলগুলি অন্তর্ভুক্ত করুন৷ EvenUnsubscribeDesc=আপনি যখন লক্ষ্য হিসাবে ইমেল নির্বাচন করেন তখন অপ্ট-আউট ইমেলগুলি অন্তর্ভুক্ত করুন৷ উদাহরণস্বরূপ বাধ্যতামূলক পরিষেবা ইমেলের জন্য দরকারী। -XEmailsDoneYActionsDone=%s ইমেলগুলি প্রাক-যোগ্য, %s ইমেলগুলি সফলভাবে প্রক্রিয়া করা হয়েছে (%s রেকর্ডের জন্য /ক্রিয়া সম্পন্ন) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/bn_BD/stripe.lang b/htdocs/langs/bn_BD/stripe.lang index 71cd71d1690..7f139cd6f10 100644 --- a/htdocs/langs/bn_BD/stripe.lang +++ b/htdocs/langs/bn_BD/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=একটি চুক্তি ল ToOfferALinkForOnlinePaymentOnFreeAmount=একটি %s যেকোন পরিমাণের অনলাইন পেমেন্ট পেজ অফার করার জন্য URL কোনো বিদ্যমান বস্তু ছাড়াই ToOfferALinkForOnlinePaymentOnMemberSubscription=সদস্য সদস্যতার জন্য একটি %s অনলাইন পেমেন্ট পৃষ্ঠা অফার করার URL ToOfferALinkForOnlinePaymentOnDonation=অনুদানের অর্থ প্রদানের জন্য একটি %s অনলাইন পেমেন্ট পৃষ্ঠা অফার করার URL -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) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=স্বয়ংক্রিয়ভাবে পেমেন্ট তৈরি করার জন্য url %s দিয়ে আপনার স্ট্রাইপ সেটআপ করুন স্ট্রাইপ দ্বারা যাচাই করা হয়েছে। AccountParameter=অ্যাকাউন্ট প্যারামিটার UsageParameter=ব্যবহারের পরামিতি @@ -77,4 +78,13 @@ TERMINAL_LOCATION=স্ট্রাইপ টার্মিনালের জ RequestDirectDebitWithStripe=স্ট্রাইপ দিয়ে সরাসরি ডেবিট অনুরোধ করুন RequesCreditTransferWithStripe=স্ট্রাইপ দিয়ে ক্রেডিট ট্রান্সফারের অনুরোধ করুন STRIPE_SEPA_DIRECT_DEBIT=স্ট্রাইপের মাধ্যমে সরাসরি ডেবিট পেমেন্ট সক্ষম করুন +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=স্ট্রাইপ কানেক্ট মোড +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/bn_IN/admin.lang b/htdocs/langs/bn_IN/admin.lang index 8805f081f0f..9e4e7079957 100644 --- a/htdocs/langs/bn_IN/admin.lang +++ b/htdocs/langs/bn_IN/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=পরামিতি হতে হবে ObjectName:Classpath
সিনট্যাক্স: ObjectName:Classpath ExtrafieldParamHelpSeparator=একটি সাধারণ বিভাজকের জন্য খালি রাখুন
কোলাপসিং সেপারেটরের জন্য এটি 1 এ সেট করুন (নতুন সেশনের জন্য ডিফল্টরূপে খোলা, তারপর প্রতিটি ব্যবহারকারীর সেশনের জন্য স্থিতি রাখা হয়)
কোলাপসিং সেপারেটরের জন্য এটিকে 2 এ সেট করুন (নতুন সেশনের জন্য ডিফল্টরূপে ভেঙে পড়ে, তারপর প্রতিটি ব্যবহারকারীর সেশনের আগে স্থিতি রাখা হয়) LibraryToBuildPDF=পিডিএফ তৈরির জন্য ব্যবহৃত লাইব্রেরি @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s অক্ষর সংখ্যা দ্ ModuleCompanyCodeSupplierDigitaria=%s তারপরে অক্ষরের সংখ্যা দ্বারা কাটা সরবরাহকারীর নাম: সরবরাহকারী অ্যাকাউন্টিং কোডের জন্য %s। Use3StepsApproval=ডিফল্টরূপে, ক্রয় আদেশগুলি 2টি ভিন্ন ব্যবহারকারীর দ্বারা তৈরি এবং অনুমোদিত হতে হবে (একটি ধাপ/ব্যবহারকারী তৈরি করতে এবং এক ধাপ/ব্যবহারকারী অনুমোদনের জন্য। মনে রাখবেন যে ব্যবহারকারীর যদি তৈরি এবং অনুমোদন করার উভয়েরই অনুমতি থাকে, তবে একটি ধাপ/ব্যবহারকারী যথেষ্ট হবে) . আপনি এই বিকল্পের মাধ্যমে একটি তৃতীয় ধাপ/ব্যবহারকারীর অনুমোদন প্রবর্তন করতে বলতে পারেন, যদি পরিমাণ একটি উৎসর্গীকৃত মানের থেকে বেশি হয় (তাই 3টি ধাপের প্রয়োজন হবে: 1=বৈধকরণ, 2=প্রথম অনুমোদন এবং 3=দ্বিতীয় অনুমোদন যদি যথেষ্ট হয়)।
একটি অনুমোদন (2 পদক্ষেপ) যথেষ্ট হলে এটিকে খালি হিসাবে সেট করুন, যদি দ্বিতীয় অনুমোদন (3 ধাপ) সর্বদা প্রয়োজন হয় তবে এটিকে খুব কম মান (0.1) এ সেট করুন। UseDoubleApproval=একটি 3 ধাপ অনুমোদন ব্যবহার করুন যখন পরিমাণ (ট্যাক্স ছাড়া) এর থেকে বেশি হয়... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- কিছু ইমেল পরিষেবা প্রদানকারী (যেমন ইয়াহু) আপনাকে তাদের নিজস্ব সার্ভারের পরিবর্তে অন্য সার্ভার থেকে একটি ইমেল পাঠাতে দেয় না। আপনার বর্তমান সেটআপ ইমেল পাঠানোর জন্য অ্যাপ্লিকেশনের সার্ভার ব্যবহার করে এবং আপনার ইমেল প্রদানকারীর সার্ভার নয়, তাই কিছু প্রাপক (নিষেধাজ্ঞামূলক DMARC প্রোটোকলের সাথে সামঞ্জস্যপূর্ণ), আপনার ইমেল প্রদানকারীকে জিজ্ঞাসা করবে তারা আপনার ইমেল এবং কিছু ইমেল প্রদানকারী গ্রহণ করতে পারে কিনা (ইয়াহুর মতো) "না" উত্তর দিতে পারে কারণ সার্ভারটি তাদের নয়, তাই আপনার পাঠানো কিছু ইমেল বিতরণের জন্য গৃহীত নাও হতে পারে (আপনার ইমেল প্রদানকারীর পাঠানোর কোটা সম্পর্কেও সতর্ক থাকুন)। +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- ইমেল পাঠানোর জন্য আপনার নিজস্ব ইমেল পরিষেবা প্রদানকারীর SMTP সার্ভার ব্যবহার করাও আকর্ষণীয় তাই অ্যাপ্লিকেশন থেকে পাঠানো সমস্ত ইমেলগুলি আপনার মেলবক্সের "প্রেরিত" ডিরেক্টরিতেও সংরক্ষিত হবে৷ WarningPHPMailD=তাই ই-মেইল পাঠানোর পদ্ধতিকে "SMTP" মানতে পরিবর্তন করার পরামর্শ দেওয়া হচ্ছে। WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. WarningPHPMail2=যদি আপনার ইমেল SMTP প্রদানকারীর ইমেল ক্লায়েন্টকে কিছু আইপি ঠিকানায় সীমাবদ্ধ করতে হয় (খুব বিরল), এটি আপনার ERP CRM অ্যাপ্লিকেশনের জন্য মেল ব্যবহারকারী এজেন্টের (MUA) IP ঠিকানা: %s। -WarningPHPMailSPF=যদি আপনার প্রেরকের ইমেল ঠিকানার ডোমেন নামটি একটি SPF রেকর্ড দ্বারা সুরক্ষিত থাকে (আপনার ডোমেন নাম রেজিস্টারকে জিজ্ঞাসা করুন), আপনাকে অবশ্যই আপনার ডোমেনের DNS-এর SPF রেকর্ডে নিম্নলিখিত IPগুলি যোগ করতে হবে: %s। -ActualMailSPFRecordFound=প্রকৃত SPF রেকর্ড পাওয়া গেছে (ইমেলের জন্য %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=বর্ণনা প্রদর্শন করতে ক্লিক করুন DependsOn=এই মডিউলটির মডিউল(গুলি) প্রয়োজন RequiredBy=এই মডিউলটি মডিউল(গুলি) দ্বারা প্রয়োজনীয় @@ -867,7 +868,7 @@ Permission255=অন্যান্য ব্যবহারকারীদে Permission256=অন্যান্য ব্যবহারকারীদের মুছুন বা অক্ষম করুন Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=তাদের বস্তু ছাড়াই সমস্ত তৃতীয় পক্ষের অ্যাক্সেস প্রসারিত করুন (কেবল তৃতীয় পক্ষ নয় যার জন্য ব্যবহারকারী একজন বিক্রয় প্রতিনিধি)।
বহিরাগত ব্যবহারকারীদের জন্য কার্যকর নয় (প্রস্তাবের জন্য সর্বদা নিজেদের মধ্যে সীমাবদ্ধ, অর্ডার, ইনভয়েস, চুক্তি, ইত্যাদি)।
প্রকল্পের জন্য কার্যকর নয় (শুধুমাত্র প্রকল্পের অনুমতি, দৃশ্যমানতা এবং অ্যাসাইনমেন্ট সংক্রান্ত বিষয়ে নিয়ম)। Permission271=সিএ পড়ুন Permission272=চালান পড়ুন @@ -944,7 +945,7 @@ Permission776=খরচ রিপোর্ট প্রদান Permission777=সমস্ত খরচ রিপোর্ট পড়ুন (এমনকি ব্যবহারকারীর অধীনস্থ নয়) Permission778=প্রত্যেকের ব্যয়ের প্রতিবেদন তৈরি/পরিবর্তন করুন Permission779=রপ্তানি ব্যয় প্রতিবেদন -Permission1001=স্টক পড়ুন +Permission1001=Read warehouses and stocks Permission1002=গুদাম তৈরি/পরিবর্তন করুন Permission1003=গুদামগুলি মুছুন Permission1004=স্টক আন্দোলন পড়ুন @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=মান পরিষ্কার করতে DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=গ্রাহক বা সরবরাহকারীদের জন্য উপ-অ্যাকাউন্ট তৈরি করার সময় নির্দিষ্ট শব্দগুলি পরিষ্কার করুন RemoveSpecialWordsHelp=গ্রাহক বা সরবরাহকারীর হিসাব গণনা করার আগে পরিষ্কার করতে হবে এমন শব্দ উল্লেখ করুন। ব্যবহার করা ";" প্রতিটি শব্দের মধ্যে -GDPRContact=ডেটা সুরক্ষা অফিসার (DPO, ডেটা গোপনীয়তা বা GDPR যোগাযোগ) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=আপনি যদি আপনার ইনফরমেশন সিস্টেমে ব্যক্তিগত ডেটা সঞ্চয় করেন, তাহলে আপনি এখানে সাধারণ ডেটা সুরক্ষা প্রবিধানের জন্য দায়ী পরিচিতের নাম দিতে পারেন HelpOnTooltip=টুলটিপে দেখানোর জন্য পাঠ্য সাহায্য করুন HelpOnTooltipDesc=এই ক্ষেত্রটি একটি ফর্মে উপস্থিত হলে একটি টুলটিপে পাঠ্য দেখানোর জন্য এখানে পাঠ্য বা একটি অনুবাদ কী রাখুন @@ -2218,7 +2219,7 @@ CreateCandidature=চাকরির আবেদন তৈরি করুন FormatZip=জিপ MainMenuCode=মেনু এন্ট্রি কোড (মেনমেনু) ECMAutoTree=স্বয়ংক্রিয় ECM গাছ দেখান -OperationParamDesc=কিছু ডেটা বের করতে ব্যবহার করার নিয়মগুলি সংজ্ঞায়িত করুন বা অপারেশনের জন্য ব্যবহার করার জন্য মানগুলি সেট করুন৷

থেকে কোম্পানির নাম বের করার উদাহরণ একটি অস্থায়ী পরিবর্তনশীল মধ্যে ইমেল বিষয়:
tmp_var=EXTRACT:SUBJECT:কোম্পানীর বার্তা ([^\n]*)

তৈরি করার জন্য একটি বস্তুর বৈশিষ্ট্য সেট করার উদাহরণ:
objproperty1=SET:একটি হার্ড কোডেড মান
objproperty2=SET:__tmp_var__
objproperty3=YMPvalue:YMPVALue সম্পত্তি ইতিমধ্যে সংজ্ঞায়িত না থাকলেই সেট করা হয়)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY is:My s([^\\s]*)

বিভিন্ন বৈশিষ্ট্যগুলি বের করতে বা সেট করতে একটি নতুন লাইন ব্যবহার করুন৷ +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=খোলার সময় OpeningHoursDesc=আপনার কোম্পানির নিয়মিত খোলার সময় এখানে লিখুন। ResourceSetup=সম্পদ মডিউল কনফিগারেশন @@ -2264,7 +2265,7 @@ LargerThan=চেয়ে বড় IfTrackingIDFoundEventWillBeLinked=মনে রাখবেন যে যদি ইমেলের মধ্যে একটি বস্তুর একটি ট্র্যাকিং আইডি পাওয়া যায়, বা যদি ইমেলটি ইতিমধ্যেই সংগ্রহ করা এবং একটি বস্তুর সাথে লিঙ্ক করা একটি ইমেলের উত্তর হয়, তাহলে তৈরি ইভেন্টটি পরিচিত সম্পর্কিত বস্তুর সাথে স্বয়ংক্রিয়ভাবে লিঙ্ক হয়ে যাবে। WithGMailYouCanCreateADedicatedPassword=একটি GMail অ্যাকাউন্টের সাথে, আপনি যদি 2 ধাপের বৈধতা সক্ষম করেন, তাহলে https://myaccount.google.com/ থেকে আপনার নিজের অ্যাকাউন্টের পাসওয়ার্ড ব্যবহার না করে অ্যাপ্লিকেশনটির জন্য একটি ডেডিকেটেড দ্বিতীয় পাসওয়ার্ড তৈরি করার পরামর্শ দেওয়া হয়। EmailCollectorTargetDir=এটি সফলভাবে প্রক্রিয়া করা হলে ইমেলটিকে অন্য ট্যাগ/ডিরেক্টরিতে স্থানান্তর করা একটি পছন্দসই আচরণ হতে পারে। এই বৈশিষ্ট্যটি ব্যবহার করতে এখানে শুধু ডিরেক্টরির নাম সেট করুন (নামে বিশেষ অক্ষর ব্যবহার করবেন না)। মনে রাখবেন যে আপনাকে অবশ্যই একটি পঠন/লেখা লগইন অ্যাকাউন্ট ব্যবহার করতে হবে। -EmailCollectorLoadThirdPartyHelp=আপনি আপনার ডাটাবেসে বিদ্যমান তৃতীয় পক্ষকে খুঁজে পেতে এবং লোড করতে ইমেল সামগ্রী ব্যবহার করতে এই ক্রিয়াটি ব্যবহার করতে পারেন ('আইডি', 'নাম', 'নাম_আলিয়াস', 'ইমেল'-এর মধ্যে সংজ্ঞায়িত সম্পত্তিতে অনুসন্ধান করা হবে)। পাওয়া (বা তৈরি করা) তৃতীয় পক্ষকে নিম্নলিখিত ক্রিয়াকলাপের জন্য ব্যবহার করা হবে যেগুলির জন্য এটি প্রয়োজন৷
উদাহরণস্বরূপ, যদি আপনি একটি স্ট্রিং থেকে বের করা একটি নাম দিয়ে একটি তৃতীয় পক্ষ তৈরি করতে চান ' নাম: নাম: খুঁজে বের করতে নাম' বডিতে উপস্থিত, প্রেরকের ইমেলটিকে ইমেল হিসাবে ব্যবহার করুন, আপনি প্যারামিটার ক্ষেত্রটি এভাবে সেট করতে পারেন:
'email=HEADER:^From:(। *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=সতর্কতা: অনেক ইমেল সার্ভার (যেমন Gmail) একটি স্ট্রিং অনুসন্ধান করার সময় সম্পূর্ণ শব্দ অনুসন্ধান করছে এবং যদি স্ট্রিংটি শুধুমাত্র একটি শব্দে আংশিকভাবে পাওয়া যায় তবে ফলাফল প্রদান করবে না। এই কারণেও, একটি অনুসন্ধানের মানদণ্ডে বিশেষ অক্ষর ব্যবহার করলে তা উপেক্ষা করা হবে যদি সেগুলি বিদ্যমান শব্দগুলির অংশ নয়৷
কোনও শব্দের উপর একটি বাদ অনুসন্ধান করতে (শব্দ থাকলে ইমেল ফেরত দিন পাওয়া যায় না), আপনি ব্যবহার করতে পারেন! শব্দের আগে অক্ষর (কিছু মেল সার্ভারে কাজ নাও করতে পারে)। EndPointFor=%s এর জন্য শেষ বিন্দু : %s DeleteEmailCollector=ইমেল সংগ্রাহক মুছুন @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=তৃতীয় পক্ষের নাম - তৃতী ALIAS_THIRDPARTY=তৃতীয় পক্ষের উপনাম - তৃতীয় পক্ষের নাম PDFIn2Languages=পিডিএফ-এ 2টি ভিন্ন ভাষায় লেবেল দেখান (এই বৈশিষ্ট্যটি কয়েকটি ভাষার জন্য কাজ নাও করতে পারে) PDF_USE_ALSO_LANGUAGE_CODE=আপনি যদি আপনার পিডিএফের কিছু পাঠ্য একই জেনারেটেড পিডিএফ-এ 2টি ভিন্ন ভাষায় সদৃশ করতে চান, তাহলে আপনাকে অবশ্যই এখানে এই দ্বিতীয় ভাষাটি সেট করতে হবে যাতে জেনারেট করা পিডিএফে একই পৃষ্ঠায় 2টি ভিন্ন ভাষা থাকবে, যেটি PDF তৈরি করার সময় বেছে নেওয়া হয় এবং এটি ( শুধুমাত্র কয়েকটি পিডিএফ টেমপ্লেট এটি সমর্থন করে)। পিডিএফ প্রতি 1টি ভাষার জন্য খালি রাখুন। -PDF_USE_A=ডিফল্ট ফরম্যাট PDF এর পরিবর্তে PDF/A ফরম্যাট সহ পিডিএফ ডকুমেন্ট তৈরি করুন +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=এখানে একটি FontAwesome আইকনের কোড লিখুন। আপনি যদি না জানেন যে FontAwesome কি, আপনি জেনেরিক মান fa-address-book ব্যবহার করতে পারেন। RssNote=দ্রষ্টব্য: প্রতিটি RSS ফিড সংজ্ঞা একটি উইজেট প্রদান করে যেটি ড্যাশবোর্ডে উপলব্ধ থাকতে আপনাকে অবশ্যই সক্ষম করতে হবে JumpToBoxes=সেটআপে যান -> উইজেট @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/bn_IN/datapolicy.lang b/htdocs/langs/bn_IN/datapolicy.lang index 4aeea8ac612..d6cf39293f1 100644 --- a/htdocs/langs/bn_IN/datapolicy.lang +++ b/htdocs/langs/bn_IN/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = ডেটা গোপনীয়তা নীতি # Module description 'ModuledatapolicyDesc' Module4100Desc = ডেটা গোপনীয়তা পরিচালনার মডিউল (জিডিপিআরের সাথে সামঞ্জস্যপূর্ণ) - -# # Administration page -# datapolicySetup = মডিউল ডেটা গোপনীয়তা নীতি সেটআপ Deletion = ডেটা মুছে ফেলা datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = প্রত্যাশা গ্রাহ DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = না সম্ভাবনা/না গ্রাহক DATAPOLICY_CONTACT_FOURNISSEUR = সরবরাহকারী DATAPOLICY_ADHERENT = সদস্য -DATAPOLICY_Tooltip_SETUP = যোগাযোগের ধরন - প্রতিটি প্রকারের জন্য আপনার পছন্দগুলি নির্দেশ করুন৷ -DATAPOLICYMail = ইমেল সেটআপ -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = ইমেইলের বিষয়বস্তু -DATAPOLICYSUBSITUTION = আপনি আপনার ইমেলে নিম্নলিখিত ভেরিয়েবলগুলি ব্যবহার করতে পারেন (LINKACCEPT ব্যক্তির চুক্তি রেকর্ড করে একটি লিঙ্ক তৈরি করতে দেয়, LINKREFUSED ব্যক্তির অস্বীকৃতি রেকর্ড করা সম্ভব করে তোলে): -DATAPOLICYACCEPT = চুক্তির পর বার্তা -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = আপনি আপনার সমস্ত প্রাসঙ্গিক পরিচিতিদের একটি GDPR ইমেল পাঠাতে পারেন (যারা এখনও একটি ইমেল পাননি এবং যার জন্য আপনি তাদের GDPR চুক্তি সম্পর্কে কিছু নিবন্ধন করেননি)। এটি করতে, নিম্নলিখিত বোতামটি ব্যবহার করুন। SendAgreement = ইমেইল পাঠান AllAgreementSend = সব ইমেইল পাঠানো হয়েছে TXTLINKDATAPOLICYACCEPT = লিঙ্কের জন্য পাঠ্য "চুক্তি" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = জিডিপিআর: ব্যক্তিগত তথ্য প্রক্রিয়াকরণ DATAPOLICY_consentement = ব্যক্তিগত তথ্য প্রক্রিয়াকরণের জন্য সম্মতি প্রাপ্ত DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = একটি তৃতীয় পক্ষ বেনামী -DATAPOLICY_POPUP_ANONYME_TEXTE = আপনি Dolibarr থেকে এই পরিচিতি মুছে ফেলতে পারবেন না কারণ সম্পর্কিত আইটেম আছে। জিডিপিআর অনুসারে, আপনি আপনার বাধ্যবাধকতাগুলিকে সম্মান করতে এই সমস্ত ডেটা বেনামী করে দেবেন। আপনি কি অবিরত করতে চান ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = পোর্টেবিলিটি জিডিপিআর -DATAPOLICY_PORTABILITE_TITLE = ব্যক্তিগত তথ্য রপ্তানি -DATAPOLICY_PORTABILITE_CONFIRMATION = আপনি এই পরিচিতির ব্যক্তিগত ডেটা রপ্তানি করতে চান৷ তুমি কি নিশ্চিত ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = বেনামী %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = GDPR ইমেল পাঠান MailSent = ইমেল পাঠানো হয়েছে - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/bn_IN/dict.lang b/htdocs/langs/bn_IN/dict.lang index 67360b513ab..a09f5ed3757 100644 --- a/htdocs/langs/bn_IN/dict.lang +++ b/htdocs/langs/bn_IN/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=সিএফপি ফ্রাঙ্ক CurrencySingXPF=CFP ফ্রাঙ্ক CurrencyCentEUR=সেন্ট CurrencyCentSingEUR=শতক -CurrencyCentINR=পয়সা -CurrencyCentSingINR=পয়সা +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=হাজারতম #### Input reasons ##### DemandReasonTypeSRC_INTE=ইন্টারনেট diff --git a/htdocs/langs/bn_IN/errors.lang b/htdocs/langs/bn_IN/errors.lang index 8599af3fff5..d3d763014ac 100644 --- a/htdocs/langs/bn_IN/errors.lang +++ b/htdocs/langs/bn_IN/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=ব্যবহারকারীকে অবশ্ ErrorTaskAlreadyAssigned=টাস্ক ইতিমধ্যেই ব্যবহারকারীকে বরাদ্দ করা হয়েছে৷ ErrorModuleFileSeemsToHaveAWrongFormat=মডিউল প্যাকেজ একটি ভুল বিন্যাস আছে বলে মনে হচ্ছে. ErrorModuleFileSeemsToHaveAWrongFormat2=At least one mandatory directory must exists into zip of module: %s or %s -ErrorFilenameDosNotMatchDolibarrPackageRules=মডিউল প্যাকেজের নাম (%s) মেলে না প্রত্যাশিত নামের সিনট্যাক্স: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=ত্রুটি, ডুপ্লিকেট ট্রিগার নাম %s। ইতিমধ্যেই %s থেকে লোড করা হয়েছে৷ ErrorNoWarehouseDefined=ত্রুটি, কোনো গুদাম সংজ্ঞায়িত করা নেই। ErrorBadLinkSourceSetButBadValueForRef=আপনি যে লিঙ্কটি ব্যবহার করেন সেটি বৈধ নয়। অর্থপ্রদানের জন্য একটি 'উৎস' সংজ্ঞায়িত করা হয়েছে, কিন্তু 'রেফ'-এর মান বৈধ নয়। @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/bn_IN/mails.lang b/htdocs/langs/bn_IN/mails.lang index 6caa6f619f8..a20764812e3 100644 --- a/htdocs/langs/bn_IN/mails.lang +++ b/htdocs/langs/bn_IN/mails.lang @@ -32,6 +32,8 @@ NewMailing=নতুন ইমেইল NewSMSing=New smsing EditMailing=ইমেল সম্পাদনা করুন ResetMailing=ইমেল পুনরায় পাঠান +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=ইমেল মুছুন PreviewMailing=পূর্বরূপ ইমেল CreateMailing=ইমেল তৈরি করুন @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=ইমেল প্রাপক খালি WarningNoEMailsAdded=প্রাপকের তালিকায় যোগ করার জন্য কোনো নতুন ইমেল নেই। ConfirmValidMailing=আপনি কি এই ইমেল যাচাই করার বিষয়ে নিশ্চিত? ConfirmResetMailing=সতর্কতা, %s ইমেল পুনরায় শুরু করার মাধ্যমে, আপনি অনুমতি দেবেন একটি বাল্ক মেইলিং এই ইমেল পুনরায় পাঠান. আপনি কি সত্যি এটা করতে চান? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=আপনি কি এই ইমেল মুছে ফেলার বিষয়ে নিশ্চিত? NbOfUniqueEMails=অনন্য ইমেলের সংখ্যা NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=ইমেল পাঠাতে আর কোন প্ EmailOptedOut=ইমেলের মালিক অনুরোধ করেছেন এই ইমেলের মাধ্যমে তার সাথে আর যোগাযোগ না করার জন্য EvenUnsubscribe=অপ্ট-আউট ইমেলগুলি অন্তর্ভুক্ত করুন৷ EvenUnsubscribeDesc=আপনি যখন লক্ষ্য হিসাবে ইমেল নির্বাচন করেন তখন অপ্ট-আউট ইমেলগুলি অন্তর্ভুক্ত করুন৷ উদাহরণস্বরূপ বাধ্যতামূলক পরিষেবা ইমেলের জন্য দরকারী। -XEmailsDoneYActionsDone=%s ইমেলগুলি প্রাক-যোগ্য, %s ইমেলগুলি সফলভাবে প্রক্রিয়া করা হয়েছে (%s রেকর্ডের জন্য /ক্রিয়া সম্পন্ন) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/bn_IN/stripe.lang b/htdocs/langs/bn_IN/stripe.lang index 3460a5ac0e9..a803f2c6aad 100644 --- a/htdocs/langs/bn_IN/stripe.lang +++ b/htdocs/langs/bn_IN/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=একটি চুক্তি ল ToOfferALinkForOnlinePaymentOnFreeAmount=একটি %s যেকোন পরিমাণের অনলাইন পেমেন্ট পেজ অফার করার জন্য URL কোনো বিদ্যমান বস্তু ছাড়াই ToOfferALinkForOnlinePaymentOnMemberSubscription=সদস্য সদস্যতার জন্য একটি %s অনলাইন পেমেন্ট পৃষ্ঠা অফার করার URL ToOfferALinkForOnlinePaymentOnDonation=অনুদানের অর্থ প্রদানের জন্য একটি %s অনলাইন পেমেন্ট পৃষ্ঠা অফার করার URL -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) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=স্বয়ংক্রিয়ভাবে পেমেন্ট তৈরি করার জন্য url %s দিয়ে আপনার স্ট্রাইপ সেটআপ করুন স্ট্রাইপ দ্বারা যাচাই করা হয়েছে। AccountParameter=অ্যাকাউন্ট প্যারামিটার UsageParameter=ব্যবহারের পরামিতি @@ -77,4 +78,13 @@ TERMINAL_LOCATION=স্ট্রাইপ টার্মিনালের জ RequestDirectDebitWithStripe=স্ট্রাইপ দিয়ে সরাসরি ডেবিট অনুরোধ করুন RequesCreditTransferWithStripe=স্ট্রাইপ দিয়ে ক্রেডিট ট্রান্সফারের অনুরোধ করুন STRIPE_SEPA_DIRECT_DEBIT=স্ট্রাইপের মাধ্যমে সরাসরি ডেবিট পেমেন্ট সক্ষম করুন +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=স্ট্রাইপ কানেক্ট মোড +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/bs_BA/admin.lang b/htdocs/langs/bs_BA/admin.lang index f922eac108b..bdca07350f6 100644 --- a/htdocs/langs/bs_BA/admin.lang +++ b/htdocs/langs/bs_BA/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametri moraju biti ObjectName:Classpath
Sintaksa: ObjectName:Classpath ExtrafieldParamHelpSeparator=Ostavite prazno za jednostavan separator
Postavite ovo na 1 za separator koji se sažima (otvoreno prema zadanim postavkama za novu sesiju, tada se status čuva za svaku korisničku sesiju)
Postavite ovo na 2 za sažimajući separator (sažeto prema zadanim postavkama za novu sesiju, tada se status čuva za svaku korisničku sesiju) LibraryToBuildPDF=Biblioteka koja se koristi za generiranje PDF-a @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s nakon čega slijedi skraćeno ime korisnik ModuleCompanyCodeSupplierDigitaria=%s nakon čega slijedi skraćeno ime dobavljača po broju znakova: %s za obračunski kod dobavljača. Use3StepsApproval=Prema zadanim postavkama, Narudžbenice moraju biti kreirane i odobrene od 2 različita korisnika (jedan korak/korisnik za kreiranje i jedan korak/ Imajte na umu da ako korisnik ima obje dozvole za kreiranje i odobrenja, jedan korak/korisnik će biti dovoljan). Pomoću ove opcije možete tražiti da uvedete treći korak/korisničko odobrenje, ako je iznos veći od namjenske vrijednosti (tako da će biti potrebna 3 koraka: 1=validacija, 2=prvo odobrenje i 3=drugo odobrenje ako je iznos dovoljan).
Postavite ovo na prazno ako je jedno odobrenje (2 koraka) dovoljno, postavite ga na vrlo nisku vrijednost (0,1) ako uvijek je potrebno drugo odobrenje (3 koraka). UseDoubleApproval=Koristite odobrenje u 3 koraka kada je iznos (bez poreza) veći od... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Neki dobavljači usluga e-pošte (kao što je Yahoo) vam ne dozvoljavaju slanje e-pošte sa drugog servera osim sa njihovog servera. Vaša trenutna postavka koristi server aplikacije za slanje e-pošte i, a ne server vašeg provajdera e-pošte, tako da će neki primaoci (onaj koji je kompatibilan sa restriktivnim DMARC protokolom) tražiti od vas dobavljač e-pošte ako može prihvatiti vašu e-poštu i neki provajderi e-pošte (kao što je Yahoo) mogu odgovoriti "ne" jer server nije njihov, tako da mali broj vaših poslatih e-poruka možda neće biti prihvaćen za isporuku (pazite i na kvotu slanja vašeg provajdera e-pošte). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Korištenje SMTP servera vašeg vlastitog dobavljača usluga e-pošte za slanje e-pošte je također zanimljivo tako da će svi emailovi poslati iz aplikacije također biti sačuvani u vašem direktoriju "Poslano" vašeg poštanskog sandučeta. WarningPHPMailD=Stoga je preporučljivo promijeniti način slanja e-pošte na vrijednost "SMTP". WarningPHPMailDbis=Ako zaista želite zadržati zadanu "PHP" metodu za slanje e-pošte, samo zanemarite ovo upozorenje ili ga uklonite tako što ćete %skliknuti ovdje%s. WarningPHPMail2=Ako vaš SMTP provajder e-pošte treba da ograniči 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 ime domena u vašoj email adresi pošiljaoca zaštićeno SPF zapisom (pitajte svoj registar imena domena), morate dodati sljedeće IP adrese u SPF zapis DNS-a vaše domene: %s. -ActualMailSPFRecordFound=Pronađen je stvarni SPF zapis (za e-poštu %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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) @@ -867,7 +868,7 @@ Permission255=Izmijenite lozinku drugih korisnika Permission256=Izbrišite ili onemogućite druge korisnike Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Proširiti pristup svim trećim stranama BEZ njihovih objekata (ne samo trećim stranama za koje je korisnik zastupnik prodaje).
Nije efektivno za vanjske korisnike (uvijek ograničeno na sebe za prijedloge, narudžbe, fakture, ugovori, itd.).
Nije na snazi za projekte (samo pravila o projektnim dozvolama, vidljivost i dodjela je važna ). Permission271=Pročitajte CA Permission272=Čitajte fakture @@ -944,7 +945,7 @@ Permission776=Plaćajte izvještaje o troškovima Permission777=Pročitajte sve izvještaje o troškovima (čak i one korisnika koji nisu podređeni) Permission778=Kreirajte/izmijenite izvještaje o troškovima za sve Permission779=Izvoz izvještaja o troškovima -Permission1001=Čitajte dionice +Permission1001=Read warehouses and stocks Permission1002=Kreirati/izmijeniti skladišta Permission1003=Izbrišite skladišta Permission1004=Pročitajte kretanje dionica @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter za čistu vrijednost (COMPANY_DIGITAR DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Očistite određene riječi prilikom generiranja podračuna za kupce ili dobavljače RemoveSpecialWordsHelp=Navedite riječi koje treba očistiti prije izračunavanja računa kupca ili dobavljača. Koristite ";" između svake reči -GDPRContact=Službenik za zaštitu podataka (DPO, kontakt za privatnost podataka ili GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ako pohranjujete lične podatke u svom informacionom sistemu, ovdje možete imenovati kontakt koji je odgovoran za Opću uredbu o zaštiti podataka HelpOnTooltip=Tekst pomoći za prikaz u opisu alata HelpOnTooltipDesc=Ovdje stavite tekst ili ključ za prijevod kako bi se tekst prikazao u opisu alata kada se ovo polje pojavi u obrascu @@ -2218,7 +2219,7 @@ CreateCandidature=Kreirajte prijavu za posao FormatZip=Zip MainMenuCode=Kod za unos menija (glavni meni) ECMAutoTree=Prikaži automatsko ECM stablo -OperationParamDesc=Definirajte pravila koja će se koristiti za izdvajanje nekih podataka ili postavite vrijednosti koje ćete koristiti za rad.

Primjer za izdvajanje naziva kompanije iz predmet e-pošte u privremenu varijablu:
tmp_var=EXTRACT:SUBJECT:Poruka od kompanije ([^\n]*)

Primjeri za postavljanje svojstava objekta za kreiranje:
objproperty1=SET:tvrdo kodirana vrijednost
objproperty2=SET:__tmp_var__
objEMPuerty3:a SETIF vrijednost (vrijednost se postavlja samo ako svojstvo nije već definirano)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY ime je\\:Moja kompanija s([^\\s]*)

Koristite novi red da izdvojite ili postavite nekoliko svojstava. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Radno vrijeme OpeningHoursDesc=Ovdje unesite redovno radno vrijeme Vaše kompanije. ResourceSetup=Konfiguracija modula resursa @@ -2264,7 +2265,7 @@ LargerThan=Veći od IfTrackingIDFoundEventWillBeLinked=Imajte na umu da ako se ID za praćenje objekta pronađe u e-pošti ili ako je e-pošta odgovor na e-poruku koja je već prikupljena i povezana s objektom, kreirani događaj će biti automatski povezan sa poznatim povezanim objektom. WithGMailYouCanCreateADedicatedPassword=Uz GMail nalog, ako ste omogućili provjeru valjanosti u 2 koraka, preporučuje se kreiranje posebne druge lozinke za aplikaciju umjesto korištenja lozinke vlastitog računa sa https://myaccount.google.com/. EmailCollectorTargetDir=Možda bi bilo poželjno premjestiti e-poštu u drugu oznaku/direktorij kada je uspješno obrađena. Samo postavite naziv direktorija ovdje da biste koristili ovu funkciju (NE koristite posebne znakove u imenu). Imajte na umu da morate koristiti i račun za prijavu za čitanje/pisanje. -EmailCollectorLoadThirdPartyHelp=Ovu radnju možete koristiti za korištenje sadržaja e-pošte da pronađete i učitavanje postojeće treće strane u vašu bazu podataka (pretraga će se obaviti na definiranom svojstvu između 'id', 'name' ,'name_alias','email'). Pronađena (ili kreirana) treća strana će se koristiti za sljedeće radnje kojima je to potrebno.
Na primjer, ako želite kreirati treću stranu s imenom izvučenim iz niza ' Ime: ime koje treba pronaći' prisutno u tijelu, koristite email pošiljaoca kao e-poštu, možete postaviti polje parametra ovako:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Upozorenje: mnogi serveri e-pošte (kao što je Gmail) pretražuju cijelu riječ kada pretražuju niz i neće vratiti rezultat ako se string nađe samo djelomično u riječi. I iz ovog razloga, korištenje specijalnih znakova u kriterijima pretraživanja bit će zanemareni ako nisu dio postojećih riječi.
Da izvršite pretragu izuzeća za riječ (vratite email ako riječ nije pronađen), možete koristiti ! znak ispred reči (možda neće raditi na nekim serverima pošte). EndPointFor=Krajnja tačka za %s : %s DeleteEmailCollector=Izbrišite sakupljač e-pošte @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Ime treće strane - pseudonim treće strane ALIAS_THIRDPARTY=Alias treće strane - Ime treće strane PDFIn2Languages=Prikaži oznake u PDF-u na 2 različita jezika (ova funkcija možda neće raditi za nekoliko jezika) PDF_USE_ALSO_LANGUAGE_CODE=Ako želite da neki tekstovi u vašem PDF-u budu duplirani na 2 različita jezika u istom generiranom PDF-u, ovdje morate postaviti ovaj drugi jezik tako da će generirani PDF sadržavati 2 različita jezika na istoj stranici, onaj koji je odabran prilikom generiranja PDF-a i ovaj (samo nekoliko PDF šablona to podržava). Ostavite prazno za 1 jezik po PDF-u. -PDF_USE_A=Generirajte PDF dokumente u formatu PDF/A umjesto zadanog formata PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Ovdje unesite kod ikone FontAwesome. Ako ne znate šta je FontAwesome, možete koristiti generičku vrijednost fa-address-book. RssNote=Napomena: Svaka definicija RSS feed-a pruža widget koji morate omogućiti da bi bio dostupan na kontrolnoj tabli JumpToBoxes=Skoči na Podešavanje -> Widgeti @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/bs_BA/datapolicy.lang b/htdocs/langs/bs_BA/datapolicy.lang index f2a8465c13d..99739dec5d8 100644 --- a/htdocs/langs/bs_BA/datapolicy.lang +++ b/htdocs/langs/bs_BA/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Politika privatnosti podataka # Module description 'ModuledatapolicyDesc' Module4100Desc = Modul za upravljanje privatnošću podataka (usklađenost s GDPR-om) - -# # Administration page -# datapolicySetup = Podešavanje politike privatnosti podataka modula Deletion = Brisanje podataka datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Potencijal/Kupac DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ni potencijalni/ni kupac DATAPOLICY_CONTACT_FOURNISSEUR = Dobavljač DATAPOLICY_ADHERENT = Član -DATAPOLICY_Tooltip_SETUP = Vrsta kontakta - Navedite svoje izbore za svaku vrstu. -DATAPOLICYMail = Podešavanje e-pošte -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Sadržaj e-pošte -DATAPOLICYSUBSITUTION = Možete koristiti sljedeće varijable u svojoj e-pošti (LINKACCEPT omogućava kreiranje linka koji bilježi pristanak osobe, LINKREFUSED omogućava snimanje odbijanja osobe): -DATAPOLICYACCEPT = Poruka nakon dogovora -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Možete poslati GDPR e-poruku svim svojim relevantnim kontaktima (koji još nisu primili e-poštu i za koju niste registrirali ništa o njihovom GDPR ugovoru). Da biste to učinili, koristite sljedeće dugme. SendAgreement = Šalji e-poštu AllAgreementSend = Svi emailovi su poslani TXTLINKDATAPOLICYACCEPT = Tekst za link "sporazum" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR : Obrada ličnih podataka DATAPOLICY_consentement = Dobivena saglasnost za obradu ličnih podataka DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonimizirajte treću stranu -DATAPOLICY_POPUP_ANONYME_TEXTE = Ne možete izbrisati ovaj kontakt iz Dolibarra jer postoje povezane stavke. U skladu s GDPR-om, učinit ćete sve ove podatke anonimnim kako biste poštovali svoje obaveze. Želite li nastaviti? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Prenosivost GDPR -DATAPOLICY_PORTABILITE_TITLE = Izvoz ličnih podataka -DATAPOLICY_PORTABILITE_CONFIRMATION = Želite da izvezete lične podatke ovog kontakta. Jesi li siguran ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Anonimizirao %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Pošaljite GDPR email MailSent = E-mail je poslan - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/bs_BA/dict.lang b/htdocs/langs/bs_BA/dict.lang index 3711d9b3cb1..663e5063a27 100644 --- a/htdocs/langs/bs_BA/dict.lang +++ b/htdocs/langs/bs_BA/dict.lang @@ -21,7 +21,7 @@ CountryNL=Holandija CountryHU=Mađarska CountryRU=Rusija CountrySE=Švedska -CountryCI=Ivory Coast +CountryCI=Obala Slonovače CountrySN=Senegal CountryAR=Argentina CountryCM=Kamerun @@ -116,7 +116,7 @@ CountryHM=Čuo Island i McDonald CountryVA=Sveta Stolica (Vatikan State) CountryHN=Honduras CountryHK=Hongkong -CountryIS=Iceland +CountryIS=Island CountryIN=Indija CountryID=Indonezija CountryIR=Iran @@ -131,13 +131,13 @@ CountryKI=Kiribati CountryKP=Severna Koreja CountryKR=Južna Koreja CountryKW=Kuvajt -CountryKG=Kyrgyzstan +CountryKG=Kirgistan CountryLA=Lao CountryLV=Letonija CountryLB=Liban CountryLS=Lesoto CountryLR=Liberija -CountryLY=Libya +CountryLY=Libija CountryLI=Lihtenštajn CountryLT=Lithuania CountryLU=Luksemburg @@ -158,9 +158,9 @@ CountryMX=Meksiko CountryFM=Mikronezija CountryMD=Moldavija CountryMN=Mongolija -CountryMS=Monserrat +CountryMS=Montserrat CountryMZ=Mozambik -CountryMM=Myanmar (Burma) +CountryMM=Mjanmar (Burma) CountryNA=Namibija CountryNR=Nauru CountryNP=Nepal @@ -223,7 +223,7 @@ CountryTO=Tonga CountryTT=Trinidad i Tobago CountryTR=Turska CountryTM=Turkmenistan -CountryTC=Turks and Caicos Islands +CountryTC=Turci i Ostrva Caicos CountryTV=Tuvalu CountryUG=Uganda CountryUA=Ukrajina @@ -280,7 +280,7 @@ CurrencySingMGA=Ariary CurrencyMUR=Mauricijke rupije CurrencySingMUR=Mauricijska rupija CurrencyNOK=Norveške krune -CurrencySingNOK=Norwegian kronas +CurrencySingNOK=norveške krune CurrencyTND=Tuniski dinari CurrencySingTND=Tuniski dinar CurrencyUSD=Američki dolari @@ -293,10 +293,10 @@ CurrencyXOF=CFA franci BCEAO CurrencySingXOF=CFA Franak BCEAO CurrencyXPF=CFP franci CurrencySingXPF=CFP franak -CurrencyCentEUR=cents +CurrencyCentEUR=centi CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=hiljaditi #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet @@ -310,7 +310,7 @@ DemandReasonTypeSRC_WOM=Riječ usta DemandReasonTypeSRC_PARTNER=Partner DemandReasonTypeSRC_EMPLOYEE=Zaposlenik DemandReasonTypeSRC_SPONSORING=Pokroviteljstvo -DemandReasonTypeSRC_SRC_CUSTOMER=Incoming contact of a customer +DemandReasonTypeSRC_SRC_CUSTOMER=Dolazni kontakt kupca #### Paper formats #### PaperFormatEU4A0=Format 4A0 PaperFormatEU2A0=Format 2A0 @@ -332,7 +332,7 @@ PaperFormatCAP4=Format P4 Canada PaperFormatCAP5=Format P5 Canada PaperFormatCAP6=Format P6 Canada #### Expense report categories #### -ExpAutoCat=Car +ExpAutoCat=Auto ExpCycloCat=Moped ExpMotoCat=Motorbike ExpAuto3CV=3 CV @@ -345,18 +345,18 @@ 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 +ExpAuto3PCV=3 CV i više +ExpAuto4PCV=4 CV i više +ExpAuto5PCV=5 CV i više +ExpAuto6PCV=6 CV i više +ExpAuto7PCV=7 CV i više +ExpAuto8PCV=8 CV i više +ExpAuto9PCV=9 CV i više +ExpAuto10PCV=10 CV i više +ExpAuto11PCV=11 CV i više +ExpAuto12PCV=12 CV i više +ExpAuto13PCV=13 CV i više +ExpCyclo=Kapacitet manji do 50cm3 +ExpMoto12CV=Motocikl 1 ili 2 CV +ExpMoto345CV=Motocikl 3, 4 ili 5 CV +ExpMoto5PCV=Motocikl 5 CV i više diff --git a/htdocs/langs/bs_BA/errors.lang b/htdocs/langs/bs_BA/errors.lang index c1344c88701..adcab55af96 100644 --- a/htdocs/langs/bs_BA/errors.lang +++ b/htdocs/langs/bs_BA/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=User must be assigned to task to be able to enter tim 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 +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the 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. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/bs_BA/mails.lang b/htdocs/langs/bs_BA/mails.lang index 4caa99b8f26..7e196da11dd 100644 --- a/htdocs/langs/bs_BA/mails.lang +++ b/htdocs/langs/bs_BA/mails.lang @@ -32,6 +32,8 @@ NewMailing=Nova e-pošta NewSMSing=New smsing EditMailing=Uredi e-poštu ResetMailing=Ponovo pošalji e-poštu +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Obriši e-poštu PreviewMailing=Pregledati e-poštu CreateMailing=Kreirati e-poštu @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Primalac e-pošte je prazan WarningNoEMailsAdded=Nema nove e-pošte za dodati na listu primaoca. ConfirmValidMailing=Are you sure you want to validate this emailing? ConfirmResetMailing=Upozorenje, ponovnim pokretanjem e-pošte %s, dozvolit ćete ponovno slanje ove e-pošte u masovnoj pošti. Jeste li sigurni da želite ovo učiniti? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Jeste li sigurni da želite izbrisati ovu e-poruku? NbOfUniqueEMails=Broj jedinstvenih emailova NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Nema više primaoca kome treba poslati email EmailOptedOut=Vlasnik e-pošte je zatražio da ga više ne kontaktira s ovom e-poštom EvenUnsubscribe=Uključite e-poruke za odustajanje EvenUnsubscribeDesc=Uključite e-poruke za odustajanje kada odaberete e-poštu kao ciljeve. Korisno za obavezne servisne e-poruke, na primjer. -XEmailsDoneYActionsDone=%s e-poruke unaprijed kvalificirane, %s e-poruke uspješno obrađene (za %s zapis /radnje obavljeno) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/bs_BA/stripe.lang b/htdocs/langs/bs_BA/stripe.lang index f80a1710397..97e69106796 100644 --- a/htdocs/langs/bs_BA/stripe.lang +++ b/htdocs/langs/bs_BA/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL za ponudu %s stranice za online p ToOfferALinkForOnlinePaymentOnFreeAmount=URL za ponudu %s stranice za online plaćanje bilo kojeg iznosa bez postojećeg objekta ToOfferALinkForOnlinePaymentOnMemberSubscription=URL za ponudu %s stranice za online plaćanje za pretplatu člana ToOfferALinkForOnlinePaymentOnDonation=URL za ponudu %s stranice za online plaćanje za uplatu donacije -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) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Postavite svoj Stripe s url %s da se plaćanje automatski kreira potvrdio Stripe. AccountParameter=Parametri računa UsageParameter=Parametri upotrebe @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Lokacija (adresa) za Stripe terminale RequestDirectDebitWithStripe=Zatražite direktno zaduživanje sa trakom RequesCreditTransferWithStripe=Zatražite prijenos kredita sa Stripe-om STRIPE_SEPA_DIRECT_DEBIT=Omogućite plaćanja Direktnim zaduživanjem putem Stripea +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=Stripe Connect način rada +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/ca_ES/admin.lang b/htdocs/langs/ca_ES/admin.lang index a1fbbf99622..baacd6ff82d 100644 --- a/htdocs/langs/ca_ES/admin.lang +++ b/htdocs/langs/ca_ES/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Els paràmetres han de ser ObjectName:Classpath
Sintaxi: ObjectName:Classpath ExtrafieldParamHelpSeparator=Manteniu-lo buit per a un separador simple
Definiu-lo a 1 per a un separador que es replega (obert per defecte per a una sessió nova, llavors l'estat es manté per a cada sessió d'usuari)
Definiu-ho a 2 per a un separador que es replega (es replega de manera predeterminada per a una sessió nova, llavors l'estat es manté abans de cada sessió d'usuari) LibraryToBuildPDF=Biblioteca utilitzada per a la generació de PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s seguit del nom del client truncat pel nomb ModuleCompanyCodeSupplierDigitaria=%s seguit del nom del proveïdor truncat pel nombre de caràcters: %s per al codi de comptabilitat del proveïdor. Use3StepsApproval=De manera predeterminada, les comandes de compra han de ser creades i aprovades per 2 usuaris diferents (un pas/usuari per crear i un pas/usuari per aprovar. Tingueu en compte que si l'usuari té tant permís per crear com per aprovar, n'hi haurà prou amb un pas/usuari). . Podeu demanar amb aquesta opció que introduïu un tercer pas/aprovació de l'usuari, si l'import és superior a un valor dedicat (per tant, seran necessaris 3 passos: 1=validació, 2=primera aprovació i 3=segona aprovació si l'import és suficient).
Definiu-lo com a buit si n'hi ha prou amb una aprovació (2 passos), establiu-lo en un valor molt baix (0,1) si sempre cal una segona aprovació (3 passos). UseDoubleApproval=Utilitzeu una aprovació de 3 passos quan l'import (sense impostos) sigui superior a... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -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 vostra configuració actual utilitza el servidor de l'aplicació per enviar correu electrònic i no el servidor del vostre proveïdor de correu electrònic, de manera que alguns destinataris (el compatible amb el protocol restrictiu DMARC) 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 alguns dels vostres correus electrònics enviats poden no ser acceptats per al lliurament (compte també amb la quota d'enviament del vostre proveïdor de correu electrònic). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Utilitzar el servidor SMTP del vostre propi proveïdor de serveis de correu electrònic per enviar correus electrònics també és interessant, de manera que tots els correus electrònics enviats des de l'aplicació també es desaran al directori "Enviats" de la vostra bústia de correu. WarningPHPMailD=Per tant, es recomana canviar el mètode d'enviament dels correus electrònics al valor "SMTP". WarningPHPMailDbis=Si realment voleu mantenir el mètode "PHP" predeterminat per enviar correus electrònics, simplement ignoreu aquest avís o elimineu-lo %sfent clic aquí%s. WarningPHPMail2=Si el vostre proveïdor d'SMTP de correu electrònic ha de restringir el client de correu electrònic a algunes adreces IP (molt rara), aquesta és l'adreça IP de l'agent d'usuari de correu (MUA) per a la vostra aplicació ERP CRM: %s. -WarningPHPMailSPF=Si el nom de domini de l'adreça de correu electrònic del remitent està protegit per un registre SPF (demaneu al registrador del vostre nom de domini), heu d'afegir les IP següents al registre SPF del DNS del vostre domini: %s. -ActualMailSPFRecordFound=S'ha trobat el registre SPF real (per al correu electrònic %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Feu clic per a mostrar la descripció DependsOn=Aquest mòdul necessita el mòdul(s) RequiredBy=Aquest mòdul és requerit pel mòdul(s) @@ -867,7 +868,7 @@ Permission255=Eliminar o desactivar altres usuaris Permission256=Consultar els seus permisos Permission262=Ampliar l'accés a tots els tercers I als seus objectes (no només a tercers als quals l'usuari està vinculat com a representant comercial). Permission262b=No efectiu per als usuaris externs (sempre limitats a ells mateixos per a propostes, comandes, factures, contractes, etc.). -Permission262c=No és efectiu per als projectes (només regles sobre permisos de projecte, visibilitat i assumptes d'assignació). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Amplieu l'accés a tots els tercers SENSE els seus objectes (no només a tercers dels quals l'usuari és representant de la venda).
No és efectiu per a usuaris externs (sempre limitat a ells mateixos per a propostes, comandes, factures, contractes, etc.).
No és eficaç per als projectes (només les regles sobre permisos, visibilitat i assignació de projectes). Permission271=Consultar el CA Permission272=Consultar les factures @@ -944,7 +945,7 @@ Permission776=Pagar informes de despeses Permission777=Llegeix tots els informes de despeses (fins i tot els dels usuaris no subordinats) Permission778=Crea/modifica informes de despeses de tothom Permission779=Exportar informes de despeses -Permission1001=Consulta d'estocs +Permission1001=Read warehouses and stocks Permission1002=Crear/modificar els magatzems Permission1003=Eliminar magatzems Permission1004=Consulta moviments d'estoc @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtre Regex al valor net (COMPANY_DIGITARIA_CLEAN DuplicateForbidden=Duplicat prohibit RemoveSpecialWords=Netegeu certes paraules en generar subcomptes per a clients o proveïdors RemoveSpecialWordsHelp=Especifiqueu les paraules a netejar abans de calcular el compte de client o proveïdor. Utilitzeu un ";" entre cada paraula -GDPRContact=Oficial de protecció de dades (PDO, privadesa de dades o contacte amb GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Si emmagatzemeu dades personals al vostre Sistema d'Informació, podeu anomenar aquí el contacte responsable del Reglament General de Protecció de Dades HelpOnTooltip=Text d'ajuda que es mostrarà 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 @@ -2218,7 +2219,7 @@ CreateCandidature=Crea sol·licitud de feina FormatZip=Format Zip MainMenuCode=Codi d'entrada del menú (menú principal) ECMAutoTree=Mostra l'arbre ECM automàtic -OperationParamDesc=Definiu les regles que s'han d'utilitzar per a extreure algunes dades o establir valors que s'utilitzen per al funcionament.

Exemple per a extreure el nom d'una empresa de l'assumpte del correu electrònic a una variable temporal:
tmp_var=EXTRACT:SUBJECT:Missatge de l'empresa ([^\n]*)

Exemples per a establir les propietats d'un objecte a crear:
objproperty1=SET:un valor fixat
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:un valor (el valor s'estableix només si la propietat encara no s'ha definit)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:El nom de la meva empresa és\\s([^\\s]*)

Utilitzeu una nova línia per a extreure o establir diverses propietats. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Horari d'obertura OpeningHoursDesc=Introduïu aquí l'horari habitual d'obertura de la vostra empresa. ResourceSetup=Configuració del mòdul de recursos @@ -2264,7 +2265,7 @@ LargerThan=Major que IfTrackingIDFoundEventWillBeLinked=Tingueu en compte que si es troba un identificador de seguiment d'un objecte al correu electrònic, o si el correu electrònic és una resposta d'un correu electrònic ja recollit i enllaçat a un objecte, l'esdeveniment creat s'enllaçarà automàticament amb l'objecte relacionat conegut. WithGMailYouCanCreateADedicatedPassword=Amb un GMail account, si heu activat els 2 passos validation, es recomana b0635760368 una segona contrasenya dedicada per a la Application en lloc d'utilitzar la vostra pròpia contrasenya account de https://myaccount.google .com/. EmailCollectorTargetDir=Pot ser un comportament desitjat moure el correu electrònic a una altra etiqueta/directori quan s'ha processat correctament. Només heu d'establir aquí el nom del directori per utilitzar aquesta funció (NO feu servir caràcters especials al nom). Tingueu en compte que també heu d'utilitzar un compte d'inici de sessió de lectura/escriptura. -EmailCollectorLoadThirdPartyHelp=Podeu utilitzar aquesta acció per utilitzar el contingut email per trobar and carregar un Third party al vostre database (la cerca es farà a la propietat definida entre 'ID','name','name_alias ','email'). El Third party trobat (o creat) s'utilitzarà per a les accions following que ho necessitin.
Per a Example, si voleu create a Third party amb un nom extret d'una cadena 'Nom: nom per trobar' present al cos, utilitzeu el remitent email com a email, podeu configurar el paràmetre Field com aquest:
'email=HEADER:^From:(.*);name=EXTRACT:BODY: >Nom:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Avís: molts servidors de correu electrònic (com Gmail) estan fent cerques de paraules completes quan cerquen en una cadena i no retornaran un resultat si la cadena només es troba parcialment en una paraula. Per aquest motiu també, utilitzar caràcters especials en una cerca s'ignoraran els criteris si no formen part de paraules existents.
Per a fer una cerca d'exclusió en una paraula (retorna el correu electrònic si no es troba la paraula), pots utilitzar el ! caràcter abans de la paraula (pot no funcionar en alguns servidors de correu). EndPointFor=Punt final per %s: %s DeleteEmailCollector=Suprimeix el recollidor de correu electrònic @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Nom de tercer - Àlies de tercer ALIAS_THIRDPARTY=Àlies de tercer - Nom de tercer PDFIn2Languages=Mostra les etiquetes al PDF en 2 idiomes diferents (és possible que aquesta funció no funcioni en alguns idiomes) 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=Genereu documents PDF amb el format PDF/A en comptes del format PDF predeterminat +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Introduïu aquí el codi de la icona de FontAwesome. Si no sabeu què és FontAwesome, podeu utilitzar el llibre genèric d’adreces. RssNote=Nota: cada definició de canal RSS proporciona un giny que heu d'activar perquè estigui disponible al tauler JumpToBoxes=Ves a Configuració -> Ginys @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ca_ES/commercial.lang b/htdocs/langs/ca_ES/commercial.lang index d0112590194..9963f12f28c 100644 --- a/htdocs/langs/ca_ES/commercial.lang +++ b/htdocs/langs/ca_ES/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Vols eliminar aquest esdeveniment? CardAction=Fitxa esdeveniment ActionOnCompany=Empresa relacionada ActionOnContact=Contacte relacionat +ActionOnUser=Related user TaskRDVWith=Cita amb %s ShowTask=Veure tasca ShowAction=Veure esdeveniment @@ -93,3 +94,9 @@ SignatureContractRef=Signatura del contracte %s SignatureFichinterRef=Signatura d'intervenció %s SignatureSociete_ribRef=Signatura de l'ordre SEPA %s FeatureOnlineSignDisabled=La funcionalitat de signatura en línia estava desactivada o bé el document va ser generat abans que fos habilitada la funció +NoSignature=No signat +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/ca_ES/companies.lang b/htdocs/langs/ca_ES/companies.lang index 1c51431e398..d16a3dfef6e 100644 --- a/htdocs/langs/ca_ES/companies.lang +++ b/htdocs/langs/ca_ES/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Nom d'usuari de Dolibarr NoDolibarrAccess=Sense accés d'usuari ExportDataset_company_1=Tercers (empreses/entitats/persones físiques) i propietats ExportDataset_company_2=Contactes i propietats +ExportDataset_company_3=Comptes Bancaris de tercers ImportDataset_company_1=Tercers i les seves propietats ImportDataset_company_2=Contactes/Adreces i atributs addicionals de tercers ImportDataset_company_3=Comptes Bancaris de tercers diff --git a/htdocs/langs/ca_ES/datapolicy.lang b/htdocs/langs/ca_ES/datapolicy.lang index 90d2298210b..d0d7aa930c7 100644 --- a/htdocs/langs/ca_ES/datapolicy.lang +++ b/htdocs/langs/ca_ES/datapolicy.lang @@ -33,7 +33,7 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Client potencial/client DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ni prospecte/Ni client DATAPOLICY_CONTACT_FOURNISSEUR = Proveïdor DATAPOLICY_ADHERENT = Soci -DATAPOLICY_Tooltip_SETUP = Tipus de contacte: indiqueu les vostres opcions per a cada tipus. +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Podeu enviar un correu electrònic de GDPR a tots els vostres contactes rellevants (que encara no han rebut cap correu electrònic i per als quals no heu registrat res sobre el seu acord de GDPR). Per a fer-ho, utilitzeu el botó següent. SendAgreement = Envieu correus electrònics AllAgreementSend = S'han enviat tots els correus electrònics diff --git a/htdocs/langs/ca_ES/dict.lang b/htdocs/langs/ca_ES/dict.lang index 9742a409e81..d2132956fb0 100644 --- a/htdocs/langs/ca_ES/dict.lang +++ b/htdocs/langs/ca_ES/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=Francs CFP CurrencySingXPF=Franc CFP CurrencyCentEUR=cèntims CurrencyCentSingEUR=cèntim -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=mil·lèsim #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/ca_ES/errors.lang b/htdocs/langs/ca_ES/errors.lang index 563f3104ae1..a0ca64da285 100644 --- a/htdocs/langs/ca_ES/errors.lang +++ b/htdocs/langs/ca_ES/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Cal assignar l'usuari a la tasca per a poder introdui ErrorTaskAlreadyAssigned=La tasca també està assignada a l'usuari ErrorModuleFileSeemsToHaveAWrongFormat=Pareix que el mòdul té un format incorrecte. ErrorModuleFileSeemsToHaveAWrongFormat2=Al ZIP d'un mòdul ha d'haver necessàriament com a mínim un d'aquests directoris: %s o %s -ErrorFilenameDosNotMatchDolibarrPackageRules=El nom de l'arxiu del mòdul (%s) no coincideix amb la sintaxi del nom esperat: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Error, nom de disparador %s duplicat. Ja es troba carregat des de %s. ErrorNoWarehouseDefined=Error, no hi ha magatzems definits. ErrorBadLinkSourceSetButBadValueForRef=L'enllaç que utilitzeu no és vàlid. Es defineix una "font" de pagament, però el valor de "ref" no és vàlid. @@ -422,3 +422,4 @@ OperNotDefined=Forma de pagament no definida ErrorThisContactXIsAlreadyDefinedAsThisType=%s ja està definit com a contacte per a aquest tipus. ErrorThisGroupIsAlreadyDefinedAsThisType=Els contactes amb aquest grup ja estan definits com a contacte d'aquest tipus. EmptyMessageNotAllowedError=No es permet el missatge buit +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/ca_ES/interventions.lang b/htdocs/langs/ca_ES/interventions.lang index ac0c63f4083..427d8d0cc4f 100644 --- a/htdocs/langs/ca_ES/interventions.lang +++ b/htdocs/langs/ca_ES/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Crea esborrany InterventionContact=Contacte intervenció DeleteIntervention=Eliminar intervenció ValidateIntervention=Validar intervenció +SignIntervention=Signar la intervenció +UnsignIntervention=Unsign intervention ModifyIntervention=Modificar intervenció CloseIntervention=Tanca la intervenció DeleteInterventionLine=Eliminar línia d'intervenció ConfirmDeleteIntervention=Vols eliminar aquesta intervenció? ConfirmValidateIntervention=Vols validar aquesta intervenció amb nom %s? +ConfirmSignIntervention=Are you sure you want to set this intervention as signed ? +ConfirmUnsignIntervention=Are you sure you want to set this intervention as unsigned ? ConfirmModifyIntervention=Vols modificar aquesta intervenció? ConfirmCloseIntervention=Esteu segur que voleu tancar aquesta intervenció? ConfirmDeleteInterventionLine=Esteu segur que voleu suprimir aquesta línia d'intervenció? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Fitxes i línies d'intervenció InterventionClassifyBilled=Marca «Facturat» InterventionClassifyUnBilled=Marca «No facturat» InterventionClassifyDone=Marca «Fet» +InterventionSign=Set Signed +InterventionUnsign=Set Unsigned SendInterventionRef=Presentar intervenció %s SendInterventionByMail=Envia la intervenció per e-mail InterventionCreatedInDolibarr=Intervenció %s creada InterventionValidatedInDolibarr=Intervenció %s validada +InterventionSignedInDolibarr=Intervenció signada +InterventionSignedOnline=Intervention signed online +InterventionUnsignedInDolibarr=Intervention unsigned InterventionModifiedInDolibarr=Intervenció %s modificada InterventionClassifiedBilledInDolibarr=Intervenció %s marcada com a facturada InterventionClassifiedUnbilledInDolibarr=Intervenció %s marcada com a no facturada @@ -65,7 +74,7 @@ InterLineDuration=Durada de la línia de la intervenció InterLineDesc=Descripció de la línia de la intervenció RepeatableIntervention=Plantilla d’intervenció ToCreateAPredefinedIntervention=Per a crear una intervenció predefinida o recurrent, creeu una intervenció comuna i convertiu-la en plantilla d'intervenció -ConfirmReopenIntervention=Esteu segur que voleu tornar a obrir la intervenció %s ? +ConfirmReopenIntervention=Esteu segur que voleu tornar a obrir la intervenció %s? GenerateInter=Generar intervenció FichinterNoContractLinked=La intervenció %s s'ha creat sense un contracte vinculat. ErrorFicheinterCompanyDoesNotExist=L'empresa no existeix. No s'ha creat la intervenció. diff --git a/htdocs/langs/ca_ES/mails.lang b/htdocs/langs/ca_ES/mails.lang index a005128bc79..89809929eb0 100644 --- a/htdocs/langs/ca_ES/mails.lang +++ b/htdocs/langs/ca_ES/mails.lang @@ -32,6 +32,8 @@ NewMailing=Enviament de correu nou NewSMSing=Nou sms EditMailing=Edita l'enviament de correu ResetMailing=Nou enviament +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Suprimeix l'enviament de correu PreviewMailing=Previsualitza l'enviament de correu CreateMailing=Crear un enviament de correu @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=L'adreça del destinatari és buida WarningNoEMailsAdded=Cap nou e-mail a afegir a la llista destinataris. ConfirmValidMailing=Esteu segur que voleu validar aquest enviament de correu? ConfirmResetMailing=Advertència, en reinicialitzar l'enviament de correu %s, es permetrà tornar a enviar aquest correu electrònic en un correu massiu. Estàs segur que vols fer això? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Esteu segur que voleu suprimir aquesta adreça electrònica? NbOfUniqueEMails=Nombre de correus electrònics exclusius NbOfUniquePhones=Nombre de telèfons únics @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=No hi ha més destinatari a qui enviar el correu electr EmailOptedOut=El propietari del correu electrònic ha sol·licitat no contactar amb ell amb aquest correu electrònic EvenUnsubscribe=Inclou correus electrònics de desactivació EvenUnsubscribeDesc=Incloeu correus electrònics de desactivació quan seleccioneu correus electrònics com a objectius. Útil per a correus electrònics de servei obligatori, per exemple. -XEmailsDoneYActionsDone=%s correus electrònics prequalificats, %s correus electrònics processats correctament (per a %s registre/accions realitzades) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Podeu fer algunes instruccions per al vostre correu electrònic (Exemple: generar imatge a la plantilla de correu electrònic...) ModelTemplate=Plantilla de correu electrònic YouCanChooseAModelForYouMailContent= Podeu triar un dels models de plantilla o generar-ne un amb IA TitleOfMailHolder=El títol del correu electrònic va aquí ContentOfMailHolder=El contingut del correu electrònic arriba aquí... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/ca_ES/sendings.lang b/htdocs/langs/ca_ES/sendings.lang index a56f663b399..4a77e1516a5 100644 --- a/htdocs/langs/ca_ES/sendings.lang +++ b/htdocs/langs/ca_ES/sendings.lang @@ -30,7 +30,7 @@ OtherSendingsForSameOrder=Altres enviaments d'aquesta comanda SendingsAndReceivingForSameOrder=Enviaments i recepcions per aquesta comanda SendingsToValidate=Enviaments a validar StatusSendingCanceled=Anul·lada -StatusSendingCanceledShort=Cancel·lat +StatusSendingCanceledShort=Anul·lat StatusSendingDraft=Esborrany StatusSendingValidated=Validat (productes a enviar o enviats) StatusSendingProcessed=Processat @@ -40,7 +40,7 @@ StatusSendingProcessedShort=Processat SendingSheet=Full d’enviament ConfirmDeleteSending=Estàs segur que vols eliminar aquest enviament? ConfirmValidateSending=Esteu segur que voleu validar aquest enviament amb la referència %s >? -ConfirmCancelSending=Esteu segur que voleu cancel·lar aquest enviament? +ConfirmCancelSending=Esteu segur que voleu anul·lar aquest enviament? DocumentModelMerou=Model Merou A5 WarningNoQtyLeftToSend=Alerta, cap producte en espera d'enviament. StatsOnShipmentsOnlyValidated=Les estadístiques només són per a enviaments validats. La data utilitzada és la data de validació de l'enviament (no sempre se sap la data de lliurament prevista) @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=No s'ha trobat cap producte per a enviar al magatz WeightVolShort=Pes/Vol. ValidateOrderFirstBeforeShipment=S'ha de validar la comanda abans de fer expedicions. NoLineGoOnTabToAddSome=Sense línia, aneu a la pestanya "%s" per afegir -CreateInvoiceForThisCustomerFromSendings=Enviaments de factures +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=Si la validació de la factura és "No", l'enviament es mantindrà en l'estat "No facturat" fins que la factura es validi. OptionToSetSendingBilledNotEnabled=L'opció del mòdul Flux de treball, per establir l'enviament a 'Facturat' automàticament quan la factura es valida, no està habilitada, de manera que hauràs de configurar l'estat dels enviaments a 'Facturat' manualment després de generar la factura. diff --git a/htdocs/langs/ca_ES/stripe.lang b/htdocs/langs/ca_ES/stripe.lang index 7b87976d8d0..ce34cc6d15c 100644 --- a/htdocs/langs/ca_ES/stripe.lang +++ b/htdocs/langs/ca_ES/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL per a oferir una pàgina de pagam ToOfferALinkForOnlinePaymentOnFreeAmount=URL per a oferir una pàgina de pagament en línia %s de qualsevol import sense cap objecte existent ToOfferALinkForOnlinePaymentOnMemberSubscription=URL per a oferir una pàgina de pagament en línia %s per a una subscripció de soci ToOfferALinkForOnlinePaymentOnDonation=URL per a 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) +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) YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. 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 @@ -71,7 +71,7 @@ StripePayoutList=Llista de pagaments de Stripe ToOfferALinkForTestWebhook=Enllaç per a configurar el WebHook de Stripe per a trucar a l'IPN (mode de prova) ToOfferALinkForLiveWebhook=Enllaç per a configurar el WebHook de Stripe per a trucar a l'IPN (mode en producció) PaymentWillBeRecordedForNextPeriod=El pagament es registrarà per al període següent. -ClickHereToTryAgain= Feu clic aquí per a tornar-ho a provar... +ClickHereToTryAgain=Feu clic aquí per a tornar-ho a provar... CreationOfPaymentModeMustBeDoneFromStripeInterface=A causa de les regles d'autenticació de client fortes, la creació d'una targeta s'ha de fer des de l'oficina administrativa de Stripe. Pots fer clic aquí per a activar el registre de client de Stripe: %s STRIPE_CARD_PRESENT=Targeta de regal per a terminals Stripe TERMINAL_LOCATION=Ubicació (adreça) de Stripe Terminals diff --git a/htdocs/langs/ca_ES/website.lang b/htdocs/langs/ca_ES/website.lang index f137fd2e68d..d17db531ecd 100644 --- a/htdocs/langs/ca_ES/website.lang +++ b/htdocs/langs/ca_ES/website.lang @@ -62,7 +62,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ífica YouCanEditHtmlSourceckeditor=Podeu editar el codi font HTML usant el botó "Codi font" a l'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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
Per incloure un imatge emmagatzemat al director de documentsb9z0f65fc0
, utilitzeu l'embolcall viewimage.php.
, per exemple, una imatge a documents/mitjans (directori obert per a accés públic), la sintaxi és:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"b0018c7d31ecz0
YouCanEditHtmlSource2=Per a una imatge compartida amb un enllaç compartit (accés obert utilitzant la clau hash de compartició del fitxer), la sintaxi és:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource3=Per obtenir l'URL de la imatge d'un objecte PHP, utilitzeu
<< span>img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/cs_CZ/admin.lang b/htdocs/langs/cs_CZ/admin.lang index 138d64377c5..66b0dfa036b 100644 --- a/htdocs/langs/cs_CZ/admin.lang +++ b/htdocs/langs/cs_CZ/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Seznam hodnot musí být řádky s formátovým klíč ExtrafieldParamHelpcheckbox=Seznam hodnot musí být řádky s formátovým klíčem, hodnota (kde klíč nemůže být '0')

například:
1, value1
2, value2
3, value3
... ExtrafieldParamHelpradio=Seznam hodnot musí být řádky s formátovým klíčem, hodnota (kde klíč nemůže být '0')

například:
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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Ponechte prázdné pro jednoduchý oddělovač
Tuto hodnotu nastavíte na 1 pro odlučovač (výchozí nastavení je otevřeno pro novou relaci, poté je stav zachován pro každou uživatelskou relaci)
Nastavte tuto položku na 2 pro sbalující se oddělovač. (ve výchozím nastavení sbaleno pro novou relaci, pak je stav udržován pro každou relaci uživatele) LibraryToBuildPDF=Knihovna používaná pro generování PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s následovaný zkráceným jménem zákazn ModuleCompanyCodeSupplierDigitaria=%s následované zkráceným jménem dodavatele podle počtu znaků: %s pro účetní kód dodavatele. Use3StepsApproval=Ve výchozím nastavení musí být nákupní objednávky vytvořeny a schváleny dvěma různými uživateli (jeden krok / uživatel k vytvoření a jeden krok / uživatel ke schválení. Všimněte si, že pokud má uživatel oprávnění k vytvoření a schválení, stačí jeden krok / uživatel) . Touto volbou můžete požádat o zavedení třetího schvalovacího kroku / schválení uživatele, pokud je částka vyšší než určená hodnota (potřebujete tedy 3 kroky: 1 = ověření, 2 = první schválení a 3 = druhé schválení, pokud je dostatečné množství).
Pokud je zapotřebí jedno schvalování (2 kroky), nastavte jej na velmi malou hodnotu (0,1), pokud je vždy požadováno druhé schválení (3 kroky). UseDoubleApproval=Použijte schválení 3 kroky, kdy částka (bez DPH) je vyšší než ... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability 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). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. 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=It is therefore recommended to change the sending method of e-mails to the value "SMTP". WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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 (for email %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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) @@ -867,7 +868,7 @@ Permission255=Upravit heslo ostatních uživatelů Permission256=Odstraňte nebo deaktivujte ostatní uživatele Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). 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=Přečtěte CA Permission272=Přečtěte si faktury @@ -944,7 +945,7 @@ Permission776=Zaplatit vyúčtování výdajů Permission777=Read all expense reports (even those of user not subordinates) Permission778=Create/modify expense reports of everybody Permission779=Export výkazů o výdajích -Permission1001=Přečtěte si zásoby +Permission1001=Read warehouses and stocks Permission1002=Vytvářejte/upravujte sklady Permission1003=Odstranit sklady Permission1004=Čtěte pohyby akcií @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtr Regex pro vyčištění hodnoty (COMPANY_DIG DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word -GDPRContact=Úředník pro ochranu údajů (DPO, ochrana dat nebo kontakt GDPR) +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=Text nápovědy se zobrazí na popisku HelpOnTooltipDesc=Vložte zde textový nebo překladový klíč, aby se text zobrazil v popisku, když se toto pole zobrazí ve formuláři @@ -2218,7 +2219,7 @@ CreateCandidature=Create job application FormatZip=Zip MainMenuCode=Vstupní kód nabídky (hlavní menu) ECMAutoTree=Zobrazit automatický strom ECM -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Otevírací doba OpeningHoursDesc=Zadejte zde běžnou pracovní dobu vaší společnosti. ResourceSetup=Konfigurace modulu zdrojů @@ -2264,7 +2265,7 @@ LargerThan=Větší než IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into email, or if the email is an answer of an email already 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 recommended to create a dedicated second password for the application instead of using your own account password from https://myaccount.google.com/. EmailCollectorTargetDir=It may be a desired behavior 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 third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Warning: a lot of email servers (like Gmail) are doing full word searches when searching on a string and will not return a result if the string is only found partially into a word. For this reason too, use special characters into a search criteria will be ignored are they are not part of existing words.
To make an exclude search on a word (return email if word is not found), you can use the ! character before the word (may not work on some mail servers). EndPointFor=Koncový bod pro %s: %s DeleteEmailCollector=Smazat sběratele e-mailu @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Third-party name - Third-party alias ALIAS_THIRDPARTY=Third-party alias - Third-party name PDFIn2Languages=Show labels in the PDF in 2 different languages (this feature may not work for some couple of languages) 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=Generate PDF documents with format PDF/A instead of default format PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Sem zadejte kód ikony FontAwesome. Pokud nevíte, co je FontAwesome, můžete použít obecnou hodnotu fa-address-book. RssNote=Poznámka: Každá definice zdroje RSS obsahuje widget, který musíte povolit, aby byl dostupný na hlavním panelu JumpToBoxes=Přejít na nastavení -> Widgety @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/cs_CZ/commercial.lang b/htdocs/langs/cs_CZ/commercial.lang index 520d3f8d805..845625e97fa 100644 --- a/htdocs/langs/cs_CZ/commercial.lang +++ b/htdocs/langs/cs_CZ/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Opravdu chcete tuto událost smazat? CardAction=Karta události ActionOnCompany=Související společnost ActionOnContact=Související kontakt +ActionOnUser=Related user TaskRDVWith=Setkání s %s ShowTask=Zobrazit úkol ShowAction=Zobrazit akce @@ -47,7 +48,6 @@ LastProspectToContact=Chcete-li kontaktovat LastProspectContactInProcess=Kontakt v procesu LastProspectContactDone=Kontakt hotový ActionAffectedTo=Akce přiřazeny k -ActionDoneBy=Událost provádí ActionAC_TEL=Telefonní hovor ActionAC_FAX=Odeslat fax ActionAC_PROP=Poslat e-mailem návrh @@ -77,13 +77,26 @@ ToOfferALinkForOnlineSignature=Odkaz pro podpis online WelcomeOnOnlineSignaturePageProposal=Vítejte na stránce, abyste přijali komerční návrhy z %s WelcomeOnOnlineSignaturePageContract=Welcome to %s Contract PDF Signing Page WelcomeOnOnlineSignaturePageFichinter=Welcome to %s Intervention PDF Signing Page +WelcomeOnOnlineSignaturePageSociete_rib=Welcome to %s SEPA mandate PDF Signing Page +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=Tato obrazovka umožňuje přijímat a podepsat nebo odmítnout nabídku/komerční návrh ThisScreenAllowsYouToSignDocFromContract=This screen allow you to sign contract on PDF format online. ThisScreenAllowsYouToSignDocFromFichinter=This screen allow you to sign intervention on PDF format online. +ThisScreenAllowsYouToSignDocFromSociete_rib=This screen allow you to sign SEPA Mandate on PDF format online. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=Toto jsou informace o přijetí nebo odmítnutí dokumentu ThisIsInformationOnDocumentToSignContract=This is information on contract to sign ThisIsInformationOnDocumentToSignFichinter=This is information on intervention to sign +ThisIsInformationOnDocumentToSignSociete_rib=This is information on SEPA Mandate to sign +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Podpis nabídky/obchodní nabídky %s SignatureContractRef=Signature of contract %s SignatureFichinterRef=Signature of intervention %s +SignatureSociete_ribRef=Signature of SEPA Mandate %s FeatureOnlineSignDisabled=Funkce pro podepisování online zakázána nebo dokument byl vygenerovaný dříve, než byla funkce povolena +NoSignature=Nepodepsaný +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/cs_CZ/companies.lang b/htdocs/langs/cs_CZ/companies.lang index 4ef3c6caeea..01a56d1fb8f 100644 --- a/htdocs/langs/cs_CZ/companies.lang +++ b/htdocs/langs/cs_CZ/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Přihlášení do Dolibarru NoDolibarrAccess=Žádný přístup k Dolibarr ExportDataset_company_1=Subjekty (společnosti / nadace / fyzické osoby) a jejich vlastnosti ExportDataset_company_2=Kontakty a jejich vlastnosti +ExportDataset_company_3=Bankovní účty subjektů ImportDataset_company_1=Subjekty a jejich vlastnosti ImportDataset_company_2=Dodatečné kontakty / adresy a atributy subjektů ImportDataset_company_3=Bankovní účty subjektů diff --git a/htdocs/langs/cs_CZ/dict.lang b/htdocs/langs/cs_CZ/dict.lang index 4655789ab1a..0c79dcaf4b7 100644 --- a/htdocs/langs/cs_CZ/dict.lang +++ b/htdocs/langs/cs_CZ/dict.lang @@ -158,7 +158,7 @@ CountryMX=Mexiko CountryFM=Mikronésie CountryMD=Moldavsko CountryMN=Mongolsko -CountryMS=Monserrat +CountryMS=Montserrat CountryMZ=Mosambik CountryMM=Myanmar (Barma) CountryNA=Namibie @@ -295,8 +295,8 @@ CurrencyXPF=CFP frank CurrencySingXPF=Frank CFP CurrencyCentEUR=centů CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=tisícina #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/cs_CZ/errors.lang b/htdocs/langs/cs_CZ/errors.lang index b802f6b3a92..d50bb1f824b 100644 --- a/htdocs/langs/cs_CZ/errors.lang +++ b/htdocs/langs/cs_CZ/errors.lang @@ -4,16 +4,17 @@ NoErrorCommitIsDone=Žádná chyba, jsme se nedopustili # Errors ErrorButCommitIsDone=Byly nalezeny chyby, ale přesto jsme provedli ověření. Snad to pojede .... -ErrorBadEMail=Email %s is incorrect +ErrorBadEMail=Email address %s is incorrect 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. +ErrorRefAlreadyExists=Reference %s used for creation already exists. ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=Přihlášení %s již existuje. ErrorGroupAlreadyExists=Skupina %s již existuje. ErrorEmailAlreadyExists=Email %s already exists. ErrorRecordNotFound=Záznam není nalezen. +ErrorRecordNotFoundShort=Not found ErrorFailToCopyFile=Nepodařilo se zkopírovat soubor ' %s' do ' %s'. ErrorFailToCopyDir=Nepodařilo se zkopírovat adresář „ %s “ do „ %s “. ErrorFailToRenameFile=Nepodařilo se přejmenovat soubor ' %s' na ' %s'. @@ -31,6 +32,7 @@ ErrorBadThirdPartyName=Špatná hodnota názvu subjektu nebo třetí strany ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=%s je povinné ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory +ErrorAccountancyCodeSupplierIsMandatory=The accountancy code of supplier %s is mandatory ErrorBadCustomerCodeSyntax=Špatná syntaxe kódu zákazníka ErrorBadBarCodeSyntax=Špatná syntaxe pro čárový kód. Možná jste nastavili špatný typ čárového kódu nebo jste definovali masku čárového kódu pro číslování, které nesouhlasí s naskenovanou hodnotou. ErrorCustomerCodeRequired=Je vyžadován kód zákazníka @@ -48,24 +50,28 @@ ErrorBadImageFormat=Obrázek nemá podporovaný formát (Váš PHP nepodporuje f ErrorBadDateFormat=Hodnota '%s' má nesprávný formát data ErrorWrongDate=Datum není správné! ErrorFailedToWriteInDir=Nepodařilo se zapsat do adresáře %s +ErrorFailedToBuildArchive=Failed to build archive file %s ErrorFoundBadEmailInFile=Byla nalezena nesprávná syntaxe e-mailu pro řádky %s v souboru (příkladový řádek %s s e-mailem = %s) -ErrorUserCannotBeDelete=Uživatele nelze smazat. Možná je spojen s entitami Dolibarr. +ErrorUserCannotBeDelete=Uživatele nelze smazat. Možná je spojen s entitami Dolibarr. ErrorFieldsRequired=Some required fields have been left blank. ErrorSubjectIsRequired=The email subject is required +ErrorInAddAttachmentsImageBaseOnMedia=Error in creating image files into media directory for attachment +ErrorInAddAttachmentsImageBaseIsSrcData=Error in creating image files (found as data:) into temp directory for attachment ErrorFailedToCreateDir=Nepodařilo se vytvořit adresář. Zkontrolujte, zda má uživatel webového serveru oprávnění zapisovat do adresáře dokumentů Dolibarr. Pokud je v tomto PHP aktivován parametr safe_mode, zkontrolujte, zda jsou soubory Dolibarr php vlastní uživateli (nebo skupinou) webového serveru. ErrorNoMailDefinedForThisUser=Pro tohoto uživatele není definován žádný e-mail ErrorSetupOfEmailsNotComplete=Setup of emails is not complete -ErrorFeatureNeedJavascript=Tato funkce vyžaduje zapnutí javascriptu pro práci. Změňte nastavení v zobrazení nastavení. +ErrorFeatureNeedJavascript=This feature needs JavaScript to be activated to work. Change this in setup - display. ErrorTopMenuMustHaveAParentWithId0=Nabídka typu "Top" nemůže mít nadřazenou nabídku. Vložte 0 do rodičovského menu nebo zvolte nabídku typu "Vlevo". ErrorLeftMenuMustHaveAParentId=Nabídka typu "Left" musí mít nadřazený identifikátor. ErrorFileNotFound=Soubor %s nebyl nalezen (špatná cesta, nesprávná oprávnění nebo přístup odmítnutý parametrem PHP openbasedir nebo safe_mode) ErrorDirNotFound=Adresář %s nebyl nalezen (špatná cesta, nesprávná oprávnění nebo přístup odmítnutý parametrem PHP openbasedir nebo safe_mode) ErrorFunctionNotAvailableInPHP=Funkce %s je nutné pro tuto funkci, ale není k dispozici v této verzi / nastavení PHP. ErrorDirAlreadyExists=Adresář s tímto názvem již existuje. +ErrorDirNotWritable=Directory %s is not writable. ErrorFileAlreadyExists=Soubor s tímto názvem již existuje. ErrorDestinationAlreadyExists=Another file with the name %s already exists. ErrorPartialFile=Soubor nebyl korektně poslán serverem -ErrorNoTmpDir=Dočasný směr %s neexistuje. +ErrorNoTmpDir=Temporary directory %s does not exists. ErrorUploadBlockedByAddon=Nahrávání blokováno pluginem PHP / Apache. ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=Pole %s je příliš dlouhé. @@ -76,32 +82,33 @@ ErrorNoValueForCheckBoxType=Vyplňte prosím hodnotu pro seznam zaškrtávacích ErrorNoValueForRadioType=Vyplňte prosím hodnotu pro radio seznam ErrorBadFormatValueList=Hodnota seznamu nemůže obsahovat více než jednu čárku: %s, ale vyžaduje alespoň jednu: klíč, hodnotu ErrorFieldCanNotContainSpecialCharacters=Pole %s nesmí obsahovat speciální znaky. -ErrorFieldCanNotContainSpecialNorUpperCharacters=Pole %s nesmí obsahovat speciální znaky ani velká písmena a nesmí obsahovat pouze čísla. +ErrorFieldCanNotContainSpecialNorUpperCharacters=The field %s must not contain special characters, nor upper case characters, and must start with an alphabetical character (a-z) ErrorFieldMustHaveXChar=Pole %s musí mít nejméně %s znaků. ErrorNoAccountancyModuleLoaded=Nebyl aktivován žádný účetní modul ErrorExportDuplicateProfil=Toto jméno profilu již existuje pro tuto exportní množinu. ErrorLDAPSetupNotComplete=Dolibarr-LDAP shoda není dokončena. ErrorLDAPMakeManualTest=Soubor .ldif byl vygenerován v adresáři %s. Pokuste se jej z příkazového řádku ručně načíst a získat další informace o chybách. ErrorCantSaveADoneUserWithZeroPercentage=Nelze uložit akci s "stav nebyl spuštěn", pokud je vyplněn také pole "provedeno". -ErrorRefAlreadyExists=Reference %s already exists. ErrorPleaseTypeBankTransactionReportName=Zadejte prosím název výpisu banky, na kterém má být záznam zaznamenán (formát YYYYMM nebo YYYYMMDD) ErrorRecordHasChildren=Záznam se nepodařilo smazat, protože má některé podřízené záznamy. ErrorRecordHasAtLeastOneChildOfType=Object %s has at least one child of type %s ErrorRecordIsUsedCantDelete=Nelze odstranit záznam. Ten se již používá, nebo je zahrnut do jiných objektů. -ErrorModuleRequireJavascript=Javascript nesmí být zakázán, aby tato funkce fungovala. Chcete-li zapnout / vypnout Javascript, přejděte do nabídky Home-> Setup-> Display. +ErrorModuleRequireJavascript=JavaScript must not be disabled to have this feature working. To enable/disable JavaScript, go to menu Home->Setup->Display. 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. +ErrorContactEMail=A technical error occurred. 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=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 +ErrorMultipleRecordFoundFromRef=Several record found when searching from ref %s. No way to know which ID to use. ErrorsOnXLines=nalezeny chyby %s ErrorFileIsInfectedWithAVirus=Antivirový program nebyl schopen ověřit soubor (soubor může být napaden virem) -ErrorSpecialCharNotAllowedForField=Speciální znaky nejsou povoleny pro pole "%s" +ErrorFileIsAnInfectedPDFWithJSInside=The file is a PDF infected by some Javascript inside ErrorNumRefModel=Odkaz obsahuje databázi (%s) a není kompatibilní s tímto pravidlem číslování. Chcete-li tento modul aktivovat, odstraňte záznam nebo přejmenujte odkaz. ErrorQtyTooLowForThisSupplier=Množství příliš nízké pro tohoto prodejce nebo není definovaná cena u tohoto produktu pro tohoto prodejce ErrorOrdersNotCreatedQtyTooLow=Některé objednávky nebyly vytvořeny kvůli příliš malému množství -ErrorModuleSetupNotComplete=Nastavení modulu %s vypadá neúplně. Jděte na Domů - Nastavení - Dokončit moduly +ErrorOrderStatusCantBeSetToDelivered=Order status can't be set to delivered. +ErrorModuleSetupNotComplete=Setup of module %s looks to be incomplete. Go on Home - Setup - Modules to complete. ErrorBadMask=Chyba na masce ErrorBadMaskFailedToLocatePosOfSequence=Chyba, maska bez pořadového čísla ErrorBadMaskBadRazMonth=Chyba, špatná hodnota po resetu @@ -114,7 +121,7 @@ ErrorFailedToSendPassword=Nepodařilo se odeslat heslo ErrorFailedToLoadRSSFile=Nepodařilo se získat RSS kanál. Zkuste přidat neustálé MAIN_SIMPLEXMLLOAD_DEBUG, pokud chybové zprávy neposkytují dostatek informací. ErrorForbidden=Přístup byl odepřen.
Pokoušíte se získat přístup k stránce, oblasti nebo funkci modulu zakázání, aniž byste byli v autentizované relaci nebo která není uživateli povolena. ErrorForbidden2=Povolení pro toto přihlášení může být definováno administrátorem Dolibarr z menu %s-> %s. -ErrorForbidden3=Zdá se, že Dolibarr není používán prostřednictvím autentizované relace. Podívejte se na instalační dokumentaci programu Dolibarr, abyste věděli, jak spravovat ověřování (htaccess, mod_auth nebo jiné ...). +ErrorForbidden3=Zdá se, že Dolibarr není používán prostřednictvím autentizované relace. Podívejte se na instalační dokumentaci programu Dolibarr, abyste věděli, jak spravovat ověřování (htaccess, mod_auth nebo jiné ...). ErrorForbidden4=Note: clear your browser cookies to destroy existing sessions for this login. ErrorNoImagickReadimage=Třída Imagick se v tomto PHP nenachází. Není k dispozici náhled. Administrátoři mohou zakázat tuto kartu v nabídce Nastavení - Zobrazení. ErrorRecordAlreadyExists=Záznam již existuje @@ -129,7 +136,7 @@ ErrorLoginDoesNotExists=Uživatel s přihlášením %s nebyl nalezen. ErrorLoginHasNoEmail=Tento uživatel nemá žádnou e-mailovou adresu. Proces přerušen. ErrorBadValueForCode=Špatná hodnota pro bezpečnostní kód. Zkuste znovu s novou hodnotou ... ErrorBothFieldCantBeNegative=Pole %s a %s nemohou být záporná -ErrorFieldCantBeNegativeOnInvoice=Pole %s nemůže být u tohoto typu faktury záporné. Pokud potřebujete přidat řádek slevy, nejprve vytvořte slevu (z pole „%s“ na kartě subjektu) a přiložte ji na fakturu. +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 third-party card) and apply it to the invoice. ErrorLinesCantBeNegativeForOneVATRate=Celkový počet řádků (bez daně) nemůže být záporný pro danou neplatnou sazbu DPH (Nalezený záporný součet pro sazbu DPH %s %%). ErrorLinesCantBeNegativeOnDeposits=Linky nemohou být v záloze záporné. Pokud tak učiníte, budete čelit problémům, kdy budete muset složit zálohu v konečné faktuře. ErrorQtyForCustomerInvoiceCantBeNegative=Množství řádku do zákaznických faktur nemůže být záporné @@ -148,6 +155,7 @@ ErrorToConnectToMysqlCheckInstance=Připojení k databázi selhalo. Zkontrolujte ErrorFailedToAddContact=Nepodařilo se přidat kontakt ErrorDateMustBeBeforeToday=Datum musí být nižší než dnes ErrorDateMustBeInFuture=Datum musí být delší než dnes +ErrorStartDateGreaterEnd=The start date is greater than the end date ErrorPaymentModeDefinedToWithoutSetup=Platební režim byl nastaven na typ %s, ale nastavení modulu Faktura nebylo dokončeno pro definování informací, které se mají zobrazit v tomto režimu platby. ErrorPHPNeedModule=Chyba, váš PHP musí mít nainstalovaný modul %s pro použití této funkce. ErrorOpenIDSetupNotComplete=Nastavíte konfigurační soubor Dolibarr, abyste povolili ověřování OpenID, ale URL služby OpenID není definována do konstantního %s @@ -164,7 +172,7 @@ ErrorPriceExpression4=Neplatný znak ‚%s‘ ErrorPriceExpression5=Nečekané ‚%s‘ Kdo by to byl řekl ..... ErrorPriceExpression6=Nesprávný počet argumentů (%s uvedeny, %s očekávaný) Argumentujte lépe !!!! ErrorPriceExpression8=Neočekávaný operátor '%s' Držte se při zemi ..... -ErrorPriceExpression9=Došlo k neočekávané chybě. Poklekněte a poručte svou duši bohu .... +ErrorPriceExpression9=An unexpected error occurred ErrorPriceExpression10=Operátor '%s' postrádá operand ErrorPriceExpression11=Očekává "%s" ErrorPriceExpression14=Dělíte nulou!! Bože ..... To si snad fakt děláte srandu ..... @@ -189,6 +197,7 @@ ErrorGlobalVariableUpdater4=SOAP klient selhal s chybou '%s' ErrorGlobalVariableUpdater5=Není vybrána žádná globální proměnná ErrorFieldMustBeANumeric=Pole %s musí být číselná hodnota ErrorMandatoryParametersNotProvided=Povinné paramet(r)y nebyly poskytnuty +ErrorOppStatusRequiredIfUsage=You choose to follow an opportunity in this project, so you must also fill out the Lead status. ErrorOppStatusRequiredIfAmount=Nastavíte odhadovanou částku pro toto vedení. Takže musíte také zadat jeho stav. ErrorFailedToLoadModuleDescriptorForXXX=Nepodařilo se načíst třídu deskriptoru modulu pro %s ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Špatná definice pole nabídek v popisu modulu (špatná hodnota pro klíč fk_menu) @@ -213,8 +222,8 @@ ErrorUserNotAssignedToTask=Uživatel musí být přiřazen k úloze, aby mohl za ErrorTaskAlreadyAssigned=Úkol je již přiřazen uživateli ErrorModuleFileSeemsToHaveAWrongFormat=Balíček modul vypadá, že má chybný formát. ErrorModuleFileSeemsToHaveAWrongFormat2=Do ZIP modulu musí existovat alespoň jeden povinný adresář: %s nebo %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Název balíčku modulu ( %s) neodpovídá očekávané syntaxi název: %s Nemůžete sem cpát všechno, co vás napadne ...... -ErrorDuplicateTrigger=Chyba, duplicitní název spouštěče %s. Je již načten z %s. +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s +ErrorDuplicateTrigger=Chyba, duplicitní název spouštěče %s. Je již načten z %s. ErrorNoWarehouseDefined=Chyba, nejsou definovány žádné sklady. Z luftu produkt nepřidáte ..... ErrorBadLinkSourceSetButBadValueForRef=Odkaz, který používáte, není platný. Je definován "zdroj" pro platbu, ale hodnota pro "ref" není platná. ErrorTooManyErrorsProcessStopped=Příliš mnoho chyb. Proces byl zastaven. Soustřeďte se a zhluboka dýchejte ..... @@ -237,11 +246,12 @@ ErrorURLMustStartWithHttp=Adresa URL %s musí začínat http: // nebo https: // ErrorHostMustNotStartWithHttp=Host name %s must NOT start with http:// or https:// ErrorNewRefIsAlreadyUsed=Chyba, nový odkaz je již použit ErrorDeletePaymentLinkedToAClosedInvoiceNotPossible=Chyba, odstranění platby spojené s uzavřenou fakturou není možné. -ErrorSearchCriteriaTooSmall=Vyhledávací kritéria jsou příliš malá. +ErrorSearchCriteriaTooSmall=Search criteria too short. ErrorObjectMustHaveStatusActiveToBeDisabled=Objekty musí mít stav „Aktivní“, aby mohly být deaktivovány ErrorObjectMustHaveStatusDraftOrDisabledToBeActivated=Aby mohly být objekty povoleny, musí mít stav 'Koncept' nebo 'Zakázáno' ErrorNoFieldWithAttributeShowoncombobox=Žádná pole nemají vlastnost 'showoncombobox' do definice objektu '%s'. Žádný způsob, jak ukázat combolist ErrorFieldRequiredForProduct=Pole „%s“ je povinné pro produkt %s +AlreadyTooMuchPostOnThisIPAdress=You have already posted too much on this IP address. ProblemIsInSetupOfTerminal=Problém je v nastavení terminálu %s. ErrorAddAtLeastOneLineFirst=Nejprve přidejte alespoň jeden řádek ErrorRecordAlreadyInAccountingDeletionNotPossible=Chyba, záznam je již v účetnictví přenesen, vymazání není možné. @@ -255,10 +265,11 @@ ErrorReplaceStringEmpty=Chyba, řetězec, který chcete nahradit, je prázdný 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 +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 +ErrorFilenameReserved=The filename %s can't be used as it is a reserved and protected command. ErrorNotAvailableWithThisDistribution=Not available with this distribution ErrorPublicInterfaceNotEnabled=Veřejné rozhraní nebylo povoleno ErrorLanguageRequiredIfPageIsTranslationOfAnother=The language of new page must be defined if it is set as a translation of another page @@ -277,8 +288,8 @@ 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 +ErrorBadCharIntoLoginName=Unauthorized character in the field %s +ErrorRequestTooLarge=Error, request too large or session expired 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 @@ -291,7 +302,44 @@ 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 third party from id=%s, email=%s, name=%s +ErrorThisPaymentModeIsNotDirectDebit=The payment mode is not direct debit +ErrorThisPaymentModeIsNotCreditTransfer=The payment mode is not credit transfer +ErrorStripeCustomerNotFoundCreateFirst=Stripe customer is not set for this third party (or set to a value deleted on Stripe side). Create (or re-attach) it first. +ErrorCharPlusNotSupportedByImapForSearch=IMAP search is not able to search into sender or recipient for a string containing the character + +ErrorTableNotFound=Table %s not found +ErrorRefNotFound=Ref %s not found +ErrorValueForTooLow=Value for %s is too low +ErrorValueCantBeNull=Value for %s can't be null +ErrorDateOfMovementLowerThanDateOfFileTransmission=The date of the bank transaction can't be lower than the date of the file transmission +ErrorTooMuchFileInForm=Too much files in form, the maximum number is %s file(s) +ErrorSessionInvalidatedAfterPasswordChange=The session was been invalidated following a change of password, email, status or dates of validity. Please relogin. +ErrorExistingPermission = Permission %s for object %s already exists +ErrorFieldExist=The value for %s already exist +ErrorEqualModule=Module invalid in %s +ErrorFieldValue=Value for %s is incorrect +ErrorCoherenceMenu=%s is required when %s is 'left' +ErrorUploadFileDragDrop=There was an error while the file(s) upload +ErrorUploadFileDragDropPermissionDenied=There was an error while the file(s) upload : Permission denied +ErrorFixThisHere=Fix this here +ErrorTheUrlOfYourDolInstanceDoesNotMatchURLIntoOAuthSetup=Error: The URL of you current instance (%s) does not match the URL defined into your OAuth2 login setup (%s). Doing OAuth2 login in such a configuration is not allowed. +ErrorMenuExistValue=A Menu already exist with this Title or URL +ErrorSVGFilesNotAllowedAsLinksWithout=SVG files are not allowed as external links without the option %s +ErrorTypeMenu=Impossible to add another menu for the same module on the navbar, not handled yet +ErrorGeneratingBarcode=Error while generating the barcode (probably invalid code shape) +ErrorObjectNotFound = The object %s is not found, please check your url +ErrorCountryCodeMustBe2Char=Country code must be a 2 character string +ErrorABatchShouldNotContainsSpaces=A lot or serial number should not contains spaces +ErrorTableExist=Table %s already exist +ErrorDictionaryNotFound=Dictionary %s not found +ErrorFailedToCreateSymLinkToMedias=Failed to create the symbolic link %s to point to %s +ErrorCheckTheCommandInsideTheAdvancedOptions=Check the command used for the export into the Advanced options of the export +ErrorEndTimeMustBeGreaterThanStartTime=End time must be greater than start time +ErrorIncoherentDates=Start date must be earlier than end date +ErrorEndHourIsNull=End date field cannot be empty +ErrorStartHourIsNull=Start date field cannot be empty +ErrorTooManyLinesToProcessPleaseUseAMoreSelectiveFilter=Too many lines to process. Please use a more selective filter. +ErrorEmptyValueForQty=Quantity cannot be zero. # 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. @@ -304,7 +352,8 @@ WarningConfFileMustBeReadOnly=Upozorňujeme, že váš konfigurační soubor (%s zdrojovém záznamu(y) WarningNoDocumentModelActivated=Pro generování dokumentů nebyl aktivován žádný model. Model bude ve výchozím nastavení vybrán, dokud nezkontrolujete nastavení modulu. WarningLockFileDoesNotExists=Po dokončení instalace musíte zakázat instalační / migrační nástroje přidáním souboru install.lock do adresáře %s. Vynechání vytvoření tohoto souboru je závažným bezpečnostním rizikem. -WarningUntilDirRemoved=Všechna bezpečnostní varování (viditelná pouze uživateli administrátora) zůstanou aktivní, pokud je přítomna chyba zabezpečení (nebo je v programu Setup-> Další nastavení přidána konstanta MAIN_REMOVE_INSTALL_WARNING). +WarningUpgradeHasBeenUnlocked=Warning, upgrade process has been unlocked for everybody +WarningUntilDirRemoved=This security warning will remain active as long as the vulnerability is present. WarningCloseAlways=Varování, uzavření se provádí i v případě, že se hodnota mezi zdrojovým a cílovým prvkem liší. Povolte tuto funkci opatrně. WarningUsingThisBoxSlowDown=Varování, použití tohoto pole zpomaluje vážně všechny stránky zobrazující políčko. WarningClickToDialUserSetupNotComplete=Nastavení informací ClickToDial pro vašeho uživatele není kompletní (viz kartu ClickToDial na vaší uživatelské kartě). @@ -313,6 +362,7 @@ WarningPaymentDateLowerThanInvoiceDate=Datum platby (%s) je starší než data v WarningTooManyDataPleaseUseMoreFilters=Příliš mnoho dat (více než řádky %s). Použijte prosím více filtrů nebo nastavte konstantní %s na vyšší limit. Kdo to má pořád zpracovávat !!!! WarningSomeLinesWithNullHourlyRate=Někdy byli zaznamenáni někteří uživatelé, zatímco jejich hodinová sazba nebyla definována. Byla použita hodnota 0 %s za hodinu, což však může způsobit nesprávné ocenění času zde stráveného. S tou virtualizací to moc nepřehánějte ... WarningYourLoginWasModifiedPleaseLogin=Vaše přihlašovací údaje byly změněny. Z bezpečnostních důvodů se budete muset před dalším přístupem přihlásit pomocí nových přihlašovacích údajů. +WarningYourPasswordWasModifiedPleaseLogin=Your password was modified. For security purpose you will have to login now with your new password. WarningAnEntryAlreadyExistForTransKey=Položka již existuje pro překladatelské klíč pro tento jazyk WarningNumberOfRecipientIsRestrictedInMassAction=Upozornění: počet různých příjemců je omezen na %s při použití hromadných akcí v seznamech WarningDateOfLineMustBeInExpenseReportRange=Upozornění: datum řádku není v rozsahu výkazu výdajů @@ -326,7 +376,24 @@ 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. +WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=Automatic validation is disabled when option to decrease stock is set on "Invoice validation". +WarningModuleNeedRefresh = Module %s has been disabled. Don't forget to enable it +WarningPermissionAlreadyExist=Existing permissions for this object +WarningGoOnAccountancySetupToAddAccounts=If this list is empty, go into menu %s - %s - %s to load or create accounts for your chart of account. +WarningCorrectedInvoiceNotFound=Corrected invoice not found +WarningCommentNotFound=Warning: Can't find the start and/or end comments for the section %s into the file %s +WarningAlreadyReverse=Stock movement already reversed +WarningParentIDDoesNotExistAnymore=This parent ID does not exists anymore +WarningReadBankAlsoAllowedIfUserHasPermission=Warning, reading bank account is also allowed with the permission to Manage chart of account +WarningNoDataTransferedInAccountancyYet=Please note, there is no data in the accounting table. Please transfer your data recorded in the application to the accounting section or change the calculation mode to analyze the data recorded outside of accounting. +WarningChangingThisMayBreakStopTaskScheduler=Warning, changing this value may disable the scheduler +SwissQrOnlyVIR = SwissQR invoice can only be added on invoices set to be paid with credit transfer payments. +SwissQrCreditorAddressInvalid = Creditor address is invalid (are ZIP and city set? (%s) +SwissQrCreditorInformationInvalid = Creditor information is invalid for IBAN (%s): %s +SwissQrIbanNotImplementedYet = QR-IBAN not implemented yet +SwissQrPaymentInformationInvalid = Payment information was invalid for total %s : %s +SwissQrDebitorAddressInvalid = Debitor information was invalid (%s) # Validate RequireValidValue = Value not valid RequireAtLeastXString = Requires at least %s character(s) @@ -347,3 +414,12 @@ 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 +ErrorTooManyAttempts= Too many attempts, please try again later +TotalAmountEmpty=Total Amount Empty +FailedToFoundTheConversionRateForInvoice=Failed to found the conversion rate for invoice +ThisIdNotDefined=Id not defined +OperNotDefined=Payment method not defined +ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. +ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. +EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/cs_CZ/stripe.lang b/htdocs/langs/cs_CZ/stripe.lang index 7c2cb64cd34..6e91421074f 100644 --- a/htdocs/langs/cs_CZ/stripe.lang +++ b/htdocs/langs/cs_CZ/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL, která nabízí online platební ToOfferALinkForOnlinePaymentOnFreeAmount=URL, která nabízí online platební stránku %s jakékoli částky bez existujícího objektu ToOfferALinkForOnlinePaymentOnMemberSubscription=URL, která nabízí online platební stránku %s pro předplatné člena ToOfferALinkForOnlinePaymentOnDonation=URL, která nabízí online platební stránku %s pro výplatu daru -YouCanAddTagOnUrl=Můžete také přidat parametr url & tag = do kterékoli z těchto adres URL (povinné pouze pro platby, které nejsou propojeny s objektem), a přidat vlastní značku platebních komentářů.
Pro URL plateb bez existujícího objektu můžete také přidat parametr & noidempotency = 1 , takže stejný odkaz se stejnou značkou může být použit několikrát (některý platební režim může omezit platbu na 1 pro každý jiný odkaz bez tohoto parametr) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Nastavte Stripe pomocí url %s , aby se platba automaticky vytvořila při ověření Stripe. AccountParameter=Parametry účtu UsageParameter=Použité parametry @@ -41,7 +42,7 @@ STRIPE_LIVE_WEBHOOK_KEY=Webhook live klíč ONLINE_PAYMENT_WAREHOUSE=Sklad, který se má použít k poklesu akcií, když je hotovo on-line platba
(TODO Pokud se volba k poklesu zásob uskuteční na akci na faktuře a on-line platba vygeneruje fakturu?) StripeLiveEnabled=Stripe live povoleno (jinak testovací režim / režim sandbox) StripeImportPayment=Platby importu Stripe -ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails +ExampleOfTestCreditCard=Example of credit card for a test payment: %s => valid, %s => error CVC, %s => expired, %s => charge fails ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s StripeGateways=Brána Stripe OAUTH_STRIPE_TEST_ID=Připojení klienta Stripe Connect (ca _...) @@ -51,6 +52,7 @@ StripeAccount=Stripe účet StripeChargeList=Seznam Stripe poplatků StripeTransactionList=Seznam transakcí Stripe StripeCustomerId=Stripe ID zákazníka +StripePaymentId=Stripe payment id StripePaymentModes=Stripe režimy platby LocalID=Místní identifikační číslo StripeID=ID Stripe @@ -70,9 +72,19 @@ ToOfferALinkForTestWebhook=Odkaz na nastavení Stripe WebHook pro volání IPN ( ToOfferALinkForLiveWebhook=Odkaz na nastavení Stripe WebHook pro volání IPN (provozní režim) PaymentWillBeRecordedForNextPeriod=Platba bude zaznamenána pro další období. ClickHereToTryAgain= Klikněte zde a zkuste to znovu ... -CreationOfPaymentModeMustBeDoneFromStripeInterface=Vzhledem k přísným pravidlům pro ověřování zákazníků musí být karta vytvořena z backoffice Stripe. Klepnutím sem zapnete záznam zákazníka Stripe: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe back office. You can click here to switch on Stripe customer record: %s STRIPE_CARD_PRESENT=Card Present for Stripe Terminals TERMINAL_LOCATION=Location (address) for Stripe Terminals RequestDirectDebitWithStripe=Request Direct Debit with Stripe +RequesCreditTransferWithStripe=Request Credit Transfer with Stripe STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe - +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT +StripeConnect_Mode=Stripe Connect mode +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/cy_GB/admin.lang b/htdocs/langs/cy_GB/admin.lang index dc5a7f33cdb..fd7883994e6 100644 --- a/htdocs/langs/cy_GB/admin.lang +++ b/htdocs/langs/cy_GB/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Rhaid Rhestr o werthoedd yn llinellau gyda fformat all ExtrafieldParamHelpcheckbox=Rhaid i'r rhestr o werthoedd fod yn linellau gydag allwedd fformat, gwerth (lle na all yr allwedd fod yn '0')

er enghraifft:
1,value1
2,value2 a0393bzfc a039342fc a03426fc ExtrafieldParamHelpradio=Rhaid i'r rhestr o werthoedd fod yn linellau gydag allwedd fformat, gwerth (lle na all yr allwedd fod yn '0')

er enghraifft:
1,value1
2,value2 a0393bzfc a039342fc a03426fc 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Rhaid i baramedrau fod yn Enw Gwrthrych:Classpath
Cystrawen: Enw Gwrthrych:Llwybr Dosbarth ExtrafieldParamHelpSeparator=Cadwch yn wag ar gyfer gwahanydd syml
Gosodwch hwn i 1 ar gyfer gwahanydd sy'n cwympo (ar agor yn ddiofyn ar gyfer sesiwn newydd, yna cedwir statws ar gyfer pob sesiwn defnyddiwr)
Gosodwch hwn i 2 ar gyfer gwahanydd sy'n cwympo (wedi cwympo yn ddiofyn ar gyfer sesiwn newydd, yna statws yn cael ei gadw ar gyfer pob sesiwn defnyddiwr) LibraryToBuildPDF=Llyfrgell a ddefnyddir ar gyfer cynhyrchu PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s ac yna enw'r cwsmer cwtogi yn ôl nifer y ModuleCompanyCodeSupplierDigitaria=%s ac yna enw'r cyflenwr cwtogi yn ôl nifer y nodau: %s ar gyfer cod cyfrifyddu'r cyflenwr. Use3StepsApproval=Yn ddiofyn, mae angen i Archebion Prynu gael eu creu a'u cymeradwyo gan 2 ddefnyddiwr gwahanol (un cam/defnyddiwr i'w greu ac un cam/defnyddiwr i'w gymeradwyo. Sylwch os oes gan y defnyddiwr ganiatâd i greu a chymeradwyo, bydd un cam/defnyddiwr yn ddigon) . Gallwch ofyn gyda'r opsiwn hwn i gyflwyno trydydd cam/cymeradwyaeth defnyddiwr, os yw'r swm yn uwch na'r gwerth penodol (felly bydd angen 3 cham: 1 = dilysu, 2 = cymeradwyaeth gyntaf a 3 = ail gymeradwyaeth os yw'r swm yn ddigon).
Gosodwch hwn i wag os yw un gymeradwyaeth (2 gam) yn ddigon, gosodwch ef i werth isel iawn (0.1) os oes angen ail gymeradwyaeth (3 cham) bob amser. UseDoubleApproval=Defnyddiwch gymeradwyaeth 3 cham pan fydd y swm (heb dreth) yn uwch na... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Nid yw rhai Darparwyr Gwasanaeth E-bost (fel Yahoo) yn caniatáu ichi anfon e-bost o weinydd arall yn hytrach na'u gweinydd eu hunain. Mae eich gosodiad presennol yn defnyddio gweinydd y rhaglen i anfon e-bost ac nid gweinydd eich darparwr e-bost, felly bydd rhai derbynwyr (yr un sy'n gydnaws â'r protocol DMARC cyfyngol), yn gofyn i'ch darparwr e-bost a allant dderbyn eich e-bost a rhai darparwyr e-bost Efallai y bydd (fel Yahoo) yn ymateb "na" oherwydd nad yw'r gweinydd yn perthyn iddynt, felly mae'n bosibl na fydd ychydig o'r E-byst a anfonwyd gennych yn cael eu derbyn i'w hanfon (byddwch yn ofalus hefyd o gwota anfon eich darparwr e-bost). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Mae defnyddio gweinydd SMTP eich Darparwr Gwasanaeth E-bost eich hun i anfon e-byst hefyd yn ddiddorol felly bydd yr holl negeseuon e-bost a anfonir o'r cais hefyd yn cael eu cadw yn eich cyfeiriadur "Anfonwyd" o'ch blwch post. WarningPHPMailD=Argymhellir felly newid y dull anfon e-byst i'r gwerth "SMTP". WarningPHPMailDbis=Os ydych chi wir eisiau cadw'r dull "PHP" rhagosodedig i anfon e-byst, anwybyddwch y rhybudd hwn, neu ei ddileu trwy %s clicio yma%s. 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=Wedi canfod cofnod SPF gwirioneddol (ar gyfer e-bost %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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) @@ -867,7 +868,7 @@ Permission255=Addasu cyfrinair defnyddwyr eraill Permission256=Dileu neu analluogi defnyddwyr eraill Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Ymestyn mynediad i bob trydydd parti HEB eu hamcanion (nid dim ond trydydd parti y mae'r defnyddiwr yn gynrychiolydd gwerthu ar eu cyfer).
Ddim yn effeithiol ar gyfer defnyddwyr allanol (bob amser yn gyfyngedig iddynt hwy eu hunain ar gyfer cynigion, archebion, anfonebau, contractau, ac ati).
Ddim yn effeithiol ar gyfer prosiectau (dim ond rheolau ar ganiatadau prosiect, gwelededd a materion aseiniad). Permission271=Darllenwch CA Permission272=Darllen anfonebau @@ -944,7 +945,7 @@ Permission776=Adroddiadau costau talu Permission777=Darllenwch yr holl adroddiadau treuliau (hyd yn oed adroddiadau defnyddwyr nid is-weithwyr) Permission778=Creu/addasu adroddiadau treuliau pawb Permission779=Adroddiadau costau allforio -Permission1001=Darllenwch stociau +Permission1001=Read warehouses and stocks Permission1002=Creu/addasu warysau Permission1003=Dileu warysau Permission1004=Darllenwch symudiadau stoc @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Hidlydd Regex i lanhau gwerth (COMPANY_DIGITARIA_C DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Glanhewch rai geiriau wrth gynhyrchu isgyfrifon ar gyfer cwsmeriaid neu gyflenwyr RemoveSpecialWordsHelp=Nodwch y geiriau i'w glanhau cyn cyfrifo'r cyfrif cwsmer neu gyflenwr. Defnyddiwch ";" rhwng pob gair -GDPRContact=Swyddog Diogelu Data (DPO, Data Preifatrwydd neu gyswllt GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Os ydych yn storio data personol yn eich System Wybodaeth, gallwch enwi’r cyswllt sy’n gyfrifol am y Rheoliad Diogelu Data Cyffredinol yma HelpOnTooltip=Testun cymorth i'w ddangos ar y cyngor HelpOnTooltipDesc=Rhowch destun neu allwedd cyfieithu yma er mwyn i'r testun ddangos mewn cyngor pan fydd y maes hwn yn ymddangos ar ffurf @@ -2218,7 +2219,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 peth data neu osod gwerthoedd i'w defnyddio ar gyfer gweithrediad.

Enghraifft echdynnu enw cwmni o e-bost yn destun newidyn dros dro:
tmp_var=EXTRACT:TESTUN:Neges gan y cwmni ([^\n]*)

Enghreifftiau i osod priodweddau gwrthrych i'w greu:
objproperty1=SET: gwerth cod caled
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:gwerth (gwerth wedi'i osod dim ond os nad yw'r priodwedd wedi'i ddiffinio'n barod)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:TESTUN:([^\n]*)
object.objproperty5=EXTRACT:CORFF:Enw fy nghwmni yw\\ s([^\\s]*)

Defnyddiwch linell newydd i echdynnu neu osod sawl priodwedd. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Oriau agor OpeningHoursDesc=Nodwch yma oriau agor arferol eich cwmni. ResourceSetup=Ffurfweddu modiwl Adnodd @@ -2264,7 +2265,7 @@ LargerThan=Mwy na IfTrackingIDFoundEventWillBeLinked=Sylwch, Os canfyddir ID olrhain gwrthrych mewn e-bost, neu os yw'r e-bost yn ateb e-bost a gasglwyd eisoes ac yn gysylltiedig â gwrthrych, bydd y digwyddiad a grëwyd yn cael ei gysylltu'n awtomatig â'r gwrthrych cysylltiedig hysbys. WithGMailYouCanCreateADedicatedPassword=Gyda chyfrif GMail, os gwnaethoch alluogi'r dilysiad 2 gam, argymhellir creu ail gyfrinair pwrpasol ar gyfer y cais yn lle defnyddio cyfrinair eich cyfrif eich hun o https://myaccount.google.com/. EmailCollectorTargetDir=Gall fod yn ymddygiad dymunol symud yr e-bost i dag/cyfeiriadur arall pan gafodd ei brosesu'n llwyddiannus. Gosodwch enw'r cyfeiriadur yma i ddefnyddio'r nodwedd hon (PEIDIWCH â defnyddio nodau arbennig mewn enw). Sylwch fod yn rhaid i chi hefyd ddefnyddio cyfrif mewngofnodi darllen/ysgrifennu. -EmailCollectorLoadThirdPartyHelp=Gallwch ddefnyddio'r weithred hon i ddefnyddio'r cynnwys e-bost i ddod o hyd i drydydd parti presennol a'i lwytho yn eich cronfa ddata (bydd chwiliad yn cael ei wneud ar yr eiddo diffiniedig ymhlith 'id', 'name', 'name_alias', 'email'). Defnyddir y trydydd parti a ganfuwyd (neu a grëwyd) ar gyfer y gweithredoedd canlynol sydd eu hangen.
Er enghraifft, os ydych am greu trydydd parti gydag enw wedi'i dynnu o linyn ' Enw: enw i'w ddarganfod' yn bresennol yn y corff, defnyddiwch e-bost yr anfonwr fel e-bost, gallwch osod y maes paramedr fel hyn:
'email=HEADER:^From:(. *); enw=DYFYNIAD:CORFF:Enw:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Warning: a lot of email servers (like Gmail) are doing full word searches when searching on a string and will not return a result if the string is only found partially into a word. For this reason too, use special characters into a search criteria will be ignored are they are not part of existing words.
To make an exclude search on a word (return email if word is not found), you can use the ! character before the word (may not work on some mail servers). EndPointFor=Pwynt gorffen ar gyfer %s : %s DeleteEmailCollector=Dileu casglwr e-bost @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Enw trydydd parti - Enw arall trydydd parti ALIAS_THIRDPARTY=Alias trydydd parti - Enw trydydd parti PDFIn2Languages=Dangos labeli yn y PDF mewn 2 iaith wahanol (efallai na fydd y nodwedd hon yn gweithio ar gyfer rhai ieithoedd neu ddwy) 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=Cynhyrchu dogfennau PDF gyda fformat PDF/A yn lle fformat PDF rhagosodedig +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Rhowch god eicon FontAwesome yma. Os nad ydych chi'n gwybod beth yw FontAwesome, gallwch ddefnyddio'r llyfr cyfeiriadau gwerth generig. RssNote=Nodyn: Mae pob diffiniad porthiant RSS yn darparu teclyn y mae'n rhaid i chi ei alluogi i'w gael ar y dangosfwrdd JumpToBoxes=Neidio i Gosod -> Widgets @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/cy_GB/datapolicy.lang b/htdocs/langs/cy_GB/datapolicy.lang index aad90c75e2f..7e0d0dab55d 100644 --- a/htdocs/langs/cy_GB/datapolicy.lang +++ b/htdocs/langs/cy_GB/datapolicy.lang @@ -4,89 +4,48 @@ # 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 . # Module label 'ModuledatapolicyName' -Module4100Name = Data Privacy Policy +Module4100Name = Polisi Preifatrwydd Data # Module description 'ModuledatapolicyDesc' -Module4100Desc = Module to manage Data Privacy (Conformity with the GDPR) - -# +Module4100Desc = Modiwl i reoli Preifatrwydd Data (Cydymffurfiaeth â'r GDPR) # Administration page -# -datapolicySetup = Module Data Privacy Policy Setup -Deletion = Deletion of data -datapolicySetupPage = Depending of laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding that necessary for the purposes for which they were collected, except for archival purposes.
The deletion will be done automatically after a certain duration without event (the duration which you will have indicated below). -NB_MONTHS = %s months -ONE_YEAR = 1 year -NB_YEARS = %s years -DATAPOLICY_TIERS_CLIENT = Customer -DATAPOLICY_TIERS_PROSPECT = Prospect -DATAPOLICY_TIERS_PROSPECT_CLIENT = Prospect/Customer -DATAPOLICY_TIERS_NIPROSPECT_NICLIENT = Nor prospect/Nor customer -DATAPOLICY_TIERS_FOURNISSEUR = Supplier -DATAPOLICY_CONTACT_CLIENT = Customer -DATAPOLICY_CONTACT_PROSPECT = Prospect -DATAPOLICY_CONTACT_PROSPECT_CLIENT = Prospect/Customer -DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Nor prospect/Nor customer -DATAPOLICY_CONTACT_FOURNISSEUR = Supplier -DATAPOLICY_ADHERENT = Member -DATAPOLICY_Tooltip_SETUP = Type of contact - Indicate your choices for each type. -DATAPOLICYMail = Emails Setup -DATAPOLICYSUBJECTMAIL = Subject of email -DATAPOLICYCONTENTMAIL = Content of the email -DATAPOLICYSUBSITUTION = You can use the following variables in your email (LINKACCEPT allows to create a link recording the agreement of the person, LINKREFUSED makes it possible to record the refusal of the person): -DATAPOLICYACCEPT = Message after agreement -DATAPOLICYREFUSE = Message after desagreement -SendAgreementText = You can send a GDPR email to all your relevant contacts (who have not yet received an email and for which you have not registered anything about their GDPR agreement). To do this, use the following button. -SendAgreement = Send emails -AllAgreementSend = All emails have been sent -TXTLINKDATAPOLICYACCEPT = Text for the link "agreement" -TXTLINKDATAPOLICYREFUSE = Text for the link "desagreement" - - -# +datapolicySetup = Gosod Polisi Preifatrwydd Data Modiwl +Deletion = Dileu data +datapolicySetupPage = Yn dibynnu ar gyfreithiau eich gwledydd (Enghraifft Erthygl 5 o'r GDPR), rhaid cadw data personol am gyfnod heb fod yn hwy na'r hyd y mae angen y data at y diben y'i casglwyd ar ei gyfer, ac eithrio at ddibenion archifol.
Bydd y dilead yn cael ei wneud yn awtomatig ar ôl cyfnod penodol heb ddigwyddiadau (yr hyd y byddwch wedi'i nodi isod). +NB_MONTHS = %s mis +ONE_YEAR = 1 flwyddyn +NB_YEARS = %s mlynedd +DATAPOLICY_TIERS_CLIENT = Cwsmer +DATAPOLICY_TIERS_PROSPECT = Rhagolwg +DATAPOLICY_TIERS_PROSPECT_CLIENT = Rhagolygon/Cwsmer +DATAPOLICY_TIERS_NIPROSPECT_NICLIENT = Na gobaith/Na chwsmer +DATAPOLICY_TIERS_FOURNISSEUR = Cyflenwr +DATAPOLICY_CONTACT_CLIENT = Cwsmer +DATAPOLICY_CONTACT_PROSPECT = Rhagolygon +DATAPOLICY_CONTACT_PROSPECT_CLIENT = Rhagolygon/Cwsmer +DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Na gobaith/Na chwsmer +DATAPOLICY_CONTACT_FOURNISSEUR = Cyflenwr +DATAPOLICY_ADHERENT = Aelod +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. +SendAgreementText = Gallwch anfon e-bost GDPR at eich holl gysylltiadau perthnasol (nad ydynt wedi derbyn e-bost eto ac nad ydych wedi cofrestru unrhyw beth am eu cytundeb GDPR ar ei gyfer). I wneud hyn, defnyddiwch y botwm canlynol. +SendAgreement = Anfon e-byst +AllAgreementSend = Mae pob e-bost wedi'i anfon +TXTLINKDATAPOLICYACCEPT = Testun ar gyfer y ddolen "cytundeb" +TXTLINKDATAPOLICYREFUSE = Testun ar gyfer y ddolen "anghytundeb" # Extrafields -# -DATAPOLICY_BLOCKCHECKBOX = GDPR : Processing of personal data -DATAPOLICY_consentement = Consent obtained for the processing of personal data -DATAPOLICY_opposition_traitement = Opposes the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonymize a thirdparty -DATAPOLICY_POPUP_ANONYME_TEXTE = You can not delete this contact from Dolibarr because there are related items. In accordance with the GDPR, you will make all this data anonymous to respect your obligations. Would you like to continue ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Portability GDPR -DATAPOLICY_PORTABILITE_TITLE = Export of personal data -DATAPOLICY_PORTABILITE_CONFIRMATION = You want to export the personal data of this contact. Are you sure ? - -# +DATAPOLICY_BLOCKCHECKBOX = GDPR : Prosesu data personol +DATAPOLICY_consentement = Cafwyd caniatâd i brosesu data personol +DATAPOLICY_opposition_traitement = Yn gwrthwynebu prosesu ei ddata personol +DATAPOLICY_opposition_prospection = Yn gwrthwynebu prosesu ei ddata personol at ddibenion chwilota # Notes added during an anonymization -# -ANONYMISER_AT = Anonymised the %s - -# V2 -DATAPOLICYReturn = GDPR Validation -DATAPOLICY_date = Date of agreement/desagreement GDPR -DATAPOLICY_send = Date sending agreement email -DATAPOLICYReturn = GDPR Validation -DATAPOLICY_SEND = Send GDPR email -MailSent = Email has been sent - -# ERROR -ErrorSubjectIsRequired = Error : The subject of email is required. Indicate it in the module setup -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to send us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of month before deletion +DATAPOLICY_date = Dyddiad y cytundeb/anghytundeb GDPR +DATAPOLICY_send = Dyddiad anfon e-bost cytundeb +MailSent = E-bost wedi ei anfon +NUMBER_MONTH_BEFORE_DELETION = Nifer y misoedd cyn dileu diff --git a/htdocs/langs/cy_GB/dict.lang b/htdocs/langs/cy_GB/dict.lang index 7899ac55c7f..172504c7296 100644 --- a/htdocs/langs/cy_GB/dict.lang +++ b/htdocs/langs/cy_GB/dict.lang @@ -158,7 +158,7 @@ CountryMX=Mecsico CountryFM=Micronesia CountryMD=Moldofa CountryMN=Mongolia -CountryMS=Monserrat +CountryMS=Montserrat CountryMZ=Mozambique CountryMM=Myanmar (Burma) CountryNA=Namibia @@ -233,7 +233,7 @@ CountryUY=Uruguay CountryUZ=Wsbecistan CountryVU=Vanuatu CountryVE=Feneswela -CountryVN=Fiet-nam +CountryVN=Fietnam CountryVG=Ynysoedd y Wyryf, Prydeinig CountryVI=Ynysoedd y Wyryf, U.S. CountryWF=Wallis a Futuna @@ -247,7 +247,7 @@ CountryJE=Jersey CountryME=Montenegro CountryBL=Sant Barthelemi CountryMF=Sant Martin -CountryXK=Kosovo +CountryXK=Cosofo ##### Civilities ##### CivilityMME=Mrs. @@ -295,8 +295,8 @@ CurrencyXPF=Ffranc CFP CurrencySingXPF=CFP Ffranc CurrencyCentEUR=cents CurrencyCentSingEUR=cant -CurrencyCentINR=paisa -CurrencyCentSingINR=pais +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=milfed #### Input reasons ##### DemandReasonTypeSRC_INTE=Rhyngrwyd diff --git a/htdocs/langs/cy_GB/errors.lang b/htdocs/langs/cy_GB/errors.lang index e5046b325f0..102f29614de 100644 --- a/htdocs/langs/cy_GB/errors.lang +++ b/htdocs/langs/cy_GB/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Rhaid neilltuo defnyddiwr i'r dasg i allu nodi'r amse ErrorTaskAlreadyAssigned=Tasg eisoes wedi'i neilltuo i'r defnyddiwr ErrorModuleFileSeemsToHaveAWrongFormat=Mae'n ymddangos bod gan y pecyn modiwl fformat anghywir. ErrorModuleFileSeemsToHaveAWrongFormat2=Rhaid bod o leiaf un cyfeiriadur gorfodol yn sip y modiwl: %s neu %s a0a65fz01 -ErrorFilenameDosNotMatchDolibarrPackageRules=Nid yw enw'r pecyn modiwl ( %s ) yn cyd-fynd â chystrawen yr enw disgwyliedig: %s a0765d9 +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Gwall, dyblyg enw sbardun %s. Eisoes wedi'i lwytho o %s. ErrorNoWarehouseDefined=Gwall, dim warysau wedi'u diffinio. ErrorBadLinkSourceSetButBadValueForRef=Nid yw'r ddolen a ddefnyddiwch yn ddilys. Diffinnir 'ffynhonnell' ar gyfer taliad, ond nid yw gwerth 'cyf' yn ddilys. @@ -422,3 +422,4 @@ OperNotDefined=Dull talu heb ei ddiffinio ErrorThisContactXIsAlreadyDefinedAsThisType=Mae %s eisoes wedi'i ddiffinio fel cyswllt ar gyfer y math hwn. ErrorThisGroupIsAlreadyDefinedAsThisType=Mae'r cysylltiadau â'r grŵp hwn eisoes wedi'u diffinio fel cyswllt ar gyfer y math hwn. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/cy_GB/mails.lang b/htdocs/langs/cy_GB/mails.lang index dd8658e8e3b..11cff63453d 100644 --- a/htdocs/langs/cy_GB/mails.lang +++ b/htdocs/langs/cy_GB/mails.lang @@ -32,6 +32,8 @@ NewMailing=E-bostio newydd NewSMSing=Sms newydd EditMailing=Golygu e-byst ResetMailing=Ail-anfon e-bost +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Dileu e-bostio PreviewMailing=Rhagolwg o'r e-bostio CreateMailing=Creu e-bostio @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Derbynnydd e-bost yn wag WarningNoEMailsAdded=Dim e-bost newydd i'w ychwanegu at restr y derbynwyr. ConfirmValidMailing=Ydych chi'n siŵr eich bod am ddilysu'r e-bost hwn? ConfirmResetMailing=Rhybudd, trwy ail-gychwyn e-bostio %s , byddwch yn caniatáu ail-anfon yr e-bost hwn mewn swmp-bost. Ydych chi'n siŵr eich bod am wneud hyn? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Ydych chi'n siŵr eich bod am ddileu'r e-bost hwn? NbOfUniqueEMails=Nifer yr e-byst unigryw NbOfUniquePhones=Nifer y ffonau unigryw @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Dim mwy o dderbynnydd i anfon yr e-bost ato EmailOptedOut=Mae perchennog yr e-bost wedi gofyn i beidio â chysylltu ag ef gyda'r e-bost hwn mwyach EvenUnsubscribe=Cynnwys e-byst optio allan EvenUnsubscribeDesc=Cynhwyswch e-byst optio allan pan fyddwch yn dewis e-byst fel targedau. Yn ddefnyddiol ar gyfer e-byst gwasanaeth gorfodol er enghraifft. -XEmailsDoneYActionsDone=%s e-byst wedi'u rhag-gymhwyso, e-byst %s wedi'u prosesu'n llwyddiannus (ar gyfer cofnod %s /camau a wnaed) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Gallwch chi wneud rhai cyfarwyddiadau ar gyfer eich E-bost (Enghraifft: cynhyrchu delwedd mewn templed e-bost ...) ModelTemplate=Templed e-bost YouCanChooseAModelForYouMailContent= Gallwch ddewis un o fodelau templed neu gynhyrchu un gydag AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/cy_GB/stripe.lang b/htdocs/langs/cy_GB/stripe.lang index c50c262f6b1..beaa4813eb9 100644 --- a/htdocs/langs/cy_GB/stripe.lang +++ b/htdocs/langs/cy_GB/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL i gynnig tudalen dalu ar-lein %s ToOfferALinkForOnlinePaymentOnFreeAmount=URL i gynnig tudalen talu ar-lein %s o unrhyw swm heb unrhyw wrthrych yn bodoli ToOfferALinkForOnlinePaymentOnMemberSubscription=URL i gynnig tudalen dalu ar-lein %s ar gyfer tanysgrifiad aelod ToOfferALinkForOnlinePaymentOnDonation=URL i gynnig tudalen dalu ar-lein %s ar gyfer talu rhodd -YouCanAddTagOnUrl=Gallwch hefyd ychwanegu paramedr url &tag= value i unrhyw un o'r URLau hynny (gorfodol yn unig ar gyfer taliad nad yw'n gysylltiedig â gwrthrych) i ychwanegu eich tag talu eich hun.
Ar gyfer URL taliadau heb unrhyw wrthrych yn bodoli, gallwch hefyd ychwanegu'r paramedr &noidempotency=1 fel y gellir defnyddio'r un cyswllt gyda'r un tag sawl gwaith (gall rhai dull talu gyfyngu'r taliad i 1 ar gyfer pob cyswllt gwahanol heb hwn paramedr) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Gosodwch eich Stripe gydag url %s i gael taliad wedi'i greu'n awtomatig pan gaiff ei ddilysu gan Stripe. AccountParameter=Paramedrau cyfrif UsageParameter=Paramedrau defnydd @@ -41,8 +42,8 @@ STRIPE_LIVE_WEBHOOK_KEY=Webhook allwedd byw ONLINE_PAYMENT_WAREHOUSE=Stoc i'w ddefnyddio ar gyfer gostyngiad stoc pan wneir taliad ar-lein
(TODO Pan fydd opsiwn i leihau stoc yn cael ei wneud ar weithred ar anfoneb a'r taliad ar-lein yn cynhyrchu'r anfoneb ei hun ?) StripeLiveEnabled=Stripe live wedi'i alluogi (modd prawf / blwch tywod fel arall) StripeImportPayment=Mewnforio taliadau Stripe -ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails -ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s +ExampleOfTestCreditCard=Enghraifft o gerdyn credyd ar gyfer taliad prawf: %s => dilys, %s => gwall CVC, %s => wedi dod i ben, %s => tâl yn methu +ExampleOfTestBankAcountForSEPA=Enghraifft o BAN cyfrif banc ar gyfer prawf debyd uniongyrchol: %s StripeGateways=Pyrth streipen OAUTH_STRIPE_TEST_ID=ID Cleient Stripe Connect (ca_...) OAUTH_STRIPE_LIVE_ID=ID Cleient Stripe Connect (ca_...) @@ -51,6 +52,7 @@ StripeAccount=Cyfrif stripe StripeChargeList=Rhestr o daliadau Stripe StripeTransactionList=Rhestr o drafodion Stripe StripeCustomerId=ID cwsmer stripe +StripePaymentId=ID taliad strip StripePaymentModes=Dulliau talu streipen LocalID=ID lleol StripeID=ID streipen @@ -62,7 +64,7 @@ DeleteACard=Dileu Cerdyn ConfirmDeleteCard=Ydych chi'n siŵr eich bod am ddileu'r cerdyn Credyd neu Ddebyd hwn? CreateCustomerOnStripe=Creu cwsmer ar Stripe CreateCardOnStripe=Creu cerdyn ar Stripe -CreateBANOnStripe=Create bank on Stripe +CreateBANOnStripe=Creu banc ar Stripe ShowInStripe=Dangos yn Stripe StripeUserAccountForActions=Cyfrif defnyddiwr i'w ddefnyddio ar gyfer hysbysiad e-bost o rai digwyddiadau Stripe (taliadau Stripe) StripePayoutList=Rhestr o daliadau Stripe @@ -71,8 +73,18 @@ ToOfferALinkForLiveWebhook=Dolen i'r gosodiad Stripe WebHook i ffonio'r IPN (mod PaymentWillBeRecordedForNextPeriod=Bydd taliad yn cael ei gofnodi ar gyfer y cyfnod nesaf. ClickHereToTryAgain= Cliciwch yma i geisio eto... CreationOfPaymentModeMustBeDoneFromStripeInterface=Oherwydd rheolau Dilysu Cwsmeriaid Cryf, rhaid creu cerdyn o swyddfa gefn Stripe. Gallwch glicio yma i droi cofnod cwsmer Stripe ymlaen: %s -STRIPE_CARD_PRESENT=Card Present for Stripe Terminals -TERMINAL_LOCATION=Location (address) for Stripe Terminals -RequestDirectDebitWithStripe=Request Direct Debit with Stripe -STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe - +STRIPE_CARD_PRESENT=Cerdyn yn Bresennol ar gyfer Terfynellau Stripe +TERMINAL_LOCATION=Lleoliad (cyfeiriad) ar gyfer Terfynellau Stripe +RequestDirectDebitWithStripe=Gofynnwch am Ddebyd Uniongyrchol gyda Stripe +RequesCreditTransferWithStripe=Cais am Drosglwyddiad Credyd gyda Stripe +STRIPE_SEPA_DIRECT_DEBIT=Galluogi'r taliadau Debyd Uniongyrchol trwy Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT +StripeConnect_Mode=Modd Stripe Connect +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/da_DK/admin.lang b/htdocs/langs/da_DK/admin.lang index cb42f356f7b..d90329edb30 100644 --- a/htdocs/langs/da_DK/admin.lang +++ b/htdocs/langs/da_DK/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Liste over værdier skal være linjer med formatet nø ExtrafieldParamHelpcheckbox=Liste over værdier skal være linjer med formatet nøgle,værdi (hvor nøgle ikke kan være '0')

f.eks.:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=Liste over værdier skal være linjer med formatet nøgle,værdi (hvor nøgle ikke kan være '0')

f.eks.:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=Liste over værdier kommer fra en tabel
Syntaks: tabelnavn:label_field:id_field::filtersql
Eksempel: c_idtypent:libelle: ::filtersql

- id_field er nødvendigvis en primær int-key
- filtersql er en betingelse. Det skal bruge USF-syntaksen. Eksempel: (active:=:1) for kun at vise aktiv værdi
Du kan også bruge $ID$ i filter, som er det aktuelle id for det aktuelle objekt
Hvis du vil filtrere på ekstrafelter, brug syntaks extra.fieldcode=... (hvor feltkode er koden for ekstrafelt)

For at få listen afhængig af en anden komplementær attributliste:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order at have listen afhængig af en anden liste:
c_typent:libelle:id:parent_list_code |parent_column:filter -ExtrafieldParamHelpchkbxlst=Liste over værdier kommer fra en tabel
Syntaks: tabelnavn:label_field:id_field::filtersql
Eksempel: c_idtypent:libelle: ::filtersql

filter kan være en simpel test (f.eks. active=1 for kun at vise aktiv værdi)
Du kan også bruge $ID$ i filter, der er det aktuelle id for det aktuelle objekt
For at lave et SELECT i filter, brug $SEL$
hvis du vil filtrere på ekstrafelter, brug syntaks extra.fieldcode=... (hvor feltkoden er koden for extrafield)

For at få listen afhængig af en anden komplementær attributliste:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

For at få listen afhængig af en anden liste:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametre skal være ObjectName:Classpath
Syntaks: ObjectName:Classpath ExtrafieldParamHelpSeparator=Hold tom for en simpel adskiller
Indstil denne til 1 for en kollapsende separator (åben som standard for ny session, så beholdes status for hver brugersession)
Indstil denne til 2 for en kollapsende separator (skjulet som standard for ny session, så beholdes status før hver brugersession) LibraryToBuildPDF=Mappe brugt til PDF generering @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s efterfulgt af det afkortede kundenavn med ModuleCompanyCodeSupplierDigitaria=%s efterfulgt af det afkortede leverandørnavn med antallet af tegn: %s for leverandørens regnskabskode. Use3StepsApproval=Indkøbsordrer skal som standard oprettes og godkendes af 2 forskellige brugere (et trin/bruger til at oprette og et trin/bruger til at godkende. Bemærk, at hvis bruger har både tilladelse til at oprette og godkende, vil et trin/bruger være nok) . Du kan med denne mulighed bede om at indføre et tredje trin/brugergodkendelse, hvis beløbet er højere end en dedikeret værdi (så 3 trin vil være nødvendige: 1=validering, 2=første godkendelse og 3=anden godkendelse, hvis beløbet er nok).
Indstil denne til tom, hvis én godkendelse (2 trin) er nok, indstil den til en meget lav værdi (0,1), hvis en anden godkendelse (3 trin) altid er påkrævet. UseDoubleApproval=Brug en 3-trins godkendelse, når beløbet (uden skat) er højere end ... -WarningPHPMail=ADVARSEL: Opsætningen til at sende e-mails fra applikationen bruger den generelle standardopsætning. Dette valg kræver ingen teknisk viden for at fuldføre opsætningen.
Det er dog ofte bedre at konfigurere udgående e-mails til at bruge e-mail-serveren hos din e-mail-tjenesteudbyder i stedet for standardopsætningen for adskillige grunde: +WarningPHPMail=BEMÆRK: Opsætningen til at sende e-mails fra applikationen bruger den generiske standardopsætning (kaldet "%s"). Dette valg kræver ingen teknisk viden og ingen særlig opsætning.
Det er dog ofte bedre at konfigurere udgående e-mails til at bruge den anden metode (kaldet " %s") for at bruge din e-mail-tjenesteudbyders e-mail-server i stedet for standardopsætningen af flere årsager: WarningPHPMailA=- Brug af e-mail-tjenesteudbyderens server øger troværdigheden af din e-mail, så det øger leveringsevnen uden at blive markeret som SPAM -WarningPHPMailB=- Nogle e-mail-tjenesteudbydere (som Yahoo) tillader ikke, at du sender en e-mail fra en anden server end deres egen server. Din nuværende opsætning bruger applikationens server til at sende e-mail og ikke serveren på din e-mail-udbyder, så nogle modtagere (den der er kompatibel med den restriktive DMARC protokol), vil spørge din e-mail-udbyder, om de kan acceptere din e-mail og nogle e-mail-udbydere (som Yahoo) kan svare "nej", fordi serveren ikke er deres, så få af dine sendte e-mails bliver muligvis ikke accepteret til levering (vær også forsigtig med din e-mailudbyders sendekvote). +WarningPHPMailB=- Hvis domænet for din e-mail (delen af mitmaildomæne.com til mit navn@mitmaildomæne.com) er beskyttet af en SPF + en DMARC-record, kan din e-mail blive markeret som SPAM, fordi din DMARC-regel er defineret i DNS-zonen for domænet i domænet. afsender (mymaildomain.com) tillader ikke afsendelsen som en generisk afsender. I et sådant tilfælde skal du deaktivere DMARC for domænet (eller indstille det til p=ingen som gjort af @gmail.com), eller bedre, hvis du har den tekniske viden, bruge den anden metode til at sende e-mails ved hjælp af SMTP'en server hos din egen e-mail-udbyder. WarningPHPMailC=- Det er også interessant at bruge SMTP-serveren fra din egen e-mail-tjenesteudbyder til at sende e-mails, så alle e-mails, der sendes fra applikationen, vil også blive gemt i din "Sendte" mappe i din postkasse. WarningPHPMailD=Det anbefales derfor at ændre afsendelsesmetoden for e-mails til værdien "SMTP". WarningPHPMailDbis=Hvis du virkelig vil beholde standardmetoden "PHP" til at sende e-mails, skal du bare ignorere denne advarsel eller fjerne den ved at %sklikke her%s. 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=Faktisk SPF-post fundet (for e-mail %s): %s +WarningPHPMailSPF=Hvis domænenavnet i din afsender-e-mailadresse er beskyttet af en SPF-record (spørg din domænenavnsregistrator), skal du tilføje følgende IP'er eller indtastning i SPF-posten for dit domænes DNS: %s. +WarningPHPMailSPFDMARC=Hvis domænenavnet i din afsender-e-mailadresse er beskyttet af en anden DMARC-record end p=none (spørg din domænenavnsregistrator), skal du fjerne din DMARC-record eller indstille den til p=none like do @gmail.com) eller bruge at sende en anden metode. +SPFAndDMARCInformation=SPF- og DMARC-DNS-post for hoved-e-mailadresser +ActualMailDNSRecordFound=Faktisk %s post fundet (til 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) @@ -867,7 +868,7 @@ Permission255=Rediger andre brugeres adgangskode Permission256=Slet eller deaktiver andre brugere Permission262=Udvid adgangen til alle tredjeparter OG deres objekter (ikke kun tredjeparter, som brugeren er knyttet til som salgsrepræsentant). Permission262b=Ikke effektiv for eksterne brugere (altid begrænset til sig selv for forslag, ordrer, fakturaer, kontrakter osv.). -Permission262c=Ikke effektiv for projekter (kun regler om projekttilladelser, synlighed og tildelingsforhold). +Permission262c=Ikke effektiv for projekter (kun regler om projekttilladelser, synlighed og brugertildeling har betydning). Permission263=Udvid adgangen til alle tredjeparter UDEN deres objekter (ikke kun tredjeparter, som brugeren er salgsrepræsentant for).
Ikke effektiv for eksterne brugere (altid begrænset til sig selv for forslag, ordrer, fakturaer, kontrakter osv.).
Ikke effektiv for projekter (kun regler om projekttilladelser, synlighed og tildelingsspørgsmål). Permission271=Læs CA Permission272=Læs fakturaer @@ -944,7 +945,7 @@ Permission776=Betal udgiftsrapporter Permission777=Læs alle udgiftsrapporter (selv dem fra brugere, der ikke er underordnede) Permission778=Opret/rediger udgiftsrapporter for alle Permission779=Eksporter udgiftsrapporter -Permission1001=Læs beholdninger +Permission1001=Læs lagre og lagre Permission1002=Oprette/ændre varehuse Permission1003=Slet varehuse Permission1004=Læs lagerbevægelser @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter for at rense værdi (COMPANY_DIGITARI DuplicateForbidden=Duplikat forbudt RemoveSpecialWords=Rengør visse ord, når du genererer underkonti til kunder eller leverandører RemoveSpecialWordsHelp=Angiv de ord, der skal renses, før du beregner kunde- eller leverandørkontoen. Brug en ";" mellem hvert ord -GDPRContact=Databeskyttelsesansvarlig (DPO, databeskyttelse eller GDPR-kontakt) +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ættelsesnøgle her, så teksten vises i et værktøjstip, når dette felt vises i en formular @@ -2218,7 +2219,7 @@ CreateCandidature=Opret jobansøgning FormatZip=ZIP MainMenuCode=Menuindgangskode (hovedmenu) ECMAutoTree=Vis automatisk ECM-træ -OperationParamDesc=Definer de regler, der skal bruges til at udtrække nogle data, eller sæt værdier, der skal bruges til drift.

Eksempel på at udtrække et firmanavn fra e-mail-emne til en midlertidig variabel:
tmp_var=EXTRACT:SUBJECT:Besked fra firma ([^\n]*)

Eksempler til at indstille egenskaberne for et objekt, der skal oprettes:
objproperty1=SET:en hårdkodet værdi
objproperty2=SET:__tmp_var__
objproperty2=objproperty2=varcc__fjbda3 SET:__f3mprty2=SET:__01mprty2=SET:__01mp3mp3 SETIFEMPTY: en værdi (værdi er kun angivet, hvis egenskaben ikke allerede er defineret)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*) options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
b0342bACTertyD5 firmanavn er\\s([^\\s]*)

Brug en ny linje til at udtrække eller indstille flere egenskaber. +OperationParamDesc=Definer de regler, der skal bruges til at udtrække nogle data, eller indstil værdier, der skal bruges til drift.

Eksempel på at udtrække en streng fra e-mail header, emne eller brødtekst i en midlertidig variabel:
tmp_var1=EXTRACT:HEADER:Mit regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:Min refeks ([^\n]*)
tmp_var3=EXTRACT:BODY:Mit regex ([^\n]*)

Eksempler på at indstille egenskaberne for et objekt, der skal oprettes:
objproperty1=SET:en hårdkodet værdi
objproperty2=SET:__tmp_var__
objproperty3=aSETIFETY (værdi) indstilles kun, hvis egenskaben 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 ny linje til at udtrække eller indstille flere egenskaber. OpeningHours=Åbningstider OpeningHoursDesc=Indtast her din virksomheds almindelige åbningstider. ResourceSetup=Opsætning af ressourcemodul @@ -2264,7 +2265,7 @@ LargerThan=Større end 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 allerede 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 har aktiveret 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 en anden tag/mappe, når den blev behandlet. Indstil blot navnet på mappen her for at bruge denne funktion (brug IKKE specialtegn i navnet). Bemærk, at du også skal bruge en læse/skrive login-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 (søgning vil blive udført på den definerede egenskab blandt 'id', 'navn', 'navn_alias', 'e-mail'). 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, brug afsenderens e-mail som e-mail, du kan indstille parameterfeltet sådan her:
'email=HEADER:^Fra:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Du kan bruge denne handling til at bruge e-mail-indholdet til at finde og indlæse en eksisterende tredjepart i din database (søgning vil blive udført på den definerede egenskab blandt 'id', 'navn', 'navn_alias', 'e-mail'). 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, brug afsenderens e-mail som e-mail, du kan indstille parameterfeltet sådan her:
'email=EXTRACT:HEADER:^Fra: (.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Advarsel: mange e-mail-servere (som Gmail) udfører fulde ordsøgninger, når de søger på en streng og vil ikke returnere et resultat, hvis strengen kun findes delvist i et ord. Også af denne grund vil brug af specialtegn i et søgekriterie blive ignoreret, hvis de ikke er en del af eksisterende ord.
For at foretage en ekskluderingssøgning på et ord (retur e-mail, hvis ordet ikke findes), kan du bruge ! tegn før ordet (fungerer muligvis ikke på nogle mailservere). EndPointFor=Slutpunkt for %s: %s DeleteEmailCollector=Slet e-mail-samler @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Tredjeparts navn - Tredjeparts alias ALIAS_THIRDPARTY=Tredjeparts alias - Tredjeparts navn PDFIn2Languages=Vis etiketter i PDF'en på 2 forskellige sprog (denne funktion virker muligvis ikke på nogle få sprog) 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 +PDF_USE_A=PDF-dokumenter format 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 @@ -2553,3 +2554,8 @@ MenuDict=Ordbog AddMoreParams=Tilføj flere parametre til forbindelse (cookies, tokens, ...)
Eksempel: token : værditoken ParamName=Navn på parameter ParamValue=Værdi af parameter +ConfirmDeleteParamOfSocialNetwork=Er du sikker på, at du vil slette denne parameter? +HelpMariaDBToGetPossibleValues=Du kan få en liste over mulige værdier ved at køre følgende SQL-kommando: %s +Captcha=Captcha +CaptchaDesc=Hvis du vil beskytte din login-side med en Captcha, kan du vælge, hvilken du vil bruge her +DolibarrStandardCaptcha=En indbygget captcha genereret af Dolibarr diff --git a/htdocs/langs/da_DK/commercial.lang b/htdocs/langs/da_DK/commercial.lang index 79b1f9f1b9f..efb39316349 100644 --- a/htdocs/langs/da_DK/commercial.lang +++ b/htdocs/langs/da_DK/commercial.lang @@ -94,3 +94,9 @@ SignatureContractRef=Underskrift af kontrakt %s SignatureFichinterRef=Underskrift af intervention %s SignatureSociete_ribRef=Underskrift af SEPA-mandat %s FeatureOnlineSignDisabled=Funktion til online-signering deaktiveret eller dokument genereret, før funktionen blev aktiveret +NoSignature=Ikke underskrevet +SignedSender=Signeret internt +SignedReceiver=Underskrevet af tredjepart +SignedReceiverOnline=Underskrevet af tredjepart online +SignedAll=Underskrevet af alle parter +SignStatus=Signaturstatus diff --git a/htdocs/langs/da_DK/companies.lang b/htdocs/langs/da_DK/companies.lang index bd201ffe8a7..cd26f33ad0e 100644 --- a/htdocs/langs/da_DK/companies.lang +++ b/htdocs/langs/da_DK/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr login NoDolibarrAccess=Ingen Dolibarr adgang ExportDataset_company_1=Tredjeparter (virksomheder/fonde/fysiske personer) og deres egenskaber ExportDataset_company_2=Kontakter og deres egenskaber +ExportDataset_company_3=Tredjeparts bankkonti ImportDataset_company_1=Tredjeparter og deres egenskaber ImportDataset_company_2=Tredjeparts yderligere kontakter/adresser og attributter ImportDataset_company_3=Tredjeparts bankkonti diff --git a/htdocs/langs/da_DK/datapolicy.lang b/htdocs/langs/da_DK/datapolicy.lang index 91f64d70999..313c119e4f9 100644 --- a/htdocs/langs/da_DK/datapolicy.lang +++ b/htdocs/langs/da_DK/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Databeskyttelsespolitik # Module description 'ModuledatapolicyDesc' Module4100Desc = Modul til at administrere databeskyttelse (overensstemmelse med GDPR) - -# # Administration page -# datapolicySetup = Opsætning af moduldatabeskyttelsespolitik Deletion = Sletning af data datapolicySetupPage = Afhængigt af lovene i dine lande (eksempel Artikel 5 i GDPR), skal personoplysninger opbevares i en periode ikke overskrider den varighed, dataene er nødvendige til det formål, hvortil de blev indsamlet, undtagen til arkiveringsformål.
Sletningen vil ske automatisk efter en vis varighed uden begivenheder (varigheden som du vil have angivet nedenfor). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Kundeemne/kunde DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Heller kunde/kunde DATAPOLICY_CONTACT_FOURNISSEUR = Leverandør DATAPOLICY_ADHERENT = Medlem -DATAPOLICY_Tooltip_SETUP = Kontakttype - Angiv dine valg for hver type. -DATAPOLICYMail = Opsætning af e-mails -DATAPOLICYSUBJECTMAIL = Emnet for e-mailen -DATAPOLICYCONTENTMAIL = Indholdet af e-mailen -DATAPOLICYSUBSITUTION = Du kan bruge følgende variabler i din e-mail (LINKACCEPT giver mulighed for at oprette et link, der registrerer personens aftale, LINKREFUSED gør det muligt at registrere personens afslag): -DATAPOLICYACCEPT = Meddelelse efter aftale -DATAPOLICYREFUSE = Besked efter uenighed +DATAPOLICY_Tooltip_SETUP=Definer forsinkelsen uden interaktion, hvorefter du ønsker, at posten automatisk skal slettes. SendAgreementText = Du kan sende en GDPR-e-mail til alle dine relevante kontakter (som endnu ikke har modtaget en e-mail, og som du ikke har registreret noget om deres GDPR-aftale for). For at gøre dette skal du bruge følgende knap. SendAgreement = Send emails AllAgreementSend = Alle e-mails er blevet sendt TXTLINKDATAPOLICYACCEPT = Tekst til linket "aftale" TXTLINKDATAPOLICYREFUSE = Tekst til linket "uenighed" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: Behandling af personoplysninger DATAPOLICY_consentement = Indhentet samtykke til behandling af personoplysninger DATAPOLICY_opposition_traitement = Modsætter sig behandlingen af hans personoplysninger DATAPOLICY_opposition_prospection = Modsætter sig behandlingen af hans personoplysninger med henblik på efterforskning - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonymiser en tredjepart -DATAPOLICY_POPUP_ANONYME_TEXTE = Du kan ikke slette denne kontakt fra Dolibarr, fordi der er relaterede emner. I overensstemmelse med GDPR vil du gøre alle disse data anonyme for at respektere dine forpligtelser. Vil du fortsætte? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Portabilitet GDPR -DATAPOLICY_PORTABILITE_TITLE = Eksport af personlige data -DATAPOLICY_PORTABILITE_CONFIRMATION = Du ønsker at eksportere denne kontakts personlige data. Er du sikker ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Anonymiseret %s - DATAPOLICY_date = Dato for aftale/uenighed GDPR DATAPOLICY_send = Dato aftalemail sendt -DATAPOLICY_SEND = Send GDPR-e-mail MailSent = Emailen er sendt - -# ERROR -=På grund af et teknisk problem kunne vi ikke registrere dit valg. Det beklager vi. Kontakt os for at meddele os dit valg. NUMBER_MONTH_BEFORE_DELETION = Antal måneder før sletning diff --git a/htdocs/langs/da_DK/dict.lang b/htdocs/langs/da_DK/dict.lang index c1d0617b6bf..f2981a90493 100644 --- a/htdocs/langs/da_DK/dict.lang +++ b/htdocs/langs/da_DK/dict.lang @@ -233,7 +233,7 @@ CountryUY=Uruguay CountryUZ=Uzbekistan CountryVU=Vanuatu CountryVE=Venezuela -CountryVN=Viet Nam +CountryVN=Vietnam CountryVG=Britiske Jomfruøer CountryVI=Amerikanske Jomfruøer CountryWF=Wallis og Futuna @@ -295,8 +295,8 @@ CurrencyXPF=FFP franc CurrencySingXPF=FFP Franc CurrencyCentEUR=cent CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=thousandth #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/da_DK/errors.lang b/htdocs/langs/da_DK/errors.lang index 064d3b51720..4db26fcef80 100644 --- a/htdocs/langs/da_DK/errors.lang +++ b/htdocs/langs/da_DK/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Bruger skal tildeles opgave for at kunne indtaste tid ErrorTaskAlreadyAssigned=Opgaven er allerede tildelt brugeren ErrorModuleFileSeemsToHaveAWrongFormat=Modulpakken ser ud til at have et forkert format. ErrorModuleFileSeemsToHaveAWrongFormat2=Der skal mindst findes et obligatorisk bibliotek i zip modulet: %s eller %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Navnet på modulpakken ( %s ) stemmer ikke overens med forventet navnesyntaks: %s 9z0 a010z0 +ErrorFilenameDosNotMatchDolibarrPackageRules=Filnavnet på modulpakken (%s) match den forventede navnesyntaks: %s ErrorDuplicateTrigger=Fejl, dubleret triggernavn %s. Allerede indlæst fra %s. ErrorNoWarehouseDefined=Fejl, ingen varehuse defineret. ErrorBadLinkSourceSetButBadValueForRef=Linket du bruger er ikke gyldigt. En 'kilde' til betaling er defineret, men værdien for 'ref' er ikke gyldig. diff --git a/htdocs/langs/da_DK/hrm.lang b/htdocs/langs/da_DK/hrm.lang index b70fdab5a08..d9191132a0e 100644 --- a/htdocs/langs/da_DK/hrm.lang +++ b/htdocs/langs/da_DK/hrm.lang @@ -1,6 +1,5 @@ # Dolibarr language file - en_US - hrm - # Admin HRM_EMAIL_EXTERNAL_SERVICE=E-mail for at forhindre HRM ekstern service Establishments=Foretagender @@ -24,7 +23,7 @@ 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 er oprettet deplacement=Flytte -DateEval=Evalueringsdato +DateEval=Dato for kompetencevurdering JobCard=Jobkort NewJobProfile=Ny jobprofil JobProfile=Jobprofil @@ -41,12 +40,12 @@ Skill=Færdighed Skills=Færdigheder SkillCard=Færdighedskort EmployeeSkillsUpdated=Medarbejdernes færdigheder er blevet opdateret (se fanen "Færdigheder" på medarbejderkortet) -Eval=Evaluering -Evals=Evalueringer -NewEval=Ny evaluering -ValidateEvaluation=Valider evaluering -ConfirmValidateEvaluation=Er du sikker på, at du vil validere denne evaluering med referencen %s >? -EvaluationCard=Evalueringskort +Eval=Kompetencevurdering +Evals=Kompetencevurderinger +NewEval=Ny kompetencevurdering +ValidateEvaluation=Validere kompetencevurdering +ConfirmValidateEvaluation=Er du sikker på, at du vil validere denne kompetencevurdering med referencen %s? +EvaluationCard=Kompetencevurdering RequiredRank=Påkrævet rang for jobprofilen RequiredRankShort=Påkrævet rang PositionsWithThisProfile=Stillinger med denne jobprofil @@ -73,6 +72,9 @@ AddSkill=Tilføj færdigheder til jobprofilen RequiredSkills=Nødvendige færdigheder til denne jobprofil UserRank=Brugerrangering SkillList=Færdighedsliste +SkillCreated=%s færdigheder oprettet +SkillRank=Færdighedsrang +ShowSkillRank=Vis færdighedsrangering SaveRank=Gem rang TypeKnowHow=Vide hvordan TypeHowToBe=Sådan skal du være @@ -90,8 +92,9 @@ SaveAddSkill = Færdigheder tilføjet SaveLevelSkill = Færdighedsniveauet er gemt DeleteSkill = Færdighed fjernet SkillsExtraFields=Komplementære egenskaber (færdigheder) -JobsExtraFields=Supplerende egenskaber (jobprofil) -EvaluationsExtraFields=Supplerende egenskaber (evalueringer) +JobsExtraFields=Supplerende egenskaber (jobprofiler) +EvaluationsExtraFields=Supplerende egenskaber (kompetencevurderinger) NeedBusinessTravels=Har brug for forretningsrejser NoDescription=Ingen beskrivelse TheJobProfileHasNoSkillsDefinedFixBefore=Den evaluerede jobprofil for denne medarbejder har ingen færdigheder defineret. Tilføj venligst færdighed(er), slet og genstart evalueringen. +PDFStandardHrmEvaluation=Standardskabelon til at generere et PDF-dokument til en kompetencevurdering diff --git a/htdocs/langs/da_DK/interventions.lang b/htdocs/langs/da_DK/interventions.lang index 8900fe6b755..263040bba51 100644 --- a/htdocs/langs/da_DK/interventions.lang +++ b/htdocs/langs/da_DK/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Opret udkast InterventionContact=Intervention kontakt DeleteIntervention=Slet intervention ValidateIntervention=Bekræft intervention +SignIntervention=Skilteintervention +UnsignIntervention=Afmeld service report ModifyIntervention=Rediger indgreb CloseIntervention=Luk intervention DeleteInterventionLine=Slet intervention linje ConfirmDeleteIntervention=Er du sikker på, at du vil slette dette indgreb? ConfirmValidateIntervention=Er du sikker på, at du vil bekræfte dette indgreb under navnet %s ? +ConfirmSignIntervention=Er du sikker på, at du vil indstille denne service rapport som underskrevet? +ConfirmUnsignIntervention=Er du sikker på, at du vil indstille denne service rapport som usigneret? ConfirmModifyIntervention=Er du sikker på, at du vil ændre dette indgreb? ConfirmCloseIntervention=Er du sikker på at du vil lukke denne intervention? ConfirmDeleteInterventionLine=Er du sikker på, at du vil slette denne indgrebslinje? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Indgreb og linjer af indgreb InterventionClassifyBilled=Klassificere "Billed" InterventionClassifyUnBilled=Klassificer "Ikke faktureret" InterventionClassifyDone=Klassificer "Udført" +InterventionSign=Sæt Signeret +InterventionUnsign=Sæt usigneret SendInterventionRef=Indsend indgreb %s SendInterventionByMail=Send intervention via e-mail InterventionCreatedInDolibarr=Et indgreb %s er oprettet InterventionValidatedInDolibarr=Intervention %s bekræftet +InterventionSignedInDolibarr=Intervention underskrevet +InterventionSignedOnline=service rapport underskrevet online +InterventionUnsignedInDolibarr=Service rapport usigneret InterventionModifiedInDolibarr=Ingreb %s ændret InterventionClassifiedBilledInDolibarr=Indgreb %s indstillet til fakturering InterventionClassifiedUnbilledInDolibarr=Indgreb %s angivet som ikke faktureret diff --git a/htdocs/langs/da_DK/mails.lang b/htdocs/langs/da_DK/mails.lang index 98170cd982a..21933c9bb71 100644 --- a/htdocs/langs/da_DK/mails.lang +++ b/htdocs/langs/da_DK/mails.lang @@ -32,8 +32,8 @@ NewMailing=Ny emailing NewSMSing=Ny sms EditMailing=Rediger emailing ResetMailing=Gensend emailing -ConfirmResetMailingTargetMassaction=Massemål Send bekræftelse igen -ResetMailingTargetMassaction=Send mål igen +ConfirmResetMailingTargetMassaction=Bekræftelse af nulstilling af målstatus +ResetMailingTargetMassaction=Nulstil målstatus DeleteMailing=Slet emailing PreviewMailing=Preview emailing CreateMailing=Opret emailing @@ -193,7 +193,7 @@ NoMoreRecipientToSendTo=Ikke flere modtagere at sende e-mailen til EmailOptedOut=E-mail-ejeren har anmodet om ikke at kontakte ham med denne e-mail længere EvenUnsubscribe=Inkluder fravalgs-e-mails EvenUnsubscribeDesc=Inkluder fravalgs-e-mails, når du vælger e-mails som mål. Nyttig til for eksempel obligatoriske service-e-mails. -XEmailsDoneYActionsDone=%s e-mails prækvalificeret, %s e-mails behandlet med succes (for %s registrering/handlinger udført) +XEmailsDoneYActionsDone=%s e-mails prækvalificerede, %s e-mails behandlet med succes (for %s operationer færdig) YouCanMakeSomeInstructionForEmail=Du kan lave nogle instruktioner til din e-mail (eksempel: generer billede i e-mail-skabelon...) ModelTemplate=Email skabelon YouCanChooseAModelForYouMailContent= Du kan vælge en af skabelonmodellerne eller generere en med AI diff --git a/htdocs/langs/da_DK/main.lang b/htdocs/langs/da_DK/main.lang index 35fe082ac7a..06aad230402 100644 --- a/htdocs/langs/da_DK/main.lang +++ b/htdocs/langs/da_DK/main.lang @@ -45,6 +45,7 @@ NoError=Ingen fejl Error=Fejl Errors=Fejl ErrorFieldRequired=Feltet '%s' er påkrævet +CustomMandatoryFieldRule=Tilpasset regel for "obligatorisk felt". ErrorFieldFormat=Feltet '%s' har en forkert værdi ErrorFileDoesNotExists=Filen %s eksisterer ikke ErrorFailedToOpenFile=Kan ikke åbne filen %s diff --git a/htdocs/langs/da_DK/oauth.lang b/htdocs/langs/da_DK/oauth.lang index 2ca435b0535..e203605c9eb 100644 --- a/htdocs/langs/da_DK/oauth.lang +++ b/htdocs/langs/da_DK/oauth.lang @@ -40,7 +40,7 @@ URLOfOAuthServiceEndpointsExample=https://mastodon.example.com URLOfServiceForAuthorization=URL leveret af OAuth-tjenesten til godkendelse Scopes=Tilladelser (omfang) ScopeUndefined=Tilladelser (omfang) udefinerede (se forrige fane) -ScopesDesc=Eksempel: læs, skriv med Mastodom +ScopesDesc=Eksempel: læs, skriv med Mastodon TokenRawValue=Fuld token (objekt) AccessToken=Adgangstoken TokenExpired=Udløbet diff --git a/htdocs/langs/da_DK/other.lang b/htdocs/langs/da_DK/other.lang index 80c4e34ffcf..51ea5aca481 100644 --- a/htdocs/langs/da_DK/other.lang +++ b/htdocs/langs/da_DK/other.lang @@ -72,6 +72,7 @@ Notify_BILL_SUPPLIER_SENTBYMAIL=Leverandørfaktura sendt med posten Notify_BILL_SUPPLIER_CANCELED=Leverandørfaktura annulleret Notify_CONTRACT_VALIDATE=Kontrakt bekræftet Notify_FICHINTER_VALIDATE=Intervention bekræftet +Notify_FICHINTER_MODIFY=Service rapport modificeret Notify_FICHINTER_CLOSE=Intervention lukket Notify_FICHINTER_ADD_CONTACT=Tilføjet kontakt til intervention Notify_FICHINTER_SENTBYMAIL=Intervention sendt via post @@ -209,6 +210,7 @@ AmountIn=Beløb i %s NumberOfUnitsMos=Antal enheder, der skal produceres i produktionsordrer EMailTextInterventionAddedContact=En ny intervention %s er blevet tildelt dig. EMailTextInterventionValidated=Intervention %s bekræftet +EMailTextInterventionModified=Indgrebet %s er blevet ændret. %s EMailTextInterventionClosed=Interventionen %s er blevet lukket. EMailTextInvoiceValidated=Fakturaen %s er godkendt. EMailTextInvoicePayed=Faktura %s er blevet betalt. diff --git a/htdocs/langs/da_DK/sendings.lang b/htdocs/langs/da_DK/sendings.lang index d82db190b32..ef4bce82d04 100644 --- a/htdocs/langs/da_DK/sendings.lang +++ b/htdocs/langs/da_DK/sendings.lang @@ -63,6 +63,9 @@ NoProductToShipFoundIntoStock=Intet produkt til afsendelse fundet i lageret WeightVolShort=Vægt / vol. ValidateOrderFirstBeforeShipment=Du skal først bekræfte ordren, inden du kan foretage forsendelser. NoLineGoOnTabToAddSome=Ingen linje, gå på fanen "%s" for at tilføje +CreateInvoiceForThisCustomerFromSendings=Opret regninger +IfValidateInvoiceIsNoSendingStayUnbilled=Hvis fakturavalidering er 'Nej', forbliver afsendelsen til status 'Ufaktureret', indtil fakturaen er valideret. +OptionToSetSendingBilledNotEnabled=Mulighed fra modul Workflow, for automatisk at sætte afsendelse til 'Faktureret' når faktura er valideret, er ikke aktiveret, så du skal indstille status for afsendelser til 'Faktureret' manuelt efter at fakturaen er genereret. # Sending methods # ModelDocument @@ -71,16 +74,12 @@ DocumentModelStorm=Mere komplet dokumentmodel for leveringskvitteringer og ekstr Error_EXPEDITION_ADDON_NUMBER_NotDefined=Konstant EXPEDITION_ADDON_NUMBER ikke defineret SumOfProductVolumes=Summen af ​​produktmængder SumOfProductWeights=Summen af ​​produktvægt - # warehouse details DetailWarehouseNumber= Lager detaljer DetailWarehouseFormat= W: %s(Antal:%d) SHIPPING_DISPLAY_STOCK_ENTRY_DATE=Vis sidste dato for indførsel på lager under oprettelse af forsendelse for serienummer eller batch CreationOptions=Tilgængelige muligheder under oprettelse af forsendelse - ShipmentDistribution=Forsendelsesfordeling - ErrorTooManyCombinationBatchcode=Ingen afsendelse for linje %s, da der blev fundet for mange kombinationer af lager, produkt, batchkode (%s). ErrorNoCombinationBatchcode=Linjen %s kunne ikke gemmes som kombinationen af warehouse-product-lot/serial (%s, %s, %s) blev ikke fundet på lager. - ErrorTooMuchShipped=Den afsendte mængde bør ikke være større end den bestilte mængde for linje %s diff --git a/htdocs/langs/da_DK/stripe.lang b/htdocs/langs/da_DK/stripe.lang index 6b3e7a8ba5e..a4e707a5bc0 100644 --- a/htdocs/langs/da_DK/stripe.lang +++ b/htdocs/langs/da_DK/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL til at tilbyde en %s online betal ToOfferALinkForOnlinePaymentOnFreeAmount=URL til at tilbyde en %s online betalingsside af ethvert beløb uden noget eksisterende objekt ToOfferALinkForOnlinePaymentOnMemberSubscription=URL til at tilbyde en %s online betalingsside for et medlemsabonnement ToOfferALinkForOnlinePaymentOnDonation=URL til at tilbyde en %s online betalingsside til betaling af en donation -YouCanAddTagOnUrl=Du kan også tilføje url-parameter & tag = værdi til en af disse URL-adresser (kun obligatorisk for betaling, der ikke er knyttet til et objekt) for at tilføje dit eget betalings-kommentar-tag.
For URL-adressen til betalinger uden noget eksisterende objekt, kan du også tilføje parameteren & noidempotency=1, så det samme link med samme tag kan bruges flere gange (nogle betalingsmetoder begrænser muligvis betalingen til 1 for hvert andet link uden denne parameter) +YouCanAddTagOnUrl=Du kan også tilføje url-parameter &tag=value til enhver af disse URL-adresser (kun obligatorisk for betaling, der ikke er knyttet til et objekt ) for at tilføje dit eget betalingskommentartag.
For webadressen for betalinger uden eksisterende objekter kan du også tilføje parameteren &noidempotency=1 så det samme link med samme tag kan bruges flere gange (nogle betalingstilstande kan begrænse betalingen til 1 for hvert andet link uden denne parameter) +YouCanEmbedOnWebsite=Hvis du ønsker at integrere betalingssiden i en Dolibarr websted, kan du inkludere parameteren: &ws=website_ref.
Yderligere to sider med navnet paymentok og paymentko skal oprettes i websted for at modtage omdirigeringen efter en vellykket eller mislykket onlinebetaling. SetupStripeToHavePaymentCreatedAutomatically=Indstil din stripe med url %s for at få betaling oprettet automatisk, når bekræftet af Stripe. AccountParameter=Kontoparametre UsageParameter=Anvendelsesparametre @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Placering (adresse) for Stripe Terminals RequestDirectDebitWithStripe=Anmod om direkte debitering med Stripe RequesCreditTransferWithStripe=Anmod om kreditoverførsel med Stripe STRIPE_SEPA_DIRECT_DEBIT=Aktiver direkte debitering via Stripe +STRIPE_KLARNA=Aktiver betalingerne med Klarna +STRIPE_BANCONTACT=Aktiver betalingerne ved hjælp af BANCONTACT +STRIPE_IDEAL=Aktiver betalingerne med IDEAL +STRIPE_GIROPAY=Aktiver betalingerne med GIROPAY +STRIPE_SOFORT=Aktiver betalingerne ved hjælp af SOFORT StripeConnect_Mode=Stripe Connect-tilstand +ExampleOnlyForBECustomers=Kun for belgiske kunder +ExampleOnlyForDECustomers=Kun for tyske kunder +ExampleOnlyForNLCustomers=Kun for hollandske kunder +ExampleOnlyForATBEDEITNLESCustomers=Kun for kunder fra Østrig, Belgien, Tyskland, Italien, Holland, Spanien diff --git a/htdocs/langs/da_DK/website.lang b/htdocs/langs/da_DK/website.lang index 87d650bc8a4..f55aa8b6bed 100644 --- a/htdocs/langs/da_DK/website.lang +++ b/htdocs/langs/da_DK/website.lang @@ -62,7 +62,7 @@ NoPageYet=Ingen sider endnu YouCanCreatePageOrImportTemplate=Du kan oprette en ny side eller importere en fuld hjemmeside skabelon SyntaxHelp=Hjælp til specifikke syntax tips YouCanEditHtmlSourceckeditor=Du kan redigere HTML-kildekode ved hjælp af knappen "Kilde" i editoren. -YouCanEditHtmlSource=
Du kan inkludere PHP-kode i denne kilde ved hjælp af tags <?php ?>. Følgende globale variabler er tilgængelige: $conf, $db, $mysoc, $user, $websted, $websitepage, $weblangs, $pagelangs.

Du kan også inkludere af en anden side/beholder med følgende syntaks:
<? php includeContainer('alias_of_container_to_include'); ?>

Du kan foretage en omdirigering til en anden side/beholder med følgende syntaks (Bemærk: udskriv ikke nogen indhold før en omdirigering):
<?php redirectToContainer alias_of_container_to_redirect_to'); ?>
Du kan også lave en omdirigering med GET-parametre:
<?php redirectToContainer('container_to', 'container_alias_of', 'container_to' 0, 0, $array_of_get_params); ?>

For at tilføje et link til en anden side skal du bruge syntaksen:
<a href="alias_of_page_to_link_to.php">mylink<a>

To include a link til download en fil gemt i dokumenterne bibliotek, brug document.php wrapper:
Eksempel, for en fil til dokumenter/ecm (skal logges), er syntaksen:
<a href="/document.php?\nmodulepart=ecm&file=[relative_dir/]filename.ext">

For en fil til dokumenter/medier (åben mappe til offentlig adgang), er syntaksen:
<a href="/document.php?\nmodulepart=medias&file=]relative_dir/ ext">
For en fil, der deles med et delingslink ( åben adgang ved hjælp af filens hash-nøgle), syntaks er:
<a href="/document.php?hashp=publicsharekeyoffile">
s +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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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">
YouCanEditHtmlSource1=
At inkludere en image gemt i dokumenternedirektorie , brug viewimage.php-indpakningen.
,Example, et billede i dokumenter/medier (åben mappe til offentlig adgang), syntaks er:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"
YouCanEditHtmlSource2=For et billede, der deles med et delingslink (åben adgang ved hjælp af deling af hash-nøglen til filen), er syntaks:
<img src = "/ viewimage.php? Hashp = 12345679012 ..."
YouCanEditHtmlSource3=To get the URL of the image of a PHP object, use
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/de_CH/admin.lang b/htdocs/langs/de_CH/admin.lang index bccfbd3b2c2..92cf20fd81c 100644 --- a/htdocs/langs/de_CH/admin.lang +++ b/htdocs/langs/de_CH/admin.lang @@ -385,7 +385,6 @@ Permission652=Rechnungen für Rohmaterialien erzeugen und bearbeiten Permission653=Rechnungen für Rohmaterialien löschen Permission701=Spenden einsehen Permission771=Spesenabrechnungen einsehen (eigene und die der Untergebenen) -Permission1001=Warenbestände einsehen Permission1002=Warenlager erstellen/ändern Permission1121=Partnerofferten einsehen Permission1122=Partnerofferten erzeugen und bearbeiten @@ -602,12 +601,14 @@ NewEmailCollector=Neuer E-Mail - Sammeldienst EMailHost=IMAP Server Host EmailCollectorConfirmCollectTitle=E-Mail - Sammeldienst Bestätigung NoNewEmailToProcess=Ich habe keinen neuen E-Mails (die zu den Filtern passen) abzuarbeiten. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. ResourceSetup=Modul Ressourcen einrichten UseSearchToSelectResource=Zeige eine Suchmaske für Ressourcen, statt eine Drop-down - Liste DisabledResourceLinkUser=Verknüpfungsmöglichkeit zwischen Ressource und Benutzer unterbinden. DisabledResourceLinkContact=Verknüpfungsmöglichkeit zwischen Ressource und Kontakt unterbinden. ConfirmUnactivation=Bestätige das Zurücksetzen des Moduls. ExportSetup=Modul Daten-Export einrichten +EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FeatureNotAvailableWithReceptionModule=Diese Funktion ist nicht verfügbar, wenn das Modul 'Lieferungen' aktiv ist DictionaryProductNature=Produktart ModuleZapierForDolibarrDesc=Modul Zapier für Dolibarr diff --git a/htdocs/langs/de_CH/commercial.lang b/htdocs/langs/de_CH/commercial.lang index 8c61c868cc7..9e479e701f8 100644 --- a/htdocs/langs/de_CH/commercial.lang +++ b/htdocs/langs/de_CH/commercial.lang @@ -41,3 +41,4 @@ ThisScreenAllowsYouToSignDocFromProposal=Hier kannst du die Offerte akzeptieren, ThisIsInformationOnDocumentToSignProposal=Hier die Informationen zum Dokument, das zu akzeptieren oder zurückzuweisen ist. SignatureProposalRef=Unterschrift zur Offerte %s FeatureOnlineSignDisabled=Hoppla, online unterschreiben ist entweder deaktiviert - oder die Offerte wurde erstellt, bevor online unterschreiben aktiviert worden war. +NoSignature=Nicht unterzeichnet diff --git a/htdocs/langs/de_DE/admin.lang b/htdocs/langs/de_DE/admin.lang index a7c10d5594d..064182d666b 100644 --- a/htdocs/langs/de_DE/admin.lang +++ b/htdocs/langs/de_DE/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Die Liste der Werte muss aus Zeilen mit dem Format Sch ExtrafieldParamHelpcheckbox=Die Liste der Werte muss aus Zeilen mit dem Format Schlüssel, Wert bestehen (wobei Schlüssel nicht '0' sein darf)

zum Beispiel:
1, value1
2, value2
3, value3
... ExtrafieldParamHelpradio=Die Liste der Werte muss aus Zeilen mit dem Format Schlüssel, Wert bestehen (wobei Schlüssel nicht '0' sein darf)

zum Beispiel:
1, value1
2, value2
3, value3
... ExtrafieldParamHelpsellist=Liste von Werten aus einer Tabelle
Syntax: table_name:label_field:id_field::filtersql
Beispiel: c_typent:libelle:id::filtersql

- id_field ist notwendigerweise ein primärer int-Schlüssel
- filtersql ist eine Bedingung. Es muss die USF-Syntax verwendet werden. Beispiel: (aktiv:=:1) um nur aktive Werte zu zeigen
Sie können auch $ID$ im Filter verwenden, das die aktuelle ID des aktuellen Objekts ist
Wenn Sie nach Extrafeldern filtern möchten, verwenden Sie die Syntax extra.fieldcode=... (wobei fieldcode der Code des Extrafelds ist)

Wenn die Liste von einer anderen Liste mit komplementären Attributen abhängig ist:
c_typent:libelle:ID:options_parent_list_code|parent_column:filter

Um die Liste von einem anderen Liste abhängig zu machen:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Liste von Werten stammt aus einer Tabelle
Syntax: table_name:label_field:id_field::filtersql
Beispiel: c_typent:libelle:ID::filtersql

Filter kann ein einfacher Test sein (z. B. active=1 um nur aktive Werte zu zeigen)
Sie können auch $ID$ im Filter verwenden, das ist die id des aktuellen Objekts
Um ein SELECT im Filter durchzuführen, verwenden Sie $SEL$
wenn Sie nach Extrafeldern filtern möchten, verwenden Sie die Syntax extra.fieldcode=... (wobei fieldcode der Code des Extrafelds ist)

Damit die Liste von einer anderen ergänzenden Attributliste abhängt:
c_typent:libelle:ID:options_parent_list_code|parent_column:filter

Um die Liste von einer anderen Liste abhängig zu machen:
c_typent:libelle:id:übergeordneter_Listencode|parent_column:filter ExtrafieldParamHelplink=Parameter müssen Objektname:Klassenpfad sein.
Syntax: ObjektName:Classpath ExtrafieldParamHelpSeparator=Für ein einfaches Trennzeichen leer lassen
Setzen Sie diesen Wert für ein ausblendendes Trennzeichen auf 1 (standardmäßig für eine neue Sitzung geöffnet, der Status wird für jede Benutzersitzung beibehalten)
Setzen Sie diesen Wert für ein ausblendendes Trennzeichen auf 2 (standardmäßig für ausgeblendet) neue Sitzung, dann bleibt der Status für jede Benutzersitzung erhalten) LibraryToBuildPDF=Bibliothek zum Erstellen von PDF-Dateien @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, gefolgt vom abgeschnittenen Kundennamen u ModuleCompanyCodeSupplierDigitaria=%s, gefolgt vom verkürzten Lieferantennamen und der Anzahl der Zeichen: %s für das Lieferantenbuchungskonto (Kreditorenkonto). Use3StepsApproval=Standardmäßig, Einkaufsaufträge müssen durch zwei unterschiedlichen Benutzer erstellt und freigegeben werden (ein Schritt/Benutzer zu erstellen und ein Schritt/Benutzer für die Freigabe). Beachten Sie wenn ein Benutzer beide Rechte hat - zum erstellen und freigeben, dann reicht ein Benutzer für diesen Vorgang. Optional können Sie ein zusätzlicher Schritt/User für die Freigabe einrichten, wenn der Betrag einen bestimmten dedizierten Wert übersteigt (wenn der Betrag übersteigt wird, werden 3 Stufen notwendig: 1=Validierung, 2=erste Freigabe und 3=Gegenfreigabe.
Lassen Sie den Feld leer wenn eine Freigabe (2 Schritte) ausreicht; Tragen Sie einen sehr niedrigen Wert (0.1) wenn eine zweite Freigabe notwendig ist. UseDoubleApproval=3-Stufen-Genehmigung durchführen, wenn der Betrag (ohne Steuern) höher ist als ... -WarningPHPMail=WARNUNG: Konfiguration zum Senden von E-Mails von Bewerbung verwendet den generischen Standard Konfiguration. Diese Auswahl erfordert keine technischen Kenntnisse, um den Konfiguration abzuschließen.
Allerdings ist es oft besser, für Konfiguration ausgehende E-Mails den E-Mail Server Ihres E-Mail Leistung Providers anstelle des Standard-Konfiguration aus mehreren Gründen: +WarningPHPMail=HINWEIS: Die Konfiguration zum Senden von E-Mails aus dieser Anwendung verwendet die Standardeinstellung (bezeichnet als „%s“). Diese Auswahl erfordert keine technischen Kenntnisse und keine besonderen Konfigurationen.
Allerdings ist es oft besser, ausgehende E-Mails mit einer anderen Methode (bezeichnet als "%s") zu versenden, um den E-Mail-Server Ihres E-Mail-Anbieters für den Versand zu verwenden, und zwar aus mehreren Gründen: WarningPHPMailA=- Die Verwendung des Server des E-Mail Leistung-Providers erhöht die Vertrauenswürdigkeit Ihres E-Mail und verbessert somit die Zustellbarkeit, ohne als SPAM gekennzeichnet zu werden. -WarningPHPMailB=- Bei einigen E-Mail-Dienstanbietern (wie Yahoo) können Sie keine E-Mails von einem anderen Server als deren eigenen Server senden. Ihr aktuelles Setup verwendet den Server der Anwendung zum Senden von E-Mails und nicht den Server Ihres E-Mail-Anbieters. Einige Empfänger (die mit dem restriktiven DMARC-Protokoll kompatibel sind) fragen Ihren E-Mail-Anbieter, ob sie Ihre E-Mail und einige E-Mail-Anbieter akzeptieren können (wie Yahoo) antwortet möglicherweise mit "Nein", da der Server nicht ihnen gehört. Daher werden möglicherweise einige Ihrer gesendeten E-Mails nicht zur Zustellung angenommen (achten Sie auch auf das Sendekontingent Ihres E-Mail-Anbieters). +WarningPHPMailB=- Wenn die Domain Ihrer E-Mail-Adresse (der Teil mymaildomain.com in myname@mymaildomain.com) durch einen SPF und einen DMARC-Eintrag geschützt ist, wird Ihr E-Mail möglicherweise als SPAM gekennzeichnet, da Ihre in der DNS-Zone der Domäne des Absenders (mymaildomain.com) definierte DMARC-Regel das Senden über generische Absender nicht zulässt. In einem solchen Fall müssen Sie DMARC für die Domäne deaktivieren (oder es auf p=none setzen, wie es bei @gmail.com der Fall ist) oder, besser noch, wenn Sie über die technischen Kenntnisse verfügen, die alternative Methode verwenden, um E-Mails über den SMTP-Server Ihres eigenen E-Mail-Anbieters zu senden. WarningPHPMailC=- Interessant ist auch die Verwendung des SMTP-Servers Ihres eigenen E-Mail-Dienstanbieters zum Senden von E-Mails, sodass alle von der Anwendung gesendeten E-Mails auch in dem Verzeichnis "Gesendet" Ihrer Mailbox gespeichert werden. WarningPHPMailD=Es wird daher empfohlen, die Versandart von E-Mails auf den Wert „SMTP“ zu ändern. WarningPHPMailDbis=Wenn Sie wirklich die standardmäßige "PHP"-Methode zum Senden von E-Mails beibehalten möchten, ignorieren Sie einfach diese Warnung oder entfernen Sie sie, indem Sie %shier klicken%s. 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 (für E-Mail %s): %s +WarningPHPMailSPF=Wenn der Domänenname in Ihrer E-Mail-Absenderadresse durch einen SPF-Eintrag geschützt ist (fragen Sie Ihren Domain-Registrar), müssen Sie die folgende IP-Adressen oder Einträge im SPF-Eintrag des DNS Ihrer Domain hinzufügen: %s. +WarningPHPMailSPFDMARC=Wenn der Domain-Name in Ihrer E-Mail-Absenderadresse durch einen anderen DMARC-Eintrag als p=none geschützt ist (fragen Sie Ihren Domain-Registrar), müssen Sie Ihren DMARC-Eintrag entfernen oder ihn auf p=none setzen (z. B. @gmail.com) oder eine andere Sendemethode verwenden. +SPFAndDMARCInformation=SPF und DMARC DNS-Eintrag für E-Mail-Hauptadresse +ActualMailDNSRecordFound=Tatsächlich gefundener %s-Datensatz (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 @@ -944,7 +945,7 @@ Permission776=Spesenabrechnung bezahlen Permission777=Alle Spesenabrechnungen einsehen (auch die von nicht unterstellten Mitarbeitern) Permission778=Spesenabrechnungen aller erstellen/bearbeiten Permission779=Spesenabrechnung exportieren -Permission1001=Lagerbestände einsehen +Permission1001=Warenlager und Lagerbestände einsehen Permission1002=Warenlager erstellen/bearbeiten Permission1003=Warenlager löschen Permission1004=Lagerbewegungen einsehen @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-Filter zum Bereinigen des Werts (COMPANY_DIG DuplicateForbidden=Duplizieren nicht zulässig RemoveSpecialWords=Löschen Sie bestimmte Wörter, wenn Sie Buchungskonten für Kunden oder Lieferanten erstellen RemoveSpecialWordsHelp=Geben Sie die vor der Benennung des Kunden- oder Lieferantenkontos zu entfernenden Wörter an. Ein ";" zwischen jedem Wort verwenden. -GDPRContact=Datenschutzbeauftragte(r) +GDPRContact=Datenschutzbeauftragter (Data Protection Officer DPO, Datenschutz- oder DSGVO-Kontakt, …) GDPRContactDesc=Wenn Sie personenbezogene Daten in Ihrem Informationssystem speichern, können Sie hier den für die Datenschutz-Grundverordnung (DSGVO) zuständigen Ansprechpartner benennen HelpOnTooltip=Anzeigen des Hilfetextes im Tooltip HelpOnTooltipDesc=Fügen Sie hier Text oder einen Übersetzungsschlüssel ein, damit der Text in einer QuickInfo angezeigt wird, wenn dieses Feld in einem Formular angezeigt wird @@ -2218,7 +2219,7 @@ CreateCandidature=Stellen-Bewerbung erstellen FormatZip=Zip MainMenuCode=Menüpunktcode (Hauptmenü) ECMAutoTree=Automatischen ECM-Baum anzeigen -OperationParamDesc=Definieren Sie die Regeln, die verwendet werden sollen, um einige Daten zu extrahieren, oder legen Sie Werte fest, die für den Vorgang verwendet werden sollen.

Beispiel zum Extrahieren eines Firmennamens aus dem E-Mail-Betreff in eine temporäre Variable:
tmp_var=EXTRACT:SUBJECT:Nachricht von Firma ([^\n]*)

Beispiele zum Festlegen der Eigenschaften eines zu erstellenden Objekts:
objproperty1=SET:ein hartcodierter Wert
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:ein Wert (Wert wird nur gesetzt, wenn die Property nicht schon definiert ist)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My Firmenname ist\\s([^\\s]*)

Verwenden Sie jeweils eine neue Zeile, um mehrere Eigenschaften zu extrahieren oder festzulegen. +OperationParamDesc=Definieren Sie die zu verwendenden Regeln zum Extrahieren von Daten oder zum Festlegen von Werten für den Vorgang.

Beispiel zum Extrahieren einer Zeichenfolge aus einem E-Mail Header, Betreff oder Text in eine temporäre Variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My regex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\n]*)

Beispiele zum Festlegen der Eigenschaften eines zu erstellenden Objekts:
objproperty1=SET:ein fest codierter Wert
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:ein Wert (Wert wird nur gesetzt, wenn die Eigenschaft noch nicht definiert ist)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mein Unternehmensname ist\\s([^\\s]*)

Verwenden Sie ein neues Zeile, um mehrere Eigenschaften zu extrahieren oder festzulegen. OpeningHours=Öffnungszeiten OpeningHoursDesc=Geben sie hier die regulären Öffnungszeiten ihres Unternehmens an. ResourceSetup=Konfiguration vom Ressourcenmodul @@ -2264,7 +2265,7 @@ LargerThan=Größer als IfTrackingIDFoundEventWillBeLinked=Beachten Sie, dass das erstellte Ereignis automatisch mit dem bekannten verwandten Objekt verknüpft wird, wenn eine Tracking-ID eines Objekts in einer E-Mail gefunden wird oder wenn die E-Mail eine Antwort auf eine E-Mail ist, die bereits gesammelt und mit einem Objekt verknüpft wurde. WithGMailYouCanCreateADedicatedPassword=Wenn Sie bei einem GMail-Konto die Validierung in zwei Schritten aktiviert haben, wird empfohlen, ein dediziertes zweites Passwort für die Anwendung zu erstellen, anstatt Ihr eigenes Kontopasswort von https://myaccount.google.com/ zu verwenden. EmailCollectorTargetDir=Es kann gewünscht sein, die E-Mail in ein anderes Verzeichnis zu verschieben, wenn sie erfolgreich verarbeitet wurde. Legen Sie hier einfach den Namen des Verzeichnisses fest, um diese Funktion zu verwenden (verwenden Sie KEINE Sonderzeichen im Namen). Beachten Sie, dass Sie auch ein Lese-/Schreib-Login-Konto verwenden müssen. -EmailCollectorLoadThirdPartyHelp=Mit dieser Aktion können Sie den E-Mail-Inhalt verwenden, um einen vorhandenen Geschäftspartner in Ihrer Datenbank zu finden und zu laden (die Suche erfolgt anhand der definierten Eigenschaft unter „id“, „name“, „name_alias“, „email“). Der gefundene (oder erstellte) Geschäftspartner wird für die folgenden Aktionen verwendet, die ihn benötigen.
Wenn Sie beispielsweise einen Geschäftspartner mit einem Namen erstellen möchten, der aus einer Zeichenfolge „Name: gesuchter Name“ im Textkörper extrahiert wird, verwenden Sie die E-Mail des Absenders als E-Mail-Adresse (email). Sie können das Parameterfeld wie folgt festlegen:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Mit dieser Aktion können Sie den Inhalt einer E-Mail nutzen, um einen vorhandenen Geschäftspartner zu finden und aus Ihrer Datenbank zu laden (die Suche erfolgt nach der definierten Eigenschaft unter 'ID', 'Name', 'Name_Alias', 'E-Mail'). Der gefundene (oder erstellte) Geschäftspartner wird für folgende Aktionen verwendet, die ihn benötigen.Zum Beispiel: Wenn Sie ein Geschäftspartner mit einem Namen erstellen möchten, der aus einer Zeichenfolge 'Name: zu suchender Name' im Textkörper extrahiert wird, verwenden Sie die Absender E-Mail als E-Mail-Adresse. Sie können den Parameter für das Feld wie folgt setzen:
'E-Mail=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Warnung: Viele E-Mail-Server (wie Gmail) führen bei der Suche nach einer Zeichenfolge eine vollständige Wortsuche durch und geben kein Ergebnis zurück, wenn die Zeichenfolge nur teilweise in einem Wort gefunden wird. Auch aus diesem Grund wird die Verwendung von Sonderzeichen in einem Suchkriterium ignoriert, sofern sie nicht Teil vorhandener Wörter sind.
Um eine Ausschlusssuche nach einem Wort durchzuführen (E-Mail verwenden, wenn das Wort nicht gefunden wird), können Sie das ! als Zeichen vor dem Wort verwenden (funktioniert möglicherweise auf einigen Mail-Servern nicht). EndPointFor=Endpunkt für %s:%s DeleteEmailCollector=Lösche eMail-Collector @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Name des Geschäftspartners - Alias des Geschäftspartners ALIAS_THIRDPARTY=Alias des Geschäftspartners – Name des Geschäftspartners PDFIn2Languages=Bezeichnungen im PDF in zwei verschiedenen Sprachen anzeigen (diese Funktion funktioniert möglicherweise bei einigen Sprachen nicht) 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 +PDF_USE_A=PDF-Dokumentenformat 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. RssNote=Hinweis: Jede RSS-Feed-Definition enthält ein Widget, das Sie aktivieren müssen, damit es im Dashboard verfügbar ist JumpToBoxes=Wechseln Sie zu Einstellungen -> Widgets @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Weitere Verbindungsparameter hinzufügen (Cookies, Tokens, ...)
Beispiel: token : value token ParamName=Name des Parameters ParamValue=Wert des Parameters +ConfirmDeleteParamOfSocialNetwork=Sind Sie sicher, dass Sie diesen Parameter löschen wollen? +HelpMariaDBToGetPossibleValues=Sie können eine Liste aller möglicher Werte abrufen, indem Sie den folgenden SQL-Befehl ausführen: %s +Captcha=Captcha +CaptchaDesc=Wenn Sie Ihre Anmeldeseite mit einem Captcha schützen möchten, können Sie hier auswählen, welches Sie verwenden möchten +DolibarrStandardCaptcha=Ein natives Captcha, generiert von Dolibarr diff --git a/htdocs/langs/de_DE/commercial.lang b/htdocs/langs/de_DE/commercial.lang index edc420c4c4d..139d685b101 100644 --- a/htdocs/langs/de_DE/commercial.lang +++ b/htdocs/langs/de_DE/commercial.lang @@ -94,3 +94,9 @@ SignatureContractRef=Unterschrift zum Vertrag %s SignatureFichinterRef=Unterzeichnung des Serviceauftrags %s SignatureSociete_ribRef=Unterschrift des SEPA-Mandats %s FeatureOnlineSignDisabled=Onlineunterschrift ist deaktiviert oder das Dokument wurde erstellt, bevor diese Funktion aktiviert wurde +NoSignature=Abgelehnt +SignedSender=Intern signiert +SignedReceiver=Signiert vom Geschäftspartner +SignedReceiverOnline=Online signiert vom Geschäftspartner +SignedAll=Von allen Parteien signiert +SignStatus=Unterschriftenstatus diff --git a/htdocs/langs/de_DE/companies.lang b/htdocs/langs/de_DE/companies.lang index 9f755e2afbe..aff3301bdf4 100644 --- a/htdocs/langs/de_DE/companies.lang +++ b/htdocs/langs/de_DE/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr-Benutzername NoDolibarrAccess=Kein Dolibarr-Zugang ExportDataset_company_1=Geschäftspartner (Firmen/Stiftungen/Natürliche Personen) und ihre Eigenschaften ExportDataset_company_2=Kontakte und ihre Eigenschaften +ExportDataset_company_3=Bankkonten der Geschäftspartner ImportDataset_company_1=Geschäftspartner und ihre Eigenschaften ImportDataset_company_2=Kontakte/Adressen und Attribute ImportDataset_company_3=Bankkonten der Geschäftspartner diff --git a/htdocs/langs/de_DE/datapolicy.lang b/htdocs/langs/de_DE/datapolicy.lang index 7887846f95b..5324f48c77f 100644 --- a/htdocs/langs/de_DE/datapolicy.lang +++ b/htdocs/langs/de_DE/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Datenschutzrichtlinien # Module description 'ModuledatapolicyDesc' Module4100Desc = Modul zur Verwaltung der Datenschutzeinstellungen (DSGVO-Konform) - -# # Administration page -# datapolicySetup = Modul Datenschutzrichtlinien einrichten Deletion = Löschung von Daten datapolicySetupPage = Abhängig von den Gesetzen Ihres Landes (Beispiel Artikel 5 der DSGVO) dürfen personenbezogene Daten nur für einen Zeitraum aufbewahrt werden, der den für die Zwecke erforderlichen Zeitraum, für die sie erhoben wurden, nicht überschreitet, mit Ausnahme von Archivierungszwecken.
Die Löschung erfolgt automatisch nach einer bestimmten Dauer ohne Ereignisse (die Dauer, die Sie unten angegeben haben). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Interessent/Kunde DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Weder Interessent noch Kunde DATAPOLICY_CONTACT_FOURNISSEUR = Lieferant DATAPOLICY_ADHERENT = Mitglied -DATAPOLICY_Tooltip_SETUP = Art des Kontakts – Geben Sie Ihre Auswahl für jede Art an. -DATAPOLICYMail = E-Mail-Einrichtung -DATAPOLICYSUBJECTMAIL = Betreff der E-Mail -DATAPOLICYCONTENTMAIL = Inhalt der E-Mail -DATAPOLICYSUBSITUTION = Sie können die folgenden Variablen in Ihrer E-Mail verwenden (LINKACCEPT ermöglicht es, einen Link zu erstellen, der die Zustimmung der Person aufzeichnet, LINKREFUSED ermöglicht es, die Ablehnung der Person aufzuzeichnen): -DATAPOLICYACCEPT = Nachricht nach einer Zustimmung -DATAPOLICYREFUSE = Nachricht nach einer Ablehnung +DATAPOLICY_Tooltip_SETUP=Zeit ohne Interaktion festlegen, nach deren Ablauf der Datensatz automatisch gelöscht werden soll. SendAgreementText = Sie können eine DSGVO-E-Mail an alle Ihre relevanten Kontakte senden (die noch keine E-Mail erhalten haben und für die Sie nichts über ihre DSGVO-Vereinbarung registriert haben). Verwenden Sie dazu die folgende Schaltfläche. SendAgreement = E-Mails senden AllAgreementSend = Alle E-Mails wurden versendet TXTLINKDATAPOLICYACCEPT = Text für den Link "Zustimmung" TXTLINKDATAPOLICYREFUSE = Text für den Link "Ablehnung" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = DSGVO: Verarbeitung personenbezogener Daten DATAPOLICY_consentement = Einwilligung zur Verarbeitung personenbezogener Daten eingeholt DATAPOLICY_opposition_traitement = Widerspricht der Verarbeitung seiner personenbezogenen Daten DATAPOLICY_opposition_prospection = Widersetzt sich der Verarbeitung seiner personenbezogenen Daten zum Zweck der Kundenakquise - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonymisieren Sie einen Geschäftspartner -DATAPOLICY_POPUP_ANONYME_TEXTE = Sie können diesen Kontakt nicht aus Dolibarr löschen, da es zugeordnete Objekte gibt. In Übereinstimmung mit der DSGVO werden alle diese Daten anonymisiert, um Ihren Verpflichtungen nachzukommen. Möchten Sie fortfahren ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Übertragbarkeit DSGVO -DATAPOLICY_PORTABILITE_TITLE = Export personenbezogener Daten -DATAPOLICY_PORTABILITE_CONFIRMATION = Sie möchten die personenbezogenen Daten dieses Kontakts exportieren. Sind Sie sicher ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Anonymisiert die %s - DATAPOLICY_date = Datum der Zustimmung/Ablehnung DSGVO DATAPOLICY_send = Datum, an dem die Vereinbarungs-E-Mail gesendet wurde -DATAPOLICY_SEND = DSGVO-E-Mail senden MailSent = Die Email wurde verschickt - -# ERROR -=Aufgrund eines technischen Problems konnten wir Ihre Auswahl nicht registrieren. Wir bitten dafür um Entschuldigung. Kontaktieren Sie uns, um uns Ihre Wahl mitzuteilen. NUMBER_MONTH_BEFORE_DELETION = Anzahl der Monate bis zum Löschen diff --git a/htdocs/langs/de_DE/dict.lang b/htdocs/langs/de_DE/dict.lang index d36674790ed..52391316614 100644 --- a/htdocs/langs/de_DE/dict.lang +++ b/htdocs/langs/de_DE/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=CFP Francs CurrencySingXPF=CFP Franc CurrencyCentEUR=Cent CurrencyCentSingEUR=Cent -CurrencyCentINR=Paisa -CurrencyCentSingINR=Paise +CurrencyCentINR=Paise +CurrencyCentSingINR=Paisa CurrencyThousandthSingTND=Tausendstel #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/de_DE/errors.lang b/htdocs/langs/de_DE/errors.lang index c965fb4134b..2bbe0a397b8 100644 --- a/htdocs/langs/de_DE/errors.lang +++ b/htdocs/langs/de_DE/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Benutzer muss der Aufgabe zugeteilt sein, um Zeiten e ErrorTaskAlreadyAssigned=Aufgabe ist dem Benutzer bereits zugeteilt ErrorModuleFileSeemsToHaveAWrongFormat=Das Modul-Paket scheint ein falsches Format zu haben. ErrorModuleFileSeemsToHaveAWrongFormat2=Mindestens ein obligatorische Verzeichnis muss für das Packen des Moduls vorhanden sein: %s oder %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Der Name des Modul-Pakets (%s) entspricht nicht der erwarteten Syntax: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Fehler, doppelter Triggername %s. Schon geladen durch %s. ErrorNoWarehouseDefined=Fehler, keine Warenlager definiert. ErrorBadLinkSourceSetButBadValueForRef=Der Link ist ungültig. Die Quelle für die Zahlung ist definiert, aber die Referenz ist ungültig. diff --git a/htdocs/langs/de_DE/hrm.lang b/htdocs/langs/de_DE/hrm.lang index a11e973c92c..d9813f7425f 100644 --- a/htdocs/langs/de_DE/hrm.lang +++ b/htdocs/langs/de_DE/hrm.lang @@ -1,13 +1,12 @@ # Dolibarr language file - en_US - hrm - # Admin HRM_EMAIL_EXTERNAL_SERVICE=E-Mail, um HRM externen Service zu verhindern Establishments=Einrichtungen Establishment=Einrichtung NewEstablishment=Neue Einrichtung DeleteEstablishment=Einrichtung löschen -ConfirmDeleteEstablishment=Sind Sie sicher, dass Sie diese Einrichtung löschen wollen? +ConfirmDeleteEstablishment=Sind Sie sicher, dass Sie diese Einrichtung löschen wollen? OpenEtablishment=Einrichtung öffnen CloseEtablishment=Einrichtung schliessen # Dictionary @@ -24,7 +23,7 @@ SkillsManagement=Kompetenzmanagement HRM_MAXRANK=Maximale Anzahl von Stufen, um eine Kompetenz einzustufen HRM_DEFAULT_SKILL_DESCRIPTION=Standardbeschreibung der Qualifikationsstufen beim Erstellen einer Kompetenz deplacement=Schicht -DateEval=Bewertungstag +DateEval=Datum der Kompetenzbewertung JobCard=Position – Übersicht NewJobProfile=Neues Stellenprofil JobProfile=Stellenbeschreibung @@ -41,12 +40,12 @@ Skill=Kompetenz Skills=Kompetenzen SkillCard=Kompetenzüberblick EmployeeSkillsUpdated=Mitarbeiterkompetenzen wurden aktualisiert (siehe Registerkarte "Kompetenzen" der Mitarbeiterkarte) -Eval=Bewertung -Evals=Bewertungen -NewEval=Neue Bewertung -ValidateEvaluation=Bewertung freigeben -ConfirmValidateEvaluation=Möchten Sie diese Bewertung mit der Referenz %s wirklich freigeben? -EvaluationCard=Bewertungskarte +Eval=Kompetenzbewertung +Evals=Kompetenzbewertungen +NewEval=Neue Kompetenzbeurteilung +ValidateEvaluation=Kompetenzbewertung freigeben +ConfirmValidateEvaluation=Sind Sie sicher, dass Sie die Kompetenzbewertung mit der Referenz %s freigeben wollen? +EvaluationCard=Kompetenzbewertung RequiredRank=Erforderliche Qualifikationsstufe für das Stellenprofil RequiredRankShort=Erforderliche Stufe PositionsWithThisProfile=Positionen mit diesen Stellenprofilen @@ -73,6 +72,9 @@ AddSkill=Fügen Sie Kompetenzen zum Stellenprofil hinzu RequiredSkills=Erforderliche Kompetenzen für dieses Stellenprofil UserRank=Qualifikationsstufe des Benutzers SkillList=Liste der Kompetenzen +SkillCreated=%s Kompetenzen erstellt +SkillRank=Kompetenzstufe +ShowSkillRank=Kompetenzstufe anzeigen SaveRank=Qualifikationsstufe speichern TypeKnowHow=Praktische Erfahrung TypeHowToBe=Methodenkompetenz @@ -90,8 +92,9 @@ SaveAddSkill = Kompetenz(en) hinzugefügt SaveLevelSkill = Kompetenzstufe gespeichert DeleteSkill = Kompetenz entfernt SkillsExtraFields=Ergänzende Attribute (Kompetenzen) -JobsExtraFields=Ergänzende Attribute (Stellenprofil) -EvaluationsExtraFields=Ergänzende Attribute (Beurteilungen) +JobsExtraFields=Ergänzende Attribute (Stellenprofile) +EvaluationsExtraFields=Ergänzende Attribute (Kompetenzbewertungen) NeedBusinessTravels=Geschäftsreisen erforderlich NoDescription=Keine Beschreibung TheJobProfileHasNoSkillsDefinedFixBefore=Für das ausgewertete Stellenprofil dieses Mitarbeiters ist keine Fähigkeit definiert. Bitte fügen Sie Fähigkeiten hinzu, löschen Sie die Auswertung und starten Sie die diese neu. +PDFStandardHrmEvaluation=Standardvorlage PDF-Dokument für eine Kompetenzbewertung diff --git a/htdocs/langs/de_DE/interventions.lang b/htdocs/langs/de_DE/interventions.lang index cf43bc972bf..56b46554773 100644 --- a/htdocs/langs/de_DE/interventions.lang +++ b/htdocs/langs/de_DE/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Entwurf erstellen InterventionContact=Kontakte/Adressen DeleteIntervention=Serviceauftrag löschen ValidateIntervention=Serviceauftrag freigeben +SignIntervention=Serviceauftrag unterzeichnen +UnsignIntervention=Signatur des Serviceauftrags aufheben ModifyIntervention=Serviceauftrag ändern CloseIntervention=Serviceauftrag schließen DeleteInterventionLine=Position im Serviceauftrag löschen ConfirmDeleteIntervention=Möchten Sie diesen Serviceauftrag wirklich löschen? ConfirmValidateIntervention=Sind Sie sicher, dass Sie den Serviceauftrag %s freigeben wollen? +ConfirmSignIntervention=Sind Sie sicher, dass Sie diesen Serviceauftrag als signiert setzen wollen? +ConfirmUnsignIntervention=Sind Sie sicher, sie wollen, dass Sie die Signatur dieses Serviceauftrags aufheben wollen? ConfirmModifyIntervention=Möchten Sie diesen Serviceauftrag wirklich ändern? ConfirmCloseIntervention=Sind Sie sicher, dass Sie diesen Serviceauftrag schließen wollen? ConfirmDeleteInterventionLine=Möchten Sie diese Serviceauftragsposition wirklich löschen? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Serviceaufträge und Serviceauftragspositi InterventionClassifyBilled=Als 'fakturiert' markieren InterventionClassifyUnBilled=Als 'nicht fakturiert' markieren InterventionClassifyDone=Als "erledigt" markieren +InterventionSign=Auf signiert setzen +InterventionUnsign=Auf nicht signiert setzen SendInterventionRef=Serviceauftrag %s SendInterventionByMail=Serviceauftrag per E-Mail versenden InterventionCreatedInDolibarr=Serviceauftrag %s erstellt InterventionValidatedInDolibarr=Serviceauftrag %s freigegeben +InterventionSignedInDolibarr=Serviceauftrag unterzeichnet +InterventionSignedOnline=Serviceauftrag online signiert +InterventionUnsignedInDolibarr=Serviceauftrag nicht signiert InterventionModifiedInDolibarr=Serviceauftrag %s geändert InterventionClassifiedBilledInDolibarr=Serviceauftrag %s als "in Rechnung gestellt" markiert InterventionClassifiedUnbilledInDolibarr=Serviceauftrag %s als "nicht in Rechnung gestellt" markiert diff --git a/htdocs/langs/de_DE/mails.lang b/htdocs/langs/de_DE/mails.lang index 938afa9e491..011bc21f7d3 100644 --- a/htdocs/langs/de_DE/mails.lang +++ b/htdocs/langs/de_DE/mails.lang @@ -32,8 +32,8 @@ NewMailing=Neue E-Mail-Kampagne NewSMSing=Neue SMS-Massensendung EditMailing=E-Mail-Kampagne bearbeiten ResetMailing=E-Mail erneut senden -ConfirmResetMailingTargetMassaction=Bestätigung, das Massenmailing erneut zu senden -ResetMailingTargetMassaction=Massenmailing erneut senden +ConfirmResetMailingTargetMassaction=Bestätigung der Statuszurücksetzung von Zieladressen +ResetMailingTargetMassaction=Status von Zieladressen zurücksetzen DeleteMailing=E-Mail-Kampagne löschen PreviewMailing=E-Mail-Kampagnen-Vorschau CreateMailing=E-Mail-Kampagne erstellen @@ -193,7 +193,7 @@ NoMoreRecipientToSendTo=Kein weiteren Empfänger, an die die E-Mail gesendet wer EmailOptedOut=Der Inhaber der E-Mail-Adresse hat darum gebeten, ihn nicht mehr über diese Adresse zu kontaktieren EvenUnsubscribe=Auch als Opt-Out markierte E-Mail-Adressen hinzufügen EvenUnsubscribeDesc=Schließen Sie auch E-Mail-Adressen mit Opt-out-Status ein, wenn Sie E-Mail-Empfänger auswählen. Nützlich zum Beispiel für obligatorische Service-E-Mails. -XEmailsDoneYActionsDone=%s E-Mails vorqualifiziert, %s E-Mails erfolgreich verarbeitet (für %s Aufzeichnung(en)/Aktion(en) durchgeführt) +XEmailsDoneYActionsDone=%s E-Mails vorqualifiziert, %s E-Mails erfolgreich verarbeitet (für %s Operationen durchgeführt) YouCanMakeSomeInstructionForEmail=Sie können einige Anweisungen für Ihre E-Mail geben (Beispiel: Bild in E-Mail-Vorlage generieren...) ModelTemplate=E-Mail-Vorlage YouCanChooseAModelForYouMailContent= Sie können eine der Vorlagen auswählen oder eine mit KI generieren. diff --git a/htdocs/langs/de_DE/oauth.lang b/htdocs/langs/de_DE/oauth.lang index 8b4ba5d9823..a7f128d041b 100644 --- a/htdocs/langs/de_DE/oauth.lang +++ b/htdocs/langs/de_DE/oauth.lang @@ -40,7 +40,7 @@ URLOfOAuthServiceEndpointsExample=https://mastodon.example.com URLOfServiceForAuthorization=URL, die vom OAuth-Dienst zur Authentifizierung bereitgestellt wird Scopes=Berechtigungen (Scopes) ScopeUndefined=Berechtigungen (Scopes) undefiniert (siehe vorheriges Tab) -ScopesDesc=Beispiel: einsehen,schreiben mit Mastodom +ScopesDesc=Beispiel: einsehen, schreiben mit Mastodon TokenRawValue=Vollständiges Token (Objekt) AccessToken=Zugangs-Token TokenExpired=Abgelaufen diff --git a/htdocs/langs/de_DE/other.lang b/htdocs/langs/de_DE/other.lang index 503e3cfc4b0..09636dc3658 100644 --- a/htdocs/langs/de_DE/other.lang +++ b/htdocs/langs/de_DE/other.lang @@ -72,6 +72,7 @@ Notify_BILL_SUPPLIER_SENTBYMAIL=Lieferantenrechnung per E-Mail versendet Notify_BILL_SUPPLIER_CANCELED=Lieferantenrechnung storniert Notify_CONTRACT_VALIDATE=Vertrag gültig Notify_FICHINTER_VALIDATE=Serviceauftrag freigegeben +Notify_FICHINTER_MODIFY=Serviceauftrag geändert Notify_FICHINTER_CLOSE=Serviceauftrag geschlossen Notify_FICHINTER_ADD_CONTACT=Kontakt zum Serviceauftrag hinzufügen Notify_FICHINTER_SENTBYMAIL=Serviceauftrag per E-Mail versendet @@ -209,6 +210,7 @@ AmountIn=Betrag in %s NumberOfUnitsMos=Anzahl der Einheiten, die in Fertigungsaufträgen produziert werden sollen EMailTextInterventionAddedContact=Ein neuer Serviceauftrag %s wurde Ihnen zugewiesen. EMailTextInterventionValidated=Serviceauftrag %s wurde freigegeben +EMailTextInterventionModified=Das Serviceauftrag %s wurde geändert. %s EMailTextInterventionClosed=Das Serviceauftrag %s wurde geschlossen. EMailTextInvoiceValidated=Rechnung %s wurde freigegeben. EMailTextInvoicePayed=Rechnung %s wurde bezahlt. diff --git a/htdocs/langs/de_DE/sendings.lang b/htdocs/langs/de_DE/sendings.lang index 77a1852c508..b6467fa9b98 100644 --- a/htdocs/langs/de_DE/sendings.lang +++ b/htdocs/langs/de_DE/sendings.lang @@ -21,7 +21,7 @@ QtyShipped=Liefermenge QtyShippedShort=Gelieferte Menge QtyPreparedOrShipped=Menge vorbereitet oder versendet QtyToShip=Liefermenge -QtyToReceive=Menge hinzugekommen +QtyToReceive=Menge erhalten QtyReceived=Erhaltene Menge QtyInOtherShipments=Menge in anderen Lieferungen KeepToShip=Noch zu versenden @@ -63,6 +63,9 @@ NoProductToShipFoundIntoStock=Im Lager %s sind keine Artikel für den Ver WeightVolShort=Gew./Vol. ValidateOrderFirstBeforeShipment=Sie müssen den Auftrag erst bestätigen bevor Sie eine Lieferung machen können. NoLineGoOnTabToAddSome=Keine Zeile, gehen Sie zum Hinzufügen auf die Registerkarte "%s". +CreateInvoiceForThisCustomerFromSendings=Create Bills +IfValidateInvoiceIsNoSendingStayUnbilled=Wenn die Rechnung nicht freigegeben ist, bleibt die Lieferung im Status 'nicht fakturiert', bis die Rechnung freigegeben wird. +OptionToSetSendingBilledNotEnabled=Option aus dem Modul-Workflow, um eine Lieferung automatisch auf 'fakturiert' zu setzen, wenn die Rechnung freigegeben ist, ist nicht aktiviert. Daher müssen Sie den Status von Lieferungen manuell auf 'fakturiert' setzen, nachdem die Rechnung erstellt wurde. # Sending methods # ModelDocument @@ -71,16 +74,12 @@ DocumentModelStorm=Vollständige Dokumentenvorlage für Zustellbestätigungen, k Error_EXPEDITION_ADDON_NUMBER_NotDefined=Konstante EXPEDITION_ADDON_NUMBER nicht definiert SumOfProductVolumes=Summe der Produktvolumen SumOfProductWeights=Summe der Produktgewichte - # warehouse details DetailWarehouseNumber= Warenlagerdetails -DetailWarehouseFormat= W: %s (Menge: %d) +DetailWarehouseFormat= W: %s (Menge: %d) SHIPPING_DISPLAY_STOCK_ENTRY_DATE=Das letzte Zugangsdatum im Lagerbestand während der Sendungserstellung für Seriennummer oder Batch anzeigen. CreationOptions=Verfügbare Optionen während der Sendungserstellung - -ShipmentDistribution=Lieferung für den Versand - +ShipmentDistribution=Lieferung für den Versand ErrorTooManyCombinationBatchcode=Kein Versand für Position %s, da zu viele Kombinationen aus Lager, Produkt und Chargencode gefunden wurden (%s). ErrorNoCombinationBatchcode=Konnte die Zeile %s nicht speichern, da keine Kombination aus Lager, Produkt und Chargencode (%s, %s, %s) gefunden wurde. - ErrorTooMuchShipped=Die versendete Menge sollte nicht größer sein als die bestellte Menge für Zeile %s diff --git a/htdocs/langs/de_DE/stripe.lang b/htdocs/langs/de_DE/stripe.lang index a8a03c924b6..096e664e1f3 100644 --- a/htdocs/langs/de_DE/stripe.lang +++ b/htdocs/langs/de_DE/stripe.lang @@ -18,11 +18,12 @@ Continue=Nächster ToOfferALinkForOnlinePayment=URL für %s Zahlung ToOfferALinkForOnlinePaymentOnOrder=URL bietet eine %s Online Zahlungsseite für einen Kundenauftrag ToOfferALinkForOnlinePaymentOnInvoice=URL bietet eine %s Online Zahlungsseite für eine Kundenrechnung -ToOfferALinkForOnlinePaymentOnContractLine=URL bietet eine %s Online Zahlungsseite für einen Vertrag +ToOfferALinkForOnlinePaymentOnContractLine=URL bietet eine %s Online Zahlungsseite für einen Vertrag ToOfferALinkForOnlinePaymentOnFreeAmount=URL bietet eine %s Online Zahlungsseite für jeden Betrag ohne existierens Objekt ToOfferALinkForOnlinePaymentOnMemberSubscription=URL bietet eine %s Online Zahlungsseite für ein Mitgliederabo ToOfferALinkForOnlinePaymentOnDonation=URL bietet eine %s Online-Zahlungsseite für die Zahlung einer Spende an -YouCanAddTagOnUrl=Es können URL-Parameter angegeben werden &tag=value für jede dieser URLs (nur erforderlich für Zahlungen, die nicht mit einem Objekt verknüpft sind) kann ein eigener Zahlungskommentar-Tag hinzugefügt werden.
Für eine Zahlungs-URL ohne existierendes Objekt, kann der Parameter auch hinzugefügt werden &noidempotency=1 so the same link with same tag can be used several times (einige Zahlungsmodi beschränken ggf. Zahlungen auf eine je unterschiedlichen Link ohne diesen Parameter) +YouCanAddTagOnUrl=Es können auch den URL-Parameter &tag=value zu jeder dieser URLs hinzugefügt werden (nur obligatorisch für Zahlung, die nicht mit einem Objekt verknüpft ist), um einen eigenen Zahlungs-Kommentar als Schlagwort hinzuzufügen.
Für die URL von Zahlungen ohne vorhandenes Objekt können Sie auch den Parameter &noidempotency=1 hinzufügen, sodass dieselbe Verknüpfung mit demselben Schlagwort mehrmals verwendet werden kann (einige Zahlungsarten beschränken ggf. Zahlungen auf eine je unterschiedlichen Link ohne diesen Parameter) +YouCanEmbedOnWebsite=Wenn Sie die Zahlungsseite in eine Dolibarr-Website integrieren möchten, können Sie den folgenden Parameter nutzen: &ws=website_ref.
Zusätzlich müssen zwei Seiten mit dem Namen paymentok und paymentko erstellt werden, um die Weiterleitung nach einer erfolgreichen oder fehlgeschlagenen Online-Zahlung zu realisieren. SetupStripeToHavePaymentCreatedAutomatically=Richten Sie Stripe mit der URL %s ein, um nach Freigabe durch Stripe eine Zahlung anzulegen. AccountParameter=Account Parameter UsageParameter=Einsatzparameter @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Standort (Adresse) für Stripe-Terminals RequestDirectDebitWithStripe=Lastschrift über Stripe anfordern RequesCreditTransferWithStripe=Anfrage für eine Stripe-Guthabenauszahlung STRIPE_SEPA_DIRECT_DEBIT=Aktivieren Sie die Lastschriftzahlungen über Stripe +STRIPE_KLARNA=Zahlungen mit Klarna aktivieren +STRIPE_BANCONTACT=Zahlungen mit BANCONTACT aktivieren +STRIPE_IDEAL=Zahlungen mit IDEAL aktivieren +STRIPE_GIROPAY=Zahlungen mit GIROPAY aktivieren +STRIPE_SOFORT=Zahlung per SOFORT aktivieren StripeConnect_Mode=Stripe Connect-Modus +ExampleOnlyForBECustomers=Nur für Kunden aus Belgien +ExampleOnlyForDECustomers=Nur für Kunden aus Deutschland +ExampleOnlyForNLCustomers=Nur für Kunden aus den Niederlanden +ExampleOnlyForATBEDEITNLESCustomers=Nur für Kunden aus Österreich, Belgien, Deutschland, Italien, den Niederlanden, Spanien diff --git a/htdocs/langs/de_DE/website.lang b/htdocs/langs/de_DE/website.lang index b2ddbbed458..c6e0d8964dc 100644 --- a/htdocs/langs/de_DE/website.lang +++ b/htdocs/langs/de_DE/website.lang @@ -62,7 +62,7 @@ NoPageYet=Noch keine Seiten YouCanCreatePageOrImportTemplate=Sie können eine neue Seite erstellen oder eine komplette Website-Vorlage importieren SyntaxHelp=Hilfe zu bestimmten Syntaxtipps YouCanEditHtmlSourceckeditor=Sie können den HTML-Quellcode über die Schaltfläche "HTML-Code bearbeiten" im Editor bearbeiten. -YouCanEditHtmlSource=
Sie können PHP-Code in diese Quelle einfügen mit den Tags <?php ?>. Die folgenden globalen Variablen sind verfügbar: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

Sie können auch Inhalte einer anderen Seite/eines anderen Containers mit der folgenden Syntax einbinden:
<?php includeContainer('Alias_des_zu_einzuschließenden_Containers'); ?>

Sie können eine Weiterleitung zu einer anderen Seite/einem anderen Container mit der folgenden Syntax erstellen (Hinweis: vor einer Weiterleitung keinen Inhalt ausgeben):
<?php redirectToContainer('Alias_des_Containers_zu_dem_umgeleitet_werden_soll'); ?>
Sie können auch eine Umleitung mit GET-Parametern vornehmen:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

Um einen Link zu einer anderen Seite hinzuzufügen, verwenden Sie die Syntax:
<a href="Alias_der_zu_verlinkenden_Seite.php">meinLink<a>

Um einen Link zum Herunterladen einer Datei, die im Dokumenten Verzeichnis gespeichert ist, einzuschließen, verwenden Sie den document.php Wrapper:
Beispiel für ein Datei in Dokumente/ECM (muss protokolliert werden), Syntax ist:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
Für ein Datei in Dokumente/Medien (öffnen Sie das Verzeichnis für den öffentlichen Zugriff) lautet die Syntax:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
Für eine Datei, die mit einem Shared Link geteilt wird (freier Zugriff unter Verwendung des Freigabe-Hashes Schlüssel der Datei) lautet die Syntax:
<a href="/document.php?hashp=publicsharekeyoffile">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
Um ein Bild, das im Verzeichnis Dokumente gespeichert ist, einzubinden, verwenden Sie den Wrapper viewimage.php.
Beispiel: Für ein Bild in Dokumente/Medien (konfigurieren Sie das Verzeichnis für den öffentlichen Zugriff), lautet die Syntax:
<img src="/viewimage.php?modulepart=medias &file=[relative_dir/]filename.ext">
YouCanEditHtmlSource2=Für Bilder, die über einen Link geteilt werden (öffentlicher Zugriff über den geteilten Hash-Schlüssel der Datei) gilt folgende Syntax:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource3=Um die URL des Bildes eines PHP Objektes zu erhalten, verwenden Sie
<img src="<?php print getImagePublicURLOfObject($Objekt , 1, "_small") ?>">
diff --git a/htdocs/langs/el_GR/admin.lang b/htdocs/langs/el_GR/admin.lang index ee6b60d0a48..8706978a8f2 100644 --- a/htdocs/langs/el_GR/admin.lang +++ b/htdocs/langs/el_GR/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Η λίστα των τιμών πρέπει να εί 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 είναι απαραίτητα ενα πρωτεύον κλειδί int
- filtersql είναι προϋπόθεση. Πρέπει να χρησιμοποιεί τη σύνταξη USF. Παράδειγμα: (active:=:1) για εμφάνιση μόνο ενεργής τιμής
Μπορείτε επίσης να χρησιμοποιήσετε το $ID$ στο φίλτρο που είναι το τρέχον αναγνωριστικό του τρέχοντος αντικειμένου
εάν θέλετε να φιλτράρετε σε 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 -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 για ένα διαχωριστικό που συμπτύσσεται (συμπτυγμένο από προεπιλογή και στη συνέχεια για νέα περίοδο λειτουργίας, η κατάσταση διατηρείται για κάθε συνεδρία χρήστη) LibraryToBuildPDF=Βιβλιοθήκη ενεργοποίησης δημιουργίας PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s που ακολουθείται από τ ModuleCompanyCodeSupplierDigitaria=%s που ακολουθείται από το κομμένο όνομα προμηθευτή με τον αριθμό χαρακτήρων: %s για τον κωδικό λογιστικής προμηθευτή. Use3StepsApproval=Από προεπιλογή, οι παραγγελίες αγοράς πρέπει να δημιουργούνται και να εγκρίνονται από 2 διαφορετικούς χρήστες (ένα χρήστη για δημιουργία και ένα χρήστη για έγκριση. Λάβετε υπόψη ότι εάν ο χρήστης έχει δικαιώματα δημιουργίας και έγκρισης, ένας χρήστης αρκεί) . Μπορείτε να ζητήσετε με αυτήν την επιλογή να εισάγετε έγκριση ενός τρίτου χρήστη, εάν το ποσό είναι υψηλότερο από μια συγκεκριμένη τιμή (άρα θα χρειαστούν 3 βήματα: 1=επικύρωση, 2=πρώτη έγκριση και 3=δεύτερη έγκριση εάν το ποσό είναι υψηλό).
Αφήστε το κενό εάν μια έγκριση (2 βήματα) είναι αρκετή, Ενώ αν πάντα απαιτείται μια δεύτερη έγκριση (3 βήματα ορίστε την σε πολύ χαμηλή τιμή (0,1). UseDoubleApproval=Χρησιμοποιήστε μια έγκριση 3 βημάτων όταν το ποσό (χωρίς φόρο) είναι υψηλότερο από... -WarningPHPMail=ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η ρύθμιση για την αποστολή email από την εφαρμογή χρησιμοποιεί την προεπιλεγμένη γενική ρύθμιση. Αυτή η επιλογή δεν χρειάζεται τεχνικές γνώσεις για την ολοκλήρωση της ρύθμισης.
Ωστόσο, είναι συχνά καλύτερο να ρυθμίζετε τα εξερχόμενα email να χρησιμοποιούν τον διακομιστή email του παρόχου υπηρεσιών email σας αντί για την προεπιλεγμένη ρύθμιση για διάφορος λόγους: +WarningPHPMail=ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η ρύθμιση για την αποστολή email από την εφαρμογή χρησιμοποιεί την προεπιλεγμένη γενική ρύθμιση (με ονομασία "%s"). Αυτή η επιλογή δεν χρειάζεται τεχνικές γνώσεις για την ολοκλήρωση της ρύθμισης.
Ωστόσο, είναι συχνά καλύτερο για την ρύθμιση των εξερχόμενων email να χρησιμοποιείτε την μέθοδο (με ονομασία "%s") χρησιμοποιώντας τον διακομιστή email του παρόχου υπηρεσιών email σας αντί για την προεπιλεγμένη ρύθμιση για διάφορος λόγους: WarningPHPMailA=- Η χρήση του διακομιστή του παρόχου υπηρεσιών email αυξάνει την αξιοπιστία του email σας, επομένως αυξάνει την πιθανότητα παράδοσης των μηνυμάτων σας χωρίς να επισημαίνονται ως SPAM -WarningPHPMailB=- Ορισμένοι πάροχοι υπηρεσιών ηλεκτρονικού ταχυδρομείου (όπως το Yahoo) δεν σας επιτρέπουν να στείλετε ένα email από άλλο διακομιστή εκτός από τον δικό τους. Η τρέχουσα ρύθμισή σας, χρησιμοποιεί τον διακομιστή της εφαρμογής για την αποστολή email και όχι τον διακομιστή του παρόχου email σας, επομένως ορισμένοι παραλήπτες (αυτοί που είναι συμβατοί με το περιοριστικό πρωτόκολλο DMARC), θα ρωτήσουν τον πάροχο email σας εάν μπορούν να δεχτούν το email σας και ορισμένοι πάροχοι email (όπως το Yahoo) μπορεί να απαντήσουν "όχι" επειδή ο διακομιστής δεν είναι δικός τους, επομένως καποια από τα αποσταλμένα email σας ενδέχεται να μην γίνονται δεκτά για παράδοση (προσέξτε επίσης το όριο αποστολής του παρόχου email σας). +WarningPHPMailB=- Εάν το domain του email σας (το τμήμα mymaildomain.com απο το myname@mymaildomain.com) προστατεύεται από μια SPF + DMARC εγγραφή , το email σας μπορεί να επισημανθεί ως SPAM επειδή ο κανόνας DMARC που εχει ορίστει στη DNS zone του domain του αποστολέα (mymaildomain.com) δεν επιτρέπει την αποστολή ως γενικός αποστολέας. Σε μια τέτοια περίπτωση, πρέπει να απενεργοποιήσετε το DMARC για το domain (ή να το ορίσετε σε p=none όπως γίνεται από το @gmail.com) ή, καλύτερα, εάν έχετε τις τεχνικές γνώσεις, να χρησιμοποιήσετε την άλλη μέθοδο για να στείλετε email χρησιμοποιώντας τον SMTP διακομιστή του δικού σας παρόχου email. WarningPHPMailC=- Η χρήση του διακομιστή SMTP του δικού σας Παρόχου Υπηρεσιών Email για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου είναι επίσης χρήσιμη καθώς όλα τα μηνύματα ηλεκτρονικού ταχυδρομείου που αποστέλλονται από την εφαρμογή θα αποθηκεύονται και στον κατάλογο "Απεσταλμένα" του γραμματοκιβωτίου σας. WarningPHPMailD=Επομένως, συνιστάται η αλλαγή της μεθόδου αποστολής μηνυμάτων ηλεκτρονικού ταχυδρομείου στην τιμή "SMTP". WarningPHPMailDbis=Εάν θέλετε πραγματικά να διατηρήσετε την προεπιλεγμένη μέθοδο "PHP" για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου, απλώς αγνοήστε αυτήν την προειδοποίηση ή αφαιρέστε την %sκάνοντας κλικ εδώ%s. 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 (για email %s): %s +WarningPHPMailSPF=Εάν το domain name στη διεύθυνση email σας προστατεύεται από μια εγγραφή SPF (ρωτήστε τον καταχωρητή του domain name σας), πρέπει να προσθέσετε τις ακόλουθες διευθύνσεις IP ή καταχώριση στην εγγραφή SPF του DNS του domain σας: %s. +WarningPHPMailSPFDMARC=Εάν το domain name στη διεύθυνση email σας προστατεύεται από μια εγγραφή DMARC διαφορετική από το p=none (ρωτήστε τον καταχωρητή του domain name σας), πρέπει να αφαιρέσετε την εγγραφή DMARC ή να την ορίσετε σε p=none όπως το @gmail.com) ή χρησιμοποιήστε άλλη μέθοδο αποστολής. +SPFAndDMARCInformation=SPF και DMARC DNS εγγραφή για κύριες διευθύνσεις email +ActualMailDNSRecordFound=Βρέθηκε πραγματική εγγραφή %s (για το email %s) : %s ClickToShowDescription=Κάντε κλικ για να εμφανιστεί η περιγραφή DependsOn=Αυτή η ενότητα εξαρτάται από τις ενότητες RequiredBy=Αυτή η ενότητα απαιτείται από τις ενότητες @@ -590,8 +591,8 @@ Module52Name=Αποθέματα Module52Desc=Διαχείριση αποθεμάτων (παρακολούθηση κίνησης αποθεμάτων και απογραφής) Module53Name=Υπηρεσίες Module53Desc=Διαχείριση Υπηρεσιών -Module54Name=Συμβόλαια / Συνδρομές -Module54Desc=Διαχείριση συμβολαίων (υπηρεσίες ή επαναλαμβανόμενες συνδρομές) +Module54Name=Συμβάσεις / Συνδρομές +Module54Desc=Διαχείριση συμβάσεων (υπηρεσίες ή επαναλαμβανόμενες συνδρομές) Module55Name=Barcodes Module55Desc=Διαχείριση γραμμωτού κώδικα(Barcode) ή κώδικα QR Module56Name=Πληρωμή μέσω μεταφοράς πίστωσης @@ -813,12 +814,12 @@ Permission151=Ανάγνωση εντολών πληρωμής άμεσης χρ Permission152=Δημιουργία / τροποποίηση εντολών πληρωμής άμεσης χρέωσης Permission153=Αποστολή / Αποστολή εντολών πληρωμής άμεσης χρέωσης Permission154=Πιστωτικές εγγραφές / απορρίψεις εντολών πληρωμής άμεσης χρέωσης -Permission161=Ανάγνωση συμβολαίων/συνδρομών -Permission162=Δημιουργία/τροποποίηση συμβολαίων/συνδρομών -Permission163=Ενεργοποίηση υπηρεσίας/συνδρομής ενός συμβολαίου -Permission164=Απενεργοποίηση υπηρεσίας/συνδρομής ενός συμβολαίου -Permission165=Διαγραφή συμβολαίων/συνδρομών -Permission167=Εξαγωγή συμβολαίων +Permission161=Ανάγνωση συμβάσεων/συνδρομών +Permission162=Δημιουργία/τροποποίηση συμβάσεων/συνδρομών +Permission163=Ενεργοποίηση υπηρεσίας/συνδρομής μιας σύμβασης +Permission164=Απενεργοποίηση υπηρεσίας/συνδρομής μιας σύμβασης +Permission165=Διαγραφή συμβάσεων/συνδρομών +Permission167=Εξαγωγή συμβάσεων Permission171=Ανάγνωση ταξιδίων και εξόδων (δικά σας και των υφισταμένων σας) Permission172=Δημιουργία/τροποποίηση ταξιδιών και εξόδων Permission173=Διαγραφή ταξιδιών και εξόδων @@ -867,7 +868,7 @@ Permission255=Τροποποίηση κωδικού πρόσβασης άλλω Permission256=Διαγραφή ή απενεργοποίηση άλλων χρήστων Permission262=Επέκταση της πρόσβασης σε όλα τα τρίτα μέρη ΚΑΙ τα αντικείμενά τους (όχι μόνο τρίτα μέρη για τα οποία ο χρήστης είναι αντιπρόσωπος πωλήσεων). Permission262b=Δεν ισχύει για εξωτερικούς χρήστες (περιορίζονται πάντα στους εαυτούς τους για προσφορές, παραγγελίες, τιμολόγια, συμβάσεις κ.λπ.). -Permission262c=Δεν ισχύει για έργα (μόνο σε κανόνες για τις άδειες έργων, την προβολή και τα θέματα ανάθεσης). +Permission262c=Δεν ισχύει για έργα (μόνο σε κανόνες για τις άδειες έργων, την προβολή και αναθέσεις χρηστών). Permission263=Επέκταση της πρόσβασης σε όλα τα τρίτα μέρη ΧΩΡΙΣ τα αντικείμενά τους (όχι μόνο τρίτα μέρη για τα οποία ο χρήστης είναι αντιπρόσωπος πωλήσεων).
Δεν είναι αποτελεσματικό για εξωτερικούς χρήστες (περιορίζονται πάντα στους εαυτούς τους για προτάσεις, παραγγελίες, τιμολόγια, συμβάσεις κ.λπ.).
Δεν ισχύει για έργα (μόνο σε κανόνες για τις άδειες έργων, την προβολή και τα θέματα ανάθεσης). Permission271=Ανάγνωση CA Permission272=Ανάγνωση τιμολογίων @@ -883,7 +884,7 @@ Permission301=Δημιουργια PDF καταστάσεων με barcodes Permission304=Δημιουργία / τροποποίηση barcodes Permission305=Διαγραφή barcodes Permission311=Ανάγνωση υπηρεσιών -Permission312=Εκχώρηση υπηρεσίας/συνδρομής σε συμβόλαιο +Permission312=Εκχώρηση υπηρεσίας/συνδρομής σε σύμβαση Permission331=Ανάγνωση σελιδοδεικτών Permission332=Δημιουργία / τροποποίηση σελιδοδεικτών Permission333=Διαγραφή σελιδοδεικτών @@ -944,7 +945,7 @@ Permission776=Πληρωμή αναφοράς εξόδων Permission777=Ανάγνωση όλων των αναφορών εξόδων (ακόμη και εκείνων των χρηστών που δεν είναι υφιστάμενοι) Permission778=Δημιουργία/τροποποίηση αναφορών εξόδων για όλους Permission779=Εξαγωγή αναφοράς εξόδων -Permission1001=Ανάγνωση αποθεμάτων +Permission1001=Ανάγνωση αποθηκών και αποθεμάτων Permission1002=Δημιουργία/τροποποίηση αποθηκών Permission1003=Διαγραφή αποθηκών Permission1004=Ανάγνωση κινήσεων αποθεμάτων @@ -1996,7 +1997,7 @@ YouMayFindNotificationsFeaturesIntoModuleNotification=Μπορείτε να βρ TemplatesForNotifications=Πρότυπα email για ειδοποιήσεις ListOfNotificationsPerUser=Λίστα αυτόματων ειδοποιήσεων ανά χρήστη* ListOfNotificationsPerUserOrContact=Λίστα πιθανών αυτόματων ειδοποιήσεων (σε επιχειρηματικό συμβάν) διαθέσιμων ανά χρήστη * ή ανά επαφή ** -ListOfFixedNotifications=Global recipients emails for automatic email notifications +ListOfFixedNotifications=Email παραληπτών για αυτόματες ειδοποιήσεις GoOntoUserCardToAddMore=Μεταβείτε στην καρτέλα "Ειδοποιήσεις" ενός χρήστη για να προσθέσετε ή να αφαιρέσετε ειδοποιήσεις για τους χρήστες GoOntoContactCardToAddMore=Μεταβείτε στην καρτέλα "Ειδοποιήσεις" τρίτου μέρους για να προσθέσετε ή να καταργήσετε ειδοποιήσεις για επαφές / διευθύνσεις Threshold=Κατώφλι @@ -2061,7 +2062,7 @@ MailToSendIntervention=Παρεμβάσεις MailToSendSupplierRequestForQuotation=Αίτημα προσφοράς MailToSendSupplierOrder=Εντολές αγοράς MailToSendSupplierInvoice=Τιμολόγια προμηθευτή -MailToSendContract=Συμβόλαια +MailToSendContract=Συμβάσεις MailToSendReception=Παραλαβές MailToExpenseReport=Αναφορές εξόδων MailToThirdparty=Τρίτα μέρη @@ -2218,7 +2219,7 @@ CreateCandidature=Δημιουργία αίτησης εργασίας FormatZip=Zip MainMenuCode=Κωδικός εισόδου μενού (mainmenu) ECMAutoTree=Εμφάνιση αυτόματης δομής ECM -OperationParamDesc=Καθορίστε τους κανόνες που θα χρησιμοποιηθούν για την εξαγωγή ορισμένων δεδομένων ή ορίστε τιμές που θα χρησιμοποιηθούν για την λειτουργία.

Παράδειγμα εξαγωγής ονόματος εταιρείας από το θέμα του email σε μια προσωρινή μεταβλητή:
tmp_var=EXTRACT:SUBJECT:Μήνυμα από την εταιρεία ([^\n]*)

Παραδείγματα ρύθμισης ιδιοτήτων ενός αντικειμένου προς δημιουργία:
objproperty1=SET:μια προκαθορισμενη τιμή
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:μια τιμή (αρκεί να μην έχει ήδη οριστεί η ιδιότητα)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY: το όνομα της εταιρείας είναι\\s([^\\s]*)

Χρησιμοποιήστε ένα new line για την εξαγωγή η τον ορισμό αρκετών ιδιοτήτων. +OperationParamDesc=Καθορίστε τους κανόνες που θα χρησιμοποιηθούν για την εξαγωγή ορισμένων δεδομένων ή τον ορισμό τιμών που θα χρησιμοποιηθούν για την λειτουργία.

Παράδειγμα εξαγωγής ενός string από την κεφαλίδα ,το θέμα η το σώμα του email σε μια προσωρινή μεταβλητή:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\n]*)

Παραδείγματα ρύθμισης ιδιοτήτων ενός αντικειμένου προς δημιουργία:
objproperty1=SET:μια προκαθορισμένη τιμή
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:μια τιμή (αρκεί να μην έχει ήδη οριστεί η ιδιότητα)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY: το όνομα της εταιρείας είναι\\s([^\\s]*)

Χρησιμοποιήστε ένα new line για την εξαγωγή η τον ορισμό αρκετών ιδιοτήτων. OpeningHours=Ώρες λειτουργίας OpeningHoursDesc=Εισάγετε εδώ το κανονικό ωράριο λειτουργίας της εταιρείας σας. ResourceSetup=Διαμόρφωση της ενότητας πόρων @@ -2264,7 +2265,7 @@ LargerThan=Μεγαλύτερη από IfTrackingIDFoundEventWillBeLinked=Λάβετε υπόψη ότι εάν ένα αναγνωριστικό παρακολούθησης ενός αντικειμένου βρεθεί στο ηλεκτρονικό ταχυδρομείο ή εάν το μήνυμα ηλεκτρονικού ταχυδρομείου είναι απάντηση σε ένα email που έχει ήδη παραληφθεί και συνδέεται με ένα αντικείμενο, το συμβάν που δημιουργήθηκε θα συνδεθεί αυτόματα με το γνωστό σχετικό αντικείμενο. WithGMailYouCanCreateADedicatedPassword=Με έναν λογαριασμό GMail, εάν ενεργοποιήσατε την επικύρωση 2 βημάτων, συνιστάται να δημιουργήσετε έναν αποκλειστικό δεύτερο κωδικό πρόσβασης για την εφαρμογή αντί να χρησιμοποιήσετε τον κωδικό πρόσβασης του δικού σας λογαριασμού από τη διεύθυνση https://myaccount.google.com/. EmailCollectorTargetDir=Μπορεί να είναι επιθυμητή συμπεριφορά να μετακινήσετε το email σε άλλη ετικέτα/κατάλογο όταν έχει επιτυχώς υποβληθεί σε επεξεργασία. Ορίστε το όνομα του καταλόγου εδώ για να χρησιμοποιήσετε αυτήν τη δυνατότητα (ΜΗΝ χρησιμοποιείτε ειδικούς χαρακτήρες στο όνομα). Σημειώστε ότι πρέπει επίσης να χρησιμοποιήσετε έναν λογαριασμό σύνδεσης με δικαιώματα ανάγνωσης/εγγραφής. -EmailCollectorLoadThirdPartyHelp=Μπορείτε να χρησιμοποιήσετε αυτήν την ενέργεια για να χρησιμοποιήσετε το περιεχόμενο του email για να βρείτε και να φορτώσετε ένα υπάρχον τρίτο μέρος στη βάση δεδομένων σας (η αναζήτηση θα γίνει στην καθορισμένη ιδιότητα μεταξύ των "id", "name", "name_alias", "email"). Το τρίτο μέρος που βρέθηκε (ή δημιουργήθηκε) θα χρησιμοποιηθεί για τις ακόλουθες ενέργειες που το χρειάζονται.
Για παράδειγμα, εάν θέλετε να δημιουργήσετε ένα τρίτο μέρος με ένα όνομα που έχει εξαχθεί από μια συμβολοσειρά " Όνομα: όνομα προς εύρεση" που υπαρχει στο email, χρησιμοποιήστε το email του αποστολέα ως email, μπορείτε να ορίσετε το πεδίο παραμέτρου ως εξής:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Μπορείτε να χρησιμοποιήσετε αυτήν την ενέργεια για να χρησιμοποιήσετε το περιεχόμενο του email για να βρείτε και να φορτώσετε ένα υπάρχον τρίτο μέρος στη βάση δεδομένων σας (η αναζήτηση θα γίνει στην καθορισμένη ιδιότητα μεταξύ των "id", "name", "name_alias", "email"). Το τρίτο μέρος που βρέθηκε (ή δημιουργήθηκε) θα χρησιμοποιηθεί για τις ακόλουθες ενέργειες που το χρειάζονται.
Για παράδειγμα, εάν θέλετε να δημιουργήσετε ένα τρίτο μέρος με ένα όνομα που έχει εξαχθεί από μια συμβολοσειρά " Όνομα: όνομα προς εύρεση" που υπαρχει στο email, χρησιμοποιήστε το email του αποστολέα ως email, μπορείτε να ορίσετε το πεδίο παραμέτρου ως εξής:
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Προειδοποίηση: πολλοί διακομιστές ηλεκτρονικού ταχυδρομείου (όπως το Gmail) πραγματοποιούν αναζητήσεις ολόκληρων λέξεων κατά την αναζήτηση μιας συμβολοσειράς και δεν θα επιστρέψουν αποτέλεσμα εάν η συμβολοσειρά βρεθεί μόνο εν μέρει σε μια λέξη. Για αυτόν τον λόγο, επίσης, η χρήση ειδικών χαρακτήρων σε μια αναζήτηση θα αγνοηθεί εάν δεν αποτελούν μέρος των υπαρχουσών λέξεων.
Για να κάνετε αναζήτηση εξαίρεσης μιας λέξης (email εάν δεν βρεθεί η λέξη), μπορείτε να χρησιμοποιήσετε τον χαρακτήρα ! πριν από τη λέξη (ενδέχεται να μην λειτουργεί σε ορισμένους διακομιστές αλληλογραφίας). EndPointFor=Σημείο τερματισμού για %s: %s DeleteEmailCollector=Διαγραφή συλλέκτη email @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Όνομα τρίτου μέρους - Διακριτικός ALIAS_THIRDPARTY=Διακριτικός τίτλος τρίτου μέρους - Όνομα τρίτου μέρους PDFIn2Languages=Εμφάνιση ετικετών σε 2 διαφορετικές γλώσσες στα PDF PDF_USE_ALSO_LANGUAGE_CODE=Εάν θέλετε να έχετε κείμενα σε 2 διαφορετικές γλώσσες στο ίδιο PDF, πρέπει να ορίσετε εδώ αυτή τη δεύτερη γλώσσα ώστε το PDF που θα δημιουργηθεί να περιέχει 2 διαφορετικές γλώσσες στην ίδια σελίδα ( μόνο λίγα πρότυπα PDF το υποστηρίζουν). Διατηρήστε το κενό για 1 γλώσσα ανά PDF. -PDF_USE_A=Δημιουργήστε έγγραφα PDF με μορφή PDF/A αντί για την προεπιλεγμένη μορφή PDF +PDF_USE_A=Μορφή εγγράφων PDF FafaIconSocialNetworksDesc=Εισαγάγετε εδώ τον κωδικό ενός εικονιδίου FontAwesome. Εάν δεν γνωρίζετε τι είναι το FontAwesome, μπορείτε να χρησιμοποιήσετε τη γενική τιμή fa-address-book. RssNote=Σημείωση: Κάθε ορισμός ροής RSS παρέχει ένα γραφικό στοιχείο που πρέπει να ενεργοποιήσετε για να το έχετε διαθέσιμο στον πίνακα εργαλείων JumpToBoxes=Μετάβαση σε Ρυθμίσεις -> Γραφικά στοιχεία @@ -2345,7 +2346,7 @@ DashboardDisableBlockAgenda=Απενεργοποίηση του εικονιδί DashboardDisableBlockProject=Απενεργοποίηση του εικονίδιου για έργα DashboardDisableBlockCustomer=Απενεργοποίηση του εικονιδίου για πελάτες DashboardDisableBlockSupplier=Απενεργοποίηση του εικονιδίου για προμηθευτές -DashboardDisableBlockContract=Απενεργοποίηση του εικονιδίου για συμβόλαια +DashboardDisableBlockContract=Απενεργοποίηση του εικονιδίου για συμβάσεις DashboardDisableBlockTicket=Απενεργοποίηση του εικονιδίου για tickets DashboardDisableBlockBank=Απενεργοποίηση του εικονιδίου για τράπεζες DashboardDisableBlockAdherent=Απενεργοποίηση του εικονιδίου για συνδρομές @@ -2553,3 +2554,8 @@ MenuDict=Λεξικό AddMoreParams=Προσθήκη περισσοτέρων παραμέτρων σύνδεσης (cookies, tokens, ...)
Παράδειγμα: token : value token ParamName=Όνομα παραμέτρου ParamValue=Τιμή παραμέτρου +ConfirmDeleteParamOfSocialNetwork=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή τη παραμέτρο ; +HelpMariaDBToGetPossibleValues=Μπορείτε να λάβετε μια λίστα με πιθανές τιμές εκτελώντας την ακόλουθη εντολή SQL: %s +Captcha=Captcha +CaptchaDesc=Εάν θέλετε να προστατεύσετε τη σελίδα σύνδεσής με ένα Captcha, μπορείτε να επιλέξετε ποιo να χρησιμοποιήσετε εδώ +DolibarrStandardCaptcha=Ένα captcha που δημιουργήθηκε από τον Dolibarr diff --git a/htdocs/langs/el_GR/commercial.lang b/htdocs/langs/el_GR/commercial.lang index 41f7c49c839..586eb0e1dd2 100644 --- a/htdocs/langs/el_GR/commercial.lang +++ b/htdocs/langs/el_GR/commercial.lang @@ -94,3 +94,9 @@ SignatureContractRef=Υπογραφή σύμβασης %s SignatureFichinterRef=Υπογραφή παρέμβασης %s SignatureSociete_ribRef=Υπογραφή της εντολής SEPA %s FeatureOnlineSignDisabled=Η δυνατότητα για ηλεκτρονική υπογραφή απενεργοποιήθηκε ή δημιουργήθηκε έγγραφο πριν από την ενεργοποίηση της δυνατότητας +NoSignature=Δεν έχει υπογραφεί +SignedSender=Υπογεγραμμένο εσωτερικά +SignedReceiver=Υπογεγραμμένο από τρίτο μέρος +SignedReceiverOnline=Υπογεγραμμένο από τρίτο μέρος online +SignedAll=Υπογεγραμμένο από όλα τα μέρη +SignStatus=Κατάσταση υπογραφής diff --git a/htdocs/langs/el_GR/companies.lang b/htdocs/langs/el_GR/companies.lang index 812133dc3e2..9de065effa9 100644 --- a/htdocs/langs/el_GR/companies.lang +++ b/htdocs/langs/el_GR/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Είσοδος Dolibarr NoDolibarrAccess=Χωρίς πρόσβαση στο Dolibarr ExportDataset_company_1=Πελάτες/Προμηθευτές (εταιρείες / ιδρύματα / φυσικά πρόσωπα) και οι ιδιότητές τους ExportDataset_company_2=Επαφές και οι ιδιότητες τους +ExportDataset_company_3=Τραπεζικοί λογαριασμοί Πελατών/Προμηθευτών ImportDataset_company_1=Πελάτες/Προμηθευτές και οι ιδιότητές τους ImportDataset_company_2=Πρόσθετες επαφές/διευθύνσεις και χαρακτηριστικά Πελατών/Προμηθευτών ImportDataset_company_3=Τραπεζικοί λογαριασμοί Πελατών/Προμηθευτών diff --git a/htdocs/langs/el_GR/datapolicy.lang b/htdocs/langs/el_GR/datapolicy.lang index 4030c733368..212cc1f7c0c 100644 --- a/htdocs/langs/el_GR/datapolicy.lang +++ b/htdocs/langs/el_GR/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,13 +15,10 @@ Module4100Name = Πολιτική Προστασίας Δεδομένων # Module description 'ModuledatapolicyDesc' Module4100Desc = Ενότητα διαχείρισης προστασίας δεδομένων (Συμμόρφωση με τον GDPR) - -# # Administration page -# datapolicySetup = Ρύθμιση Ενότητας Πολιτικής Προστασίας Δεδομένων Deletion = Διαγραφή δεδομένων -datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). +datapolicySetupPage = Σύμφωνα και με τη νομοθεσία της χώρας μας (Παράδειγμα Άρθρο 5 του GDPR), τα προσωπικά δεδομένα πρέπει να διατηρούνται για περίοδο που δεν υπερβαίνει την απαραίτητη για τους σκοπούς για τους οποίους συλλέχθηκαν, εκτός από αρχειακούς σκοπούς.
Η διαγραφή θα γίνει αυτόματα μετά από μια ορισμένη περίοδο χωρίς συμβάν (το χρονικό διάστημα που θα έχετε υποδείξει παρακάτω). NB_MONTHS = %s μήνες ONE_YEAR = 1 χρόνος NB_YEARS = %s χρόνια @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Προοπτική/Πελάτης DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ούτε προοπτική/Ούτε πελάτης DATAPOLICY_CONTACT_FOURNISSEUR = Προμηθευτής DATAPOLICY_ADHERENT = Μέλος -DATAPOLICY_Tooltip_SETUP = Τύπος επαφής - Υποδείξτε τις επιλογές σας για κάθε τύπο. -DATAPOLICYMail = Ρύθμιση email -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Το περιεχόμενο του email -DATAPOLICYSUBSITUTION = Μπορείτε να χρησιμοποιήσετε τις ακόλουθες μεταβλητές στο email σας (το LINKACCEPT επιτρέπει τη δημιουργία ενός συνδέσμου που καταγράφει τη συγκατάθεση του ατόμου, το LINKREFUSED καθιστά δυνατή την καταγραφή της άρνησης συγκατάθεσης του ατόμου): -DATAPOLICYACCEPT = Μήνυμα μετά από συγκατάθεση -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Μπορείτε να στείλετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου GDPR σε όλες τις σχετικές επαφές σας (που δεν έχουν λάβει ακόμη email και για τις οποίες δεν έχετε καταχωρίσει τίποτα σχετικά με τη συμφωνία GDPR τους). Για να το κάνετε αυτό, χρησιμοποιήστε το παρακάτω κουμπί. SendAgreement = Αποστολή email AllAgreementSend = Όλα τα email έχουν σταλεί TXTLINKDATAPOLICYACCEPT = Κείμενο για τον σύνδεσμο "συγκατάθεση" -TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# +TXTLINKDATAPOLICYREFUSE = Κείμενο για τον σύνδεσμο "άρνηση συγκατάθεσης" # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR : Επεξεργασία προσωπικών δεδομένων DATAPOLICY_consentement = Ελήφθη συγκατάθεση για την επεξεργασία προσωπικών δεδομένων -DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Ανωνυμοποίηση τρίτου μέρους -DATAPOLICY_POPUP_ANONYME_TEXTE = Δεν μπορείτε να διαγράψετε αυτήν την επαφή από το Dolibarr επειδή υπάρχουν σχετικά στοιχεία. Σύμφωνα με τον GDPR, είστε υποχρεωμένοι να ανωνυμοποιήσετε τα δεδομένα. Θα θέλατε να συνεχίσετε; - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Φορητότητα GDPR -DATAPOLICY_PORTABILITE_TITLE = Εξαγωγή προσωπικών δεδομένων -DATAPOLICY_PORTABILITE_CONFIRMATION = Είστε σίγουροι ότι θέλετε να εξαγάγετε τα προσωπικά δεδομένα αυτής της επαφής; - -# +DATAPOLICY_opposition_traitement = Δεν δίνει συγκατάθεση για την επεξεργασία των προσωπικών δεδομένων +DATAPOLICY_opposition_prospection = Δεν δίνει συγκατάθεση για την επεξεργασία των προσωπικών δεδομένων για χρήση ως προοπτική # Notes added during an anonymization -# -ANONYMISER_AT = Ανωνυμοποιήθηκε η %s - -DATAPOLICY_date = Date of agreement/disagreement GDPR -DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Αποστολή email GDPR +DATAPOLICY_date = Ημερομηνία συγκατάθεσης/μη συγκατάθεσης GDPR +DATAPOLICY_send = Ημερομηνία αποστολής email συγκατάθεσης MailSent = Το E-mail έχει σταλεί - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion +NUMBER_MONTH_BEFORE_DELETION = Αριθμός μηνών πριν από τη διαγραφή diff --git a/htdocs/langs/el_GR/dict.lang b/htdocs/langs/el_GR/dict.lang index a86b28acb2f..020e56d0c79 100644 --- a/htdocs/langs/el_GR/dict.lang +++ b/htdocs/langs/el_GR/dict.lang @@ -158,7 +158,7 @@ CountryMX=Μεξικό CountryFM=Μικρονησία CountryMD=Μολδαβία CountryMN=Μογγολία -CountryMS=Μονσεράτ +CountryMS=Μοντσερά CountryMZ=Μοζαμβίκη CountryMM=Μιανμάρ (Βιρμανία) CountryNA=Ναμίμπια @@ -295,8 +295,8 @@ CurrencyXPF=Φράγκα CFP CurrencySingXPF=Φράγκο CFP CurrencyCentEUR=σεντς CurrencyCentSingEUR=λεπτά -CurrencyCentINR=πάισα -CurrencyCentSingINR=πάισε +CurrencyCentINR=πάισε +CurrencyCentSingINR=πάισα CurrencyThousandthSingTND=χιλιάδες #### Input reasons ##### DemandReasonTypeSRC_INTE=Διαδίκτυο diff --git a/htdocs/langs/el_GR/errors.lang b/htdocs/langs/el_GR/errors.lang index c855a029d2d..1f406f6c849 100644 --- a/htdocs/langs/el_GR/errors.lang +++ b/htdocs/langs/el_GR/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Ο χρήστης πρέπει να ανατεθεί ErrorTaskAlreadyAssigned=Η εργασία έχει ήδη ανατεθεί στον χρήστη ErrorModuleFileSeemsToHaveAWrongFormat=Το πακέτο της ενότητας φαίνεται να έχει λάθος μορφή. ErrorModuleFileSeemsToHaveAWrongFormat2=Τουλάχιστον ένας υποχρεωτικός κατάλογος πρέπει να υπάρχει στο zip της ενότητας: %s ή %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Το όνομα του πακέτου της ενότητας ( %s ) δεν ταιριάζει με την αναμενόμενη σύνταξη ονόματος: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=Το όνομα αρχείου του πακέτου ενότητα (%s) δεν ταιριάζει με την αναμενόμενη σύνταξη ονόματος: %s ErrorDuplicateTrigger=Σφάλμα, διπλότυπο όνομα trigger %s. Έχει ήδη φορτωθεί από το %s. ErrorNoWarehouseDefined=Σφάλμα, δεν έχουν καθοριστεί αποθήκες. ErrorBadLinkSourceSetButBadValueForRef=Ο σύνδεσμος που χρησιμοποιείτε δεν είναι έγκυρος. Ορίζεται μια «πηγή» για πληρωμή, αλλά η τιμή για την «αναφορά» δεν είναι έγκυρη. diff --git a/htdocs/langs/el_GR/hrm.lang b/htdocs/langs/el_GR/hrm.lang index 0aefc4846f5..ae87f72ca6f 100644 --- a/htdocs/langs/el_GR/hrm.lang +++ b/htdocs/langs/el_GR/hrm.lang @@ -1,6 +1,5 @@ # Dolibarr language file - en_US - hrm - # Admin HRM_EMAIL_EXTERNAL_SERVICE=Email για την αποτροπή εξωτερικής υπηρεσίας HRM Establishments=Επιχειρήσεις @@ -24,7 +23,7 @@ SkillsManagement=Διαχείριση δεξιοτήτων HRM_MAXRANK=Μέγιστος αριθμός επιπέδων για την κατάταξη μιας δεξιότητας HRM_DEFAULT_SKILL_DESCRIPTION=Προεπιλεγμένη περιγραφή των βαθμών όταν δημιουργείται η ικανότητα deplacement=Ωράριο -DateEval=Ημερομηνία αξιολόγησης +DateEval=Ημερομηνία αξιολόγησης ικανοτήτων JobCard=Καρτέλα θέσεων εργασίας NewJobProfile=Νέο προφίλ εργασίας JobProfile=Περιγραφή εργασίας @@ -41,12 +40,12 @@ Skill=Δεξιότητα Skills=Δεξιότητες SkillCard=Καρτέλα δεξιοτήτων EmployeeSkillsUpdated=Οι δεξιότητες των εργαζομένων έχουν ενημερωθεί (δείτε την καρτέλα "Δεξιότητες" της καρτέλας υπαλλήλου) -Eval=Αξιολόγηση -Evals=Αξιολογήσεις -NewEval=Νέα αξιολόγηση -ValidateEvaluation=Επικύρωση αξιολόγησης -ConfirmValidateEvaluation=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτήν την αξιολόγηση με αναφορά %s ; -EvaluationCard=Καρτέλα αξιολόγησης +Eval=Αξιολόγηση ικανοτήτων +Evals=Αξιολογήσεις ικανοτήτων +NewEval=Νέα αξιολόγηση ικανοτήτων +ValidateEvaluation=Επικύρωση αξιολόγησης ικανοτήτων +ConfirmValidateEvaluation=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτή την αξιολόγηση ικανοτήτων με αναφορά %s; +EvaluationCard=Αξιολόγηση ικανοτήτων RequiredRank=Απαιτούμενη κατάταξη για αυτή τη θέση εργασίας RequiredRankShort=Απαιτούμενη κατάταξη PositionsWithThisProfile=Θέσεις με αυτό το προφίλ εργασίας @@ -73,6 +72,9 @@ AddSkill=Προσθέστε δεξιότητες στο προφίλ εργασ RequiredSkills=Απαιτούμενες δεξιότητες για αυτό το προφίλ εργασίας UserRank=Κατάταξη χρήστη SkillList=Λίστα δεξιοτήτων +SkillCreated=%s δεξιότητες δημιουργήθηκαν +SkillRank=Κατάταξη δεξιοτήτων +ShowSkillRank=Εμφάνιση κατάταξης δεξιοτήτων SaveRank=Αποθήκευση κατάταξης TypeKnowHow=Τεχνογνωσία TypeHowToBe=Περιγραφή @@ -91,7 +93,8 @@ SaveLevelSkill = Το επίπεδο δεξιοτήτων αποθηκεύτηκ DeleteSkill = Η δεξιότητα αφαιρέθηκε SkillsExtraFields=Συμπληρωματικά χαρακτηριστικά (Δεξιότητες) JobsExtraFields=Συμπληρωματικά χαρακτηριστικά (Προφίλ θέσης εργασίας) -EvaluationsExtraFields=Συμπληρωματικά χαρακτηριστικά (Αξιολογήσεις) +EvaluationsExtraFields=Συμπληρωματικά χαρακτηριστικά (Αξιολογήσεις ικανοτήτων) NeedBusinessTravels=Ανάγκη επαγγελματικών ταξιδιών NoDescription=Χωρίς περιγραφή TheJobProfileHasNoSkillsDefinedFixBefore=Το αξιολογημένο προφίλ εργασίας αυτού του υπαλλήλου δεν δεξιότητες ορισμένες σε αυτό. Προσθέστε δεξιότητες, διαγράψτε και επανεκκινήστε την αξιολόγηση. +PDFStandardHrmEvaluation=Τυπικό πρότυπο για τη δημιουργία ενός εγγράφου PDF για μια αξιολόγηση ικανοτήτων diff --git a/htdocs/langs/el_GR/interventions.lang b/htdocs/langs/el_GR/interventions.lang index 64b7fa75ba0..e606c80ac81 100644 --- a/htdocs/langs/el_GR/interventions.lang +++ b/htdocs/langs/el_GR/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Δημιουργία πρόχειρης παρέμβασ InterventionContact=Επαφή παρέμβασης DeleteIntervention=Διαγραφή παρέμβασης ValidateIntervention=Επικύρωση παρέμβασης +SignIntervention=Υπογραφή παρέμβασης +UnsignIntervention=Αφαίρεση υπογραφής από Παρέμβαση ModifyIntervention=Τροποποίηση παρέμβασης CloseIntervention=Κλείσιμο παρέμβασης DeleteInterventionLine=Διαγραφή γραμμής παρέμβασης ConfirmDeleteIntervention=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την παρέμβαση; ConfirmValidateIntervention=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτήν την παρέμβαση με το όνομα %s ; +ConfirmSignIntervention=Είστε σίγουροι ότι θέλετε να ορίσετε αυτήν την παρέμβαση ως υπογεγραμμένη; +ConfirmUnsignIntervention=Είστε σίγουροι ότι θέλετε να ορίσετε αυτήν την παρέμβαση ως ανυπόγραφη; ConfirmModifyIntervention=Είστε σίγουροι ότι θέλετε να μεταβάλετε αυτή την παρέμβαση; ConfirmCloseIntervention=Είστε σίγουροι ότι θέλετε να κλείσετε αυτή την παρέμβαση; ConfirmDeleteInterventionLine=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή τη γραμμή της παρέμβασης; @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Παρεμβάσεις και γραμμέ InterventionClassifyBilled=Ταξινόμηση ως "Τιμολογημένη" InterventionClassifyUnBilled=Ταξινόμηση ως "Μη τιμολογημένη" InterventionClassifyDone=Ταξινόμηση ως "Εκτελεσμένη" +InterventionSign=Ορισμός ως υπογεγραμμένο +InterventionUnsign=Ορισμός ως ανυπόγραφο SendInterventionRef=Υποβολή παρέμβασης %s SendInterventionByMail=Αποστολή παρέμβασης με email InterventionCreatedInDolibarr=Η παρέμβαση %s δημιουργήθηκε InterventionValidatedInDolibarr=Η παρέμβαση %s επικυρώθηκε +InterventionSignedInDolibarr=Η παρέμβαση υπεγράφη +InterventionSignedOnline=Η παρέμβαση υπογράφηκε online +InterventionUnsignedInDolibarr=Ανυπόγραφη Παρέμβαση InterventionModifiedInDolibarr=Η παρέμβαση %s τροποποιήθηκε InterventionClassifiedBilledInDolibarr=Η παρέμβαση %s ορίστηκε ως τιμολογημένη InterventionClassifiedUnbilledInDolibarr=Η παρέμβαση %s ορίστηκε ως μη τιμολογημένη diff --git a/htdocs/langs/el_GR/mails.lang b/htdocs/langs/el_GR/mails.lang index b41cc306619..371369a8efe 100644 --- a/htdocs/langs/el_GR/mails.lang +++ b/htdocs/langs/el_GR/mails.lang @@ -32,8 +32,8 @@ NewMailing=Νέα αποστολή email NewSMSing=Νέο sms EditMailing=Επεξεργασία email ResetMailing=Εκ νέου αποστολή email -ConfirmResetMailingTargetMassaction=Bulk target Resend confirmation -ResetMailingTargetMassaction=Resend target +ConfirmResetMailingTargetMassaction=Επιβεβαίωση της επαναφοράς της κατάστασης των στόχων +ResetMailingTargetMassaction=Επαναφορά της κατάστασης στόχων DeleteMailing=Διαγραφή email PreviewMailing=Προεπισκόπηση email CreateMailing=Δημιουργία email @@ -193,7 +193,7 @@ NoMoreRecipientToSendTo=Δεν υπάρχει άλλος παραλήπτης γ EmailOptedOut=Ο κάτοχος του email ζήτησε να μην γίνεται χρήση αυτής της διεύθυνσης email για επικοινωνία μαζί του EvenUnsubscribe=Συμπεριλάβετε opt-out emails EvenUnsubscribeDesc=Συμπεριλάβετε opt-out emails όταν επιλέγετε emails ως στόχους. Μπορούν για παράδειγμα να χρησιμοποιηθούν για υποχρεωτικά email υπηρεσιών. -XEmailsDoneYActionsDone=%s email που πληρούν τα κριτήρια, %s email επιτυχώς επεξεργασμένα (για %s εγγραφες/ενέργειες που έχουν ολοκληρωθεί) +XEmailsDoneYActionsDone=%s email που πληρούν τα κριτήρια, %s email επιτυχώς επεξεργασμένα (για %s ενέργειες που έχουν ολοκληρωθεί) YouCanMakeSomeInstructionForEmail=Μπορείτε να προσθέσετε ορισμένες οδηγίες για το email σας (Παράδειγμα: δημιουργία εικόνας στο πρότυπο email...) ModelTemplate=Πρότυπο email YouCanChooseAModelForYouMailContent= Μπορείτε να επιλέξετε ένα από τα πρότυπα ή να δημιουργήσετε ένα με χρήση AI diff --git a/htdocs/langs/el_GR/main.lang b/htdocs/langs/el_GR/main.lang index d9dbf6656cb..a50d76c8d57 100644 --- a/htdocs/langs/el_GR/main.lang +++ b/htdocs/langs/el_GR/main.lang @@ -45,6 +45,7 @@ NoError=Κανένα Σφάλμα Error=Σφάλμα Errors=Σφάλματα ErrorFieldRequired=Το πεδίο '%s' απαιτείται +CustomMandatoryFieldRule=Προσαρμοσμένος κανόνας "Υποχρεωτικού πεδίου" ErrorFieldFormat=Τπ πεδίο '%s' δεν έχει σωστή τιμή ErrorFileDoesNotExists=Το αρχείο %s δεν υπάρχει ErrorFailedToOpenFile=Αποτυχία ανοίγματος αρχείου %s diff --git a/htdocs/langs/el_GR/oauth.lang b/htdocs/langs/el_GR/oauth.lang index d685f9fc150..837cc101168 100644 --- a/htdocs/langs/el_GR/oauth.lang +++ b/htdocs/langs/el_GR/oauth.lang @@ -40,7 +40,7 @@ URLOfOAuthServiceEndpointsExample=https://mastodon.example.com URLOfServiceForAuthorization=URL που παρέχεται από την υπηρεσία OAuth για έλεγχο ταυτότητας Scopes=Άδειες (Πεδίο εφαρμογής) ScopeUndefined=Άδειες (Πεδίο εφαρμογής) ακαθόριστα (δείτε προηγούμενη καρτέλα) -ScopesDesc=Παράδειγμα: ανάγνωση, εγγραφή με το Mastodom +ScopesDesc=Παράδειγμα: ανάγνωση, εγγραφή με το Mastodon TokenRawValue=Πλήρες Token (αντικείμενο) AccessToken=Token πρόσβασης TokenExpired=Έληξε diff --git a/htdocs/langs/el_GR/other.lang b/htdocs/langs/el_GR/other.lang index 5a77a751848..24918b6bc67 100644 --- a/htdocs/langs/el_GR/other.lang +++ b/htdocs/langs/el_GR/other.lang @@ -72,6 +72,7 @@ Notify_BILL_SUPPLIER_SENTBYMAIL=Το τιμολόγιο προμηθευτή σ Notify_BILL_SUPPLIER_CANCELED=Το τιμολόγιο προμηθευτή ακυρώθηκε Notify_CONTRACT_VALIDATE=Η σύμβαση επικυρώθηκε Notify_FICHINTER_VALIDATE=Η παρέμβαση επικυρώθηκε +Notify_FICHINTER_MODIFY=Τροποποιήθηκε η παρέμβαση Notify_FICHINTER_CLOSE=Η παρέμβαση έκλεισε Notify_FICHINTER_ADD_CONTACT=Προσθήκη επαφής στην παρέμβαση Notify_FICHINTER_SENTBYMAIL=Η παρέμβαση στάλθηκε με mail @@ -209,6 +210,7 @@ AmountIn=Ποσό %s NumberOfUnitsMos=Αριθμός μονάδων προς παραγωγή σε παραγγελίες παραγωγής EMailTextInterventionAddedContact=Μια νέα παρέμβαση %s σας έχει εκχωρηθεί. EMailTextInterventionValidated=Η παρέμβαση %s έχει επικυρωθεί. +EMailTextInterventionModified=Η παρέμβαση %s έχει τροποποιηθεί. %s EMailTextInterventionClosed=Η παρέμβαση %s έχει κλείσει. EMailTextInvoiceValidated=Το τιμολόγιο %s έχει επικυρωθεί. EMailTextInvoicePayed=Το τιμολόγιο %s έχει καταβληθεί. diff --git a/htdocs/langs/el_GR/sendings.lang b/htdocs/langs/el_GR/sendings.lang index 0868751fd06..ea9bddcc4fc 100644 --- a/htdocs/langs/el_GR/sendings.lang +++ b/htdocs/langs/el_GR/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=Δεν βρέθηκε προϊόν προς απο WeightVolShort=Βάρος/Όγκος ValidateOrderFirstBeforeShipment=Θα πρέπει πρώτα να επικυρώσετε την παραγγελία πριν να μπορέσετε να πραγματοποιήσετε αποστολές. NoLineGoOnTabToAddSome=Χωρίς γραμμή, μεταβείτε στην καρτέλα "%s" για προσθήκη -CreateInvoiceForThisCustomerFromSendings=Τιμολόγηση αποστολών +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=Εάν η επικύρωση τιμολογίου είναι «Όχι», η αποστολή θα παραμείνει στην κατάσταση «Μη τιμολογημένη» μέχρι να επικυρωθεί το τιμολόγιο. OptionToSetSendingBilledNotEnabled=Η επιλογή από την ενότητα Ροή εργασιών, για να ορίσετε την αποστολή σε "Τιμολογημένη" αυτόματα όταν επικυρώνεται το τιμολόγιο, δεν είναι ενεργοποιημένη, επομένως θα πρέπει να ορίσετε την κατάσταση των αποστολών σε "Τιμολογημένες" με μη αυτόματο τρόπο μετά τη δημιουργία του τιμολόγιου. diff --git a/htdocs/langs/el_GR/stripe.lang b/htdocs/langs/el_GR/stripe.lang index 89044d78229..1d5d3e2353f 100644 --- a/htdocs/langs/el_GR/stripe.lang +++ b/htdocs/langs/el_GR/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL για να παρέχετε μι ToOfferALinkForOnlinePaymentOnFreeAmount=URL για να παρέχετε μιας σελίδα online πληρωμής %s οποιουδήποτε ποσού χωρίς υπάρχον αντικείμενο ToOfferALinkForOnlinePaymentOnMemberSubscription=URL για να παρέχετε μιας σελίδα online πληρωμής %s για μια συνδρομή μέλους ToOfferALinkForOnlinePaymentOnDonation=URL για να παρέχετε μιας σελίδα online πληρωμής%s για την πληρωμή μιας δωρεάς -YouCanAddTagOnUrl=Μπορείτε επίσης να προσθέσετε την παράμετρο url &tag= τιμή σε οποιαδήποτε από αυτές τις διευθύνσεις URL (υποχρεωτικό μόνο για πληρωμή που δεν συνδέεται με κάποιο αντικείμενο) για να προσθέσετε το δικό σας σχόλιο tag.
Για τη διεύθυνση URL των πληρωμών χωρίς υπάρχον αντικείμενο, μπορείτε επίσης να προσθέσετε την παράμετρο &noidempotency=1 , ώστε ο ίδιος σύνδεσμος με την ίδια ετικέτα να μπορεί να χρησιμοποιηθεί πολλές φορές (κάποιος τρόπος πληρωμής μπορεί να περιορίσει την πληρωμή σε 1 για κάθε διαφορετικό σύνδεσμο χωρίς αυτή την παραμετρο) +YouCanAddTagOnUrl=Μπορείτε επίσης να προσθέσετε την παράμετρο url &tag=value σε οποιαδήποτε από αυτές τις διευθύνσεις URL (υποχρεωτικό μόνο για πληρωμή δεν συνδέεται με αντικείμενο) για να προσθέσετε τη δική σας ετικέτα σχολίου πληρωμής.
Για τη διεύθυνση URL των πληρωμών χωρίς υπάρχον αντικείμενο, μπορείτε επίσης να προσθέσετε την παράμετρο &noidempotency=1 ώστε να μπορεί να χρησιμοποιηθεί πολλές φορές ο ίδιος σύνδεσμος με την ίδια ετικέτα (κάποιες λειτουργίες πληρωμής ενδέχεται να περιορίσουν σε 1 πληρωμή ανά διαφορετικό σύνδεσμο χωρίς αυτήν την παράμετρο) YouCanEmbedOnWebsite=Εάν θέλετε να ενσωματώσετε τη σελίδα πληρωμής σε έναν ιστότοπο Dolibarr, μπορείτε να συμπεριλάβετε την παράμετρο: &ws=website_ref.
Επιπλέον, δύο σελίδες με το όνομαpaymentokκαιpaymentkoπρέπει να δημιουργηθούν στον ιστότοπο ως σελίδες ανακατεύθυνσης μετά από μια επιτυχημένη ή μια αποτυχημένη διαδικτυακή πληρωμή. SetupStripeToHavePaymentCreatedAutomatically=Ρυθμίστε το Stripe με url %s για να δημιουργηθεί αυτόματα πληρωμή όταν επικυρωθεί από το Stripe. AccountParameter=Παράμετροι λογαριασμού diff --git a/htdocs/langs/el_GR/website.lang b/htdocs/langs/el_GR/website.lang index 0d93a36d48e..536c7fc6c27 100644 --- a/htdocs/langs/el_GR/website.lang +++ b/htdocs/langs/el_GR/website.lang @@ -62,7 +62,7 @@ NoPageYet=Δεν υπάρχουν ακόμη σελίδες YouCanCreatePageOrImportTemplate=Μπορείτε να δημιουργήσετε μια νέα σελίδα ή να εισάγετε ένα πλήρες πρότυπο ιστότοπου SyntaxHelp=Βοήθεια για συγκεκριμένες συμβουλές σύνταξης YouCanEditHtmlSourceckeditor=Μπορείτε να επεξεργαστείτε τον πηγαίο κώδικα HTML χρησιμοποιώντας το κουμπί "Πηγή" στο πρόγραμμα επεξεργασίας. -YouCanEditHtmlSource=
Μπορείτε να συμπεριλάβετε κώδικα PHP χρησιμοποιώντας tags <?php ?>. Οι ακόλουθες καθολικές μεταβλητές είναι διαθέσιμες: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

Μπορείτε επίσης να συμπεριλάβετε περιεχόμενο μιας άλλης σελίδας/κοντέινερ με την ακόλουθη σύνταξη :
<?php includeContainer('alias_of_container_to_include'); ?>

Μπορείτε να κάνετε μια ανακατεύθυνση σε άλλη σελίδα/κοντέινερ με την ακόλουθη σύνταξη (Σημείωση: μην εμφανίζετε περιεχόμενο πριν από μια ανακατεύθυνση):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>
Μπορείτε επίσης να κάνετε μια ανακατεύθυνση με GET παραμέτρους
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

Για να προσθέσετε έναν σύνδεσμο σε μια άλλη σελίδα, χρησιμοποιήστε τη σύνταξη:
<a href="alias_of_page_to_link_to.php">mylink<a>

Για να συμπεριλάβετε έναν σύνδεσμο για λήψη ενός αρχείου που είναι αποθηκευμένο στα documents χρησιμοποιήστε το document.phpwrapper:
Παράδειγμα για ένα αρχείο στα documents/ecm(πρέπει να έχετε συνδεθεί), η σύνταξη είναι:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
Για ένα αρχείο στα documents/medias (ανοιχτός κατάλογος για δημόσια πρόσβαση), η σύνταξη είναι:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
Για ένα αρχείο με κοινόχρηστο σύνδεσμο (ανοιχτή πρόσβαση χρησιμοποιώντας sharing hash key του αρχείου), η σύνταξη είναι:
<a href="/document.php?hashp=publicsharekeyoffile">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
Για να συμπεριλάβετε μια εικόνα που είναι αποθηκευμένη στον κατάλογο documents, χρησιμοποιήστε τον wrapper viewimage.php.
Παράδειγμα, για μια εικόνα στον κατάλογο "documents/medias" (ανοιχτός κατάλογος για δημόσια πρόσβαση), η σύνταξη είναι:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
YouCanEditHtmlSource2=Για τον διαμοιρασμό εικόνας με ένα σύνδεσμο (δώσε πρόσβαση χρησιμοποιώντας το sharing hash key του αρχείου), η σύνταξη είναι:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource3=Για να λάβετε το URL της εικόνας ενός αντικειμένου PHP, χρησιμοποιήστε
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 48724731d84..b48493f6600 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -270,7 +270,7 @@ DescVentilCustomer=Consult here the list of customer invoice lines bound (or not DescVentilMore=In most cases, if you use predefined products or services and you set the account (from chart of account) 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 account from chart of account DescVentilTodoCustomer=Bind invoice lines not already bound with a product account from chart of account -ChangeAccount=Change the product/service account (from chart of account) for the selected lines with the following account: +ChangeAccount=Change the product/service account (from chart of account) for the selected lines with: Vide=- DescVentilSupplier=Consult here the list of vendor invoice lines bound or not yet bound to a product account from chart of account (only record not already transferred in accountancy are visible) DescVentilDoneSupplier=Consult here the list of the lines of vendor invoices and their accounting account @@ -454,7 +454,7 @@ AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s ErrorAccountNumberAlreadyExists=The accounting number %s already exists ErrorArchiveAddFile=Can't put "%s" file in archive -ErrorNoFiscalPeriodActiveFound=No active fiscal period found. You can create one from menu %s - %s - %s. +ErrorNoFiscalPeriodActiveFound=No active fiscal period (with a start and end date defined) found. You can create one from menu %s - %s - %s. ErrorBookkeepingDocDateNotOnActiveFiscalPeriod=The bookkeeping doc date is not inside the active fiscal period ErrorBookkeepingDocDateIsOnAClosedFiscalPeriod=The bookkeeping doc date is inside a closed fiscal period ## Import diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 49fb0cd4614..d77cb396d54 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -18,8 +18,8 @@ FileIntegrityIsOkButFilesWereAdded=Files integrity check has passed, however som 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) +LocalSignature=Embedded local signature +RemoteSignature=Remote distant signature FilesMissing=Missing Files FilesUpdated=Updated Files FilesModified=Modified Files @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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 @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s followed by the truncated customer name by 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. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability 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). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. 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=It is therefore recommended to change the sending method of e-mails to the value "SMTP". WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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 (for email %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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) @@ -944,7 +945,7 @@ 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 +Permission1001=Read warehouses and stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses Permission1004=Read stock movements @@ -2035,6 +2036,7 @@ Enter0or1=Enter 0 or 1 EnterYesOrNo=Enter Yes or No 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 +NumberFormatForATotalPrice=Number format for the total price %s 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
- fontawesome_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 @@ -2145,7 +2147,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLE DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word -GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) +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 @@ -2392,7 +2394,6 @@ INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices (with a bank a INVOICE_ADD_SWISS_QR_CODEMore=Switzerland's standard for invoices; make sure ZIP & City are filled and that the accounts have valid Swiss/Liechtenstein IBANs. INVOICE_ADD_EPC_QR_CODE=Show the EPC QR code on invoices (with a bank account defined for credit transfer) INVOICE_ADD_EPC_QR_CODEMore=This feature allows you to add or remove an EPC QR Code on your invoices, which facilitates automatic SEPA credit transfers. Enabling this option helps your clients make payments easily by scanning the QR code, reducing manual entry errors. Use this feature if you have clients in countries like Austria, Belgium, Finland, Germany, and the Netherlands where this system is supported. Disable it if it's not required for your business operations or client base. -INVOICE_ADD_EPC_QR_CODEPay=Scan this QR code to pay with a smartphone supporting payment with EPC QR code. INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory indication in some countries (France, ...) SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Show billing contact on proposal @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +HelpMariaDBToGetValue=This value was retrieved with command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index 6498de7e815..cac1174e1ed 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -151,7 +151,7 @@ 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". SelectPaymentTransactionAndGenerate=Select/filter the documents which are to be included in the %s deposit receipt. Then, click on "Create". InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value -InputReceiptNumberBis=YYYYMM or YYYYMMDD +InputReceiptNumberBis=YYYYMM 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 diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index c41cadb34bc..bd2f23cb338 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -419,6 +419,7 @@ 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 +InvoiceGeneratedFromTemplateError=Error Invoice %s generated from recurring template invoice %s : %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 @@ -661,6 +662,7 @@ MentionCategoryOfOperations0=Delivery of goods MentionCategoryOfOperations1=Provision of services MentionCategoryOfOperations2=Mixed - Delivery of goods & provision of services Salaries=Salaries +InvoiceSubtype=Invoice Subtype SalaryInvoice=Salary BillsAndSalaries=Bills & Salaries CreateCreditNoteWhenClientInvoiceExists=This option is enabled only when validated invoice(s) exist for a customer or when constant INVOICE_CREDIT_NOTE_STANDALONE is used(useful for some countries) @@ -669,3 +671,4 @@ SearchValidatedSupplierInvoicesWithDate=Search unpaid supplier invoices with a v SendEmailsRemindersOnSupplierInvoiceDueDate=Send reminder by email for validated and unpaid supplier invoices PaymentMadeForSeveralInvoices=Payment made for several invoices SituationInvoiceProgressCurrent=Invoice progress +INVOICE_ADD_EPC_QR_CODEPay=Scan this QR code to pay with a smartphone supporting payment with EPC QR code. diff --git a/htdocs/langs/en_US/commercial.lang b/htdocs/langs/en_US/commercial.lang index 43f5c1ece32..0ef1cdd8764 100644 --- a/htdocs/langs/en_US/commercial.lang +++ b/htdocs/langs/en_US/commercial.lang @@ -94,3 +94,9 @@ SignatureContractRef=Signature of contract %s SignatureFichinterRef=Signature of intervention %s SignatureSociete_ribRef=Signature of SEPA Mandate %s FeatureOnlineSignDisabled=Feature for online signing disabled or document generated before the feature was enabled +NoSignature=Not signed +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index c9671fe7503..70c3b20e471 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -33,8 +33,8 @@ 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 +ThirdParty=Third party +ThirdParties=Third parties ThirdPartyProspects=Prospects ThirdPartyProspectsStats=Prospects ThirdPartyCustomers=Customers diff --git a/htdocs/langs/en_US/datapolicy.lang b/htdocs/langs/en_US/datapolicy.lang index 32d448b3810..7cbc85b7475 100644 --- a/htdocs/langs/en_US/datapolicy.lang +++ b/htdocs/langs/en_US/datapolicy.lang @@ -33,7 +33,7 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Prospect/Customer DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Nor prospect/Nor customer DATAPOLICY_CONTACT_FOURNISSEUR = Supplier DATAPOLICY_ADHERENT = Member -DATAPOLICY_Tooltip_SETUP = Type of contact - Indicate your choices for each type. +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = You can send a GDPR email to all your relevant contacts (who have not yet received an email and for which you have not registered anything about their GDPR agreement). To do this, use the following button. SendAgreement = Send emails AllAgreementSend = All emails have been sent diff --git a/htdocs/langs/en_US/dict.lang b/htdocs/langs/en_US/dict.lang index 4cd89a76348..8deac884651 100644 --- a/htdocs/langs/en_US/dict.lang +++ b/htdocs/langs/en_US/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=CFP Francs CurrencySingXPF=CFP Franc CurrencyCentEUR=cents CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=thousandth #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index e83bc83143e..2e18fb389b3 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -60,6 +60,7 @@ ErrorInAddAttachmentsImageBaseIsSrcData=Error in creating image files (found as 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 +ErrorAccountingClosureSetupNotComplete=Setup of closure accounts not complete ErrorFeatureNeedJavascript=This feature needs 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. @@ -140,6 +141,7 @@ ErrorFieldCantBeNegativeOnInvoice=Field %s cannot be negative o 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 +ErrorQtyForSupplierInvoiceCantBeNegative=Quantity for line into supplier 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 @@ -222,7 +224,7 @@ ErrorUserNotAssignedToTask=User must be assigned to task to be able to enter tim 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 +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the 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. @@ -340,6 +342,7 @@ ErrorEndHourIsNull=End date field cannot be empty ErrorStartHourIsNull=Start date field cannot be empty ErrorTooManyLinesToProcessPleaseUseAMoreSelectiveFilter=Too many lines to process. Please use a more selective filter. ErrorEmptyValueForQty=Quantity cannot be zero. +ErrorStreamMustBeEnabled=The PHP stream %s is not available. Check your PHP modules and Dolibarr parameter $dolibarr_main_stream_to_disable. # 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. @@ -388,6 +391,10 @@ WarningParentIDDoesNotExistAnymore=This parent ID does not exists anymore WarningReadBankAlsoAllowedIfUserHasPermission=Warning, reading bank account is also allowed with the permission to Manage chart of account WarningNoDataTransferedInAccountancyYet=Please note, there is no data in the accounting table. Please transfer your data recorded in the application to the accounting section or change the calculation mode to analyze the data recorded outside of accounting. WarningChangingThisMayBreakStopTaskScheduler=Warning, changing this value may disable the scheduler +WarningAmountOfFileDiffersFromSumOfLines=Warning, amount of file (%s) differs from the sum of lines (%s) +WarningModuleAffiliatedToAReportedCompany=Warning, this module has been reported to the Dolibarr foundation as being published by a company using illegal practices (non-compliance with the rules for using the Dolibarr brand, collecting your data without your consent or deploying malware). Use it at your own risk! +WarningModuleAffiliatedToAPiratPlatform=Be careful when getting a module (paid or free) from a suspicious non official platform like %s + SwissQrOnlyVIR = SwissQR invoice can only be added on invoices set to be paid with credit transfer payments. SwissQrCreditorAddressInvalid = Creditor address is invalid (are ZIP and city set? (%s) SwissQrCreditorInformationInvalid = Creditor information is invalid for IBAN (%s): %s diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang index cab8fce1da1..ec723e88812 100644 --- a/htdocs/langs/en_US/holiday.lang +++ b/htdocs/langs/en_US/holiday.lang @@ -41,8 +41,8 @@ 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. +NbUseDaysCP=Number of days +NbUseDaysCPHelp=The calculation of the number of vacation days used takes into account the non-working days and public holidays defined in the dictionary. NbUseDaysCPShort=Days of leave NbUseDaysCPShortInMonth=Days of leave in month DayIsANonWorkingDay=%s is a non-working day diff --git a/htdocs/langs/en_US/hrm.lang b/htdocs/langs/en_US/hrm.lang index 8d2d2cf651d..a04adc105e0 100644 --- a/htdocs/langs/en_US/hrm.lang +++ b/htdocs/langs/en_US/hrm.lang @@ -46,11 +46,11 @@ NewEval=New competency assessment ValidateEvaluation=Validate competency assessment ConfirmValidateEvaluation=Are you sure you want to validate this competency assessment with the reference %s? EvaluationCard=Competency assessment -RequiredRank=Required rank for the job profile -RequiredRankShort=Required rank +RequiredRank=Required level for the job profile +RequiredRankShort=Required level PositionsWithThisProfile=Positions with this job profiles -EmployeeRank=Employee rank for this skill -EmployeeRankShort=Employee rank +EmployeeRank=Employee level for this skill +EmployeeRankShort=Employee level EmployeePosition=Employee position EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 3570e6a36c4..31ae06819e2 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -180,7 +180,7 @@ Information=Information ContactsWithThirdpartyFilter=Contacts with third-party filter Unanswered=Unanswered Answered=Answered -IsNotAnAnswer=Is not answer (initial email) +IsNotAnAnswer=Is not answer (Is an initial email) IsAnAnswer=Is an answer of an initial email RecordCreatedByEmailCollector=Record created by the Email Collector %s DefaultBlacklistMailingStatus=Default value for field '%s' when creating a new contact @@ -190,7 +190,7 @@ NoMoreRecipientToSendTo=No more recipient to send the email to EmailOptedOut=Email owner has requested to not contact him with this email anymore EvenUnsubscribe=Include opt-out emails EvenUnsubscribeDesc=Include opt-out emails when you select emails as targets. Useful for mandatory service emails for example. -XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index bedc6a60e08..ad6c2a99b74 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -37,6 +37,7 @@ Translation=Translation Translations=Translations CurrentTimeZone=TimeZone PHP (server) EmptySearchString=Enter non empty search criteria +EnterNonEmptyLinesFirst=enter non empty lines first EnterADateCriteria=Enter a date criteria NoRecordFound=No record found NoRecordDeleted=No record deleted @@ -45,6 +46,7 @@ NoError=No error Error=Error Errors=Errors ErrorFieldRequired=Field '%s' is required +CustomMandatoryFieldRule=Custom "Mandatory field" rule ErrorFieldFormat=Field '%s' has a bad value ErrorFileDoesNotExists=File %s does not exist ErrorFailedToOpenFile=Failed to open file %s @@ -925,6 +927,7 @@ ConfirmMassDeletionQuestion=Are you sure you want to delete the %s selected reco ConfirmMassClone=Bulk clone confirmation ConfirmMassCloneQuestion=Select project to clone to ConfirmMassCloneToOneProject=Clone to project %s +ObjectClonedSuccessfuly=Object cloned successfully RelatedObjects=Related Objects ClassifyBilled=Classify Billed ClassifyUnbilled=Classify Unbilled @@ -1146,6 +1149,7 @@ ContactDefault_project_task=Task ContactDefault_propal=Proposal ContactDefault_supplier_proposal=Supplier Proposal ContactDefault_ticket=Ticket +ContactDefault_societe=Third party ContactAddedAutomatically=Contact added from third-party contact roles More=More ShowDetails=Show details diff --git a/htdocs/langs/en_US/modulebuilder.lang b/htdocs/langs/en_US/modulebuilder.lang index 9ff542d9799..00a94855e1b 100644 --- a/htdocs/langs/en_US/modulebuilder.lang +++ b/htdocs/langs/en_US/modulebuilder.lang @@ -187,3 +187,4 @@ EmailingSelectors=Emails selectors EmailingSelectorDesc=You can generate and edit here the class files to provide new email target selectors for the mass emailing module EmailingSelectorFile=Emails selector file NoEmailingSelector=No emails selector file +ModuleTranslatedIntoLangForKeyInto=Translated into a .lang file for key %s into "%s" diff --git a/htdocs/langs/en_US/mrp.lang b/htdocs/langs/en_US/mrp.lang index f80abce4316..77a3bdb49f9 100644 --- a/htdocs/langs/en_US/mrp.lang +++ b/htdocs/langs/en_US/mrp.lang @@ -131,8 +131,8 @@ Manufacturing=Manufacturing Disassemble=Disassemble ProducedBy=Produced by QtyTot=Qty Total - QtyCantBeSplit= Quantity cannot be split NoRemainQtyToDispatch=No quantity remaining to divide THMOperatorEstimatedHelp=Estimated cost of operator per hour. Will be used to estimate cost of a BOM using this workstation. THMMachineEstimatedHelp=Estimated cost of machine per hour. Will be used to estimate cost of a BOM using this workstation. +BadValueForquantityToConsume=Quantity to consume for a material cannot be 0 or negative diff --git a/htdocs/langs/en_US/recruitment.lang b/htdocs/langs/en_US/recruitment.lang index 04919e2a1b2..047455d5e2b 100644 --- a/htdocs/langs/en_US/recruitment.lang +++ b/htdocs/langs/en_US/recruitment.lang @@ -64,3 +64,4 @@ NoPositionOpen=No positions open at the moment ConfirmClose=Confirm cancellation ConfirmCloseAsk=Are you sure you want to cancel this recruitment candidature Recruitment=Recruitment +NoOpenJobOffer=No open job offers at the moment diff --git a/htdocs/langs/en_US/salaries.lang b/htdocs/langs/en_US/salaries.lang index adf8ed60dff..2a6c1d4fe29 100644 --- a/htdocs/langs/en_US/salaries.lang +++ b/htdocs/langs/en_US/salaries.lang @@ -9,6 +9,8 @@ NewSalary=New salary AddSalary=Add salary NewSalaryPayment=New salary card AddSalaryPayment=Add salary payment +SalaryID=Salary ID +SalaryAmount=Salary amount SalaryPayment=Salary payment SalariesPayments=Salaries payments SalariesPaymentsOf=Salaries payments of %s diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang index 71d4214c8a5..9f648d5f706 100644 --- a/htdocs/langs/en_US/sendings.lang +++ b/htdocs/langs/en_US/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=No product to ship found in warehouse %s. C WeightVolShort=Weight/Vol. ValidateOrderFirstBeforeShipment=You must first validate the order before being able to make shipments. NoLineGoOnTabToAddSome=No line, go on tab "%s" to add -CreateInvoiceForThisCustomerFromSendings=Bill sendings +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=If invoice validation is 'No', the sending will remain to status 'Unbilled' until the invoice is validated. OptionToSetSendingBilledNotEnabled=Option from module Workflow, to set sending to 'Billed' automatically when invoice is validated, is not enabled, so you will have to set the status of sendings to 'Billed' manually after the invoice has been generated. diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index b3cdf9d3e61..8c02662f1e2 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -336,3 +336,14 @@ LatestModifiedWarehouses=Latest %s modified warehouses LatestStockMovements=Latest %s stock movements QtyCurrentlyKnownInStock=System estimated quantity you have in stock. As long as the inventory is not closed, this is a realtime value and it may change if you continue to make stock movement during the inventory (not recommended). QtyInStockWhenInventoryWasValidated=System estimated quantity you had in stock when the inventory was validated (before the stock correction) +InventoryId=Inventory id +DateInventory=Inventory date +InventoryStatus=Inventory status +InventoryTitle=Inventory name +InventoryLine=Inventory line +InventoryLineId=Inventory line ID +InventoryRef=Inventory ref +QtyViewed=Quantity viewed +QtyStock=Quantity on stock +QtyRegulated=Quantity on stock correction +InventoryEntrepot=Warehouse identity diff --git a/htdocs/langs/en_US/suppliers.lang b/htdocs/langs/en_US/suppliers.lang index 156730ab5aa..96e98f98df8 100644 --- a/htdocs/langs/en_US/suppliers.lang +++ b/htdocs/langs/en_US/suppliers.lang @@ -36,7 +36,7 @@ ListOfSupplierProductForSupplier=List of products and prices for vendor %s %s diff --git a/htdocs/langs/es_AR/interventions.lang b/htdocs/langs/es_AR/interventions.lang index e1324846dc4..5917565453c 100644 --- a/htdocs/langs/es_AR/interventions.lang +++ b/htdocs/langs/es_AR/interventions.lang @@ -24,7 +24,6 @@ InterventionClassifiedUnbilledInDolibarr=Intervención %s marcada como sin factu InterventionsArea=Área de Intervenciones DraftFichinter=Intervenciones en borrador LastModifiedInterventions=Ultimas %s intervenciones modificadas -TypeContact_fichinter_external_CUSTOMER=Contacto para seguimiento del cliente PrintProductsOnFichinter=Imprima también líneas de tipo "producto" (no solo servicios) en la ficha de la intervención PrintProductsOnFichinterDetails=intervenciones generadas a partir de órdenes UseServicesDurationOnFichinter=Usar la duración de los servicios para las intervenciones generadas a partir de órdenes. @@ -44,3 +43,4 @@ InterLineId=ID de línea de la intervención InterLineDate=Fecha de línea de la intervención InterLineDuration=Duración de la línea de la intervención InterLineDesc=Descripción de la línea de la intervención +TypeContact_fichinter_external_CUSTOMER=Contacto para seguimiento del cliente diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang index 27f1bd3867a..cd72dd155d3 100644 --- a/htdocs/langs/es_CL/admin.lang +++ b/htdocs/langs/es_CL/admin.lang @@ -564,7 +564,6 @@ Permission773=Eliminar informes de gastos Permission775=Aprobar informes de gastos Permission776=Pagar informes de gastos Permission779=Informes de gastos de exportación -Permission1001=Leer stocks Permission1102=Crear / modificar recibos de entrega Permission1121=Leer propuestas de proveedores Permission1122=Crear / modificar propuestas de proveedores. @@ -1256,7 +1255,6 @@ WarningInstallationMayBecomeNotCompliantWithLaw=Está intentando instalar el mó NothingToSetup=No se requiere ninguna configuración específica para este módulo. SetToYesIfGroupIsComputationOfOtherGroups=Establezca esto en sí si este grupo es un cálculo de otros grupos SeveralLangugeVariatFound=Varias variantes de lenguaje encontradas -GDPRContact=Oficial de protección de datos (DPO, privacidad de datos o contacto GDPR) HelpOnTooltip=Texto de ayuda para mostrar en información sobre herramientas HelpOnTooltipDesc=Coloque texto o una clave de traducción aquí para que el texto se muestre en una información sobre herramientas cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo en el servidor con la línea de comandos:
%s diff --git a/htdocs/langs/es_CL/dict.lang b/htdocs/langs/es_CL/dict.lang index 4af782b036e..df8f018d05e 100644 --- a/htdocs/langs/es_CL/dict.lang +++ b/htdocs/langs/es_CL/dict.lang @@ -54,8 +54,6 @@ CurrencyXPF=CFP francos CurrencySingXPF=CFP Franco CurrencyCentEUR=centavos CurrencyCentSingEUR=centavo -CurrencyCentINR=Paisa -CurrencyCentSingINR=Paise DemandReasonTypeSRC_CAMP_MAIL=Campaña de correo DemandReasonTypeSRC_CAMP_EMAIL=Campaña de correo electrónico DemandReasonTypeSRC_CAMP_FAX=Campaña de fax diff --git a/htdocs/langs/es_CL/errors.lang b/htdocs/langs/es_CL/errors.lang index d0518bc5140..8ec36995967 100644 --- a/htdocs/langs/es_CL/errors.lang +++ b/htdocs/langs/es_CL/errors.lang @@ -34,7 +34,6 @@ ErrorFoundBadEmailInFile=Se encontró una sintaxis de correo electrónico incorr ErrorUserCannotBeDelete=El usuario no puede ser eliminado. Tal vez esté asociado a entidades dolibarr. ErrorFailedToCreateDir=Error al crear un directorio. Compruebe que el usuario del servidor web tenga permisos para escribir en el directorio de documentos de Dolibarr. Si el parámetro safe_mode está habilitado en este PHP, verifique que los archivos php de Dolibarr sean propiedad del usuario (o grupo) del servidor web. ErrorNoMailDefinedForThisUser=Sin correo definido para este usuario -ErrorFeatureNeedJavascript=Esta característica necesita javascript para activarse para funcionar. Cambie esto en la configuración - visualización. ErrorTopMenuMustHaveAParentWithId0=Un menú de tipo 'Superior' no puede tener un menú principal. Pon 0 en el menú principal o elige un menú de tipo 'Izquierda'. ErrorLeftMenuMustHaveAParentId=Un menú de tipo 'Izquierda' debe tener una identificación principal. ErrorFileNotFound=Archivo %s no encontrado (Ruta incorrecta, permisos incorrectos o acceso denegado por PHP open_basedir o el parámetro safe_mode) @@ -42,7 +41,6 @@ ErrorDirNotFound=Directorio %s no encontrado (ruta incorrecta, permisos i ErrorFunctionNotAvailableInPHP=La función %s es necesaria para esta función, pero no está disponible en esta versión/configuración de PHP. 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. 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) @@ -51,7 +49,6 @@ ErrorNoValueForCheckBoxType=Por favor complete el valor para la lista de casilla ErrorNoValueForRadioType=Por favor complete el valor para la lista de radio ErrorBadFormatValueList=El valor de la lista no puede tener más de una coma: %s, pero necesita al menos una: clave, valor ErrorFieldCanNotContainSpecialCharacters=El campo %s no debe contener caracteres especiales. -ErrorFieldCanNotContainSpecialNorUpperCharacters=El campo %s no debe contener caracteres especiales, ni mayúsculas, y no puede contener solo números. ErrorFieldMustHaveXChar=El campo %s debe tener al menos %s caracteres. ErrorNoAccountancyModuleLoaded=Sin módulo de contabilidad activado ErrorExportDuplicateProfil=Este nombre de perfil ya existe para este conjunto de exportación. @@ -61,9 +58,7 @@ ErrorCantSaveADoneUserWithZeroPercentage=No se puede guardar una acción con &qu ErrorPleaseTypeBankTransactionReportName=Ingrese el nombre del extracto bancario donde se debe informar la entrada (Formato AAAAMM o AAAAMMDD) ErrorRecordHasChildren=Error al eliminar el registro ya que tiene algunos registros secundarios. ErrorRecordIsUsedCantDelete=No se puede borrar el registro. Ya está usado o incluido en otro objeto. -ErrorModuleRequireJavascript=Javascript no debe deshabilitarse para que esta característica funcione. Para activar / desactivar Javascript, vaya al menú Inicio-> Configuración-> Pantalla. ErrorPasswordsMustMatch=Ambas contraseñas mecanografiadas deben coincidir -ErrorContactEMail=Se produjo un error técnico. Comuníquese con el administrador para seguir el correo electrónico %s y proporcione el código de error %s en su mensaje, o agregue una copia de pantalla de esta página. ErrorWrongValueForField=Campo %s : ' %s ' no coincide con la regla de expresión regular %s ErrorFieldValueNotIn=El campo %s : ' %s ' no es un valor encontrado en el campo %s de %s ErrorFieldRefNotIn=Campo %s : ' %s ' no es una referencia %s existente @@ -120,7 +115,6 @@ ErrorPriceExpression4=Carácter ilegal '%s' ErrorPriceExpression5=Inesperado '%s' ErrorPriceExpression6=Número incorrecto de argumentos (%s dado, %s esperado) ErrorPriceExpression8=Operador inesperado '%s' -ErrorPriceExpression9=Se produjo un error inesperado ErrorPriceExpression10=El operador '%s' carece de operando ErrorPriceExpression11=Esperando '%s' ErrorPriceExpression17=Variable no definida '%s' @@ -156,7 +150,6 @@ ErrorBankStatementNameMustFollowRegex=Error, el nombre del extracto bancario deb ErrorPhpMailDelivery=Verifique que no use una cantidad demasiado alta de destinatarios y que el contenido de su correo electrónico no sea similar al de un correo no deseado. Pídale también a su administrador que verifique los archivos de registro del cortafuegos y del servidor para obtener una información más completa. ErrorUserNotAssignedToTask=El usuario debe ser asignado a la tarea para poder ingresar el tiempo consumido. ErrorModuleFileSeemsToHaveAWrongFormat=El paquete del módulo parece tener un formato incorrecto. -ErrorFilenameDosNotMatchDolibarrPackageRules=El nombre del paquete de módulo (%s) no coincide con la sintaxis del nombre esperado: %s ErrorDuplicateTrigger=Error, nombre de disparador duplicado %s. Ya cargado desde %s. ErrorNoWarehouseDefined=Error, no hay almacenes definidos. ErrorBadLinkSourceSetButBadValueForRef=El enlace que usas no es válido. Se define una 'fuente' para el pago, pero el valor para 'ref' no es válido. @@ -189,7 +182,6 @@ WarningConfFileMustBeReadOnly=Advertencia, el servidor web puede sobrescribir su WarningsOnXLines=Advertencias en %s registro(s) fuente WarningNoDocumentModelActivated=No se ha activado ningún modelo para la generación de documentos. Se elegirá un modelo por defecto hasta que verifique la configuración de su módulo. WarningLockFileDoesNotExists=Advertencia: una vez finalizada la instalación, debe deshabilitar las herramientas de instalación / migración agregando un archivo install.lock en el directorio %s . Omitir la creación de este archivo es un grave riesgo para la seguridad. -WarningUntilDirRemoved=Todas las advertencias de seguridad (visibles solo para usuarios de administración) permanecerán activas mientras la vulnerabilidad esté presente (o se agregue la constante MAIN_REMOVE_INSTALL_WARNING en Configuración-> Otra configuración). WarningCloseAlways=Advertencia, el cierre se realiza incluso si la cantidad difiere entre los elementos de origen y destino. Habilite esta función con precaución. WarningUsingThisBoxSlowDown=Advertencia, usar este recuadro ralentiza seriamente todas las páginas que muestran el recuadro. WarningClickToDialUserSetupNotComplete=La configuración de la información ClickToDial para su usuario no está completa (consulte la ficha ClickToDial en su tarjeta de usuario). diff --git a/htdocs/langs/es_CL/interventions.lang b/htdocs/langs/es_CL/interventions.lang index f1818c00536..71fcb5c7750 100644 --- a/htdocs/langs/es_CL/interventions.lang +++ b/htdocs/langs/es_CL/interventions.lang @@ -29,7 +29,6 @@ InterventionsArea=Área de intervenciones DraftFichinter=Borrador de intervenciones LastModifiedInterventions=Últimas intervenciones modificadas con %s FichinterToProcess=Intervenciones para procesar -TypeContact_fichinter_external_CUSTOMER=Seguimiento de contacto con el cliente PrintProductsOnFichinter=Imprima también líneas de tipo "producto" (no solo servicios) en la tarjeta de intervención PrintProductsOnFichinterDetails=intervenciones generadas a partir de órdenes UseServicesDurationOnFichinter=Usar la duración de los servicios para las intervenciones generadas a partir de órdenes @@ -47,3 +46,4 @@ InterLineId=Intervención de identificación de línea InterLineDate=Intervención de fecha de línea InterLineDuration=Intervención de duración de línea InterLineDesc=Intervención de descripción de línea +TypeContact_fichinter_external_CUSTOMER=Seguimiento de contacto con el cliente diff --git a/htdocs/langs/es_CL/stripe.lang b/htdocs/langs/es_CL/stripe.lang index 9ee292c81e7..7fe662a6634 100644 --- a/htdocs/langs/es_CL/stripe.lang +++ b/htdocs/langs/es_CL/stripe.lang @@ -10,7 +10,6 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL para ofrecer una %s pagina de pag ToOfferALinkForOnlinePaymentOnFreeAmount=URL para ofrecer una %s página de pago en línea de cualquier cantidad sin objeto existente ToOfferALinkForOnlinePaymentOnMemberSubscription=URL para ofrecer una %s página de pago en línea para una suscripción de miembro ToOfferALinkForOnlinePaymentOnDonation=URL para ofrecer una %s página de pago en línea para el pago de una donación -YouCanAddTagOnUrl=También puede agregar el parámetro url &tag=value a cualquiera de esos URL (obligatorio solo para pagos no vinculados a un objeto) para agregar su propia etiqueta de comentario de pago.
Para la URL de pagos sin objeto existente, también puede agregar el parámetro &noidempotency=1 por lo que el mismo enlace con la misma etiqueta se puede usar varias veces (algunos modos de pago pueden limitar el pago a 1 por cada enlace diferente sin este parámetro) SetupStripeToHavePaymentCreatedAutomatically=Configure su Stripe con url %s para que el pago se cree automáticamente cuando se valida con Stripe. STRIPE_CGI_URL_V2=Módulo de CGI de Url of Stripe para el pago NewStripePaymentFailed=Se intentó el nuevo pago de Stripe pero falló @@ -20,7 +19,6 @@ STRIPE_LIVE_SECRET_KEY=Clave secreta en vivo STRIPE_LIVE_PUBLISHABLE_KEY=Clave en vivo publicable StripeLiveEnabled=Stripe live enabled (de lo contrario, prueba / modo de espacio aislado) StripeImportPayment=Importar pagos en franja -ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails StripeGateways=Pasarelas de banda BankAccountForBankTransfer=Cuenta bancaria para pagos de fondos StripeAccount=Cuenta de banda diff --git a/htdocs/langs/es_CO/admin.lang b/htdocs/langs/es_CO/admin.lang index d5dabc64bea..32a83dcc3d3 100644 --- a/htdocs/langs/es_CO/admin.lang +++ b/htdocs/langs/es_CO/admin.lang @@ -356,8 +356,6 @@ UseDoubleApproval=Utilice una aprobación de 3 pasos cuando la cantidad (sin imp WarningPHPMailD=Por lo tanto, se recomienda cambiar el método de envío de E-mail al valor "SMTP". WarningPHPMailDbis=Si realmente desea mantener el método "PHP" predeterminado para enviar E-mails, simplemente ignore esta advertencia o elimínela haciendo clic aquí %s%s. 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 SPF real encontrado (para el E-mail %s): %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) @@ -639,7 +637,6 @@ Permission775=Aprobar informes de gastos. Permission776=Informes de gastos de pago Permission778=Crear / modificar informes de gastos de todos Permission779=Informes de gastos de exportación -Permission1001=Leer acciones Permission1002=Crear / modificar almacenes. Permission1003=Borrar almacenes Permission1004=Leer movimientos de stock @@ -1463,7 +1460,6 @@ EnterCalculationRuleIfPreviousFieldIsYes=Ingrese la regla de cálculo si el camp RemoveSpecialChars=Quitar caracteres especiales COMPANY_AQUARIUM_CLEAN_REGEX=Filtro de expresiones regulares para limpiar el valor (COMPANY_AQUARIUM_CLEAN_REGEX) RemoveSpecialWordsHelp=Especifique las palabras que se limpiarán antes de calcular la cuenta del cliente o proveedor. Usar una ";" entre cada palabra -GDPRContact=Oficial de protección de datos (DPO, privacidad de datos o contacto GDPR) HelpOnTooltip=Texto de ayuda para mostrar en información sobre herramientas HelpOnTooltipDesc=Coloque texto o una clave de traducción aquí para que el texto se muestre en una información sobre herramientas cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo en el servidor con la línea de comandos:
%s diff --git a/htdocs/langs/es_CO/errors.lang b/htdocs/langs/es_CO/errors.lang index 8e5a8f2a340..a0f17ef3e79 100644 --- a/htdocs/langs/es_CO/errors.lang +++ b/htdocs/langs/es_CO/errors.lang @@ -162,7 +162,6 @@ ErrorPhpMailDelivery=Compruebe que no utiliza un número demasiado elevado de de ErrorUserNotAssignedToTask=El usuario debe estar asignado a la tarea para poder ingresar el tiempo consumido. ErrorModuleFileSeemsToHaveAWrongFormat=El paquete del módulo parece tener un formato incorrecto. ErrorModuleFileSeemsToHaveAWrongFormat2=Debe existir al menos un directorio obligatorio en el zip del módulo: %s o %s -ErrorFilenameDosNotMatchDolibarrPackageRules=El nombre del paquete del módulo ( %s ) no coincide con la sintaxis del nombre esperado: %s ErrorDuplicateTrigger=Error, nombre de disparador duplicado %s. Ya cargado desde %s. ErrorNoWarehouseDefined=Error, no hay almacenes definidos. ErrorBadLinkSourceSetButBadValueForRef=El enlace que usas no es válido. Se define una 'fuente' para el pago, pero el valor de 'ref' no es válido. diff --git a/htdocs/langs/es_CO/interventions.lang b/htdocs/langs/es_CO/interventions.lang index 2bf68479bf6..3ffe3cbb0f9 100644 --- a/htdocs/langs/es_CO/interventions.lang +++ b/htdocs/langs/es_CO/interventions.lang @@ -26,7 +26,6 @@ InterventionClassifiedUnbilledInDolibarr=Intervención %s establecida como no fa InterventionsArea=Área de intervenciones DraftFichinter=Proyectos de intervenciones LastModifiedInterventions=Últimas intervenciones modificadas %s -TypeContact_fichinter_external_CUSTOMER=Seguimiento del contacto con el cliente PrintProductsOnFichinter=Imprima también líneas de tipo "producto" (no solo servicios) en la tarjeta de intervención PrintProductsOnFichinterDetails=intervenciones generadas a partir de pedidos UseServicesDurationOnFichinter=Utilizar la duración de los servicios para intervenciones generadas a partir de pedidos @@ -45,3 +44,4 @@ InterLineDuration=Intervención de duración de línea InterLineDesc=Intervención de descripción de línea ToCreateAPredefinedIntervention=Para crear una intervención predefinida o recurrente, cree una intervención común y conviértala en una plantilla de intervención ConfirmReopenIntervention=¿Estás seguro de que quieres volver a abrir la intervención %s ? +TypeContact_fichinter_external_CUSTOMER=Seguimiento del contacto con el cliente diff --git a/htdocs/langs/es_CO/stripe.lang b/htdocs/langs/es_CO/stripe.lang index e80c1b738f7..f0d166000b0 100644 --- a/htdocs/langs/es_CO/stripe.lang +++ b/htdocs/langs/es_CO/stripe.lang @@ -7,7 +7,6 @@ YouWillBeRedirectedOnStripe=Será redirigido a la página segura de Stripe para ToOfferALinkForOnlinePayment=URL para el pago %s ToOfferALinkForOnlinePaymentOnOrder=URL para ofrecer una página de pago en línea %s para un pedido de ventas ToOfferALinkForOnlinePaymentOnFreeAmount=URL para ofrecer una página de pago en línea %s de cualquier monto sin ningún objeto existente -YouCanAddTagOnUrl=También puede agregar el parámetro de URL & tag = value a cualquiera de esas URL (obligatorio solo para pagos no vinculados a un objeto) para agregar su propia etiqueta de comentario de pago.
Para la URL de pagos sin ningún objeto existente, también puede agregar el parámetro & noidempotency = 1 para que el mismo enlace con la misma etiqueta se pueda usar varias veces (algunos modos de pago pueden limitar el pago a 1 para cada enlace diferente sin este parámetro) SetupStripeToHavePaymentCreatedAutomatically=Configura tu Stripe con la URL %s para que el pago se cree automáticamente cuando Stripe lo valide. STRIPE_CGI_URL_V2=Url del módulo Stripe CGI para pago NewStripePaymentFailed=Nuevo pago de Stripe intentado pero fallido @@ -20,7 +19,6 @@ STRIPE_LIVE_WEBHOOK_KEY=Clave en vivo de webhook ONLINE_PAYMENT_WAREHOUSE=Existencias a utilizar para la disminución de existencias cuando se realiza el pago en línea
(TODO ¿Cuándo se realiza la opción para disminuir las existencias en una acción en la factura y el pago en línea genera la factura por sí mismo?) StripeLiveEnabled=Stripe live habilitado (de lo contrario, modo prueba / sandbox) StripeImportPayment=Importar pagos de Stripe -ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails StripeGateways=Pasarelas de banda OAUTH_STRIPE_TEST_ID=ID de cliente de Stripe Connect (ca _...) OAUTH_STRIPE_LIVE_ID=ID de cliente de Stripe Connect (ca _...) @@ -36,4 +34,3 @@ StripeUserAccountForActions=Cuenta de usuario para usar para notificaciones por ToOfferALinkForTestWebhook=Enlace para configurar Stripe WebHook para llamar al IPN (modo de prueba) ToOfferALinkForLiveWebhook=Enlace para configurar Stripe WebHook para llamar al IPN (modo en vivo) ClickHereToTryAgain= Haga clic aquí para volver a intentarlo ... -CreationOfPaymentModeMustBeDoneFromStripeInterface=Debido a las reglas estrictas de autenticación de clientes, la creación de una tarjeta debe realizarse desde el backoffice de Stripe. Puede hacer clic aquí para activar el registro de cliente de Stripe: %s diff --git a/htdocs/langs/es_CR/admin.lang b/htdocs/langs/es_CR/admin.lang index 9e578de7336..6b22370b3a6 100644 --- a/htdocs/langs/es_CR/admin.lang +++ b/htdocs/langs/es_CR/admin.lang @@ -361,11 +361,9 @@ ModuleCompanyCodeCustomerDigitaria=%s seguido del nombre del cliente truncado po ModuleCompanyCodeSupplierDigitaria=%s seguido del nombre del proveedor truncado por el número de caracteres: %s para el código de contabilidad del proveedor. Use3StepsApproval=De forma predeterminada, las órdenes de compra deben ser creadas y aprobadas por 2 usuarios diferentes (un paso/usuario para crear y un paso/usuario para aprobar. Tenga en cuenta que si el usuario tiene permiso para crear y aprobar, un paso/usuario será suficiente) . Puede solicitar con esta opción introducir un tercer paso/aprobación del usuario, si el monto es superior a un valor dedicado (por lo que serán necesarios 3 pasos: 1=validación, 2=primera aprobación y 3=segunda aprobación si el monto es suficiente).
Establézcalo en vacío si una aprobación (2 pasos) es suficiente, configúrelo en un valor muy bajo (0.1) si siempre se requiere una segunda aprobación (3 pasos). UseDoubleApproval=Utilice una aprobación de 3 pasos cuando el monto (sin impuestos) sea superior a... -WarningPHPMailB=- Algunos proveedores de servicios de correo electrónico (como Yahoo) no le permiten enviar un correo electrónico desde otro servidor que no sea su propio servidor. Su configuración actual utiliza el servidor de la aplicación para enviar correos electrónicos y no el servidor de su proveedor de correo electrónico, por lo que algunos destinatarios (el compatible con el protocolo DMARC restrictivo) le preguntarán a su proveedor de correo electrónico si pueden aceptar su correo electrónico y algunos proveedores de correo electrónico. (como Yahoo) puede responder "no" porque el servidor no es suyo, por lo que es posible que no se acepten para su entrega algunos de sus correos electrónicos enviados (tenga cuidado también con la cuota de envío de su proveedor de correo electrónico). WarningPHPMailC=- También es interesante usar el servidor SMTP de su propio proveedor de servicios de correo electrónico para enviar correos electrónicos, por lo que todos los correos electrónicos enviados desde la aplicación también se guardarán en el directorio "Enviados" de su buzón. WarningPHPMailDbis=Si realmente desea mantener el método "PHP" predeterminado para enviar correos electrónicos, simplemente ignore esta advertencia o elimínela haciendo clic aquí %s%s. 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 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 de 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 . ClickToShowDescription=Haga clic para mostrar la descripción DependsOn=Este módulo necesita los módulo(s) RequiredBy=Este módulo es requerido por módulo(s) @@ -648,7 +646,6 @@ Permission773=Eliminar informes de gastos Permission775=Aprobar informes de gastos Permission776=Pagar informes de gastos Permission779=Exportar informes de gastos -Permission1001=Leer acciones Permission1004=Leer movimientos de stock Permission1015=Permitir cambiar el valor de PMP para un producto Permission1121=Leer propuestas de proveedores @@ -1474,7 +1471,6 @@ SetToYesIfGroupIsComputationOfOtherGroups=Establézcalo en sí si este grupo es COMPANY_AQUARIUM_NO_PREFIX=No use el prefijo, solo copie el código de cliente o proveedor COMPANY_DIGITARIA_CLEAN_REGEX=Filtro Regex para limpiar valor (COMPANY_DIGITARIA_CLEAN_REGEX) RemoveSpecialWordsHelp=Especifique las palabras que se limpiarán antes de calcular la cuenta del cliente o proveedor. Usar una ";" entre cada palabra -GDPRContact=Delegado de Protección de Datos (contacto DPO, Privacidad de Datos o RGPD) HelpOnTooltip=Texto de ayuda para mostrar en la información sobre herramientas HelpOnTooltipDesc=Coloque texto o una clave de traducción aquí para que el texto se muestre en una información sobre herramientas cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo en el servidor con la línea de comandos:
%s @@ -1514,7 +1510,6 @@ WithoutDolTrackingID=Mensaje de una conversación iniciada por un primer correo FormatZip=Cremallera MainMenuCode=Código de entrada de menú (menú principal) ECMAutoTree=Mostrar árbol ECM automático -OperationParamDesc=Defina las reglas que se utilizarán para extraer algunos datos o establecer los valores que se utilizarán para la operación.

Ejemplo para extraer el nombre de una empresa del asunto del correo electrónico en una variable temporal:
tmp_var=EXTRACT:SUBJECT:Mensaje de la empresa ([^\n]*)45

Ejemplos para establecer las propiedades de un objeto para crear:
objproperty1=SET: un valor codificado de forma rígida
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY: un valor (valor se establece solo si la propiedad no está definida)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY: el nombre de mi empresa es\\s([^\\s]*)

Utilice una nurva linea como separador para extraer o establecer varias propiedades. OpeningHoursDesc=Introduzca aquí el horario habitual de apertura de su empresa. ResourceSetup=Configuración del módulo de recursos DisabledResourceLinkUser=Deshabilitar la función para vincular un recurso a los usuarios @@ -1544,7 +1539,6 @@ ExportSetup=Configuración del módulo Exportar ImportSetup=Configuración de la importación del módulo InstanceUniqueID=ID único de la instancia WithGMailYouCanCreateADedicatedPassword=Con una cuenta de gmail, si habilita la validación de 2 pasos, se recomienda crear una segunda contraseña dedicada para la aplicación en lugar de usar la contraseña de su propia cuenta de https://myaccount.google.com/. -EmailCollectorLoadThirdPartyHelp=Puede usar esta acción para usar el contenido del correo electrónico para buscar y cargar un tercero existente en su base de datos (la búsqueda se realizará en la propiedad definida entre 'id', 'name', 'name_alias', 'email'). El tercero encontrado (o creado) se utilizará para las acciones que lo requieran.
Por ejemplo, si desea crear un tercero con un nombre extraído de una cadena 'Nombre: nombre para encontrar' presente en el cuerpo, use el correo electrónico del remitente como correo electrónico, puede configurar el campo del parámetro de esta manera:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Advertencia: Muchos servidores de correo electrónico (como Gmail) están haciendo búsquedas de palabras completas al buscar en una cadena y no devolverán un resultado si la cadena solo se encuentra parcialmente, en una palabra. Por esta razón también, el uso de caracteres especiales en un criterio de búsqueda se ignorará si no forman parte de las palabras existentes.
Para hacer una búsqueda de exclusión, en una palabra (no se encuentra el correo electrónico de devolución de palabras), puedes usar el ! carácter antes de la palabra (puede que no funcione en algunos servidores del centro comercial) EndPointFor=Punto final para %s: %s DeleteEmailCollector=Eliminar recopilador de correo electrónico diff --git a/htdocs/langs/es_CR/commercial.lang b/htdocs/langs/es_CR/commercial.lang index 5f3640eb45d..5290964fd9d 100644 --- a/htdocs/langs/es_CR/commercial.lang +++ b/htdocs/langs/es_CR/commercial.lang @@ -54,5 +54,9 @@ StatusProsp=Estado del cliente potencial DraftPropals=Cotizaciones en borrador ToOfferALinkForOnlineSignature=Vínculo para firma digital WelcomeOnOnlineSignaturePageProposal=Bienvenido a la página para aceptar cotizaciones de 1%s +WelcomeOnOnlineSignaturePageSociete_rib=Bienvenido a %s página de firma de PDF del mandado SEPA ThisScreenAllowsYouToSignDocFromProposal=Esta pantalla le permite aceptar y firmar, o rechazar, una propuesta de cotización/comercial +ThisScreenAllowsYouToSignDocFromSociete_rib=Esta pantalla le permite firmar el mandato SEPA en formato PDF en línea +ThisIsInformationOnDocumentToSignSociete_rib=Esta es la información del mandato SEPA para firmar FeatureOnlineSignDisabled=La funcionalidad para la firma digital está deshabilitada o el documento fue generado antes de habilitar la función +NoSignature=No firmada diff --git a/htdocs/langs/es_CR/dict.lang b/htdocs/langs/es_CR/dict.lang index dc52c15cca3..d8968d34a01 100644 --- a/htdocs/langs/es_CR/dict.lang +++ b/htdocs/langs/es_CR/dict.lang @@ -38,8 +38,8 @@ CurrencySingUSD=Dólar estadounidense CurrencyXOF=CFA Francos BCEAO CurrencySingXOF=CFA Franco BCEAO CurrencyCentEUR=centavos -CurrencyCentINR=Paisa -CurrencyCentSingINR=Paise +CurrencyCentINR=Paise +CurrencyCentSingINR=Paisa DemandReasonTypeSRC_CAMP_MAIL=Campaña de correo DemandReasonTypeSRC_CAMP_EMAIL=Campaña de EMailing DemandReasonTypeSRC_CAMP_FAX=Campaña de fax diff --git a/htdocs/langs/es_CR/errors.lang b/htdocs/langs/es_CR/errors.lang index 49264e933bf..592eff304f2 100644 --- a/htdocs/langs/es_CR/errors.lang +++ b/htdocs/langs/es_CR/errors.lang @@ -148,7 +148,6 @@ ErrorBankStatementNameMustFollowRegex=Error, el nombre de la cuenta bancaria deb ErrorPhpMailDelivery=Compruebe que no utilice un número demasiado alto de destinatarios y que su contenido de correo electrónico no sea similar a un Spam. Pida también a su administrador que verifique los archivos de los cortafuegos y de los registros del servidor para obtener una información más completa. ErrorUserNotAssignedToTask=El usuario debe ser asignado a la tarea para poder ingresar tiempo consumido. ErrorModuleFileSeemsToHaveAWrongFormat=El paquete del módulo parece tener un formato incorrecto. -ErrorFilenameDosNotMatchDolibarrPackageRules=El nombre del paquete del módulo ( %s ) no coincide con la sintaxis del nombre esperado: %s ErrorDuplicateTrigger=Error, nombre del disparador duplicado%s. Ya está cargado desde%s. ErrorNoWarehouseDefined=Error, no se han definido almacenes. ErrorBadLinkSourceSetButBadValueForRef=El enlace que utiliza no es válido. Se define una 'fuente' de pago, pero el valor de 'ref' no es válido. diff --git a/htdocs/langs/es_CR/interventions.lang b/htdocs/langs/es_CR/interventions.lang index 0d17b7ea975..6146d76def9 100644 --- a/htdocs/langs/es_CR/interventions.lang +++ b/htdocs/langs/es_CR/interventions.lang @@ -10,6 +10,7 @@ DeleteInterventionLine=Borrar línea de intervención ConfirmDeleteIntervention=¿Estás seguro de que quieres eliminar esta intervención? ConfirmValidateIntervention=¿Estás seguro de que quieres validar esta intervención con el nombre %s? ConfirmModifyIntervention=¿Estás seguro de que quieres modificar esta intervención? +ConfirmCloseIntervention=¿Está seguro de que quiere cerrar esta intervención? ConfirmDeleteInterventionLine=¿Estás seguro de que quieres eliminar esta línea de la intervención? ConfirmCloneIntervention=¿Estás seguro de que quieres clonar esta intervención? NameAndSignatureOfInternalContact=Nombre y firma de la intervención: @@ -20,10 +21,11 @@ InterventionClassifyDone=Marcar como "Listo" SendInterventionByMail=Enviar intervención por correo InterventionClassifiedBilledInDolibarr=Intervención %s marcada como facturada InterventionClassifiedUnbilledInDolibarr=Intervención %s marcada como sin facturar +InterventionSentByEMail=Intervención %s enviada por correo electrónico +InterventionClosedInDolibarr=Intervención%scerrada InterventionsArea=Área de Intervenciones DraftFichinter=Intervenciones en borrador LastModifiedInterventions=Ultimas %s intervenciones modificadas -TypeContact_fichinter_external_CUSTOMER=Contacto para seguimiento del cliente PrintProductsOnFichinter=Imprima también líneas de tipo "producto" (no solo servicios) en la ficha de la intervención PrintProductsOnFichinterDetails=intervenciones generadas a partir de órdenes UseServicesDurationOnFichinter=Usar la duración de los servicios para las intervenciones generadas a partir de órdenes. @@ -31,7 +33,6 @@ UseDurationOnFichinter=Oculta el campo de duración para los registros de interv UseDateWithoutHourOnFichinter=Oculta horas y minutos del campo de fecha para registros de intervención NbOfinterventions=No. de tarjetas de intervención NumberOfInterventionsByMonth=No. de tarjetas de intervención por mes (fecha de validación) -AmountOfInteventionNotIncludedByDefault=El monto de la intervención no se incluye de manera predeterminada en las ganancias (en la mayoría de los casos, las hojas de tiempo se usan para contar el tiempo empleado). Puede usar la opción PROJECT_ELEMENTS_FOR_ADD_MARGIN y PROJECT_ELEMENTS_FOR_MINUS_MARGIN en home-setup-other para completar la lista de elementos incluidos en las ganancias. InterId=ID de intervención InterRef=Ref. de Intervención InterDateCreation=Fecha de creación de la intervención diff --git a/htdocs/langs/es_CR/stripe.lang b/htdocs/langs/es_CR/stripe.lang index 16f3f7e1520..124572a1d1e 100644 --- a/htdocs/langs/es_CR/stripe.lang +++ b/htdocs/langs/es_CR/stripe.lang @@ -5,7 +5,6 @@ STRIPE_PAYONLINE_SENDEMAIL=Notificación por correo luego del intento de pago (e YouWillBeRedirectedOnStripe=Se le redirigirá a la página de Stripe protegida para ingresar su información de tarjeta de crédito ToOfferALinkForOnlinePayment=URL para el pago %s ToOfferALinkForOnlinePaymentOnFreeAmount=URL para ofrecer una %s página de pago en línea de cualquier cantidad sin objeto existente -YouCanAddTagOnUrl=También puede agregar el parámetro de URL &tag=valor a cualquiera de esos URL (obligatorio solo para pagos no vinculados a un objeto) para agregar su propia etiqueta de comentario de pago.
Para la URL de pagos sin objeto existente, también puede agregar el parámetro &noidempotency=1 para que el mismo enlace con la misma etiqueta se pueda usar varias veces (algún modo de pago puede limitar el pago a 1 para cada enlace diferente sin esto parámetro) SetupStripeToHavePaymentCreatedAutomatically=Configure su Stripe con url %s para que el pago se cree automáticamente cuando se valida con Stripe. STRIPE_CGI_URL_V2=Módulo URL de Stripe CGI para el pago NewStripePaymentFailed=Nuevo pago de Stripe probado pero fallido @@ -17,3 +16,4 @@ StripeLiveEnabled=Stripe activado en vivo (de lo contrario modo prueba/sandbox) StripeCustomerId=ID de cliente de Stripe ConfirmDeleteCard=¿Seguro que quieres eliminar esta tarjeta de crédito o débito? ClickHereToTryAgain=Haga clic aquí para volver a intentarlo... +StripeConnect_Mode=Modo de conexión stripe diff --git a/htdocs/langs/es_CU/admin.lang b/htdocs/langs/es_CU/admin.lang index 29a2ec6ea18..5848d1f21f2 100644 --- a/htdocs/langs/es_CU/admin.lang +++ b/htdocs/langs/es_CU/admin.lang @@ -361,11 +361,9 @@ ModuleCompanyCodeCustomerDigitaria=%s seguido del nombre del cliente truncado po ModuleCompanyCodeSupplierDigitaria=%s seguido del nombre del proveedor truncado por el número de caracteres: %s para el código de contabilidad del proveedor. Use3StepsApproval=De forma predeterminada, las órdenes de compra deben ser creadas y aprobadas por 2 usuarios diferentes (un paso/usuario para crear y un paso/usuario para aprobar. Tenga en cuenta que si el usuario tiene permiso para crear y aprobar, un paso/usuario será suficiente) . Puede solicitar con esta opción introducir un tercer paso/aprobación del usuario, si el monto es superior a un valor dedicado (por lo que serán necesarios 3 pasos: 1=validación, 2=primera aprobación y 3=segunda aprobación si el monto es suficiente).
Establézcalo en vacío si una aprobación (2 pasos) es suficiente, configúrelo en un valor muy bajo (0.1) si siempre se requiere una segunda aprobación (3 pasos). UseDoubleApproval=Utilice una aprobación de 3 pasos cuando el monto (sin impuestos) sea superior a... -WarningPHPMailB=- Algunos proveedores de servicios de correo electrónico (como Yahoo) no le permiten enviar un correo electrónico desde otro servidor que no sea su propio servidor. Su configuración actual utiliza el servidor de la aplicación para enviar correos electrónicos y no el servidor de su proveedor de correo electrónico, por lo que algunos destinatarios (el compatible con el protocolo DMARC restrictivo) le preguntarán a su proveedor de correo electrónico si pueden aceptar su correo electrónico y algunos proveedores de correo electrónico. (como Yahoo) puede responder "no" porque el servidor no es suyo, por lo que es posible que no se acepten para su entrega algunos de sus correos electrónicos enviados (tenga cuidado también con la cuota de envío de su proveedor de correo electrónico). WarningPHPMailC=- También es interesante usar el servidor SMTP de su propio proveedor de servicios de correo electrónico para enviar correos electrónicos, por lo que todos los correos electrónicos enviados desde la aplicación también se guardarán en el directorio "Enviados" de su buzón. WarningPHPMailDbis=Si realmente desea mantener el método "PHP" predeterminado para enviar correos electrónicos, simplemente ignore esta advertencia o elimínela %shaciendo clic aquí%s. 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 de 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 . ClickToShowDescription=Haga clic para mostrar la descripción DependsOn=Este módulo necesita los módulos RequiredBy=Este módulo es requerido por módulo(s) @@ -643,7 +641,6 @@ Permission773=Eliminar informes de gastos Permission775=Aprobar informes de gastos Permission776=Pagar informes de gastos Permission779=Exportar informes de gastos -Permission1001=Leer acciones Permission1004=Leer movimientos de stock Permission1015=Permitir cambiar el valor de PMP para un producto Permission1121=Leer propuestas de proveedores @@ -1455,7 +1452,6 @@ NothingToSetup=No se requiere una configuración específica para este módulo. SetToYesIfGroupIsComputationOfOtherGroups=Establézcalo en sí si este grupo es un cálculo de otros grupos COMPANY_DIGITARIA_CLEAN_REGEX=Filtro Regex para limpiar valor (COMPANY_DIGITARIA_CLEAN_REGEX) RemoveSpecialWordsHelp=Especifique las palabras que se limpiarán antes de calcular la cuenta del cliente o proveedor. Usar una ";" entre cada palabra -GDPRContact=Delegado de Protección de Datos (contacto DPO, Privacidad de Datos o RGPD) HelpOnTooltip=Texto de ayuda para mostrar en la información sobre herramientas HelpOnTooltipDesc=Coloque texto o una clave de traducción aquí para que el texto se muestre en una información sobre herramientas cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo en el servidor con la línea de comandos:
%s @@ -1491,7 +1487,6 @@ WithoutDolTrackingID=Mensaje de una conversación iniciada por un primer correo FormatZip=Cremallera MainMenuCode=Código de entrada de menú (menú principal) ECMAutoTree=Mostrar árbol ECM automático -OperationParamDesc=Defina las reglas que se utilizarán para extraer algunos datos o establecer los valores que se utilizarán para la operación.

Ejemplo para extraer el nombre de una empresa del asunto del correo electrónico en una variable temporal:
tmp_var=EXTRACT:ASUNTO:Mensaje de la empresa ([^\n]*)

Ejemplos para establecer las propiedades de un objeto para crear:
objproperty1=SET:un valor codificado
objproperty2=SET:__tmp_var__
objproperty3=SET IFEMPTY: un valor (el valor se establece solo si la propiedad aún no está definida)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:ASUNJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My el nombre de la empresa es\\s([^\\s]*)

Use una nueva línea para extraer o establecer varias propiedades. OpeningHoursDesc=Introduzca aquí el horario habitual de apertura de su empresa. ResourceSetup=Configuración del módulo de recursos DisabledResourceLinkUser=Deshabilitar la función para vincular un recurso a los usuarios diff --git a/htdocs/langs/es_CU/dict.lang b/htdocs/langs/es_CU/dict.lang index 7a9905403f7..0e7b9d4fded 100644 --- a/htdocs/langs/es_CU/dict.lang +++ b/htdocs/langs/es_CU/dict.lang @@ -81,7 +81,6 @@ CurrencyUAH=Grivna CurrencySingUAH=Grivna CurrencyCentEUR=centavos CurrencyCentSingEUR=centavo -CurrencyCentSingINR=paisa DemandReasonTypeSRC_CAMP_MAIL=campaña de correo DemandReasonTypeSRC_CAMP_EMAIL=Campaña de correo electrónico DemandReasonTypeSRC_CAMP_FAX=campaña de fax diff --git a/htdocs/langs/es_CU/errors.lang b/htdocs/langs/es_CU/errors.lang index f6a24e4fc72..68746cecd59 100644 --- a/htdocs/langs/es_CU/errors.lang +++ b/htdocs/langs/es_CU/errors.lang @@ -166,7 +166,6 @@ ErrorPhpMailDelivery=Compruebe que no utiliza un número demasiado alto de desti ErrorUserNotAssignedToTask=El usuario debe estar asignado a la tarea para poder ingresar el tiempo consumido. ErrorModuleFileSeemsToHaveAWrongFormat=El paquete del módulo parece tener un formato incorrecto. ErrorModuleFileSeemsToHaveAWrongFormat2=Debe existir al menos un directorio obligatorio en el zip del módulo: %s o %s -ErrorFilenameDosNotMatchDolibarrPackageRules=El nombre del paquete del módulo ( %s ) no coincide con la sintaxis del nombre esperado: %s ErrorDuplicateTrigger=Error, nombre de activador duplicado %s. Ya cargado desde %s. ErrorNoWarehouseDefined=Error, no hay almacenes definidos. ErrorBadLinkSourceSetButBadValueForRef=El enlace que utiliza no es válido. Se define una 'fuente' para el pago, pero el valor de 'ref' no es válido. diff --git a/htdocs/langs/es_CU/interventions.lang b/htdocs/langs/es_CU/interventions.lang index d0029b72d81..b6934ca8fd7 100644 --- a/htdocs/langs/es_CU/interventions.lang +++ b/htdocs/langs/es_CU/interventions.lang @@ -27,7 +27,6 @@ InterventionsArea=Área de intervenciones DraftFichinter=Proyecto de intervenciones LastModifiedInterventions=Últimas intervenciones %s modificadas FichinterToProcess=Intervenciones al proceso -TypeContact_fichinter_external_CUSTOMER=Seguimiento del contacto con el cliente PrintProductsOnFichinter=Imprimir también líneas de tipo "producto" (no solo servicios) en la tarjeta de intervención PrintProductsOnFichinterDetails=intervenciones generadas a partir de pedidos UseServicesDurationOnFichinter=Usar la duración de los servicios para las intervenciones generadas a partir de los pedidos @@ -35,7 +34,6 @@ UseDurationOnFichinter=Oculta el campo de duración de los registros de interven UseDateWithoutHourOnFichinter=Oculta horas y minutos del campo de fecha para registros de intervención NbOfinterventions=Nº de tarjetas de intervención NumberOfInterventionsByMonth=Nº de tarjetas de intervención por mes (fecha de validación) -AmountOfInteventionNotIncludedByDefault=El monto de la intervención no se incluye de manera predeterminada en las ganancias (en la mayoría de los casos, las hojas de tiempo se usan para contar el tiempo empleado). Puede usar la opción PROJECT_ELEMENTS_FOR_ADD_MARGIN y PROJECT_ELEMENTS_FOR_MINUS_MARGIN en home-setup-other para completar la lista de elementos incluidos en las ganancias. InterId=Identificación de intervención InterRef=referencia de intervención InterDateCreation=Intervención de creación de fecha @@ -46,3 +44,4 @@ InterLineDuration=Intervención de duración de línea InterLineDesc=Intervención de descripción de línea ToCreateAPredefinedIntervention=Para crear una intervención predefinida o recurrente, cree una intervención común y conviértala en una plantilla de intervención ConfirmReopenIntervention=¿Está seguro de que desea volver a abrir la intervención %s ? +TypeContact_fichinter_external_CUSTOMER=Seguimiento del contacto con el cliente diff --git a/htdocs/langs/es_CU/stripe.lang b/htdocs/langs/es_CU/stripe.lang index 17a1185046b..3e8ee31f29b 100644 --- a/htdocs/langs/es_CU/stripe.lang +++ b/htdocs/langs/es_CU/stripe.lang @@ -8,7 +8,6 @@ YouWillBeRedirectedOnStripe=Se le redirigirá a la página segura de Stripe para ToOfferALinkForOnlinePayment=URL para el pago %s ToOfferALinkForOnlinePaymentOnOrder=URL para ofrecer una página de pago en línea %s para un pedido de ventas ToOfferALinkForOnlinePaymentOnFreeAmount=URL para ofrecer una página de pago en línea %s de cualquier monto sin objeto existente -YouCanAddTagOnUrl=También puede agregar el parámetro de URL &tag= value a cualquiera de esas URL (obligatorio solo para pagos no vinculados a un objeto) para agregar su propia etiqueta de comentario de pago.
Para la URL de pagos sin objeto existente, también puede agregar el parámetro &noidempotency=1 para que el mismo enlace con la misma etiqueta se pueda usar varias veces (algún modo de pago puede limitar el pago a 1 por cada enlace diferente sin este parámetro) SetupStripeToHavePaymentCreatedAutomatically=Configure su Stripe con la URL %s para que el pago se cree automáticamente cuando lo valide Stripe. STRIPE_CGI_URL_V2=Url del módulo Stripe CGI para pago NewStripePaymentFailed=Nuevo pago de Stripe intentado pero falló @@ -38,4 +37,3 @@ ShowInStripe=Mostrar en raya StripeUserAccountForActions=Cuenta de usuario para usar para la notificación por correo electrónico de algunos eventos de Stripe (pagos de Stripe) ToOfferALinkForLiveWebhook=Enlace para configurar Stripe WebHook para llamar a la IPN (modo en vivo) ClickHereToTryAgain= Haga clic aquí para intentarlo de nuevo... -CreationOfPaymentModeMustBeDoneFromStripeInterface=Debido a las reglas de Strong Customer Authentication, la creación de una tarjeta debe realizarse desde el back office de Stripe. Puede hacer clic aquí para activar el registro de cliente de Stripe: %s diff --git a/htdocs/langs/es_EC/admin.lang b/htdocs/langs/es_EC/admin.lang index c93e43171bb..d2e01735947 100644 --- a/htdocs/langs/es_EC/admin.lang +++ b/htdocs/langs/es_EC/admin.lang @@ -585,7 +585,6 @@ Permission773=Eliminar informes de gastos Permission775=Aprobar informes de gastos Permission776=Pagar los informes de gastos Permission779=Exportar informes de gastos -Permission1001=Leer existencias Permission1002=Crear / modificar almacenes Permission1004=Leer movimientos de existencias Permission1005=Crear / modificar movimientos de existencias @@ -1322,7 +1321,6 @@ WarningInstallationMayBecomeNotCompliantWithLaw=Está intentando instalar el mó NothingToSetup=No se requiere ninguna configuración específica para este módulo. SetToYesIfGroupIsComputationOfOtherGroups=Establezca esto en "sí" si este grupo es un cálculo de otros grupos SeveralLangugeVariatFound=Algunas variantes de lenguaje -GDPRContact=Oficial de protección de datos (DPO, privacidad de datos o contacto GDPR) HelpOnTooltip=Texto de ayuda para mostrar en información sobre herramientas HelpOnTooltipDesc=Coloque texto o una clave de traducción aquí para que el texto se muestre en una información sobre herramientas cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo en el servidor con la línea de comandos:
%s diff --git a/htdocs/langs/es_EC/dict.lang b/htdocs/langs/es_EC/dict.lang index a1868bb3420..cda87228fd3 100644 --- a/htdocs/langs/es_EC/dict.lang +++ b/htdocs/langs/es_EC/dict.lang @@ -51,8 +51,8 @@ CurrencyXAF=Franco CFA BEAC CurrencyXOF=CFA Francos BCEAO CurrencyCentEUR=centavos CurrencyCentSingEUR=centavo -CurrencyCentINR=Paisa -CurrencyCentSingINR=Paise +CurrencyCentINR=Paise +CurrencyCentSingINR=Paisa DemandReasonTypeSRC_CAMP_MAIL=Campaña de envío DemandReasonTypeSRC_CAMP_EMAIL=Campaña de EMailing DemandReasonTypeSRC_CAMP_FAX=Campaña de fax diff --git a/htdocs/langs/es_EC/errors.lang b/htdocs/langs/es_EC/errors.lang index 70c6ba9b55f..6ef06e9c942 100644 --- a/htdocs/langs/es_EC/errors.lang +++ b/htdocs/langs/es_EC/errors.lang @@ -30,7 +30,6 @@ ErrorFoundBadEmailInFile=Se encontró una sintaxis de correo electrónico incorr ErrorUserCannotBeDelete=El usuario no puede ser eliminado. Tal vez esté asociado a entidades dolibarr. ErrorFailedToCreateDir=Error al crear un directorio. Compruebe que el usuario del servidor Web tiene permisos para escribir en el directorio de documentos de Dolibarr. Si el parámetro safe_mode está habilitado en este PHP, compruebe que los archivos php de Dolibarr pertenecen al usuario del servidor web (o grupo). ErrorNoMailDefinedForThisUser=No hay correo definido para este usuario -ErrorFeatureNeedJavascript=Esta característica necesita javascript para ser activado para trabajar. Cambie esto en la pantalla de configuración. ErrorTopMenuMustHaveAParentWithId0=Un menú del tipo 'Top' no puede tener un menú padre. Ponga 0 en el menú padre o elija un menú de tipo 'Izquierda'. ErrorLeftMenuMustHaveAParentId=Un menú de tipo 'Izquierda' debe tener un ID padre. ErrorFileNotFound=Archivo %s no encontrado (Camino incorrecto, permisos incorrectos o acceso denegado por PHP openbasedir o parámetro safe_mode) @@ -38,7 +37,6 @@ ErrorDirNotFound=Directorio %s no encontrado (Camino incorrecto, permisos ErrorFunctionNotAvailableInPHP=La función %s es necesaria para esta función, pero no está disponible en esta versión / configuración de PHP. 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. 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) @@ -47,7 +45,6 @@ ErrorNoValueForCheckBoxType=Por favor, rellene el valor de la casilla de verific ErrorNoValueForRadioType=Por favor, rellene el valor de la lista de radio ErrorBadFormatValueList=El valor de la lista no puede tener más de una coma: %s , pero necesita al menos una: key, value ErrorFieldCanNotContainSpecialCharacters=El campo %s no debe contener caracteres especiales. -ErrorFieldCanNotContainSpecialNorUpperCharacters=El campo %s no debe contener caracteres especiales, ni mayúsculas, y no puede contener solo números. ErrorFieldMustHaveXChar=El campo %s debe tener al menos %s caracteres. ErrorNoAccountancyModuleLoaded=No se ha activado ningún módulo de contabilidad ErrorExportDuplicateProfil=Este nombre de perfil ya existe para este conjunto de exportación. @@ -57,9 +54,7 @@ ErrorCantSaveADoneUserWithZeroPercentage=No se puede guardar una acción con "es ErrorPleaseTypeBankTransactionReportName=Ingrese el nombre del extracto bancario donde se debe informar la entrada (Formato AAAAMM o AAAAMMDD) ErrorRecordHasChildren=Error al eliminar el registro ya que tiene algunos registros secundarios. ErrorRecordIsUsedCantDelete=No se puede borrar el registro. Ya está usado o incluido en otro objeto. -ErrorModuleRequireJavascript=Javascript no debe desactivarse para que esta función funcione. Para activar / desactivar JavaScript, vaya al menú Inicio-> Configuración-> Mostrar. ErrorPasswordsMustMatch=Las contraseñas escritas deben coincidir entre sí -ErrorContactEMail=Se produjo un error técnico. Comuníquese con el administrador para seguir el correo electrónico %s y proporcionar el código de error %s en su mensaje, o agregue una copia de pantalla de esta página. ErrorWrongValueForField=El campo %s: '%s' no coincide con la expresión regular regla %s ErrorFieldValueNotIn=El campo %s: '%s' no es un valor que se encuentra en el campo %s de %s ErrorFieldRefNotIn=Campo %s: '%s' no es una %s referencia existente @@ -89,7 +84,6 @@ ErrorLoginDoesNotExists=El usuario con acceso %s no se pudo encontrar. ErrorLoginHasNoEmail=Este usuario no tiene dirección de correo electrónico. Proceso abortado. ErrorBadValueForCode=Valor incorrecto para el código de seguridad. Pruebe de nuevo con nuevo valor ... ErrorBothFieldCantBeNegative=Los campos%s y%s no pueden ser negativos -ErrorFieldCantBeNegativeOnInvoice=El campo %s no puede ser negativo en este tipo de factura. Si necesita agregar una línea de descuento, simplemente cree el descuento primero (del campo '%s' en la tarjeta de cliente/proveedor) y aplíquelo a la factura. ErrorQtyForCustomerInvoiceCantBeNegative=Cantidad de línea en las facturas de los clientes no puede ser negativa ErrorWebServerUserHasNotPermission=La cuenta de usuario %s utilizada para ejecutar el servidor web no tiene permiso para ello ErrorNoActivatedBarcode=No se ha activado ningún tipo de código de barras @@ -118,7 +112,6 @@ ErrorPriceExpression4=Caracteres ilegales' ErrorPriceExpression5=Inesperado '%s' ErrorPriceExpression6=Número incorrecto de argumentos (%s dado,%s esperado) ErrorPriceExpression8=Operador inesperado '%s' -ErrorPriceExpression9=Se ha producido un error inesperado ErrorPriceExpression11=Esperando '%s' ErrorPriceExpression17=Variable no definida '%s' ErrorPriceExpression21=Resultado vacío '%s' @@ -157,7 +150,6 @@ ErrorBankStatementNameMustFollowRegex=Error, el nombre de la cuenta bancaria deb ErrorPhpMailDelivery=Compruebe que no utilice un número demasiado alto de destinatarios y que su contenido de correo electrónico no sea similar a un Spam. Pida también a su administrador que verifique los archivos de los cortafuegos y de los registros del servidor para obtener una información más completa. ErrorUserNotAssignedToTask=El usuario debe ser asignado a la tarea para poder ingresar tiempo consumido. ErrorModuleFileSeemsToHaveAWrongFormat=El paquete del módulo parece tener un formato incorrecto. -ErrorFilenameDosNotMatchDolibarrPackageRules=El nombre del paquete de módulos (%s ) no coincide con la sintaxis de nombre esperada: %s ErrorDuplicateTrigger=Error, nombre del disparador duplicado%s. Ya está cargado desde%s. ErrorNoWarehouseDefined=Error, no se han definido almacenes. ErrorBadLinkSourceSetButBadValueForRef=El enlace que utiliza no es válido. Se define una 'fuente' de pago, pero el valor de 'ref' no es válido. @@ -193,7 +185,6 @@ WarningConfFileMustBeReadOnly=Advertencia, el archivo de configuración ( htd WarningsOnXLines=Advertencias en %s registro (s) de origen WarningNoDocumentModelActivated=No se ha activado ningún modelo para la generación de documentos. Se elegirá un modelo por defecto hasta que verifique la configuración de su módulo. WarningLockFileDoesNotExists=Advertencia, una vez finalizada la configuración, debe deshabilitar las herramientas de instalación / migración agregando un archivo install.lock en el directorio %s. Omitir la creación de este archivo es un grave riesgo de seguridad. -WarningUntilDirRemoved=Todas las advertencias de seguridad (visibles solo para usuarios de administración) permanecerán activas mientras la vulnerabilidad esté presente (o se agregue la constante MAIN_REMOVE_INSTALL_WARNING en Configuración-> Otra configuración). WarningCloseAlways=Advertencia, el cierre se realiza incluso si la cantidad difiere entre los elementos de origen y destino. Active esta función con precaución. WarningUsingThisBoxSlowDown=Advertencia, usar esta casilla ralentizar seriamente todas las páginas que muestran la caja. WarningClickToDialUserSetupNotComplete=La configuración de la información de ClickToDial para su usuario no está completa (vea la pestaña ClickToDial en su tarjeta de usuario). diff --git a/htdocs/langs/es_EC/interventions.lang b/htdocs/langs/es_EC/interventions.lang index c8458b7c863..7286ea0c599 100644 --- a/htdocs/langs/es_EC/interventions.lang +++ b/htdocs/langs/es_EC/interventions.lang @@ -34,7 +34,6 @@ InterventionsArea=Área de intervenciones DraftFichinter=Proyectos de intervención LastModifiedInterventions=Últimas%s intervenciones modificadas FichinterToProcess=Intervenciones para procesar -TypeContact_fichinter_external_CUSTOMER=Seguimiento del contacto con el cliente PrintProductsOnFichinter=Imprimir también líneas de tipo "producto" (no sólo servicios) en tarjeta de intervención PrintProductsOnFichinterDetails=intervenciones generadas a partir de pedidos UseServicesDurationOnFichinter=Utilizar la duración de los servicios para las intervenciones generadas a partir de pedidos @@ -51,3 +50,4 @@ InterLineId=Intervención de línea de identificación InterLineDate=Intervención de línea de fecha InterLineDuration=Intervención de duración de línea InterLineDesc=Intervención de descripción de línea +TypeContact_fichinter_external_CUSTOMER=Seguimiento del contacto con el cliente diff --git a/htdocs/langs/es_EC/stripe.lang b/htdocs/langs/es_EC/stripe.lang index 3074081c9e9..8d7b7e15f35 100644 --- a/htdocs/langs/es_EC/stripe.lang +++ b/htdocs/langs/es_EC/stripe.lang @@ -6,7 +6,6 @@ StripeDoPayment=Pagar con raya YouWillBeRedirectedOnStripe=Se le redirigirá a la página de Stripe protegida para ingresar su información de tarjeta de crédito ToOfferALinkForOnlinePayment=URL para el pago de%s ToOfferALinkForOnlinePaymentOnFreeAmount=URL para ofrecer una página de pago en línea %s de cualquier monto sin objeto existente -YouCanAddTagOnUrl=También puede agregar el parámetro de URL &tag=valor a cualquiera de esos URL (obligatorio solo para pagos no vinculados a un objeto) para agregar su propia etiqueta de comentario de pago.
Para la URL de pagos sin objeto existente, también puede agregar el parámetro &noidempotency=1 para que el mismo enlace con la misma etiqueta se pueda usar varias veces (algún modo de pago puede limitar el pago a 1 para cada enlace diferente sin esto parámetro) SetupStripeToHavePaymentCreatedAutomatically=Configure su Stripe con URL %s para que el pago se cree automáticamente cuando sea validado por Stripe. STRIPE_CGI_URL_V2=Módulo URL de Stripe CGI para el pago NewStripePaymentFailed=Nuevo pago de Stripe probado pero fallido @@ -18,7 +17,6 @@ STRIPE_LIVE_WEBHOOK_KEY=Webhook clave en vivo ONLINE_PAYMENT_WAREHOUSE=Stock para usar en la disminución de inventario cuando se realiza el pago en línea
(TODO Cuando la opción para disminuir el inventario se realiza en una acción en la factura y el pago en línea se genera la factura?) StripeLiveEnabled=Stripe activado en vivo (de lo contrario modo prueba/sandbox) StripeImportPayment=Importar pagos en franja -ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails StripeGateways=Gateways de Tripe BankAccountForBankTransfer=Cuenta bancaria para pagos de fondos StripeAccount=Cuenta de Stripe diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index adaec0a4fae..a6bed48d2cd 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=El listado de valores tiene que ser líneas key,valor< ExtrafieldParamHelpcheckbox=El listado de valores tiene que ser líneas con el formato key,valor

por ejemplo:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=El listado de valores tiene que ser líneas con el formato key,valor (donde key no puede ser 0)

por ejemplo:
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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Los parámetros deben ser NombreObjeto:RutaClase
Sintaxis: NombreObjeto:RutaClase ExtrafieldParamHelpSeparator=Mantener vacío para un separador simple
Establezca a 1 para un separador de colapso (abierto de forma predeterminada para una nueva sesión, luego el estado se mantiene para cada sesión de usuario)
Establezca a 2 para un separador de colapso (colapsado por defecto para una nueva sesión, luego el estado se mantiene para cada sesión de usuario) LibraryToBuildPDF=Libreria usada en la generación de los PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s seguido del nombre del cliente truncado po ModuleCompanyCodeSupplierDigitaria=%s seguido del nombre del proveedor truncado por el número de caracteres: %s para el código contable del proveedor. Use3StepsApproval=De forma predeterminada, los pedidos a proveedor deben ser creados y aprobados por 2 usuarios diferentes (un paso/usuario para crear y un paso/usuario para aprobar. Tenga en cuenta que si el usuario tiene tanto el permiso para crear y aprobar, un paso usuario será suficiente) . Puede pedir con esta opción introducir una tercera etapa de aprobación/usuario, si la cantidad es superior a un valor específico (por lo que serán necesarios 3 pasos: 1 validación, 2=primera aprobación y 3=segunda aprobación si la cantidad es suficiente).
Deje vacío si una aprobación (2 pasos) es suficiente, si se establece en un valor muy bajo (0,1) se requiere siempre una segunda aprobación (3 pasos). UseDoubleApproval=Usar 3 pasos de aprobación si el importe (sin IVA) es mayor que... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Algunos proveedores de servicios de correo electrónico (como Yahoo) no le permiten enviar un correo electrónico desde otro servidor que no sea su propio servidor. Su configuración actual utiliza el servidor de la aplicación para enviar correo electrónico y no el servidor de su proveedor de correo electrónico, por lo que algunos destinatarios (el que es compatible con el protocolo restrictivo DMARC) le preguntarán a su proveedor de correo electrónico si pueden aceptar su correo electrónico y algunos proveedores de correo electrónico. (como Yahoo) puede responder "no" porque el servidor no es de ellos, por lo que es posible que algunos de sus correos electrónicos enviados no sean aceptados para la entrega (tenga cuidado también con la cuota de envío de su proveedor de correo electrónico). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- El uso del servidor SMTP de su propio proveedor de servicios de correo electrónico para enviar correos electrónicos también es interesante, por lo que todos los correos electrónicos enviados desde la aplicación también se guardarán en el directorio "Enviados" de su buzón. WarningPHPMailD=Por lo tanto, se recomienda cambiar el método de envío de correos electrónicos al valor "SMTP". WarningPHPMailDbis=Si realmente desea mantener el método "PHP" predeterminado para enviar correos electrónicos, simplemente ignore esta advertencia o elimínela haciendo %sclic aquí%s. 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 SPF real encontrado (para el correo electrónico %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %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 @@ -867,7 +868,7 @@ Permission255=Modificar la contraseña de otros usuarios Permission256=Eliminar o desactivar otros usuarios Permission262=Ampliar el acceso a todos los terceros Y a sus objetos (no sólo a los terceros a los que el usuario está vinculado como representante de ventas). Permission262b=No efectivo para usuarios externos (siempre limitados a ellos mismos para propuestas, pedidos, facturas, contratos, etc.). -Permission262c=No es efectivo para proyectos (solo importan las reglas sobre permisos, visibilidad y asignación de proyectos). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Ampliar el acceso a todos los terceros SIN sus objetos (no solo a los terceros para los que el usuario es comercial).
No efectivo para usuarios externos (siempre limitado a ellos mismos para presupuestos, pedidos, facturas, contratos, etc.).
No es efectivo para proyectos (solo reglas sobre permisos de proyectos, visibilidad y asuntos de asignación). Permission271=Consultar el CA Permission272=Consultar las facturas @@ -944,7 +945,7 @@ Permission776=Pagar informe de gastos Permission777=Lea todos los informes de gastos (incluso los de usuarios que no sean subordinados) Permission778=Crear/modificar informes de gastos de todos Permission779=Exportar informe de gastos -Permission1001=Consultar stocks +Permission1001=Read warehouses and stocks Permission1002=Crear/modificar almacenes Permission1003=Eliminar almacenes Permission1004=Consultar movimientos de stock @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtro de expresiones regulares para limpiar el va DuplicateForbidden=Duplicado prohibido RemoveSpecialWords=Limpiar ciertas palabras al generar subcuentas para clientes o proveedores RemoveSpecialWordsHelp=Especifique las palabras que se limpiarán antes de calcular la cuenta del cliente o proveedor. Utilizar una ";" entre cada palabra -GDPRContact=Oficina Protección de datos (DPO, Políticas de privacidad o contacto GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) 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 @@ -2218,7 +2219,7 @@ CreateCandidature=Crear solicitud de empleo FormatZip=Código postal MainMenuCode=Código de entrada del menú (menú principal) ECMAutoTree=Mostrar arbol automático GED -OperationParamDesc=Defina las reglas que se utilizarán para extraer algunos datos o establecer los valores que se utilizarán para la operación.

Ejemplo para extraer el nombre de una empresa del asunto del correo electrónico en una variable temporal:
tmp_var=EXTRACT:SUBJECT:Mensaje de la empresa ([^\n]*)

Ejemplos para establecer las propiedades de un objeto a crear:
objproperty1=SET:un valor codificado
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:un valor (el valor se establece solo si la propiedad aún no está definida)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:El nombre de mi empresa es\\s([^\\s]*)

Utilice una nueva línea para extraer o establecer varias propiedades. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Horario de apertura OpeningHoursDesc=Teclea el horario normal de apertura de tu compañía. ResourceSetup=Configuración del módulo Recursos @@ -2264,7 +2265,7 @@ LargerThan=Mayor que IfTrackingIDFoundEventWillBeLinked=Tenga en cuenta que si se encuentra un ID de seguimiento de un objeto en un correo electrónico, o si el correo electrónico es una respuesta de un correo electrónico ya recopilado y vinculado a un objeto, el evento creado se vinculará automáticamente al objeto relacionado conocido. WithGMailYouCanCreateADedicatedPassword=Con una cuenta de GMail, si habilitó la validación de 2 pasos, se recomienda crear una segunda contraseña dedicada para la aplicación en lugar de usar la contraseña de su propia cuenta de https://myaccount.google.com/. EmailCollectorTargetDir=Puede ser un comportamiento deseado mover el correo electrónico a otra etiqueta/directorio cuando se procesó exitosamente. Simplemente configure el nombre del directorio aquí para usar esta función (NO use caracteres especiales en el nombre). Tenga en cuenta que también debe utilizar una cuenta de inicio de sesión de lectura/escritura. -EmailCollectorLoadThirdPartyHelp=Puede utilizar esta acción para utilizar el contenido del correo electrónico para buscar y cargar un tercero existente en su base de datos (la búsqueda se realizará en la propiedad definida entre 'id', 'nombre', 'nombre_alias', 'correo electrónico'). El tercero encontrado (o creado) se utilizará para las siguientes acciones que lo necesiten.
Por ejemplo, si desea crear un tercero con un nombre extraído de una cadena ' Nombre: nombre a buscar' presente en el cuerpo, use el correo electrónico del remitente como correo electrónico, puede configurar el campo de parámetro de esta manera:
'email=HEADER:^From:(. *);nombre=EXTRACTO:BODY:Nombre:\\s([^\\s]*);cliente=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Advertencia: muchos servidores de correo electrónico (como Gmail) realizan búsquedas de palabras completas cuando buscan en una cadena y no devolverán un resultado si la cadena solo se encuentra parcialmente en una palabra. También por este motivo, se ignorará el uso de caracteres especiales en un criterio de búsqueda si no forman parte de palabras existentes.
Para realizar una búsqueda de exclusión en una palabra (devolver el correo electrónico si no se encuentra la palabra), puede usar el ! carácter antes de la palabra (es posible que no funcione en algunos servidores de correo). EndPointFor=End point for %s : %s DeleteEmailCollector=Eliminar el recolector de e-mail @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Nombre de terceros: alias de terceros ALIAS_THIRDPARTY=Alias de terceros: nombre de terceros PDFIn2Languages=Mostrar etiquetas en el PDF en 2 idiomas diferentes (es posible que esta función no funcione para algunos idiomas) 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=Genere documentos PDF con formato PDF/A en lugar del formato PDF predeterminado +PDF_USE_A=PDF documents format 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. RssNote=Nota: Cada definición de fuente RSS proporciona un widget que debe habilitar para que esté disponible en el tablero JumpToBoxes=Vaya a Configuración -> Módulos @@ -2553,3 +2554,8 @@ MenuDict=Diccionario AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Nombre del parámetro ParamValue=Valor del parámetro +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/es_ES/commercial.lang b/htdocs/langs/es_ES/commercial.lang index 3fecc48b0e6..58162d4d048 100644 --- a/htdocs/langs/es_ES/commercial.lang +++ b/htdocs/langs/es_ES/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=¿Está seguro de querer eliminar este evento? CardAction=Ficha evento ActionOnCompany=Compañia relacionada ActionOnContact=Contacto relacionado +ActionOnUser=Related user TaskRDVWith=Cita con %s ShowTask=Ver tarea ShowAction=Ver evento @@ -47,7 +48,6 @@ LastProspectToContact=A contactar LastProspectContactInProcess=Contacto en curso LastProspectContactDone=Clientes potenciales contactados ActionAffectedTo=Evento asignado a -ActionDoneBy=Acción realizada por ActionAC_TEL=Llamada telefónica ActionAC_FAX=Envío Fax ActionAC_PROP=Envío presupuesto por correo @@ -77,13 +77,26 @@ ToOfferALinkForOnlineSignature=Enlace para la firma en línea WelcomeOnOnlineSignaturePageProposal=Bienvenido a la página para aceptar presupuestos de %s WelcomeOnOnlineSignaturePageContract=Bienvenido a la página de firma del PDF del contrato %s WelcomeOnOnlineSignaturePageFichinter=Bienvenido a la página de firma de PDF de intervención %s +WelcomeOnOnlineSignaturePageSociete_rib=Bienvenido a la %s página de firma de PDF del mandato SEPA +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=Esta pantalla le permite aceptar y firmar, o rechazar, una presupuesto/propuesta comercial ThisScreenAllowsYouToSignDocFromContract=Esta pantalla le permite firmar contratos en formato PDF en línea. ThisScreenAllowsYouToSignDocFromFichinter=Esta pantalla le permite firmar la intervención en formato PDF en línea. +ThisScreenAllowsYouToSignDocFromSociete_rib=Esta pantalla le permite firmar el Mandato SEPA en formato PDF en línea. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=Esta es la información del documento para aceptar o rechazar ThisIsInformationOnDocumentToSignContract=Esta es la información sobre el contrato a firmar. ThisIsInformationOnDocumentToSignFichinter=Esta es la información sobre la intervención para firmar +ThisIsInformationOnDocumentToSignSociete_rib=Esta es información sobre el mandato SEPA para firmar +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Firma del presupuesto/propuesta comercial %s SignatureContractRef=Firma del contrato %s SignatureFichinterRef=Firma de intervención %s +SignatureSociete_ribRef=Firma del mandato SEPA %s FeatureOnlineSignDisabled=Característica para la firma en línea inhabilitada o documento generado antes de que se habilitara la característica +NoSignature=No firmado +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/es_ES/companies.lang b/htdocs/langs/es_ES/companies.lang index 3c57785f1f2..26c003a287b 100644 --- a/htdocs/langs/es_ES/companies.lang +++ b/htdocs/langs/es_ES/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Login usuario NoDolibarrAccess=Sin acceso de usuario ExportDataset_company_1=Terceros (Empresas / asociaciones / particulares) y propiedades ExportDataset_company_2=Contactos y sus propiedades +ExportDataset_company_3=Cuentas bancarias de terceros ImportDataset_company_1=Terceros y sus propiedades. ImportDataset_company_2=Contactos/Direcciones adicionales de Terceros y campos adicionales ImportDataset_company_3=Cuentas bancarias de terceros diff --git a/htdocs/langs/es_ES/datapolicy.lang b/htdocs/langs/es_ES/datapolicy.lang index 6d4c7cc5491..86ffbeee5c6 100644 --- a/htdocs/langs/es_ES/datapolicy.lang +++ b/htdocs/langs/es_ES/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,13 +15,10 @@ Module4100Name = Política de privacidad de datos # Module description 'ModuledatapolicyDesc' Module4100Desc = Módulo para gestionar la Privacidad de los Datos (Conformidad con el RGPD) - -# # Administration page -# datapolicySetup = Configuración del módulo de Política de Privacidad de Datos Deletion = Eliminación de datos -datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). +datapolicySetupPage = Dependiendo de las leyes de sus países (Ejemplo Artículo 5 del RGPD), los datos personales deben conservarse durante un período sin exceder el tiempo que los datos son necesarios para el propósito para el cual fueron recopilados, excepto para fines de archivo.
La eliminación se realizará automáticamente después de una cierta duración sin eventos (la duración que habrás indicado a continuación). NB_MONTHS = %s meses ONE_YEAR = 1 año NB_YEARS = %s años @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Cliente potencial/Cliente DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = No es cliente potencial/cliente DATAPOLICY_CONTACT_FOURNISSEUR = Proveedor DATAPOLICY_ADHERENT = Miembro -DATAPOLICY_Tooltip_SETUP = Tipo de contacto - Indique sus opciones para cada tipo. -DATAPOLICYMail = Configuración de E-Mail -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Contenido del correo electrónico -DATAPOLICYSUBSITUTION = Puede utilizar las siguientes variables en su correo electrónico (LINKACCEPT permite crear un enlace que registre el acuerdo de la persona, LINKREFUSED permite registrar el rechazo de la persona): -DATAPOLICYACCEPT = Mensaje después del acuerdo -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Puede enviar un correo electrónico de GDPR a todos sus contactos relevantes (que aún no han recibido un correo electrónico y para los cuales no ha registrado nada sobre su acuerdo de GDPR). Para ello, utilice el siguiente botón. SendAgreement = Enviar correos electrónicos AllAgreementSend = Todos los correos electrónicos han sido enviados. TXTLINKDATAPOLICYACCEPT = Texto para el enlace "acuerdo" -TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# +TXTLINKDATAPOLICYREFUSE = Texto para el enlace "desacuerdo" # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = RGPD: Tratamiento de datos personales DATAPOLICY_consentement = Consentimiento obtenido para el tratamiento de datos personales -DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonimizar a un tercero -DATAPOLICY_POPUP_ANONYME_TEXTE = No puede eliminar este contacto de Dolibarr porque hay elementos relacionados. De acuerdo con el RGPD, harás anónimos todos estos datos para respetar tus obligaciones. ¿Desea continuar? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Portabilidad RGPD -DATAPOLICY_PORTABILITE_TITLE = Exportación de datos personales -DATAPOLICY_PORTABILITE_CONFIRMATION = Quiere exportar los datos personales de este contacto. ¿Está seguro? - -# +DATAPOLICY_opposition_traitement = Se opone al tratamiento de sus datos personales +DATAPOLICY_opposition_prospection = Se opone al tratamiento de sus datos personales con fines de prospección # Notes added during an anonymization -# -ANONYMISER_AT = Anonimizó el %s - -DATAPOLICY_date = Date of agreement/disagreement GDPR -DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Enviar correo electrónico de RGPD +DATAPOLICY_date = Fecha de acuerdo/desacuerdo RGPD +DATAPOLICY_send = Fecha de envío del correo electrónico del acuerdo MailSent = E-mail ha sido enviado - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion +NUMBER_MONTH_BEFORE_DELETION = Número de meses antes de la eliminación diff --git a/htdocs/langs/es_ES/dict.lang b/htdocs/langs/es_ES/dict.lang index b5463581ea8..284abb7c86b 100644 --- a/htdocs/langs/es_ES/dict.lang +++ b/htdocs/langs/es_ES/dict.lang @@ -158,7 +158,7 @@ CountryMX=Mexico CountryFM=Micronesia CountryMD=Moldavia CountryMN=Mongolia -CountryMS=Monserrat +CountryMS=Montserrat CountryMZ=Mozambique CountryMM=Myanmar (Birmania) CountryNA=Namibia @@ -295,8 +295,8 @@ CurrencyXPF=Francos CFP CurrencySingXPF=Franco CFP CurrencyCentEUR=céntimos CurrencyCentSingEUR=céntimo -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=milésimo #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/es_ES/errors.lang b/htdocs/langs/es_ES/errors.lang index 2cce96b68a8..ebc29449b73 100644 --- a/htdocs/langs/es_ES/errors.lang +++ b/htdocs/langs/es_ES/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=El usuario debe ser asignado a la tarea para que pued ErrorTaskAlreadyAssigned=Tarea ya asignada al usuario ErrorModuleFileSeemsToHaveAWrongFormat=Parece que el módulo tiene un formato incorrecto. ErrorModuleFileSeemsToHaveAWrongFormat2=Debe existir al menos un directorio obligatorio en el zip del módulo: %s o %s -ErrorFilenameDosNotMatchDolibarrPackageRules=El nombre del archivo del módulo (%s) no coincide coincide con la sintaxis del nombre esperado: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Error, nombre de trigger %s duplicado. Ya se encuentra cargado desde %s ErrorNoWarehouseDefined=Error, no hay definidos almacenes. ErrorBadLinkSourceSetButBadValueForRef=El enlace que utiliza no es válido. Hay definido un 'origen para el pago, pero el valor de 'ref' no es válido. @@ -422,3 +422,4 @@ OperNotDefined=Método de pago no definido ErrorThisContactXIsAlreadyDefinedAsThisType=%s ya está definido como contacto para este tipo. ErrorThisGroupIsAlreadyDefinedAsThisType=Los contactos con este grupo ya están definidos como contacto para este tipo. EmptyMessageNotAllowedError=No se permiten mensajes vacíos +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/es_ES/interventions.lang b/htdocs/langs/es_ES/interventions.lang index 600158c7349..075bd83abaa 100644 --- a/htdocs/langs/es_ES/interventions.lang +++ b/htdocs/langs/es_ES/interventions.lang @@ -13,11 +13,17 @@ CreateDraftIntervention=Crear borrador InterventionContact=Contacto intervención DeleteIntervention=Eliminar intervención ValidateIntervention=Validar intervención +SignIntervention=Firmar intervención +UnsignIntervention=Unsign intervention ModifyIntervention=Modificar intervención +CloseIntervention=Intervención cercana DeleteInterventionLine=Eliminar línea de intervención ConfirmDeleteIntervention=¿Está seguro de querer eliminar esta intervención? ConfirmValidateIntervention=¿Está seguro de querer validar esta intervención bajo la referencia %s? +ConfirmSignIntervention=Are you sure you want to set this intervention as signed ? +ConfirmUnsignIntervention=Are you sure you want to set this intervention as unsigned ? ConfirmModifyIntervention=¿Está seguro de querer modificar esta intervención? +ConfirmCloseIntervention=¿Estás seguro de que quieres cerrar esta intervención? ConfirmDeleteInterventionLine=¿Está seguro de querer eliminar esta linea? ConfirmCloneIntervention=¿Está seguro de querer clonar esta intervención? NameAndSignatureOfInternalContact=Nombre y firma del participante: @@ -27,21 +33,25 @@ InterventionCardsAndInterventionLines=Fichas y líneas de intervención InterventionClassifyBilled=Clasificar "Facturada" InterventionClassifyUnBilled=Clasificar "No facturada" InterventionClassifyDone=Clasificar "Realizado" -StatusInterInvoiced=Facturado +InterventionSign=Set Signed +InterventionUnsign=Set Unsigned SendInterventionRef=Envío de la intervención %s SendInterventionByMail=Enviar intervención por e-mail InterventionCreatedInDolibarr=Intervención %s creada InterventionValidatedInDolibarr=Intervención %s validada +InterventionSignedInDolibarr=Intervención firmada +InterventionSignedOnline=Intervention signed online +InterventionUnsignedInDolibarr=Intervention unsigned InterventionModifiedInDolibarr=Intervención %s modificada InterventionClassifiedBilledInDolibarr=Intervención %s clasificada como facturada InterventionClassifiedUnbilledInDolibarr=Intervención %s clasificada como no facturada InterventionSentByEMail=Intervención %s enviada por e-mail +InterventionClosedInDolibarr= Intervención %s cerrada InterventionDeletedInDolibarr=Intervención %s eliminada InterventionsArea=Área intervenciones DraftFichinter=Intervenciones borrador LastModifiedInterventions=Últimas %s intervenciones modificadas FichinterToProcess=Intervenciones a procesar -TypeContact_fichinter_external_CUSTOMER=Contacto cliente seguimiento intervención PrintProductsOnFichinter=Imprimir también líneas de tipo "producto" (no solamente servicios) en las fichas de intervención PrintProductsOnFichinterDetails=Intervenciones generadas desde pedidos UseServicesDurationOnFichinter=Usar la duración de los servicios para las intervenciones generadas de de los pedidos @@ -50,7 +60,7 @@ UseDateWithoutHourOnFichinter=Oculta horas y minutos fuera del campo de fecha pa InterventionStatistics=Estadísticas de intervenciones NbOfinterventions=Nº de fichas de intervención NumberOfInterventionsByMonth=Nº de fichas de intervención por mes (fecha de validación) -AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). You can use PROJECT_ELEMENTS_FOR_ADD_MARGIN and PROJECT_ELEMENTS_FOR_MINUS_MARGIN option into home-setup-other to complete list of element included into profit. +AmountOfInteventionNotIncludedByDefault=El monto de la intervención no se incluye de manera predeterminada en las ganancias (en la mayoría de los casos, las hojas de tiempo se usan para contar el tiempo empleado). Puede usar la opción PROJECT_ELEMENTS_FOR_ADD_MARGIN y PROJECT_ELEMENTS_FOR_MINUS_MARGIN en home-setup-other para completar la lista de elementos incluidos en las ganancias. InterId=Id. intervención InterRef=Ref. intervención InterDateCreation=Fecha creación intervención @@ -70,3 +80,8 @@ FichinterNoContractLinked=La intervención %s se ha creado sin un contrato vincu ErrorFicheinterCompanyDoesNotExist=La empresa no existe. No se ha creado la intervención. NextDateToIntervention=Fecha para la próxima generación de intervención NoIntervention=Sin intervención +TypeContact_fichinter_internal_INTERREPFOLL=Responsable del seguimiento de la intervención. +TypeContact_fichinter_internal_INTERVENING=interventor +TypeContact_fichinter_external_BILLING=Contacto con el cliente de facturación de intervención +TypeContact_fichinter_external_CUSTOMER=Contacto con el cliente para seguimiento de la intervención. +NotARecurringInterventionalTemplate=Not a recurring intervention template diff --git a/htdocs/langs/es_ES/mails.lang b/htdocs/langs/es_ES/mails.lang index f9aad5d2c60..7cdc25bef8e 100644 --- a/htdocs/langs/es_ES/mails.lang +++ b/htdocs/langs/es_ES/mails.lang @@ -32,6 +32,8 @@ NewMailing=Nuevo E-Mailing NewSMSing=Nuevos SMS EditMailing=Editar E-Mailing ResetMailing=Nuevo envío +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Eliminar E-Mailing PreviewMailing=Previsualizar un E-Mailing CreateMailing=Crear E-Mailing @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=La dirección del destinatario está vacía WarningNoEMailsAdded=Ningún nuevo E-Mailing a añadir a la lista destinatarios. ConfirmValidMailing=¿Confirma la validación del E-Mailing? ConfirmResetMailing=Atención, en el reinicio del E-Mailing %s, autoriza de nuevo su emisión en masa. ¿Es esto lo que quiere hacer? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=¿Confirma la eliminación del E-Mailing? NbOfUniqueEMails=Nº de e-mails únicos NbOfUniquePhones=Nº. de teléfonos únicos @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=No hay más destinatarios a los que enviar el correo ele EmailOptedOut=El propietario del correo electrónico ha solicitado no contactarlo más con este correo electrónico. EvenUnsubscribe=Incluir correos electrónicos de exclusión EvenUnsubscribeDesc=Incluya correos electrónicos de exclusión voluntaria cuando seleccione correos electrónicos como objetivos. Útil para correos electrónicos de servicio obligatorios, por ejemplo. -XEmailsDoneYActionsDone=%s correos electrónicos precalificados, %s correos electrónicos procesados con éxito (para %s registro/acciones realizadas) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Puede realizar algunas instrucciones para su correo electrónico (Ejemplo: generar una imagen en una plantilla de correo electrónico...) ModelTemplate=Plantilla de correo electrónico YouCanChooseAModelForYouMailContent= Puedes elegir uno de los modelos de plantilla o generar uno con IA TitleOfMailHolder=El título del correo electrónico va aquí. ContentOfMailHolder=El contenido del correo electrónico va aquí... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/es_ES/stripe.lang b/htdocs/langs/es_ES/stripe.lang index 86a1e41a497..fa3ce9887d9 100644 --- a/htdocs/langs/es_ES/stripe.lang +++ b/htdocs/langs/es_ES/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL para ofrecer una página de pago ToOfferALinkForOnlinePaymentOnFreeAmount=URL para ofrecer una página de pago en línea %s de cualquier importe sin objeto existente ToOfferALinkForOnlinePaymentOnMemberSubscription=URL para ofrecer una página de pago en línea %s para una suscripción de miembro ToOfferALinkForOnlinePaymentOnDonation=URL para ofrecer una página de pago en línea %s para el pago de una donación -YouCanAddTagOnUrl=También puede agregar el parámetro url &tag = value a cualquiera de esas URL (obligatorio solo para el pago no vinculado a un objeto) para agregar su propia etiqueta de comentario de pago.
Para la URL de pagos sin objeto existente, también puede agregar el parámetro &noidempotency = 1 para que el mismo enlace con la misma etiqueta se pueda usar varias veces (algún modo de pago puede limitar el pago a 1 para cada enlace diferente sin este parámetro) +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) YouCanEmbedOnWebsite=Si desea integrar la página de pago en un sitio web de Dolibarr, puede incluir el parámetro: &ws=website_ref.
Además, dos páginas llamadas paymentok y paymentko deben ser creadas en el sitio web para recibir la redirección después de un pago en línea exitoso o fallido. SetupStripeToHavePaymentCreatedAutomatically=Configure su Stripe con la url %s para crear un pago automáticament al validarse por Stripe. AccountParameter=Parámetros de la cuenta diff --git a/htdocs/langs/es_ES/website.lang b/htdocs/langs/es_ES/website.lang index 1110ec1e929..1618b724197 100644 --- a/htdocs/langs/es_ES/website.lang +++ b/htdocs/langs/es_ES/website.lang @@ -62,7 +62,7 @@ NoPageYet=No hay páginas todavía YouCanCreatePageOrImportTemplate=Puede crear una nueva página o importar una plantilla de sitio web completa SyntaxHelp=Ayuda en la sintaxis del código YouCanEditHtmlSourceckeditor=Puede editar código fuente HTML utilizando el botón "Origen" en el editor. -YouCanEditHtmlSource=
Puede incluir código PHP en esta fuente usando etiquetas <?php ?> . Las siguientes variables globales están disponibles: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

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

Puede realizar una redirección a otra página/contenedor con la siguiente sintaxis (Nota: no genere ninguna contenido antes de una redirección):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>
También puedes hacer una redirección con parámetros GET:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

Para agregar un enlace a otra página, use la sintaxis:
<a href="alias_of_page_to_link_to.php">mylink<a>

Para incluir un enlace para descargar un archivo almacenado en el directorio de documentos, use el contenedor document.php:
Ejemplo, para un archivo en documents/ecm (debe registrarse), la sintaxis es:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
Para un archivo en documents/medias (directorio abierto para acceso público), la sintaxis es:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
Para un archivo compartido con un enlace para compartir ( acceso abierto utilizando la clave hash para compartir del archivo), la sintaxis es:
<a href="/document.php?hashp=publicsharekeyoffile">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
Para incluir un imagen almacenada en el directorio documents , utilice el contenedor viewimage.php.
Ejemplo, para una imagen en documentos/medios (directorio abierto para acceso público), la sintaxis es:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
YouCanEditHtmlSource2=Para una imagen compartida con un enlace para compartir (acceso abierto usando la clave hash para compartir del archivo), la sintaxis es:
<img src="/viewimage.php? Hashp=12345679012 ...">
YouCanEditHtmlSource3=Para obtener la URL de la imagen de un objeto PHP, utiliza
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/es_MX/commercial.lang b/htdocs/langs/es_MX/commercial.lang index 3e4e6dc40cb..5808bd60b84 100644 --- a/htdocs/langs/es_MX/commercial.lang +++ b/htdocs/langs/es_MX/commercial.lang @@ -56,3 +56,4 @@ DraftPropals=Cotizaciones en borrador ToOfferALinkForOnlineSignature=Link para firma en línea WelcomeOnOnlineSignaturePageProposal=Bienvenido a la página para aceptar cotizaciones de 1%s ThisScreenAllowsYouToSignDocFromProposal=Esta ventana le permite aceptar y firmar, o rechazar, una cotización +NoSignature=No firmada diff --git a/htdocs/langs/es_VE/admin.lang b/htdocs/langs/es_VE/admin.lang index f3aeaf2ce7c..9bdbd7d13d9 100644 --- a/htdocs/langs/es_VE/admin.lang +++ b/htdocs/langs/es_VE/admin.lang @@ -3,6 +3,8 @@ VersionLastInstall=Versión de instalación inicial VersionLastUpgrade=Última actualización de la versión ConfirmPurgeSessions=¿De verdad quieres purgar todas las sesiones? Esto desconectará a todos los usuarios (excepto a usted). SetupArea=Parametrizaje +UseSearchToSelectCompanyTooltip=También si tiene un gran número de terceros (> 100 000), puede aumentar la velocidad mediante el establecimiento COMPANY_DONOTSEARCH_ANYWHERE constante a 1 en Configuración-> Otros. La búsqueda será limitada a la creación de cadena. +UseSearchToSelectContactTooltip=También si usted tiene un gran número de terceros (> 100 000), puede aumentar la velocidad mediante el establecimiento CONTACT_DONOTSEARCH_ANYWHERE constante a 1 en Configuración-> Otros. La búsqueda será limitada a la creación de cadena. NotConfigured=Módulo / Aplicación no configurada GenericMaskCodes3=Cualquier otro carácter en la máscara se quedará sin cambios.
No se permiten espacios
Module1780Desc=Crear etiquetas/Categoría (Productos, clientes, proveedores, contactos y miembros) diff --git a/htdocs/langs/et_EE/admin.lang b/htdocs/langs/et_EE/admin.lang index 3b596db1b04..f4ef768d213 100644 --- a/htdocs/langs/et_EE/admin.lang +++ b/htdocs/langs/et_EE/admin.lang @@ -514,15 +514,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, millele järgneb kärbitud kliendinimi m 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. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability 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). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. 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=It is therefore recommended to change the sending method of e-mails to the value "SMTP". WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. WarningPHPMail2=Kui teie meili SMTP-teenuse pakkuja peab piirama meiliklienti mõne IP-aadressiga (väga harv), on see teie ERP CRM-i rakenduse meilikasutajaagendi (MUA) IP-aadress: %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 (for email %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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 @@ -867,7 +869,7 @@ Permission255=Teiste kasutajate paroolide muutmine Permission256=Teiste kasutajate kustutamine või keelamine Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). 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=CA vaatamine Permission272=Arvete vaatamine @@ -944,7 +946,7 @@ 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=Laojääkide vaatamine +Permission1001=Read warehouses and stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses Permission1004=Lao liikumiste vaatamine @@ -2218,7 +2220,7 @@ CreateCandidature=Create job application FormatZip=Postiindeks MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Show automatic ECM tree -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Opening hours OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module @@ -2264,7 +2266,7 @@ 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 already 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 recommended to create a dedicated second password for the application instead of using your own account password from https://myaccount.google.com/. EmailCollectorTargetDir=It may be a desired behavior 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 third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Warning: a lot of email servers (like Gmail) are doing full word searches when searching on a string and will not return a result if the string is only found partially into a word. For this reason too, use special characters into a search criteria will be ignored are they are not part of existing words.
To make an exclude search on a word (return email if word is not found), you can use the ! character before the word (may not work on some mail servers). EndPointFor=End point for %s : %s DeleteEmailCollector=Delete email collector diff --git a/htdocs/langs/et_EE/commercial.lang b/htdocs/langs/et_EE/commercial.lang index ea44945275f..1f9cd57a2d2 100644 --- a/htdocs/langs/et_EE/commercial.lang +++ b/htdocs/langs/et_EE/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Kas tahad kindlasti kustutada seda sündmust? CardAction=Tegevuse kaart ActionOnCompany=Seotud ettevõte ActionOnContact=Seotud kontakt +ActionOnUser=Related user TaskRDVWith=Koosolek %s ShowTask=Näita ülesannet ShowAction=Näita tegevust @@ -47,7 +48,6 @@ LastProspectToContact=Võtta ühendust LastProspectContactInProcess=Ühenduse võtmine hetkel käsil LastProspectContactDone=Võeti ühendust ActionAffectedTo=Sündmus on seotud isikuga -ActionDoneBy=Tegevuse viis läbi ActionAC_TEL=Telefonikõne ActionAC_FAX=Saada faks ActionAC_PROP=Saada pakkumine e-postiga @@ -74,16 +74,29 @@ StatusProsp=Huviliste staatus DraftPropals=Mustandi staatuses olevad pakkumised NoLimit=Piirangut pole ToOfferALinkForOnlineSignature=Link online allkirjaks -WelcomeOnOnlineSignaturePageProposal=Tere tulemast lehele %s äripakkumiste vastuvõtmiseks +WelcomeOnOnlineSignaturePageProposal=Tere tulemast lehele %s äripakkumiste vastuvõtmiseks WelcomeOnOnlineSignaturePageContract=Tere tulemast %s lepingu PDF allkirjastamise lehele WelcomeOnOnlineSignaturePageFichinter=Tere tulemast %s sekkumise PDF allkirjastamise lehele +WelcomeOnOnlineSignaturePageSociete_rib=Welcome to %s SEPA mandate PDF Signing Page +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=See kuva võimaldab sul hinnapakkumist/äripakkumist kinnitada ja allkirjastada või sellest keelduda ThisScreenAllowsYouToSignDocFromContract=See kuva võimaldab sul allkirjastada lepingut PDF onlain vormingus. ThisScreenAllowsYouToSignDocFromFichinter=See kuva võimaldab sul allkirjastada sekkumist PDF onlain vormingus. +ThisScreenAllowsYouToSignDocFromSociete_rib=This screen allow you to sign SEPA Mandate on PDF format online. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=See on vastuvõetava või keeldutava dokumendi informatsioon ThisIsInformationOnDocumentToSignContract=See on allkirjastatava lepingu informatsioon ThisIsInformationOnDocumentToSignFichinter=See on allkirjastatava sekkumise informatsioon +ThisIsInformationOnDocumentToSignSociete_rib=This is information on SEPA Mandate to sign +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Hinnapakkumise/äripakkumise %s allikiri SignatureContractRef=Lepingu %s allkiri SignatureFichinterRef=Sekkumise %s allkiri +SignatureSociete_ribRef=Signature of SEPA Mandate %s FeatureOnlineSignDisabled=Online allkirjastamise funktsioon on blokeeritud või dokument loodi enne funktsiooni aktiveerimist +NoSignature=Allkirjastamata +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/et_EE/companies.lang b/htdocs/langs/et_EE/companies.lang index 05f00a99785..03cf6356589 100644 --- a/htdocs/langs/et_EE/companies.lang +++ b/htdocs/langs/et_EE/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarri kasutaja NoDolibarrAccess=Dolibarri ligipääs puudub ExportDataset_company_1=Kolmandad osapooled (ettevõtted/sihtasutused/füüsilised isikud) ja nende omadused ExportDataset_company_2=Kontaktid ja nende omadused +ExportDataset_company_3=Kolmandate osapoolte panga kontod ImportDataset_company_1=Kolmandad osapooled ja nende omadused ImportDataset_company_2=Kolmandate osapoolte lisa kontaktid/aadressid ja atribuudid ImportDataset_company_3=Kolmandate osapoolte panga kontod diff --git a/htdocs/langs/et_EE/dict.lang b/htdocs/langs/et_EE/dict.lang index 6670d1286ed..a568e00680d 100644 --- a/htdocs/langs/et_EE/dict.lang +++ b/htdocs/langs/et_EE/dict.lang @@ -158,7 +158,7 @@ CountryMX=Mehhiko CountryFM=Mikroneesia CountryMD=Moldova CountryMN=Mongoolia -CountryMS=Monserrat +CountryMS=Montserrat CountryMZ=Mosambiik CountryMM=Birma (Myanmar) CountryNA=Namiibia @@ -295,8 +295,8 @@ CurrencyXPF=CFP frangid CurrencySingXPF=CFP frank CurrencyCentEUR=sendid CurrencyCentSingEUR=sent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=tuhandik #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/et_EE/errors.lang b/htdocs/langs/et_EE/errors.lang index 42d123eb309..925059f5621 100644 --- a/htdocs/langs/et_EE/errors.lang +++ b/htdocs/langs/et_EE/errors.lang @@ -55,6 +55,8 @@ ErrorFoundBadEmailInFile=Failis on %s real ebaõige e-posti aadressi süntaks (n ErrorUserCannotBeDelete=User cannot be deleted. Maybe it is associated to Dolibarr entities. ErrorFieldsRequired=Some required fields have been left blank. ErrorSubjectIsRequired=Meili teema on kohustuslik +ErrorInAddAttachmentsImageBaseOnMedia=Error in creating image files into media directory for attachment +ErrorInAddAttachmentsImageBaseIsSrcData=Error in creating image files (found as data:) into temp directory for attachment ErrorFailedToCreateDir=Kausta loomine ebaõnnestus. Kontrolli, et veebiserveri kasutajal on piisavalt õigusi Dolibarri dokumentide kausta kirjutamiseks. Kui PHP safe_mode parameeter on sisse lülitatud, siis kontrolli, et veebiserveri kasutaja (või grupp) on Dolibarri PHP failide omanik. ErrorNoMailDefinedForThisUser=Antud kasutaja e-posti aadressi pole määratletud ErrorSetupOfEmailsNotComplete=Setup of emails is not complete @@ -220,7 +222,7 @@ ErrorUserNotAssignedToTask=User must be assigned to task to be able to enter tim 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 +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the 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. @@ -263,7 +265,7 @@ 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 +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 @@ -301,7 +303,8 @@ ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is man ErrorFailedToWriteInTempDirectory=Failed to write in temp directory ErrorQuantityIsLimitedTo=Quantity is limited to %s ErrorFailedToLoadThirdParty=Failed to find/load third party from id=%s, email=%s, name=%s -ErrorThisPaymentModeIsNotSepa=This payment mode is not a bank account +ErrorThisPaymentModeIsNotDirectDebit=The payment mode is not direct debit +ErrorThisPaymentModeIsNotCreditTransfer=The payment mode is not credit transfer ErrorStripeCustomerNotFoundCreateFirst=Stripe customer is not set for this third party (or set to a value deleted on Stripe side). Create (or re-attach) it first. ErrorCharPlusNotSupportedByImapForSearch=IMAP search is not able to search into sender or recipient for a string containing the character + ErrorTableNotFound=Table %s not found @@ -322,16 +325,21 @@ ErrorFixThisHere=Fix this here ErrorTheUrlOfYourDolInstanceDoesNotMatchURLIntoOAuthSetup=Error: The URL of you current instance (%s) does not match the URL defined into your OAuth2 login setup (%s). Doing OAuth2 login in such a configuration is not allowed. ErrorMenuExistValue=A Menu already exist with this Title or URL ErrorSVGFilesNotAllowedAsLinksWithout=SVG files are not allowed as external links without the option %s -ErrorTypeMenu=Impossible to add another menu for the same module on the navbar, not handle yet +ErrorTypeMenu=Impossible to add another menu for the same module on the navbar, not handled yet +ErrorGeneratingBarcode=Error while generating the barcode (probably invalid code shape) ErrorObjectNotFound = The object %s is not found, please check your url ErrorCountryCodeMustBe2Char=Country code must be a 2 character string ErrorABatchShouldNotContainsSpaces=A lot or serial number should not contains spaces - ErrorTableExist=Table %s already exist ErrorDictionaryNotFound=Dictionary %s not found ErrorFailedToCreateSymLinkToMedias=Failed to create the symbolic link %s to point to %s ErrorCheckTheCommandInsideTheAdvancedOptions=Check the command used for the export into the Advanced options of the export - +ErrorEndTimeMustBeGreaterThanStartTime=End time must be greater than start time +ErrorIncoherentDates=Start date must be earlier than end date +ErrorEndHourIsNull=End date field cannot be empty +ErrorStartHourIsNull=Start date field cannot be empty +ErrorTooManyLinesToProcessPleaseUseAMoreSelectiveFilter=Too many lines to process. Please use a more selective filter. +ErrorEmptyValueForQty=Quantity cannot be zero. # 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=Selle liikme jaoks määrati parool. Kasutajakontot aga ei loodud. Nii et see parool on salvestatud, kuid seda ei saa kasutada Dolibarri sisselogimiseks. Seda võib kasutada väline moodul/liides, kuid kui te ei pea liikmele sisselogimist ega parooli määrama, saate liikmemooduli seadistustest keelata valiku "Halda iga liikme sisselogimist". Kui teil on vaja sisselogimist hallata, kuid parooli pole vaja, võite selle hoiatuse vältimiseks selle välja tühjaks jätta. Märkus. E-posti saab kasutada ka sisselogimiseks, kui liige on kasutajaga lingitud. @@ -344,7 +352,8 @@ WarningConfFileMustBeReadOnly=Hoiatus: seadistuste fail (htdocs/conf/conf.php WarningsOnXLines=%s lähtekirjega on seotud hoiatus(ed) 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=This security warning will remain active as long as the vulnerability is present. +WarningUpgradeHasBeenUnlocked=Warning, upgrade process has been unlocked for everybody +WarningUntilDirRemoved=See hoiatus jääb aktiivseks seni, kuni põhjus pole kõrvaldatud. WarningCloseAlways=Hoiatus: sulgemine toimub isegi siis, kui lähte- ja sihtelementide summa erineb. Lülita see funktsioon sisse ainult siis, kui tead, mida teed. WarningUsingThisBoxSlowDown=Hoiatus: selle kasti kasutamine muudab kõik seda kasti kasutavad lehed märgatavalt aeglaseks. WarningClickToDialUserSetupNotComplete=Sinu kasutaja ClickToDial info seadistamine ei ole lõpetatud (vaata oma kasutaja kaardi ClickToDial sakki). @@ -373,16 +382,18 @@ WarningModuleNeedRefresh = Module %s has been disabled. Don't forget to e WarningPermissionAlreadyExist=Existing permissions for this object WarningGoOnAccountancySetupToAddAccounts=If this list is empty, go into menu %s - %s - %s to load or create accounts for your chart of account. WarningCorrectedInvoiceNotFound=Corrected invoice not found -WarningCommentNotFound=Please check placement of start and end comments for %s section in file %s before submitting your action +WarningCommentNotFound=Warning: Can't find the start and/or end comments for the section %s into the file %s WarningAlreadyReverse=Stock movement already reversed - +WarningParentIDDoesNotExistAnymore=This parent ID does not exists anymore +WarningReadBankAlsoAllowedIfUserHasPermission=Warning, reading bank account is also allowed with the permission to Manage chart of account +WarningNoDataTransferedInAccountancyYet=Please note, there is no data in the accounting table. Please transfer your data recorded in the application to the accounting section or change the calculation mode to analyze the data recorded outside of accounting. +WarningChangingThisMayBreakStopTaskScheduler=Warning, changing this value may disable the scheduler SwissQrOnlyVIR = SwissQR invoice can only be added on invoices set to be paid with credit transfer payments. SwissQrCreditorAddressInvalid = Creditor address is invalid (are ZIP and city set? (%s) SwissQrCreditorInformationInvalid = Creditor information is invalid for IBAN (%s): %s SwissQrIbanNotImplementedYet = QR-IBAN not implemented yet SwissQrPaymentInformationInvalid = Payment information was invalid for total %s : %s SwissQrDebitorAddressInvalid = Debitor information was invalid (%s) - # Validate RequireValidValue = Value not valid RequireAtLeastXString = Requires at least %s character(s) @@ -404,10 +415,11 @@ BadSetupOfFieldClassNotFoundForValidation = Error bad setup of field : Class not BadSetupOfFieldFileNotFound = Error bad setup of field : File not found for inclusion BadSetupOfFieldFetchNotCallable = Error bad setup of field : Fetch not callable on class ErrorTooManyAttempts= Liiga palju katseid, proovige hiljem uuesti - TotalAmountEmpty=Total Amount Empty FailedToFoundTheConversionRateForInvoice=Failed to found the conversion rate for invoice ThisIdNotDefined=Id not defined OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. +EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/et_EE/interventions.lang b/htdocs/langs/et_EE/interventions.lang index 9098441d54b..b8d370af92d 100644 --- a/htdocs/langs/et_EE/interventions.lang +++ b/htdocs/langs/et_EE/interventions.lang @@ -13,11 +13,17 @@ CreateDraftIntervention=Loo mustand InterventionContact=Sekkumise kontakt DeleteIntervention=Kustuta sekkumine ValidateIntervention=Kinnita sekkumine +SignIntervention=Allkirjasta sekkumine +UnsignIntervention=Unsign intervention ModifyIntervention=Muuda sekkumist +CloseIntervention=Close intervention DeleteInterventionLine=Kustuta sekkumise rida ConfirmDeleteIntervention=Kas tahad kindlasti selle sekkumise kustutada? ConfirmValidateIntervention=Kas tahad kindlasti kinnitada selle sekkumise nimega %s ? +ConfirmSignIntervention=Are you sure you want to set this intervention as signed ? +ConfirmUnsignIntervention=Are you sure you want to set this intervention as unsigned ? ConfirmModifyIntervention=Kas tahad kindlasti seda sekkumist muuta? +ConfirmCloseIntervention=Are you sure you want to close this intervention? ConfirmDeleteInterventionLine=Kas tahad kindlasti antud sekkumise rea kustutada? ConfirmCloneIntervention=Kas tahad kindlasti kloonida antud sekkumist? NameAndSignatureOfInternalContact=Sekkuja nimi ja allkiri: @@ -27,21 +33,25 @@ InterventionCardsAndInterventionLines=Sekkumised ja sekkumiste read InterventionClassifyBilled=Liigita "Arve esitatud" InterventionClassifyUnBilled=Liigita "Arve esitamata" InterventionClassifyDone=Liigita "Tehtud" -StatusInterInvoiced=Arve esitatud +InterventionSign=Set Signed +InterventionUnsign=Set Unsigned SendInterventionRef=Sekkumise %s saatmine SendInterventionByMail=Saada sekkumine e-postiga InterventionCreatedInDolibarr=Sekkumine %s loodud InterventionValidatedInDolibarr=Sekkumine %s on kinnitatud +InterventionSignedInDolibarr=Sekkumine allkirjastatud +InterventionSignedOnline=Intervention signed online +InterventionUnsignedInDolibarr=Intervention unsigned InterventionModifiedInDolibarr=Sekkumine %s muudetud InterventionClassifiedBilledInDolibarr=Sekkumisele %s seatud "arve esitatud" InterventionClassifiedUnbilledInDolibarr=Sekkumisele %s seatud "arve esitamata" InterventionSentByEMail=Sekkumine %s saadetud e-postiga +InterventionClosedInDolibarr= Intervention %s closed InterventionDeletedInDolibarr=Sekkumine %s kustutatud InterventionsArea=Sekkumiste ala DraftFichinter=Sekkumiste mustandid LastModifiedInterventions=Viimased %s muudetud sekkumised FichinterToProcess=Töötlemist ootavad sekkumised -TypeContact_fichinter_external_CUSTOMER=Kliendi kontakt järelkajaks PrintProductsOnFichinter=Trüki sekkumiste kaardile samuti "toodete" tüübid (mitte ainult teenused) PrintProductsOnFichinterDetails=sekkumistele, mis on loodud tellimuste põhjal UseServicesDurationOnFichinter=Tellimuste põhjal loodud sekkumistele kasuta teenuste kestust @@ -70,3 +80,8 @@ FichinterNoContractLinked=Sekkumine %s loodi ilma seotud lepinguta. ErrorFicheinterCompanyDoesNotExist=Ettevõtet ei ole olemas. Sekkumist ei loodud. NextDateToIntervention=Kuupäev järgmise sekkumise loomise jaoks NoIntervention=Sekkumisi ei ole +TypeContact_fichinter_internal_INTERREPFOLL=Responsible for intervention follow-up +TypeContact_fichinter_internal_INTERVENING=Intervenant +TypeContact_fichinter_external_BILLING=Customer contact of intervention billing +TypeContact_fichinter_external_CUSTOMER=Customer contact of intervention follow-up +NotARecurringInterventionalTemplate=Not a recurring intervention template diff --git a/htdocs/langs/fa_IR/admin.lang b/htdocs/langs/fa_IR/admin.lang index 44fa86d9303..6e056f3c55c 100644 --- a/htdocs/langs/fa_IR/admin.lang +++ b/htdocs/langs/fa_IR/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=فهرست مقادیر باید به صورت سطو ExtrafieldParamHelpcheckbox=فهرست مقادیر باید سطوری به شکل key,value باشد که (که key نمی‌تواند برابر با 0 باشد)

برای مثال:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=فهرست مقادیر باید سطوری به شکل key,value باشد که (که key نمی‌تواند برابر با 0 باشد)

برای مثال:
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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=کتابخانۀ قابل استفاده برای تولید PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s followed by the truncated customer name by ModuleCompanyCodeSupplierDigitaria=%s followed by the truncated supplier name by the number of characters: %s for the supplier accounting code. Use3StepsApproval=به طور پیش‌فرض، سفارشات خرید باید توسط دو کاربر متفاوت ثبت و تائید بشود (یک گام/کاربر برای ساخت سفارش و یک گام/کاربر برای تائید سفارش. توجه داشته باشید در صورتی که کاربر اجازۀ ثبت و تائید سفارش داشته باشد، یک گام/کاربر کافی است). شما می‌توانید این گزینه را طوری تنظیم کنید که یک گام/کاربر سوم نیز برای تائید وجود داشته باشد. این در شرایطی که مثلا مبلغ بالاتر از یک مقدار خاص باشد مقدور است (پس، 3 گام ضروری است: 1=ثبت و اعتباردهی 2=تائید اول 3=تائید سوم در صورتی که مبلغ به اندازۀ کافی بالاست).
این واحد را در صورتی که حالت پیش‌فرض کافی است خالی بگذارید (دو گام)، ثبت آن به یک مقدار بسیار پائین (0.1) برای تائید دوم (سه گام) مورد نیاز است. UseDoubleApproval=استفاده از 3 گام تائید در حالتی که مبلغ (بدون مالیات) بالاتر از .... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability 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). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. 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=It is therefore recommended to change the sending method of e-mails to the value "SMTP". WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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 (for email %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=برای دریافت توضیحات کلیک کنید DependsOn=این واحد نیازمند فعالیت واحد‌(های) دیگر است RequiredBy=این واحد توسط واحد(های) دیگر مورد نیاز است @@ -867,7 +868,7 @@ Permission255=تغییر گذرواژۀ سایر کاربران Permission256=حذف یا غیرفعال‌کردن سایر کاربران Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). 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=ملاحظۀ CA Permission272=ملاحظۀ صورت‌حساب‌ها @@ -944,7 +945,7 @@ Permission776=پرداخت گزارش‌های هزینه Permission777=Read all expense reports (even those of user not subordinates) Permission778=Create/modify expense reports of everybody Permission779=صادرکردن گزارش‌های هزینه -Permission1001=ملاحظۀ موجودی +Permission1001=Read warehouses and stocks Permission1002=ساخت/ویرایش انبار Permission1003=حذف انبار Permission1004=ملاحظۀ جابجائی میان انبارها @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLE DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word -GDPRContact=مأمور حفاظت داده‌ها (DPO، حریم خصوصی یا طرف‌تماس GDPR) +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=متن راهنما برای نمایش کادر‌نکات HelpOnTooltipDesc=یک نوشته یا یک کلید ترجمه در اینجا برای نوشته وارد کنید که در هنگامی که این بخش در برگه نمایش داده می‌شود به‌عنوان یک کادرراهنمائی نمایش داده شود @@ -2218,7 +2219,7 @@ CreateCandidature=Create job application FormatZip=کدپستی MainMenuCode=کد ورودی فهرست (فهرست اصلی) ECMAutoTree=نمایش ساختاردرختی خودکار ECM -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=ساعات کار OpeningHoursDesc=ساعات کاری معمول شرکت خود را در این بخش وارد نمائید ResourceSetup=پیکربندی واحد منابع @@ -2264,7 +2265,7 @@ LargerThan=بزرگتر از IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into email, or if the email is an answer of an email already 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 recommended to create a dedicated second password for the application instead of using your own account password from https://myaccount.google.com/. EmailCollectorTargetDir=It may be a desired behavior 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 third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Warning: a lot of email servers (like Gmail) are doing full word searches when searching on a string and will not return a result if the string is only found partially into a word. For this reason too, use special characters into a search criteria will be ignored are they are not part of existing words.
To make an exclude search on a word (return email if word is not found), you can use the ! character before the word (may not work on some mail servers). EndPointFor=نقطۀ آخر برای %s : %s DeleteEmailCollector=حذف جمع‌آورندۀ رایانامه @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Third-party name - Third-party alias ALIAS_THIRDPARTY=Third-party alias - Third-party name PDFIn2Languages=Show labels in the PDF in 2 different languages (this feature may not work for some couple of languages) 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=Generate PDF documents with format PDF/A instead of default format PDF +PDF_USE_A=PDF documents format 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 @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/fa_IR/commercial.lang b/htdocs/langs/fa_IR/commercial.lang index dbabf584fe7..e25bf28065a 100644 --- a/htdocs/langs/fa_IR/commercial.lang +++ b/htdocs/langs/fa_IR/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=آیا مطمئنید می‌خواهید این روی‌د CardAction=کارت روی‌داد ActionOnCompany=شرکت مرتبط ActionOnContact=طرف‌تماس مرتبط +ActionOnUser=Related user TaskRDVWith=نشست با %s ShowTask=نمایش کار ShowAction=نمایش روی‌داد @@ -47,7 +48,6 @@ LastProspectToContact=برای تماس LastProspectContactInProcess=تماس در حال انجا LastProspectContactDone=تماس انجام شد ActionAffectedTo=روی‌دادهای نسبت‌داده شده به -ActionDoneBy=روی‌داد انجام شد، توسط ActionAC_TEL=تماس تلفنی ActionAC_FAX=ارسال نمابر ActionAC_PROP=ارسال پیشنهاد از طریق پست @@ -77,13 +77,26 @@ ToOfferALinkForOnlineSignature=پیوند به امضای برخط WelcomeOnOnlineSignaturePageProposal=به صفحۀ دریافت پیشنهادات تجاری از %s خوش آمدید WelcomeOnOnlineSignaturePageContract=Welcome to %s Contract PDF Signing Page WelcomeOnOnlineSignaturePageFichinter=Welcome to %s Intervention PDF Signing Page +WelcomeOnOnlineSignaturePageSociete_rib=Welcome to %s SEPA mandate PDF Signing Page +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=این صفحه به شما امکان تائید و امضا، یا رد، یک استعلام قیمت/پیشنهاد تجاری را می‌دهد ThisScreenAllowsYouToSignDocFromContract=This screen allow you to sign contract on PDF format online. ThisScreenAllowsYouToSignDocFromFichinter=This screen allow you to sign intervention on PDF format online. +ThisScreenAllowsYouToSignDocFromSociete_rib=This screen allow you to sign SEPA Mandate on PDF format online. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=این اطلاعات مربوط به سند برای تائید یا رد است ThisIsInformationOnDocumentToSignContract=This is information on contract to sign ThisIsInformationOnDocumentToSignFichinter=This is information on intervention to sign -SignatureProposalRef=امضای پیشنهاد تجاری/استعلام‌مظنه %s +ThisIsInformationOnDocumentToSignSociete_rib=This is information on SEPA Mandate to sign +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign +SignatureProposalRef=امضای پیشنهاد تجاری/استعلام‌مظنه %s SignatureContractRef=Signature of contract %s SignatureFichinterRef=Signature of intervention %s +SignatureSociete_ribRef=Signature of SEPA Mandate %s FeatureOnlineSignDisabled=قابلیت امضای برخط غیرفعال است یا این سند قبل از فعال کردن این قابلیت ساخته شده است +NoSignature=امضا نشده +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/fa_IR/companies.lang b/htdocs/langs/fa_IR/companies.lang index 24a000d354b..911996d4901 100644 --- a/htdocs/langs/fa_IR/companies.lang +++ b/htdocs/langs/fa_IR/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=ورود Dolibarr NoDolibarrAccess=دسترسی Dolibarr مقدور نیست ExportDataset_company_1=شخص‌سوم‌ها (شرکت‌ها/سازمان‌ها/مردم فیزیکی) و مشخصات آن‌ها ExportDataset_company_2=طرف‌های تماس و مشخصات آن‌ها +ExportDataset_company_3=حساب‌های بانکی شخص‌سوم‌ها ImportDataset_company_1=شخص‌سوم‌ها و مشخصات آن‌ها ImportDataset_company_2=سایر طرف‌های تماس/نشانی‌های شخص‌سوم و ویژگی‌های آن‌ها ImportDataset_company_3=حساب‌های بانکی شخص‌سوم‌ها diff --git a/htdocs/langs/fa_IR/dict.lang b/htdocs/langs/fa_IR/dict.lang index 90e30dab6f1..29110fe89f1 100644 --- a/htdocs/langs/fa_IR/dict.lang +++ b/htdocs/langs/fa_IR/dict.lang @@ -158,7 +158,7 @@ CountryMX=مکزیک CountryFM=میکرونزی CountryMD=مولدووا CountryMN=مغولستان -CountryMS=Monserrat از +CountryMS=Montserrat CountryMZ=موزامبیک CountryMM=میانمار (بورما) CountryNA=نامیبیا @@ -233,7 +233,7 @@ CountryUY=اروگوئه CountryUZ=ازبکستان CountryVU=وانواتو CountryVE=ونزوئلا -CountryVN=ویتنام +CountryVN=Vietnam CountryVG=جزایر ویرجین، بریتانیا CountryVI=جزایر ویرجین، ایالات متحده آمریکا CountryWF=والیس و فوتونا diff --git a/htdocs/langs/fa_IR/errors.lang b/htdocs/langs/fa_IR/errors.lang index 3f78f1adb4f..76b92a7f77d 100644 --- a/htdocs/langs/fa_IR/errors.lang +++ b/htdocs/langs/fa_IR/errors.lang @@ -4,16 +4,17 @@ NoErrorCommitIsDone=خطائی نیست، حرکت می‌کنیم # Errors ErrorButCommitIsDone=علیرغم وجود خطا، تائید می‌شود -ErrorBadEMail=Email %s is incorrect +ErrorBadEMail=Email address %s is incorrect ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) ErrorBadUrl=Url %s is incorrect ErrorBadValueForParamNotAString=برای مؤلفۀ موردنظر مقدار خطائی وارد شده است. عموما در هنگام فقدان ترجمه، الحاق می‌شود. -ErrorRefAlreadyExists=Reference %s already exists. +ErrorRefAlreadyExists=Reference %s used for creation already exists. ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=نام‌کاربری %s قبلا وجود داشته است. ErrorGroupAlreadyExists=گروه %s قبلا وجود داشته است. ErrorEmailAlreadyExists=Email %s already exists. ErrorRecordNotFound=ردیف موجود نیست. +ErrorRecordNotFoundShort=Not found ErrorFailToCopyFile=نسخه‌برداری از فایل '%s' به '%s' موفق نبود. ErrorFailToCopyDir=نسخه‌برداری از پوشۀ '%s' به '%s' موفق نبود. ErrorFailToRenameFile=تغییر نام فایل '%s' به '%s' موفق نبود. @@ -31,6 +32,7 @@ ErrorBadThirdPartyName=مقدار غیرقابل‌قبول برای نام شخ ForbiddenBySetupRules=Forbidden by setup rules ErrorProdIdIsMandatory=بخش %s الزامی است ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory +ErrorAccountancyCodeSupplierIsMandatory=The accountancy code of supplier %s is mandatory ErrorBadCustomerCodeSyntax=روش‌درج برای کدمشتری اشتباه است ErrorBadBarCodeSyntax=روش درج بارکد اشتباه است. ممکناست یک نوع بارکد اشتباه تنظیم کرده باشید یا یک پوشش-ماسک بارکد برای عددهی انتخاب کرده‌اید که با مقدار اسکن شده همخوان نیست. ErrorCustomerCodeRequired=کدمشتری الزامی است @@ -48,24 +50,28 @@ ErrorBadImageFormat=حالت فایل تصویری قابل قبول نیست (P ErrorBadDateFormat=روش درج تاریخ مقدار '%s' اشتباه است ErrorWrongDate=تاریخ، صحیح نمی‌باشد! ErrorFailedToWriteInDir=امکان نوشتن در پوشۀ %s وجود ندارد +ErrorFailedToBuildArchive=Failed to build archive file %s ErrorFoundBadEmailInFile=برای %s سطر در فایل روش‌اشتباه درج رایانامه پیدا شد (مثلا سطر %s با email=%s) ErrorUserCannotBeDelete=امکان حذف کاربر وجود ندارد. ممکن است با سایر اجزای Dolibarr در ارتباط باشد. ErrorFieldsRequired=Some required fields have been left blank. ErrorSubjectIsRequired=The email subject is required +ErrorInAddAttachmentsImageBaseOnMedia=Error in creating image files into media directory for attachment +ErrorInAddAttachmentsImageBaseIsSrcData=Error in creating image files (found as data:) into temp directory for attachment ErrorFailedToCreateDir=ایجاد یک پوشه با شکست مواجه شد. بررسی کنید، کاربر سرور وب، دارای مجوزهای نوشتاری بر روی پوشۀ documents مربوط به Dolibarr باشد در صورتی که مؤلفۀ safe_mode روی این نسخه از PHP فعال باشد، بررسی کنید فایل‌های PHP مربوط به Dolibarr متعلق به کاربر سرور وب (یا گروه مربوطه) باشد. ErrorNoMailDefinedForThisUser=نشانی رایانامه برای این کاربر تعریف نشده است ErrorSetupOfEmailsNotComplete=Setup of emails is not complete -ErrorFeatureNeedJavascript=این قابلیت برای کار کردن نیاز به فعال بودن جاوااسکریپت دارد. این گزینه را در بخش برپاسازی-نمایش فعال کنید. +ErrorFeatureNeedJavascript=This feature needs JavaScript to be activated to work. Change this in setup - display. ErrorTopMenuMustHaveAParentWithId0=فهرست‌هائی از نوع "بالا" می‌توانند دارای فهرست مادر باشند. برای این‌که فهرست "کنار" داشته باشید، عدد 0 را وارد کنید. ErrorLeftMenuMustHaveAParentId=فهرست‌های "کنار" باید یک شناسۀ مادر داشته باشند ErrorFileNotFound=فایل %s یافت نشد. (مسیر نادرست، مجوزهای اشتباه یا دسترسی بسته توسط مؤلفه‌های openbasedir یا safe_mode می‌تواند عامل باشد) ErrorDirNotFound=پوشۀ %s یافت نشد. (مسیر نادرست، مجوزهای اشتباه یا دسترسی بسته توسط مؤلفه‌های openbasedir یا safe_mode می‌تواند عامل باشد) ErrorFunctionNotAvailableInPHP=برای این قابلیت، تابع %s نیاز است اما در این برپاسازی/نسخۀ PHP موجود نیست. ErrorDirAlreadyExists=قبلا یک پوشه با همین نام وجود داشته است. +ErrorDirNotWritable=Directory %s is not writable. ErrorFileAlreadyExists=قبلا یک فایل به همین نام وجود داشته است. ErrorDestinationAlreadyExists=Another file with the name %s already exists. ErrorPartialFile=فایل به طور کامل توسط سرور دریافت نشده است. -ErrorNoTmpDir=پوشۀ موقت %s وجود ندارد. +ErrorNoTmpDir=Temporary directory %s does not exists. ErrorUploadBlockedByAddon=امکان ارسال توسط یک افزونۀ PHP/Apache مسدود شده است ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=Field %s is too long. @@ -76,32 +82,33 @@ ErrorNoValueForCheckBoxType=لطفا مقدار مربوط به کادر تائ ErrorNoValueForRadioType=لطفا مقدار مربوط به فهرست رادیوئی را انتخاب کنید ErrorBadFormatValueList=مقدار این فهرست نمی‌تواند بیش از یک ویرگول داشته باشد: %s، اما حداقل باید یکی داشته باشد: key,value ErrorFieldCanNotContainSpecialCharacters=بخش %s نباید نویسه‌های خاص داشته باشد. -ErrorFieldCanNotContainSpecialNorUpperCharacters=بخش %s نباید نویسه‌های خاص، حروف بزرگ داشته باشد و نیز نباید فقط عددی باشد. +ErrorFieldCanNotContainSpecialNorUpperCharacters=The field %s must not contain special characters, nor upper case characters, and must start with an alphabetical character (a-z) ErrorFieldMustHaveXChar=بخش %s حداقل باید %s نویسه داشته باشد. ErrorNoAccountancyModuleLoaded=هیچ واحد حساب‌داری فعال نیست ErrorExportDuplicateProfil=این نام نمایه برای این مجموعۀ صادرات قبلا وجود داشته باشد ErrorLDAPSetupNotComplete=تطبیق Dolibarr-LDAP کامل نیست. ErrorLDAPMakeManualTest=یک فایل .ldif در پوشۀ %s تولید شد. تلاش کنید آن را از خط فرمان به شکل دستی اجرا کنید تا اطلاعات بیشتری در مورد خطاها داشته باشید. ErrorCantSaveADoneUserWithZeroPercentage=در صورتی که بخش "انجام شده توسط" هم پر شده باشد، امکان ذخیرۀ یک کنش با "وضعیت شروع نشده" نیست. -ErrorRefAlreadyExists=Reference %s already exists. ErrorPleaseTypeBankTransactionReportName=لطفا نام اطلاعیۀ بانک را در خصوص چگونگی گزارش ورودی وارد کنید (حالت YYYYMM  یا YYYYMMDD) ErrorRecordHasChildren=هنگامی که یک ردیف دارای زیرمجموعه است، امکان حذف آن وجود ندارد. ErrorRecordHasAtLeastOneChildOfType=Object %s has at least one child of type %s ErrorRecordIsUsedCantDelete=امکان حذف این ردیف نیست، زیرا در یک شیء دیگر شامل شده یا مورد استفاده اسن. -ErrorModuleRequireJavascript=برای کار کردن این قابلیت، جاواسکریپت نباید غیر فعال بشد. برای فعال کردن/غیرفعال کردن جاوااسکریپت، به فهرست خانه->برپاسازی->نمایش مراجعه کنید. +ErrorModuleRequireJavascript=JavaScript must not be disabled to have this feature working. To enable/disable JavaScript, go to menu Home->Setup->Display. ErrorPasswordsMustMatch=هر دو گذرواژۀ وارد شده باید مطابق با هم باشند -ErrorContactEMail=یک خطای فنی رخ داد، لطفا با سرپرست سامانه با این نشانی %s تماس حاصل نموده و شمارۀ خطای %s را در میان بگذارید، یا یک نسخه از این صفحه را ارسال نمائید. +ErrorContactEMail=A technical error occurred. 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=بخش %s:'%s' با قواعد عبارات‌منظم %s نمی‌خواند ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=بخش %s:'%s' جزو مقادیری که در بخش %s از %s هستند نیست. ErrorFieldRefNotIn=بخش %s:'%s' یک ارجاع موجود %s نیست +ErrorMultipleRecordFoundFromRef=Several record found when searching from ref %s. No way to know which ID to use. ErrorsOnXLines=%s خطا بروز کرد ErrorFileIsInfectedWithAVirus=برنامۀ ضدویروس امکان تائید فایل را ندارد (ممکن است فایل ویروسی باشد) -ErrorSpecialCharNotAllowedForField=نویسه‌های خاص در بخش "%s" مجاز نیستند +ErrorFileIsAnInfectedPDFWithJSInside=The file is a PDF infected by some Javascript inside ErrorNumRefModel=در پایگاه‌داده ( %s ) یک ارجاع وجود دارد و با این قواعد شماره‌دهی همخوان نیست. ردیف مربوطه را حذف کرده یا ارجاع را تغییرنام دهید تا این واحد فعال شود ErrorQtyTooLowForThisSupplier=تعداد برای این فروشنده بیش‌ازحد پائین است یا این‌که برای این محصول مبلغی در خصوص این فروشنده تعریف نشده است ErrorOrdersNotCreatedQtyTooLow=برخی از سفارش‌ها ساخته نشدند چون تعداد‌ها کم‌تر از حد مطلوب بود -ErrorModuleSetupNotComplete=Setup of module %s looks to be uncomplete. Go on Home - Setup - Modules to complete. +ErrorOrderStatusCantBeSetToDelivered=Order status can't be set to delivered. +ErrorModuleSetupNotComplete=Setup of module %s looks to be incomplete. Go on Home - Setup - Modules to complete. ErrorBadMask=خطا در ماسک ErrorBadMaskFailedToLocatePosOfSequence=خطا، ماسک بدون عدد متوالی ErrorBadMaskBadRazMonth=خطا، مقدار نادرست بازنشانی @@ -129,7 +136,7 @@ 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. +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 third-party 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=در صورت‌حساب مشتری تعداد برای یک سطر نمی‌‌تواند رقمی منفی باشد @@ -139,7 +146,7 @@ ErrUnzipFails=امکان استخراج و unzip %s توسط ZipArchive وجود ErrNoZipEngine=هیچ موتوری برای فایل zip/unzip %s در این PHP وجود ندارد ErrorFileMustBeADolibarrPackage=فایل %s باید یک بستۀ zip از Dolibarr باشد ErrorModuleFileRequired=شما باید یک بستۀ واحد Dolibarr انتخاب کرده باشید -ErrorPhpCurlNotInstalled=PHP CURL نصب نشده است، برای صحبت با Paypal ضروری است. +ErrorPhpCurlNotInstalled=PHP CURL نصب نشده است، برای صحبت با Paypal ضروری است. ErrorFailedToAddToMailmanList=اضافه کردن ردیف %s به فهرست Mailman %s یا پایگاه SPIP مقدور نبود ErrorFailedToRemoveToMailmanList=حذف ردیف %s از فهرست Mailman %s یا پایگاه SPIP مقدور نبود ErrorNewValueCantMatchOldValue=مقدار جدید نمی‌تواند برابر با مقدار قدیمی باشد @@ -148,6 +155,7 @@ ErrorToConnectToMysqlCheckInstance=اتصال به پایگاه‌داده مق ErrorFailedToAddContact=اضافه کردن طرف‌تماس مقدور نبود ErrorDateMustBeBeforeToday=The date must be lower than today ErrorDateMustBeInFuture=The date must be greater than today +ErrorStartDateGreaterEnd=The start date is greater than the end date ErrorPaymentModeDefinedToWithoutSetup=حالت پرداخت به %s تنظیم شده اما برپاسازی واحد صورت‌حساب کامل نیست تا اطلاعات مربوط به این حالت پرداخت را تعریف کرده و نمایش دهد. ErrorPHPNeedModule=خطا، برای استفاده از این قابلیت روی PHP شما باید واحد %s نصب شده باشد. ErrorOpenIDSetupNotComplete=شما تنظیمات Dolibarr را پیکربندی کرده‌اید تا تصدیق ورود OpenID را مجاز کنید، اما نشانی خدمات openID در مقدارثابت %s تعریف نشده است @@ -161,10 +169,10 @@ ErrorPriceExpression1=امکان انتساب به مقدار ثابت '%s' وج ErrorPriceExpression2=امکان بازتعریف تابع درونی '%s' وجود ندارد ErrorPriceExpression3=متغیر '%s' در تعریف‌ تابع، تعریف نشده است ErrorPriceExpression4=نویسۀ غیرمجاز '%s' -ErrorPriceExpression5='%s' غیرقابل قبول +ErrorPriceExpression5='%s' غیرقابل قبول ErrorPriceExpression6=تعداد نشانوندها غلط است (%s داده شده، %s مطلوب است) ErrorPriceExpression8=عمل‌گر '%s' نامطلوب است -ErrorPriceExpression9=یک خطای غیرقابل‌پیش بینی رخ داده است +ErrorPriceExpression9=An unexpected error occurred ErrorPriceExpression10=عمل‌گر '%s' فاقد عمل‌وند است ErrorPriceExpression11='%s' مطلوب است ErrorPriceExpression14=تقسیم بر صفر @@ -189,6 +197,7 @@ ErrorGlobalVariableUpdater4=متقاضی SOAP با خطای '%s' ناموفق ب ErrorGlobalVariableUpdater5=هیچ متغیر سراسری انتخاب نشده است ErrorFieldMustBeANumeric=بخش %s باید مقداری عددی باشد ErrorMandatoryParametersNotProvided=مؤلفه‌های الزامی درج نشده‌ان +ErrorOppStatusRequiredIfUsage=You choose to follow an opportunity in this project, so you must also fill out the Lead status. ErrorOppStatusRequiredIfAmount=شما مقداری تخمینی از این سرنخ وارد می‌کنید. بنابراین باید وضعیت آن را نیز تعیین کنید ErrorFailedToLoadModuleDescriptorForXXX=امکان بارگذاری کلاس توضیح‌دهندۀ واحد برای %s وجود نداشت ErrorBadDefinitionOfMenuArrayInModuleDescriptor=تعریف بد آرایۀ فهرست در توضیح‌دهندۀ واحد (مقدار برد برای کلید fk_menu) @@ -213,7 +222,7 @@ ErrorUserNotAssignedToTask=کاربر برای امکان محاسبۀ زمان ErrorTaskAlreadyAssigned=وظیفه قبلا به کاربر محول شده است ErrorModuleFileSeemsToHaveAWrongFormat=ظاهرا بستۀ واحد وضعیت نامناسبی دارد ErrorModuleFileSeemsToHaveAWrongFormat2=At least one mandatory directory must exists into zip of module: %s or %s -ErrorFilenameDosNotMatchDolibarrPackageRules=نام بستۀ واحد (%s) با نام مطلوب نگارش همخوان نیست: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=خطا، نام ماشه-تریگر %s تکراری است. قبلا از %s بارگذاری شده است. ErrorNoWarehouseDefined=خطا، هیچ انباری تعریف نشده است. ErrorBadLinkSourceSetButBadValueForRef=پیوندی که استفاده کرده‌اید، معتبر نیست. یک 'مبدأ' برای پرداخت تعریف شده اما مقدار 'ref' یا مرجع، معتبر نیست @@ -237,11 +246,12 @@ ErrorURLMustStartWithHttp=نشانی اینترنتی %s باید با http://  ErrorHostMustNotStartWithHttp=Host name %s must NOT start with http:// or https:// ErrorNewRefIsAlreadyUsed=خطا، ارجاع جدید قبلا استفاده شده است ErrorDeletePaymentLinkedToAClosedInvoiceNotPossible=Error, delete payment linked to a closed invoice is not possible. -ErrorSearchCriteriaTooSmall=Search criteria too small. +ErrorSearchCriteriaTooSmall=Search criteria too short. 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 +AlreadyTooMuchPostOnThisIPAdress=You have already posted too much on this IP address. 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. @@ -255,10 +265,11 @@ 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 +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 +ErrorFilenameReserved=The filename %s can't be used as it is a reserved and protected command. 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 @@ -277,8 +288,8 @@ 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 +ErrorBadCharIntoLoginName=Unauthorized character in the field %s +ErrorRequestTooLarge=Error, request too large or session expired 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 @@ -291,7 +302,44 @@ 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 third party from id=%s, email=%s, name=%s +ErrorThisPaymentModeIsNotDirectDebit=The payment mode is not direct debit +ErrorThisPaymentModeIsNotCreditTransfer=The payment mode is not credit transfer +ErrorStripeCustomerNotFoundCreateFirst=Stripe customer is not set for this third party (or set to a value deleted on Stripe side). Create (or re-attach) it first. +ErrorCharPlusNotSupportedByImapForSearch=IMAP search is not able to search into sender or recipient for a string containing the character + +ErrorTableNotFound=Table %s not found +ErrorRefNotFound=Ref %s not found +ErrorValueForTooLow=Value for %s is too low +ErrorValueCantBeNull=Value for %s can't be null +ErrorDateOfMovementLowerThanDateOfFileTransmission=The date of the bank transaction can't be lower than the date of the file transmission +ErrorTooMuchFileInForm=Too much files in form, the maximum number is %s file(s) +ErrorSessionInvalidatedAfterPasswordChange=The session was been invalidated following a change of password, email, status or dates of validity. Please relogin. +ErrorExistingPermission = Permission %s for object %s already exists +ErrorFieldExist=The value for %s already exist +ErrorEqualModule=Module invalid in %s +ErrorFieldValue=Value for %s is incorrect +ErrorCoherenceMenu=%s is required when %s is 'left' +ErrorUploadFileDragDrop=There was an error while the file(s) upload +ErrorUploadFileDragDropPermissionDenied=There was an error while the file(s) upload : Permission denied +ErrorFixThisHere=Fix this here +ErrorTheUrlOfYourDolInstanceDoesNotMatchURLIntoOAuthSetup=Error: The URL of you current instance (%s) does not match the URL defined into your OAuth2 login setup (%s). Doing OAuth2 login in such a configuration is not allowed. +ErrorMenuExistValue=A Menu already exist with this Title or URL +ErrorSVGFilesNotAllowedAsLinksWithout=SVG files are not allowed as external links without the option %s +ErrorTypeMenu=Impossible to add another menu for the same module on the navbar, not handled yet +ErrorGeneratingBarcode=Error while generating the barcode (probably invalid code shape) +ErrorObjectNotFound = The object %s is not found, please check your url +ErrorCountryCodeMustBe2Char=Country code must be a 2 character string +ErrorABatchShouldNotContainsSpaces=A lot or serial number should not contains spaces +ErrorTableExist=Table %s already exist +ErrorDictionaryNotFound=Dictionary %s not found +ErrorFailedToCreateSymLinkToMedias=Failed to create the symbolic link %s to point to %s +ErrorCheckTheCommandInsideTheAdvancedOptions=Check the command used for the export into the Advanced options of the export +ErrorEndTimeMustBeGreaterThanStartTime=End time must be greater than start time +ErrorIncoherentDates=Start date must be earlier than end date +ErrorEndHourIsNull=End date field cannot be empty +ErrorStartHourIsNull=Start date field cannot be empty +ErrorTooManyLinesToProcessPleaseUseAMoreSelectiveFilter=Too many lines to process. Please use a more selective filter. +ErrorEmptyValueForQty=Quantity cannot be zero. # 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 قابل استفاده نیست. ممکن است برای یک رابط/واحد بیرونی قابل استفاده باشد، اما اگر شما نخواهید هیچ نام کاربری ورود و گذرواژه‌ای برای یک عضو استفاده کنید، شما می‌توانید گزینۀ "ایجاد یک نام‌ورد برای هر عضو" را از برپاسازی واحد اعضاء غیرفعال کنید. در صورتی که نیاز دارید که نام‌ورود داشته باشید اما گذرواژه نداشته باشید، می‌توانید این بخش را خالی گذاشته تا از این هشدار بر حذر باشید. نکته: همچنین نشانی رایانامه می‌تواند در صورتی که عضو به یک‌کاربر متصل باشد، می‌‌تواند مورد استفاده قرار گیرد @@ -304,15 +352,17 @@ WarningConfFileMustBeReadOnly=هشدار، فایل پیکربندی شما ( WarningsOnXLines=خطا(هائی) بر روی %s ردیف مبدأ WarningNoDocumentModelActivated=نمونه‌ای برای تولید سند فعال نشده است. تا هنگامی که برپاسازی واحد مربوطه را بررسی کنید، یک نمونه به طور پیش‌فرض انتخاب می‌شود. WarningLockFileDoesNotExists=هشدار، هنگامی که عملیات نصب تمام شد، شما باید ابزارهای نصب/مهاجرت را با افزودن فایل install.lock در پوشۀ %s غیرفعال کنید. صرف‌نظر کردن از ساخت این فایل، یک خطر امنیتی شدید برای شما حاصل می‌کند. -WarningUntilDirRemoved=همۀ هشدارهای امنتی (که تنها توسط کاربران مدیر قابل مشاهده است) تا زمان وجود آسیب‌پذیری فعال خواهند بود ( مگر این‌که مقدارثابت MAIN_REMOVE_INSTALL_WARNING  در برپاسازی-> سایر برپاسازی‌ها اضافه شود) +WarningUpgradeHasBeenUnlocked=Warning, upgrade process has been unlocked for everybody +WarningUntilDirRemoved=This security warning will remain active as long as the vulnerability is present. WarningCloseAlways=هشدار، بسته‌شدن حتی در صورتی‌که مقدار بین عناصر مبدأ و مقصد متفاوت باشند، انجام می‌شود. این گزینه را با دقت و آگاهی فعال کنید WarningUsingThisBoxSlowDown=هشدار، استفاده از این بخش باعث کندی جدی همۀ صفحاتی که کادر مربوطه نمایش می‌دهند خواهد شد. WarningClickToDialUserSetupNotComplete=برپاسازی اطلاعات ClickToDial برای کاربر شما کامل نیست (زبانۀ ClickToDial را در کارت کاربر مشاهده کنید). -WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=این گزینه در هنگامی که تنظیمات برپاسازی نمایش برای کاربران روشندل یا مرورگرهای متنی ثبت شده، فعال نیست. +WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=این گزینه در هنگامی که تنظیمات برپاسازی نمایش برای کاربران روشندل یا مرورگرهای متنی ثبت شده، فعال نیست. WarningPaymentDateLowerThanInvoiceDate=تاریخ پرداخت (%s) زودتر از تاریخ صورت‌حساب (%s) در صورت‌حساب %s است. WarningTooManyDataPleaseUseMoreFilters=اطلاعات بسیار زیاد (بیشتر از %s سطر). لطفا صافی‌های بیشتری تعیین کنید یا مقدارثابت %s را بیشتر کنید. WarningSomeLinesWithNullHourlyRate=برخی زمان‌ها توسط برخی کاربران تعریف شده که مبلغ ساعتی آنان تعریف نشده است. مقدار 0 %s در ساعت استفاده شده است اما این ممکن است باعث مقداردهی غلط زمان صرف شده شود. WarningYourLoginWasModifiedPleaseLogin=نام‌ورود شما تغییر پیدا کرده. برای حفظ امنیت شما باید قبل از عمل بعدی با نام‌ورود جدید وارد شوید. +WarningYourPasswordWasModifiedPleaseLogin=Your password was modified. For security purpose you will have to login now with your new password. WarningAnEntryAlreadyExistForTransKey=یک ورودی برای این کلید ترجمه برای این زبان قبلا وجود داشته است WarningNumberOfRecipientIsRestrictedInMassAction=هشدار، در هنگام انجام عملیات انبوده روی فهرست‌ها، تعداد دریافت‌کنندگان مختلف به %s محدود است. WarningDateOfLineMustBeInExpenseReportRange=هشدار، تاریخ مربوط به سطر در بازۀ گزارش هزینه‌ها نیست @@ -326,7 +376,24 @@ 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. +WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=Automatic validation is disabled when option to decrease stock is set on "Invoice validation". +WarningModuleNeedRefresh = Module %s has been disabled. Don't forget to enable it +WarningPermissionAlreadyExist=Existing permissions for this object +WarningGoOnAccountancySetupToAddAccounts=If this list is empty, go into menu %s - %s - %s to load or create accounts for your chart of account. +WarningCorrectedInvoiceNotFound=Corrected invoice not found +WarningCommentNotFound=Warning: Can't find the start and/or end comments for the section %s into the file %s +WarningAlreadyReverse=Stock movement already reversed +WarningParentIDDoesNotExistAnymore=This parent ID does not exists anymore +WarningReadBankAlsoAllowedIfUserHasPermission=Warning, reading bank account is also allowed with the permission to Manage chart of account +WarningNoDataTransferedInAccountancyYet=Please note, there is no data in the accounting table. Please transfer your data recorded in the application to the accounting section or change the calculation mode to analyze the data recorded outside of accounting. +WarningChangingThisMayBreakStopTaskScheduler=Warning, changing this value may disable the scheduler +SwissQrOnlyVIR = SwissQR invoice can only be added on invoices set to be paid with credit transfer payments. +SwissQrCreditorAddressInvalid = Creditor address is invalid (are ZIP and city set? (%s) +SwissQrCreditorInformationInvalid = Creditor information is invalid for IBAN (%s): %s +SwissQrIbanNotImplementedYet = QR-IBAN not implemented yet +SwissQrPaymentInformationInvalid = Payment information was invalid for total %s : %s +SwissQrDebitorAddressInvalid = Debitor information was invalid (%s) # Validate RequireValidValue = Value not valid RequireAtLeastXString = Requires at least %s character(s) @@ -347,3 +414,12 @@ 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 +ErrorTooManyAttempts= Too many attempts, please try again later +TotalAmountEmpty=Total Amount Empty +FailedToFoundTheConversionRateForInvoice=Failed to found the conversion rate for invoice +ThisIdNotDefined=Id not defined +OperNotDefined=Payment method not defined +ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. +ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. +EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/fi_FI/admin.lang b/htdocs/langs/fi_FI/admin.lang index 7e1de791db4..685b66989c3 100644 --- a/htdocs/langs/fi_FI/admin.lang +++ b/htdocs/langs/fi_FI/admin.lang @@ -406,7 +406,7 @@ DescWeather=Seuraavat kuvat näytetään kojelaudassa, kun myöhästyneiden toim KeyForWebServicesAccess=Avain käyttää Web Services (parametri "dolibarrkey" in WebServices) TestSubmitForm=Testi lomake ThisForceAlsoTheme=Tämän valikkohallinnan käyttäminen käyttää myös omaa teemaansa käyttäjän valinnasta riippumatta. Tämä älypuhelimille tarkoitettu valikkohallinta ei välttämättä toimi kaikissa älypuhelimissa. Käytä toista valikonhallintaohjelmaa, jos sinulla on ongelmia omasi kanssa. -ThemeDir=Skins hakemisto +ThemeDir=Ulkoasut hakemisto ConnectionTimeout=Yhteyden aikakatkaisu ResponseTimeout=Vastauksen aikakatkaisu SmsTestMessage=Test viesti __ PHONEFROM__ ja __ PHONETO__ @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=Arvoluettelon on oltava rivejä, joissa on muoto: avain,arvo (missä avain ei voi olla 0)

esimerkiksi:
1,arvo1
2,arvo2
3,arvo3
... ExtrafieldParamHelpradio=Arvoluettelon on oltava rivejä, joissa on muoto: avain,arvo (missä avain ei voi olla 0)

esimerkiksi:
1,arvo1
2,arvo2
3,arvo3
... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametrien on oltava ObjectName:Classpath
Syntaksi: ObjectName:Classpath ExtrafieldParamHelpSeparator=Pidä tyhjänä yksinkertainen erotin
Aseta tämän arvoksi 1, jos haluat tiivistävän erottimen (avaa oletus uutta istuntoa varten, tila on säilytetään jokaista käyttäjäistuntoa varten)
Aseta tämän arvoksi 2 tiivistyvälle erottimelle (kutistaa oletus uutta istuntoa varten, tila on säilytetään jokaista käyttäjäistuntoa varten) LibraryToBuildPDF=Käytettävä kirjasto PDF:n luomiseen @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, jota seuraa lyhennetty asiakkaan nimi mer ModuleCompanyCodeSupplierDigitaria=%s ja sen jälkeen katkaistu nimi toimittaja merkkien lukumäärän mukaan: %s koodille toimittaja Kirjanpito. 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=Käytä kolmivaiheista hyväksyntää, kun summa (ilman vero) on suurempi kuin... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Jotkut sähköpostipalveluntarjoajat (kuten Yahoo) eivät salli sähköpostin lähettämistä toiselta palvelimelta kuin omalta palvelimeltaan. Nykyinen asetuksesi käyttää sovelluksen palvelinta sähköpostin lähettämiseen ja, ei sähköpostipalveluntarjoajasi palvelinta, joten jotkut vastaanottajat (joka on yhteensopiva rajoittavan DMARC-protokollan kanssa) kysyvät sähköpostipalveluntarjoaja, jos he voivat hyväksyä sähköpostisi ja jotkut sähköpostipalveluntarjoajat (kuten Yahoo) voivat vastata "ei", koska palvelin ei ole heidän, joten muutamaa lähettämistäsi sähköposteista ei ehkä hyväksytä toimitus (varo myös sähköpostipalveluntarjoajan lähetyskiintiötä). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Oman sähköpostipalveluntarjoajasi SMTP-palvelimen käyttäminen sähköpostien lähettämiseen on myös mielenkiintoista, joten kaikki sovelluksesta lähetetyt sähköpostit tallentuvat myös postilaatikkosi "Lähetetyt"-hakemistoon. WarningPHPMailD=Siksi on suositeltavaa vaihtaa sähköpostien lähetystapa arvoon "SMTP". WarningPHPMailDbis=Jos todella haluat säilyttää oletus "PHP"-menetelmän sähköpostien lähettämiseen, jätä tämä varoitus huomioimatta tai poista se %s napsauttamalla tätä%s. WarningPHPMail2=Jos sähköpostin SMTP-palveluntarjoajasi joutuu rajoittamaan sähköpostiohjelman joihinkin IP-osoitteisiin (erittäin harvinaista), tämä on ERP CRM -sovelluksesi sähköpostin käyttäjäagentin (MUA) IP-osoite: %s. -WarningPHPMailSPF=Jos lähettäjän sähköpostiosoitteesi verkkotunnus on suojattu SPF-tietueella (kysy verkkotunnuksen rekisteröijältä), sinun on lisättävä seuraavat IP-osoitteet verkkotunnuksesi DNS:n SPF-tietueeseen: %s. -ActualMailSPFRecordFound=Todellinen SPF-tietue löydetty (sähköpostille %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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 @@ -780,7 +781,7 @@ Permission87=Sulje asiakkaiden tilauksia Permission88=Peruuta asiakkaiden tilauksia Permission89=Poista asiakkaiden tilauksia Permission91=Lue sosiaalinen tai verotus Verot ja alv -Permission92=luo/modify sosiaalinen tai verotus Verot ja alv +Permission92=Luo/Muokkaa sosiaalimaksu / vero tai alv Permission93=Poista sosiaalinen tai verotus Verot ja alv Permission94=Vie sosiaalinen tai verotus Verot Permission95=Lue raportit @@ -867,7 +868,7 @@ Permission255=Muokkaa käyttäjien salasanoja Permission256=Poista käyttäjiä Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). 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=Lue CA Permission272=Lue laskut @@ -944,7 +945,7 @@ Permission776=Maksa kuluraportit Permission777=Lue kaikki kuluraportit (myös käyttäjien, jotka eivät ole alaisia) Permission778=Luo / muokkaa kaikkien kuluraportteja Permission779=Kuluraporttien vienti -Permission1001=Lue varastot +Permission1001=Read warehouses and stocks Permission1002=Luo/muuta varastoja Permission1003=Poista varastoja Permission1004=Lue varastossa liikkeitä @@ -1211,8 +1212,8 @@ SummaryConst=Luettelo Dolibarr:in asennusparametreistä MenuCompanySetup=Yritys/Organisaatio DefaultMenuManager= Standard valikonhallinta DefaultMenuSmartphoneManager=Smartphone valikonhallinta -Skin=Ihon teema -DefaultSkin=Oletus ihon teema +Skin=Ulkoasu +DefaultSkin=Oletus ulkoasu MaxSizeList=Luetteloiden enimmäispituus DefaultMaxSizeList=Oletus luettelon maksimipituuteen MaxSizeShortList=Lyhyiden luetteloiden enimmäispituus @@ -1345,7 +1346,7 @@ WeekStartOnDay=Ensimmäinen viikonpäivä RunningUpdateProcessMayBeRequired=Running the upgrade process seems to be required (Program version %s differs from Database version %s) YouMustRunCommandFromCommandLineAfterLoginToUser=Sinun on suoritettava tämä komento komentoriviltä jälkeen kirjautua kuori käyttäjän %s. YourPHPDoesNotHaveSSLSupport=SSL toimintoja ei saatavilla PHP -DownloadMoreSkins=Lisää nahat ladata +DownloadMoreSkins=Lataa lisää ulkoasuja SimpleNumRefModelDesc=Palauttaa viitenumeron muodossa %syymm-nnnn, jossa vv on vuosi, mm on kuukausi ja nnnn on peräkkäinen automaattinen lisäys ilman nollausta SimpleRefNumRefModelDesc=Palauttaa viitenumeron muodossa n, jossa n on peräkkäinen automaattisesti kasvava luku ilman nollausta AdvancedNumRefModelDesc=Palauttaa viitenumeron muodossa %syymm-nnnn, jossa vv on vuosi, mm on kuukausi ja nnnn on peräkkäinen automaattisesti kasvava luku ilman nollausta @@ -1354,7 +1355,7 @@ ShowProfIdInAddress=Näytä ammattitunnus osoitteineen ShowVATIntaInAddress=Piilota yhteisön sisäinen ALV-numero ShowLegalFormInAddress=Näytä oikeudellinen muoto osoitteiden kanssa TranslationUncomplete=Osittainen käännös -MAIN_DISABLE_METEO=Poista sääpeukalo käytöstä +MAIN_DISABLE_METEO=Piilota sää widget MeteoStdMod=Standardi tila MeteoStdModEnabled=Standardi tila aktivoitu MeteoPercentageMod=Prosenttitila @@ -1514,7 +1515,7 @@ SupplierProposalSetup=Hintapyynnöt Toimittajat moduulin asetukset SupplierProposalNumberingModules=Hintapyynnöt Toimittajat numerointimallit SupplierProposalPDFModules=Hintapyynnöt Toimittajat asiakirjamallit FreeLegalTextOnSupplierProposal=Vapaa teksti hintapyyntöihin Toimittajat -WatermarkOnDraftSupplierProposal=vesileima Luonnos hintapyynnöissä Toimittajat (ei mitään, jos tyhjä) +WatermarkOnDraftSupplierProposal=Vesileima toimittajan hintapyyntöluonnoksissa (ei mitään, jos tyhjä) BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Kysy hintapyynnön pankkitilin kohde WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Pyydä lähdevarasto tilaukselle ##### Suppliers Orders ##### @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-suodatin arvon puhdistamiseen (COMPANY_DIGIT DuplicateForbidden=Kopiointi kielletty RemoveSpecialWords=Puhdista tietyt sanat luodessasi alatilejä asiakkaat tai Toimittajat RemoveSpecialWordsHelp=Määritä puhdistettavat sanat ennen asiakas- tai toimittaja-tilin laskemista. Käytä ";" jokaisen sanan välissä -GDPRContact=Tietosuojavastaava (tietosuojavastaava, tietosuoja- tai GDPR-yhteyshenkilö) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Jos tallennat henkilötietoja tietojärjestelmääsi, voit nimetä tästä yhteyshenkilön, joka on vastuussa yleisestä tietosuoja-asetuksesta HelpOnTooltip=Ohjeteksti näytettäväksi työkaluvihjeessä HelpOnTooltipDesc=Lisää teksti tai käännösavain tähän, jotta teksti näkyy työkaluvihjessä, kun tämä kenttä näkyy lomakkeessa @@ -2218,7 +2219,7 @@ CreateCandidature=Luo työhakemus FormatZip=Postinumero MainMenuCode=Valikkokoodi (päävalikko) ECMAutoTree=Näytä automaattinen ECM-puu -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Aukioloajat OpeningHoursDesc=Yrityksen tavalliset aukioloajat ResourceSetup=Resurssimoduulin määritys @@ -2264,7 +2265,7 @@ LargerThan=Suurempi kuin IfTrackingIDFoundEventWillBeLinked=Huomaa, että jos sähköpostista löytyy objektin seurantatunnus tai jos sähköposti on vastaus jo kerättyyn sähköpostiin ja, joka on linkitetty objektiin, luotu tapahtuma linkitetty tunnettuun liittyvään objektiin. WithGMailYouCanCreateADedicatedPassword=Jos olet ottanut käyttöön 2-vaiheisen vahvistuksen Gmail-tilillä, on suositeltavaa luo antaa sovellukselle erillinen toinen salasana sen sijaan, että käyttäisit omaa tilisi salasanaa osoitteessa https://myaccount. .google.com/. EmailCollectorTargetDir=Voi olla toivottavaa siirtää sähköposti toiseen tunnisteeseen/hakemistoon, kun se on käsitelty onnistuneesti. Aseta vain hakemiston nimi tähän käyttääksesi tätä ominaisuutta (ÄLÄ käytä nimessä erikoismerkkejä). Huomaa, että sinun on käytettävä myös luku-/kirjoitustiliä. -EmailCollectorLoadThirdPartyHelp=Voit käyttää tätä toimintoa sähköpostin sisällön avulla löytääksesi ja ladata olemassa olevan kolmannen osapuolen tietokanta (haku tehdään määritellyssä ominaisuudessa 'id', 'name', 'name_alias', 'email') joukossa). Löytynyttä (tai luotua) kolmatta osapuolta käytetään seuraaviin sitä vaativiin toimiin.
Jos esimerkiksi haluat luo kolmas osapuoli, jonka nimi on poimittu merkkijonosta "Nimi: etsittävä nimi" esiintyy rungossa, käytä lähettäjän sähköpostiosoitetta sähköpostina, voit asettaa parametrin Kenttä näin :
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Nimi:\\s([^\\s]*);client=SET: 2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Varoitus: monet sähköpostipalvelimet (kuten Gmail) tekevät koko sanahakuja, kun haetaan merkkijonosta ja ei palauta tulosta, jos merkkijono löytyy vain osittain sanasta. Tästäkin syystä erikoismerkkien käyttö hakuehdoissa jätetään huomioimatta, jos ne eivät ole osa olemassa olevia sanoja.
Jos haluat sulkea pois sanan (palauta sähköposti, jos sana ei löydy), voit käyttää ! merkki ennen sanaa (ei ehkä toimi joillakin sähköpostipalvelimilla). EndPointFor=Päätepiste kohteelle %s : %s DeleteEmailCollector=Poista sähköpostin kerääjä @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Kolmannen osapuolen nimi – Kolmannen osapuolen alias ALIAS_THIRDPARTY=Kolmannen osapuolen alias - Kolmannen osapuolen nimi PDFIn2Languages=Näytä tarrat PDF-tiedostossa kahdella eri kielellä (tämä ominaisuus ei ehkä toimi joillakin kielillä) PDF_USE_ALSO_LANGUAGE_CODE=Jos haluat, että PDF-tiedostosi tekstit kopioidaan kahdella eri kielellä samaan luotuun PDF-tiedostoon, sinun on asetettava tähän toinen Kieli, jotta luotu PDF sisältää kaksi eri kieltä samalla tavalla. sivu, joka valittiin PDF-tiedostoa luotaessa ja tämä (vain harvat PDF-mallit tukevat tätä). Pidä tyhjänä 1 Kieli PDF-tiedostoa kohden. -PDF_USE_A=Luo PDF-dokumentteja PDF/A-muodossa oletus-muotoisen PDF:n sijaan +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Kirjoita tähän FontAwesome-kuvakkeen koodi. Jos et tiedä mikä on FontAwesome, voit käyttää yleistä arvoa fa-osoitekirjaa. RssNote=Huomautus: Jokainen RSS-syötteen määritelmä sisältää widgetin, joka sinun on otettava käyttöön, jotta se on käytettävissä kojelaudassa JumpToBoxes=Siirry kohtaan Asetukset -> Widgetit @@ -2338,24 +2339,24 @@ InstallLockedBy=Asennuksen/uudelleenasennuksen lukitsee tiedosto %s InstallOfAddonIsNotBlocked=Lisäosien asennuksia ei ole lukittu. luo a tiedosto installmodules.lock hakemistoon %sb09a4b739f17-to block-asennus ulkoisista lisäosista/moduuleista. OldImplementation=Vanha toteutus PDF_SHOW_LINK_TO_ONLINE_PAYMENT=Jos jotkin online-maksu-moduulit ovat käytössä (Paypal, Stripe, ...), lisää linkki PDF-tiedostoon, jotta online-maksu span> -DashboardDisableGlobal=Poista maailmanlaajuisesti käytöstä kaikki avoimien objektien peukalot +DashboardDisableGlobal=Piilota kaikki avointen objektien widgetit BoxstatsDisableGlobal=Poista laatikon tilastot kokonaan käytöstä -DashboardDisableBlocks=Avointen objektien peukalot (käsiteltävä tai myöhässä) päähallintapaneelissa -DashboardDisableBlockAgenda=Poista peukalo käytöstä esityslistaa varten -DashboardDisableBlockProject=Poista peukalo käytöstä Projektit -DashboardDisableBlockCustomer=Poista peukalo käytöstä asiakkaat -DashboardDisableBlockSupplier=Poista peukalo käytöstä Toimittajat -DashboardDisableBlockContract=Poista peukalo käytöstä sopimuksissa -DashboardDisableBlockTicket=Poista lippujen peukalo käytöstä -DashboardDisableBlockBank=Poista pankkien peukalo käytöstä -DashboardDisableBlockAdherent=Poista peukalo käytöstä jäsenyyksiä varten -DashboardDisableBlockExpenseReport=Poista peukalo käytöstä kuluraportit -DashboardDisableBlockHoliday=Poista lehtien peukalo käytöstä +DashboardDisableBlocks=Piilota avointen objektien widgetit (käsiteltävä tai myöhässä) päähallintapaneelista +DashboardDisableBlockAgenda=Piilota agenda widget +DashboardDisableBlockProject=Piilota projekti widget +DashboardDisableBlockCustomer=Piilota asiakkaat widget +DashboardDisableBlockSupplier=Piilota toimittajat widget +DashboardDisableBlockContract=Piilota sopimukset widget +DashboardDisableBlockTicket=Piilota tiketti widget +DashboardDisableBlockBank=Piilota pankki widget +DashboardDisableBlockAdherent=Piilota jäsenyydet widget +DashboardDisableBlockExpenseReport=Piilota kuluraportit widget +DashboardDisableBlockHoliday=Piilota loma widget EnabledCondition=Edellytys, että Kenttä on käytössä (jos ei ole käytössä, näkyvyys on aina pois päältä) IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Jos haluat käyttää toista vero, sinun on otettava käyttöön myös ensimmäinen myynti vero IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Jos haluat käyttää kolmatta vero, sinun on otettava käyttöön myös ensimmäinen myynti vero LanguageAndPresentation=Kieli ja esitys -SkinAndColors=Ihon ja väriä +SkinAndColors=Ulkoasu ja värit PDF_USE_1A=Luo PDF PDF/A-1b-muodossa MissingTranslationForConfKey = Puuttuva käännös sanalle %s NativeModules=Alkuperäiset moduulit @@ -2553,3 +2554,8 @@ MenuDict=Sanakirja AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Parametri ParamValue=Arvo +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/fi_FI/commercial.lang b/htdocs/langs/fi_FI/commercial.lang index dd9abe7dc67..e1f8d9b08b4 100644 --- a/htdocs/langs/fi_FI/commercial.lang +++ b/htdocs/langs/fi_FI/commercial.lang @@ -94,3 +94,9 @@ SignatureContractRef=Sopimuksen allekirjoitus %s SignatureFichinterRef=Työmääräyksen allekirjoitus %s SignatureSociete_ribRef=SEPA-valtuutuksen allekirjoitus %s FeatureOnlineSignDisabled=Sähköinen allekirjoitus on poissa käytöstä tai dokumentti on luotu ennen sen käyttöönottoa +NoSignature=Ei ole kirjautunut +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/fi_FI/companies.lang b/htdocs/langs/fi_FI/companies.lang index 40b293b226f..a22792d2299 100644 --- a/htdocs/langs/fi_FI/companies.lang +++ b/htdocs/langs/fi_FI/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr sisäänkirjautumis sivu NoDolibarrAccess=Ei Dolibarr pääsyä ExportDataset_company_1=Sidosryhmät (yritykset, yhteisöt, ihmiset) ja niiden ominaisuudet ExportDataset_company_2=Yhteystiedot ja ominaisuudet +ExportDataset_company_3=Sidosryhmien pankkitilit ImportDataset_company_1=Sidosryhmät ja ominaisuudet ImportDataset_company_2=Sidosryhmien yhteystiedot/osoitteet ja ominaisuudet ImportDataset_company_3=Sidosryhmien pankkitilit diff --git a/htdocs/langs/fi_FI/datapolicy.lang b/htdocs/langs/fi_FI/datapolicy.lang index 7256a05b773..80f1a7903fc 100644 --- a/htdocs/langs/fi_FI/datapolicy.lang +++ b/htdocs/langs/fi_FI/datapolicy.lang @@ -33,7 +33,7 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Mahdollisuus/asiakas DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ei mahdollinen / ei asiakas DATAPOLICY_CONTACT_FOURNISSEUR = Toimittaja DATAPOLICY_ADHERENT = Jäsen -DATAPOLICY_Tooltip_SETUP = Yhteydenottotyyppi - Ilmoita valintasi kullekin tyypille. +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Voit lähettää GDPR-sähköpostin kaikille asiaankuuluville yhteyshenkilöillesi (jotka eivät ole vielä saaneet sähköpostia ja, johon et ole rekisteröinyt mitään heidän GDPR-sopimuksestaan). Voit tehdä tämän käyttämällä seuraavaa painiketta. SendAgreement = Lähetä sähköposteja AllAgreementSend = Kaikki sähköpostit on lähetetty diff --git a/htdocs/langs/fi_FI/errors.lang b/htdocs/langs/fi_FI/errors.lang index 3e5bd15b1a0..36296b26194 100644 --- a/htdocs/langs/fi_FI/errors.lang +++ b/htdocs/langs/fi_FI/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Käyttäjä on määritettävä tehtävään, jotta h ErrorTaskAlreadyAssigned=Tehtävä on jo määrätty käyttäjälle ErrorModuleFileSeemsToHaveAWrongFormat=Moduulipaketilla näyttää olevan väärä muoto. ErrorModuleFileSeemsToHaveAWrongFormat2=At least one mandatory directory must exists into zip of module: %s or %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Moduulipaketin nimi (%s) ei täsmää odotetun nimen syntaksi: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Virhe, kaksoiskäynnistimen nimi %s. Ladattu jo kohteesta %s. ErrorNoWarehouseDefined=Virhe, varastoa ei tunnistettu ErrorBadLinkSourceSetButBadValueForRef=Käyttämäsi linkki ei ole kelvollinen. Lähde arvolle maksu on määritetty, mutta viitearvo ei kelpaa. @@ -422,3 +422,4 @@ OperNotDefined=Maksutapaa ei ole määritetty ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Tyhjä viesti ei kelpaa +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/fi_FI/mails.lang b/htdocs/langs/fi_FI/mails.lang index e11abb58ca4..f9cde3c2ebc 100644 --- a/htdocs/langs/fi_FI/mails.lang +++ b/htdocs/langs/fi_FI/mails.lang @@ -32,8 +32,8 @@ NewMailing=Uusi sähköpostia NewSMSing=New smsing EditMailing=Muokkaa sähköpostia ResetMailing=Uudelleen sähköpostitse -ConfirmResetMailingTargetMassaction=Bulk target Resend confirmation -ResetMailingTargetMassaction=Resend target +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Poista sähköpostia PreviewMailing=Esikatselu sähköpostia CreateMailing=Luo sähköpostia @@ -193,7 +193,7 @@ NoMoreRecipientToSendTo=Ei enää vastaanottajaa, jolle sähköpostia voisi läh EmailOptedOut=Sähköpostin omistaja on pyytänyt, ettei hän enää ota yhteyttä tällä sähköpostilla EvenUnsubscribe=Sisällytä kieltäytymissähköpostit EvenUnsubscribeDesc=Sisällytä käytöstäpoistosähköpostit, kun valitset sähköpostit kohteiksi. Hyödyllinen esimerkiksi pakollisissa palvelusähköposteissa. -XEmailsDoneYActionsDone=%s sähköpostit valmiiksi hyväksytty, %s sähköpostit käsitelty onnistuneesti (%s-tietueelle /toimet tehty) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Sähköpostimalli YouCanChooseAModelForYouMailContent= Voit valita yhden mallimalleista tai luoda sellaisen tekoälyllä diff --git a/htdocs/langs/fi_FI/stocks.lang b/htdocs/langs/fi_FI/stocks.lang index b65ca5c816c..06130e9932b 100644 --- a/htdocs/langs/fi_FI/stocks.lang +++ b/htdocs/langs/fi_FI/stocks.lang @@ -269,7 +269,7 @@ ProductBatchDoesNotExist=Erä-/sarjatuotetta ei ole olemassa ProductBarcodeDoesNotExist=Tuotetta viivakoodi ei ole olemassa WarehouseId=Varaston tunnus WarehouseRef=Varastoviite -SaveQtyFirst=Tallenna ensin todelliset inventoidut määrät, ennen kuin pyydät varastoliikkeen luomista. +SaveQtyFirst=Tallenna ensin todelliset inventoidut määrät, ennen kuin pyydät varastosiirtoa. ToStart=Alku InventoryStartedShort=Aloitettu ErrorOnElementsInventory=Toiminta peruttu seuraavasta syystä: @@ -337,3 +337,13 @@ LatestModifiedWarehouses=Latest %s modified warehouses LatestStockMovements=Latest %s stock movements QtyCurrentlyKnownInStock=System estimated quantity you have in stock. As long as the inventory is not closed, this is a realtime value and it may change if you continue to make stock movement during the inventory (not recommended). QtyInStockWhenInventoryWasValidated=System estimated quantity you had in stock when the inventory was validated (before the stock correction) +InventoryId=Inventory id +DateInventory=Inventory date +InventoryStatus=Inventory status +InventoryTitle=Inventory name +InventoryLineId=Inventory line +InventoryRef=Inventory ref +QtyViewed=Quantity viewed +QtyStock=Quantity on stock +QtyRegulated=Quantity on stock correction +InventoryEntrepot=Warehouse identity diff --git a/htdocs/langs/fi_FI/stripe.lang b/htdocs/langs/fi_FI/stripe.lang index 88421b0094b..88d75e2bb53 100644 --- a/htdocs/langs/fi_FI/stripe.lang +++ b/htdocs/langs/fi_FI/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL-osoite, jolla tarjotaan %s online ToOfferALinkForOnlinePaymentOnFreeAmount=URL-osoite, jolla tarjotaan %s online- maksu -sivu minkä tahansa summan ilman objektia ToOfferALinkForOnlinePaymentOnMemberSubscription=URL-osoite, joka tarjoaa %s online- maksu -sivun jäsentilaukselle ToOfferALinkForOnlinePaymentOnDonation=URL-osoite, jolla tarjotaan %s online maksu -sivu maksu lahjoituksesta -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) +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) YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Setup your Stripe with url %s to have payment created automatically when validated by Stripe. AccountParameter=Tilin parametrit diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang index 1cf24770c22..43e82588a9d 100644 --- a/htdocs/langs/fr_CA/admin.lang +++ b/htdocs/langs/fr_CA/admin.lang @@ -169,10 +169,14 @@ LastActivationAuthor=Dernier auteur d'activation LastActivationIP=Dernière activation IP GenericMaskCodes=Vous pouvez saisir n'importe quel masque de numérotation. Dans ce masque, les balises suivantes peuvent être utilisées :
{000000} correspond à un nombre qui sera incrémenté à chaque %s. Entrez autant de zéros que la longueur souhaitée du compteur. Le compteur sera complété par des zéros en partant de la gauche afin d'avoir autant de zéros que le masque.
{000000+000} identique au précédent mais un décalage correspondant au nombre à droite du signe + est appliqué à partir du premier %s.
{000000@x} identique au précédent mais le compteur est remis à zéro lorsque le mois x est atteint (x compris entre 1 et 12, ou 0 pour utiliser les premiers mois de l'exercice défini dans votre configuration, ou 99 pour une remise à zéro tous les mois). Si cette option est utilisée et que x est égal ou supérieur à 2, alors la séquence {aa}{mm} ou {aaaa}{mm} est également requise.
{dd} jour (01 à 31).
{mm} mois (01 à 12).
{yy}, {aaaa} ou {y} année sur 2, 4 ou 1 numéros.
GenericMaskCodes2={cccc} le code client sur n caractères
{cccc000} le code client sur n caractères est suivi d'un compteur dédié au client. Ce compteur dédié au client est réinitialisé en même temps que le compteur global.
{tttt} Le code du tiers type sur n caractères (voir menu Accueil - Paramétrage - Dictionnaire - Types de tiers). Si vous ajoutez cette balise, le compteur sera différent pour chaque type de tiers.
+GenericMaskCodes2b={uuuu} les n premiers caractères du nom de famille de l'utilisateur qui crée l'objet (n est le nombre de "u"). GenericMaskCodes3EAN=Tous les autres caractères du masque resteront intacts (sauf * ou ? en 13ème position dans EAN13).
Les espaces ne sont pas autorisés.
Dans EAN13, le dernier caractère après le dernier } en 13ème position doit être * ou ? . Il sera remplacée par la clé calculée.
GenericMaskCodes4a=Exemple sur le 99e %s du tiers TheCompany, avec la date 2023-01-31 :
GenericMaskCodes4b=Exemple sur un tiers créé le 31/01/2023 :
GenericMaskCodes4c=Exemple sur un produit créé le 31/01/2023 :
+GenericMaskCodes5b=IN{yy}{mm}-{0000}-{t} donnera IN2301-0099-A si le type de l'entreprise est « Responsable Inscripto » avec le code pour le type qui est « A_RI » +DateStartThatModel=Désactiver l'utilisation de cette règle de numérotation pour tous les tiers créés avant +DateStartThatModelHelp=Vous pouvez désactiver la règle de numérotation des éléphants pour les tiers créés avant une date (par exemple, parce qu'ils ont été importés par une migration, depuis un autre logiciel utilisant une règle différente). Laissez ce champ vide pour que la règle s'applique à tous les tiers. UMaskExplanation=Ce paramètre permet de définir les permissions fixées par défaut sur les fichiers créés par Dolibarr sur le serveur (lors de l'upload par exemple).
Il doit s'agir de la valeur octale (par exemple, 0666 signifie lire et écrivez pour tout le monde.). La valeur recommandée est 0600 ou 0660
Ce paramètre est inutile sur un serveur Windows. SeeWikiForAllTeam=Jetez un œil à la page Wiki pour une liste des contributeurs et leur organisation DisableLinkToHelpCenter=Masquer le lien "Besoin d'aide ou d'assistance" sur la page de connexion @@ -204,6 +208,8 @@ String1Line=Chaîne (1 ligne) Text=Texte Boolean=Boolean (une case à cocher) ExtrafieldSeparator=Séparateur (pas un champ) +ExtrafieldRadio=Boutons radio (1 seul choix) +ExtrafieldCheckBoxFromList=Sélectionnez dans le tableau (n choix) ExtrafieldLink=Lier à un objet ExtrafieldPointGeo=Point Géométrique ExtrafieldMultiPointGeo=Géométrique Multi Point @@ -214,6 +220,7 @@ ExtrafieldParamHelpPassword=Laisser ce champ vide signifie que cette valeur sera ExtrafieldParamHelpselect=La liste de valeurs doit être constituée de lignes au format clé, valeur (où la clé ne peut pas être « 0 »)

par exemple :
1,value1
2,value2
code3,value3
...

Afin d'avoir la liste en fonction d'une autre liste d'attributs complémentaires :
1,value1|options_parent_list_code : parent_key
2,value2|options_parent_list_code:parent_key

Afin d'avoir la liste dépendant d'une autre liste :
1, value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key ExtrafieldParamHelpcheckbox=La liste de valeurs doit être constituée de lignes au format clé, valeur (où la clé ne peut pas être « 0 »)

par exemple :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=La liste de valeurs doit être constituée de lignes au format clé, valeur (où la clé ne peut pas être « 0 »)

par exemple :
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpsellist=La liste de valeurs provient d'une table
Syntaxe : table_name:label_field:id_field::filtersql
Exemple : c_typent:libelle:id::filtersql

- id_field est nécessairement une clé int primaire
- filtersql est une condition. Elle doit utiliser la syntaxe USF. Exemple : (active:=:1) pour afficher uniquement la valeur active
Vous pouvez également utiliser $ID$ dans le filtre qui est l'ID actuel de l'objet actuel
Si vous souhaitez filtrer sur des champs supplémentaires, utilisez la syntaxe extra.fieldcode=... (où fieldcode est le code du champ supplémentaire)

Pour que la liste dépende d'une autre liste d'attributs complémentaires :
c_typent:libelle:id:options_parent_list_code|parent_column:filter

Pour que la liste dépende d'une autre liste :
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Les paramètres doivent être ObjectName:Classpath
Syntaxe : ObjectName:Classpath ExtrafieldParamHelpSeparator=Gardez vide pour un séparateur simple
Définissez ceci sur 1 pour un séparateur réduit (ouvert par défaut pour une nouvelle session, puis le statut est conservé pour chaque session utilisateur)
Définissez ceci sur 2 pour un séparateur réduit (réduit par défaut pour une nouvelle session, puis le statut est conservé avant chaque session utilisateur) LibraryToBuildPDF=Bibliothèque utilisée pour la génération de PDF @@ -221,6 +228,7 @@ LocalTaxDesc=Certains pays peuvent appliquer deux ou trois taxes sur chaque lign BarcodeInitForThirdparties=Initialisation massive de codes-barres pour des tiers CurrentlyNWithoutBarCode=Actuellement, vous avez %s enregistrements sur %s %s sans code à barres défini. InitEmptyBarCode=Valeur d'initialisation pour les %s codes-barres vides +EraseAllCurrentBarCode=Efface toutes les valeurs de code-barre ConfirmEraseAllCurrentBarCode=Êtes-vous sûr de vouloir effacer toutes les valeurs actuelles du code-barres? NoBarcodeNumberingTemplateDefined=Aucun modèle de code-barres de numérotation n'est activé dans la configuration du module Code-barres. EnableFileCache=Activer le cache de fichiers @@ -237,13 +245,15 @@ ModuleCompanyCodeCustomerDigitaria=%s suivi du nom du client tronqué du nombre ModuleCompanyCodeSupplierDigitaria=%s suivi du nom du fournisseur tronqué du nombre de caractères : %s pour le code comptable du fournisseur. Use3StepsApproval=Par défaut, les bons de commande doivent être créés et approuvés par 2 utilisateurs différents (une étape / utilisateur à créer et une étape / utilisateur à approuver. Notez que si l'utilisateur a la permission de créer et d'approuver, un pas / utilisateur suffira) . Vous pouvez demander cette option pour introduire une troisième étape / approbation de l'utilisateur, si le montant est supérieur à une valeur dédiée (donc 3 étapes seront nécessaires: 1 = validation, 2 = première approbation et 3 = deuxième approbation si le montant est suffisant).
Configurez ceci pour vider si une approbation (2 étapes) est suffisante, définissez-la à une valeur très faible (0.1) si une deuxième approbation (3 étapes) est toujours requise. UseDoubleApproval=Utilisez une approbation de 3 étapes lorsque le montant (sans taxes) est supérieur à ... -WarningPHPMailB=- Certains fournisseurs de services de messagerie (comme Yahoo) ne vous permettent pas d'envoyer un e-mail depuis un autre serveur que leur propre serveur. Votre configuration actuelle utilise le serveur de l'application pour envoyer des e-mails et non le serveur de votre fournisseur de messagerie, donc certains destinataires (celui compatible avec le protocole restrictif DMARC) demanderont à votre fournisseur de messagerie s'ils peuvent accepter votre e-mail et certains fournisseurs de messagerie (comme Yahoo) peuvent répondre « non » parce que le serveur ne leur appartient pas, donc peu de vos e-mails envoyés peuvent ne pas être acceptés pour la livraison (faites également attention au quota d'envoi de votre fournisseur de messagerie). +WarningPHPMail=REMARQUE : la configuration pour envoyer des e-mails depuis l'application utilise la configuration générique par défaut (appelée « %s »). Ce choix ne nécessite aucune connaissance technique ni configuration particulière.
Cependant, il est souvent préférable de configurer les e-mails sortants pour utiliser l'autre méthode (appelée « %s ») pour utiliser le serveur de messagerie de votre fournisseur de services de messagerie, au lieu de la configuration par défaut pour plusieurs raisons : +WarningPHPMailA=- L'utilisation du serveur du fournisseur de services de messagerie augmente la fiabilité de votre e-mail, ce qui augmente la délivrabilité sans être signalé comme SPAM +WarningPHPMailB=- Si le domaine de votre e-mail (la partie mymaildomain.com dans myname@mymaildomain.com) est protégé par un enregistrement SPF + DMARC, votre e-mail peut être signalé comme SPAM parce que votre règle DMARC définie dans la zone DNS du domaine de l'expéditeur (mymaildomain.com) ne permet pas l'envoi en tant qu'expéditeur générique. Dans un tel cas, vous devez désactiver le DMARC pour le domaine (ou le définir sur p=none comme fait par @gmail.com) ou, mieux, si vous avez les connaissances techniques, utiliser l'autre méthode pour envoyer des e-mails en utilisant le serveur SMTP de votre propre fournisseur de messagerie. WarningPHPMailC=- Utiliser le serveur SMTP de votre propre fournisseur de services de messagerie pour envoyer des emails est également intéressant car tous les emails envoyés depuis l'application seront également enregistrés dans votre répertoire "Envoyés" de votre boîte mail. WarningPHPMailD=Il est donc recommandé de changer le mode d'envoi des e-mails vers la valeur « SMTP ». WarningPHPMailDbis=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 %sen cliquant ici%s. WarningPHPMail2=Si votre fournisseur de messagerie SMTP doit restreindre le client de messagerie à certaines adresses IP (très rare), voici l'adresse IP de l'agent utilisateur de messagerie (MUA) de votre application ERP CRM : %s. -WarningPHPMailSPF=Si le nom de domaine dans votre adresse email d'expéditeur est protégé par un enregistrement SPF (demandez à votre registraire de nom de domaine), vous devez ajouter les IP suivantes dans l'enregistrement SPF du DNS de votre domaine : %s. -ActualMailSPFRecordFound=Enregistrement SPF réel trouvé (pour l'e-mail %s) : %s +WarningPHPMailSPF=Si le nom de domaine dans votre adresse e-mail d'expéditeur est protégé par un enregistrement SPF (demandez à votre registrar de nom de domaine), vous devez ajouter les IP ou l'entrée suivantes dans l'enregistrement SPF du DNS de votre domaine : %s. +ActualMailDNSRecordFound=Enregistrement %s réel trouvé (pour l'e-mail %s) : %s ClickToShowDescription=Cliquez pour afficher la description DependsOn=Ce module nécessite le(s) module(s) RequiredBy=Ce module est requis par module (s) @@ -321,6 +331,7 @@ Module2000Desc=Autoriser la modification/le formatage des champs de texte à l'a Module2200Desc=Utilisez des expressions mathématiques pour la génération automatique des prix Module2300Desc=Gestion des tâches planifiées (alias cron ou chrono table) Module2400Name=Evénements / Agenda +Module2400Desc=Gérez les événements manuels et automatiques. Utilisez le calendrier pour enregistrer les événements manuellement. Enregistrez également les événements automatiquement à des fins de suivi ou enregistrez manuellement les événements ou les réunions. Il s'agit du module principal pour une bonne gestion des relations avec les clients et/ou les fournisseurs. Module2500Name=SGD/ECM Module2500Desc=Système de gestion de documents / Gestion de contenu électronique. Organisation automatique de vos documents générés ou stockés. Partagez-les quand vous en avez besoin. Module2600Desc=Active le serveur de Web Services de Dolibarr @@ -395,7 +406,7 @@ Permission194=Lire les lignes de bande passante Permission253=Créer/modifier d'autres utilisateurs, groupes et autorisations Permission262=Étendez l'accès à tous les tiers ET à leurs objets (pas seulement aux tiers pour lesquels l'utilisateur est lié en tant que représentant commercial). Permission262b=Peu efficace pour les utilisateurs externes (toujours limités à eux-mêmes pour les propositions, commandes, factures, contrats, etc.). -Permission262c=Non efficace pour les projets (uniquement les règles sur les autorisations de projet, les questions de visibilité et d'affectation). +Permission262c=Non efficace pour les projets (seules les règles sur les autorisations de projet, la visibilité et l'affectation des utilisateurs comptent). Permission263=Étendre l'accès à tous les tiers SANS leurs objets (pas seulement aux tiers pour lesquels l'utilisateur est représentant commercial).
Pas efficace pour les utilisateurs externes (toujours limités à eux-mêmes pour les propositions, commandes, factures, contrats, etc.).
Non efficace pour les projets (uniquement les règles sur les autorisations de projet, la visibilité et les questions d'affectation). Permission293=Modifier les tarifs du client Permission301=Générer des feuilles PDF de codes-barres @@ -424,6 +435,7 @@ Permission663=Supprimer un ordre de fabrication (MO) Permission771=Lire les rapports de dépenses (le vôtre et vos subordonnés ) Permission772=Créer/modifier des notes de frais (pour vous et vos subordonnés) Permission778=Créer/modifier les notes de frais de tout le monde +Permission1001=Lire les entrepôts et les stocks Permission1011=Afficher les inventaires Permission1015=Autoriser la modification de la valeur PMP d'un produit Permission1101=Lire les bons de livraison @@ -706,6 +718,11 @@ InvoiceCheckPosteriorDate=Vérifier la date de facture avant validation InvoiceCheckPosteriorDateHelp=La validation d'une facture sera interdite si sa date est antérieure à la date de la dernière facture du même type. InvoiceOptionCategoryOfOperations=Afficher la mention « catégorie d'opérations » sur la facture. InvoiceOptionCategoryOfOperationsHelp=Selon la situation, la mention apparaîtra sous la forme :
- Catégorie d'opérations : Livraison de marchandises
- Catégorie de opérations : Prestation de services
- Catégorie d'opérations : Mixte - Livraison de biens et prestation de services +InvoiceClassifyBilledSupplierOrderWithoutInvoice=Interdire la classification d'une commande comme facturée sans facture. +InvoiceClassifyBilledSupplierOrderWithoutInvoiceHelp=Une commande peut être classée comme facturée par défaut. Si cette configuration est définie sur true, elle ne le sera pas. +SupplierOrderClassifyBilledWithoutInvoice=Interdire la classification d’un bon de commande comme facturé sans facture. +SupplierOrderClassifyBilledWithoutInvoiceHelp=Une commande fournisseur peut être classée comme facturée par défaut. Si cette configuration est définie sur true, elle ne le sera pas. +SuggestedPaymentModesIfNotDefinedInProposal=Mode de paiement suggéré par défaut s'il n'est pas défini sur la proposition SupplierProposalSetup=Configuration du module de ​​demande de prix des fournisseurs SupplierProposalNumberingModules=Modèles de numérotation des demandes de prix des fournisseurs SupplierProposalPDFModules=Modèles des documents des demandes de prix des fournisseurs @@ -719,6 +736,8 @@ OrdersSetup=Configuration de la gestion des commandes clients ShippableOrderIconInList=Ajouter un icône dans la liste des commandes qui indique si la commande est expédiable. MemberCodeChecker=Options de génération automatique des codes membres AdherentMailRequired=Email requis pour créer un nouveau membre +MemberSendInformationByMailByDefault=La case à cocher pour envoyer un email de confirmation aux membres (validation ou nouvelle inscription) est activée par défaut +MemberCreateAnExternalUserForSubscriptionValidated=Créer automatiquement un utilisateur externe (avec un login pour se connecter à l'application) après un paiement en ligne d'une cotisation d'adhésion MEMBER_REMINDER_EMAIL=Activer le rappel automatique par e-mail des abonnements expirés. Remarque : Le module %s doit être activé et correctement configuré pour envoyer rappels. MembersDocModules=Modèles de documents pour les documents générés à partir du dossier de membre LDAPMembersTypesSynchro=Types de membres @@ -894,6 +913,7 @@ CloseFiscalYear=Période comptable rapprochée DeleteFiscalYear=Supprimer la période comptable ConfirmDeleteFiscalYear=Êtes-vous sûr de supprimer cette période comptable? ShowFiscalYear=Afficher la période comptable +AssetNumberingModules=Module de numérotation des actifs SalariesSetup=Configuration du module salariés TypePaymentDesc=0 : Type de paiement client, 1 : Type de paiement fournisseur, 2 : Type de paiement client et fournisseur. ExpenseReportsRulesSetup=Mise en place du module Notes de frais - Règles @@ -989,6 +1009,7 @@ BaseCurrency=Monnaie de référence de la société (entrer dans la configuratio WarningNoteModuleInvoiceForFrenchLaw=Ce module %s est conforme aux lois françaises (Loi Finance 2016). WarningNoteModulePOSForFrenchLaw=Ce module %s est conforme à la loi française (Loi Finance 2016) car le module Non Reversible Logs est automatiquement activé. WarningInstallationMayBecomeNotCompliantWithLaw=Vous essayez d'installer le module %s qui est un module externe. L'activation d'un module externe signifie que vous faites confiance à l'éditeur de ce module et que vous êtes sûr que ce module n'a pas d'impact négatif sur le comportement de votre application et qu'il est conforme aux lois de votre pays (%s). Si le module introduit une fonctionnalité illégale, vous devenez responsable de l'utilisation de logiciels illégaux. +WarningExperimentalFeatureInvoiceSituationNeedToUpgradeToProgressiveMode=Si vous utilisez le mode expérimental pour les factures de situation, vous devrez mettre à jour vos données pour passer du mode expérimental au mode officiel. Vous pouvez contacter un partenaire pour vous aider dans cette tâche. Une liste de partenaires privilégiés est disponible en suivant ce lien MAIN_PDF_MARGIN_LEFT=Marge gauche sur PDF MAIN_PDF_MARGIN_RIGHT=Marge droite sur PDF MAIN_PDF_MARGIN_TOP=Marge supérieure sur PDF @@ -996,6 +1017,7 @@ MAIN_PDF_MARGIN_BOTTOM=Marge inférieure sur PDF MAIN_DOCUMENTS_LOGO_HEIGHT=Hauteur du logo sur PDF DOC_SHOW_FIRST_SALES_REP=Afficher le premier représentant commercial MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Ajouter une colonne pour l'image sur les lignes de proposition +MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Masquer la colonne du prix total sur les bons de commande MAIN_PDF_NO_SENDER_FRAME=Masquer les bordures du cadre d'adresse de l'expéditeur MAIN_PDF_NO_RECIPENT_FRAME=Masquer les bordures du cadre d'adresse du destinataire MAIN_PDF_HIDE_CUSTOMER_CODE=Masquer le code client @@ -1010,13 +1032,14 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtre Regex pour nettoyer la valeur (COMPANY_DIGI DuplicateForbidden=Duplicata interdit RemoveSpecialWords=Nettoyer certains mots lors de la génération de sous-comptes pour les clients ou les fournisseurs RemoveSpecialWordsHelp=Précisez les mots à nettoyer avant de calculer le compte client ou fournisseur. Utiliser un ";" entre chaque mot -GDPRContact=Délégué à la protection des données (DPO, Data Privacy ou contact RGPD) +GDPRContact=Délégué à la protection des données (DPO, contact Data Privacy ou RGPD, ...) 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. HelpOnTooltipDesc=Mettez du texte ou une clé de traduction ici pour que le texte s'affiche 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 ChartLoaded=Plan comptable chargé SocialNetworkSetup=Mise en place du module Réseaux Sociaux EnableFeatureFor=Activer les fonctionnalités pour %s +SetupModuleX=Module de configuration %s VATIsUsedIsOff=Remarque : L'option permettant d'utiliser la taxe de vente ou la TVA a été définie sur Off dans le menu %s - %s, donc la taxe de vente ou la TVA utilisée sera toujours de 0 pour les ventes. SwapSenderAndRecipientOnPDF=Échanger la position des adresses de l'expéditeur et du destinataire sur les documents PDF FeatureSupportedOnTextFieldsOnly=Attention, fonctionnalité prise en charge sur les champs texte et les listes combo 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é. @@ -1064,7 +1087,7 @@ CreateCandidature=Créer une demande d'emploi FormatZip=Code postal MainMenuCode=Code d'entrée du menu (menu principal) ECMAutoTree=Afficher l'arborescence ECM automatique -OperationParamDesc=Définissez les règles à utiliser pour extraire certaines données ou définir les valeurs à utiliser pour l'opération.

Exemple pour extraire un nom de société de Envoyez le sujet de l'e-mail dans une variable temporaire :
tmp_var=EXTRACT:SUBJECT:Message de l'entreprise ([^\n]*)

Exemples pour définir les propriétés d'un objet à créer :
objproperty1=SET :une valeur codée en dur
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY :une valeur (valeur est défini uniquement si la propriété n'est pas déjà définie)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Le nom de ma société est\\ s([^\\s]*)

Utilisez une nouvelle ligne pour extraire ou définir plusieurs propriétés. +OperationParamDesc=Définissez les règles à utiliser pour extraire certaines données ou définissez les valeurs à utiliser pour l'opération.

Exemple d'extraction d'une chaîne de l'en-tête, de l'objet ou du corps d'un e-mail dans une variable temporaire :
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\n]*)

Exemples de définition des propriétés d'un objet à créer :
objproperty1=SET : une valeur codée en dur
objproperty2=SET : __tmp_var__
objproperty3=SETIFEMPTY : une valeur (la valeur n'est définie que si la propriété n'est pas déjà définie)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mon nom d'entreprise est\\s([^\\s]*)

Utilisez une nouvelle ligne pour extraire ou définir plusieurs propriétés. OpeningHours=Horaires d'ouvertures OpeningHoursDesc=Entrez ici les heures d'ouverture habituelles de votre entreprise. UseSearchToSelectResource=Utilisez un formulaire de recherche pour choisir une ressource (plutôt qu'une liste déroulante). @@ -1086,6 +1109,7 @@ DebugBarSetup=Configuration de la barre de débogage LogsLinesNumber=Nombre de lignes à afficher sur l'onglet Journaux UseDebugBar=Utiliser la barre de débogage DEBUGBAR_LOGS_LINES_NUMBER=Nombre de dernières lignes de journal à conserver dans la console +WarningValueHigherSlowsDramaticalyOutput=Attention, des valeurs plus élevées ralentissent considérablement la production ModuleActivatedWithTooHighLogLevel=Le module %s est activé avec un niveau de journalisation trop élevé (essayez d'utiliser un niveau inférieur pour de meilleures performances et sécurité) ModuleSyslogActivatedButLevelNotTooVerbose=Le module %s est activé et le niveau de journalisation (%s) est correct (pas trop détaillé) IfYouAreOnAProductionSetThis=Si vous êtes dans un environnement de production, vous devez définir cette propriété sur %s. @@ -1096,7 +1120,7 @@ ImportSetup=Mise en place du module Import IfTrackingIDFoundEventWillBeLinked=Notez que si un identifiant de suivi d'un objet est trouvé dans un e-mail, ou si l'e-mail est une réponse à un e-mail déjà collecté et lié à un objet, l'événement créé sera automatiquement lié à l'objet associé connu. WithGMailYouCanCreateADedicatedPassword=Avec un compte GMail, si vous avez activé la validation en 2 étapes, il est recommandé de créer un deuxième mot de passe dédié pour l'application au lieu d'utiliser votre propre mot de passe de compte depuis https://myaccount.google.com/. EmailCollectorTargetDir=Il peut être souhaitable de déplacer l'e-mail vers une autre balise/répertoire lorsqu'il a été traité avec succès. Définissez simplement le nom du répertoire ici pour utiliser cette fonctionnalité (n'utilisez PAS de caractères spéciaux dans le nom). Notez que vous devez également utiliser un compte de connexion en lecture/écriture. -EmailCollectorLoadThirdPartyHelp=Vous pouvez utiliser cette action pour utiliser le contenu de l'email pour rechercher et charger un tiers existant dans votre base de données (la recherche se fera sur la propriété définie parmi 'id', 'name', 'name_alias', 'email'). Le tiers trouvé (ou créé) sera utilisé pour suivre les actions qui en ont besoin.
Par exemple, si vous souhaitez créer un tiers avec un nom extrait d'une chaîne ' Nom : nom à rechercher » présent dans le corps, utilisez l'e-mail de l'expéditeur comme e-mail, vous pouvez définir le champ de paramètre comme ceci :
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Vous pouvez utiliser cette action pour utiliser le contenu de l'e-mail pour rechercher et charger un tiers existant dans votre base de données (la recherche sera effectuée sur la propriété définie parmi 'id','name','name_alias','email'). Le tiers trouvé (ou créé) sera utilisé pour les actions suivantes qui en ont besoin.
Par exemple, si vous souhaitez créer un tiers avec un nom extrait d'une chaîne 'Nom : nom à rechercher' présente dans le corps, utilisez l'email de l'expéditeur comme email, vous pouvez définir le champ paramètre comme ceci :
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Attention : de nombreux serveurs de messagerie (comme Gmail) effectuent des recherches de mots complets lors d'une recherche sur une chaîne et ne renvoient pas de résultat si la chaîne n'est trouvée que partiellement dans un mot. Pour cette raison également, l'utilisation de caractères spéciaux dans un critère de recherche sera ignorée s'ils ne font pas partie de mots existants.
Pour effectuer une recherche d'exclusion sur un mot (retourner l'e-mail si mot n'est pas trouvé), vous pouvez utiliser le ! caractère avant le mot (peut ne pas fonctionner sur certains serveurs de messagerie). EndPointFor=Point final pour %s : %s DeleteEmailCollector=Supprimer le collecteur d'e-mails @@ -1114,7 +1138,6 @@ THIRDPARTY_ALIAS=Nom du tiers – Alias du tiers ALIAS_THIRDPARTY=Alias du tiers – Nom du tiers PDFIn2Languages=Afficher les étiquettes dans le PDF dans 2 langues différentes (cette fonctionnalité peut ne pas fonctionner dans certaines langues) 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 le prennent en charge). Gardez vide pour 1 langue par PDF. -PDF_USE_A=Générez des documents PDF au format PDF/A au lieu du format PDF par défaut RssNote=Remarque : Chaque définition de flux RSS fournit un widget que vous devez activer pour qu'il soit disponible dans le tableau de bord. JumpToBoxes=Accédez à Configuration -> Widgets MeasuringUnitTypeDesc=Utilisez ici une valeur comme "taille", "surface", "volume", "poids", "temps" @@ -1189,6 +1212,8 @@ INVOICE_ADD_SWISS_QR_CODE=Afficher le code QR-Bill suisse sur les factures (avec INVOICE_ADD_SWISS_QR_CODEMore=La norme suisse pour les factures ; assurez-vous que le code postal et la ville sont renseignés et que les comptes ont des IBAN Suisse/Liechtenstein valides. INVOICE_ADD_EPC_QR_CODE=Afficher le code QR EPC sur les factures (avec un compte bancaire défini pour le virement) INVOICE_ADD_EPC_QR_CODEMore=Cette fonctionnalité vous permet d'ajouter ou de supprimer un QR Code EPC sur vos factures, ce qui facilite les virements SEPA automatiques. L'activation de cette option aide vos clients à effectuer facilement des paiements en scannant le code QR, réduisant ainsi les erreurs de saisie manuelle. Utilisez cette fonctionnalité si vous avez des clients dans des pays comme l'Autriche, la Belgique, la Finlande, l'Allemagne et les Pays-Bas où ce système est pris en charge. Désactivez-le si cela n'est pas requis pour vos opérations commerciales ou votre clientèle. +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Afficher le contact de facturation sur la proposition +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=Par défaut, le contact n'apparaît que pour la facturation UrlSocialNetworksDesc=Lien URL du réseau social. Utilisez {socialid} pour la partie variable qui contient l'ID du réseau social. IfThisCategoryIsChildOfAnother=Si cette catégorie est enfant d'une autre AccordingToBrowser=Selon le navigateur @@ -1205,10 +1230,12 @@ TriggerCodeInfo=Saisissez ici le(s) code(s) déclencheur(s) qui doivent génére EditableWhenDraftOnly=Si décochée, la valeur ne peut être modifiée que lorsque l'objet a un statut de brouillon CssOnView=CSS sur les pages d'affichage HelpCssOnEditDesc=Le CSS utilisé lors de la modification du champ.
Exemple : "minwiwdth100 maxwidth500 widthcentpercentminusx" +HelpCssOnViewDesc=Le CSS utilisé lors de la visualisation du champ.
Exemple : « longmessagecut » HelpCssOnListDesc=CSS utilisé lorsque le champ se trouve dans une table de liste.
Exemple : "tdoverflowmax200" LimitsAndMitigation=Limites d’accès et atténuation RecommendMitigationOnURL=Il est recommandé d'activer l'atténuation sur les URL critiques. Il s'agit d'une liste de règles fail2ban que vous pouvez utiliser pour les principales URL importantes. DeadlineDayVATSubmission=Jour limite de dépôt de la TVA le mois suivant +MaxNumberOfAttachementOnForms=Nombre maximal de fichiers joints dans un formulaire IfDefinedUseAValueBeetween=Si défini, utilisez une valeur comprise entre %s et %s WarningModuleHasChangedLastVersionCheckParameter=Attention : le module %s a défini un paramètre pour vérifier sa version à chaque accès à la page. Il s'agit d'une pratique mauvaise et non autorisée qui peut rendre la page d'administration des modules instable. Veuillez contacter l'auteur du module pour résoudre ce problème. WarningModuleHasChangedSecurityCsrfParameter=Attention : le module %s a désactivé la sécurité CSRF de votre instance. Cette action est suspecte et votre installation pourrait ne plus être sécurisée. Veuillez contacter l'auteur du module pour obtenir des explications. @@ -1238,6 +1265,7 @@ CustomPrompt=Invites personnalisées AiDescription=Fonctionnalités IA (Intelligence Artificielle) AiDescriptionLong=Fournit des fonctionnalités d’IA (Intelligence Artificielle) dans différentes parties de l’application. Besoin d'une API IA externe. AI_API_KEY=Clé pour l'API IA +AI_API_URL=URL du point de terminaison pour l'API AI AI_API_SERVICE=Service à utiliser pour les fonctionnalités d'IA AiSetup=Configuration du module IA AiCustomPrompt=Invite personnalisée IA @@ -1252,3 +1280,12 @@ ModuleZapierForDolibarrDesc=Zapier pour le module Dolibarr ZapierSetupPage=Il n’y a pas besoin d’un setup côté Dolibarr pour utiliser Zapier. Cependant, vous devez générer et publier un package sur zapier pour pouvoir utiliser Zapier avec Dolibarr. Voir la documentation sur cette page wiki. WebsiteTemplateWasCopied=Le(s) modèle(s) de site Web "%s" fournis par ce module ont été enregistrés dans le répertoire des modèles de sites Web (/doctemplates/websites) et sont prêts à être importés en tant que nouveau site Web. site. VulnerableToRCEAttack=Vous êtes vulnérable aux attaques RCE en utilisant la fonction personnalisée dol_json_decode +MainAuthenticationOidcClientSecretDesc=Secret du client OpenID Connect +MainAuthenticationOidcScopesDesc=Portées OpenID pour permettre l'accès aux informations utilisateur +MainAuthenticationOidcTokenUrlName=URL du jeton +MainAuthenticationOidcLogoutUrlDesc=(exemple : https://example.com/oauth2/logout) +MainAuthenticationOidcRedirectUrlDesc=URL de redirection à autoriser côté fournisseur OpenID +MainAuthenticationOidcLoginClaimName=Demande de connexion +MainAuthenticationOidcLoginClaimDesc=Réclamation OpenID Connect correspondant à la connexion de l'utilisateur Dolibarr. Si elle n'est pas définie ou est vide, la valeur par défaut est l'adresse e-mail. +Fediverse=Fédiverse +ConfirmDeleteSocialNetwork=Etes-vous sûr de vouloir supprimer cet enregistrement ? diff --git a/htdocs/langs/fr_CA/dict.lang b/htdocs/langs/fr_CA/dict.lang index 7aa1ebc399a..a9896c37e53 100644 --- a/htdocs/langs/fr_CA/dict.lang +++ b/htdocs/langs/fr_CA/dict.lang @@ -63,8 +63,6 @@ CurrencyNOK=Krones norvégiens CurrencyTND=Darsiens tunisiens CurrencyUSD=Dollars américains CurrencySingUSD=Dollars américain -CurrencyCentINR=Paisa -CurrencyCentSingINR=Paise CurrencyThousandthSingTND=millième DemandReasonTypeSRC_CAMP_MAIL=Campagne de diffusion DemandReasonTypeSRC_CAMP_EMAIL=Campagne EMailing diff --git a/htdocs/langs/fr_CA/errors.lang b/htdocs/langs/fr_CA/errors.lang index 699b80f6985..896a7ae1402 100644 --- a/htdocs/langs/fr_CA/errors.lang +++ b/htdocs/langs/fr_CA/errors.lang @@ -28,7 +28,6 @@ ErrorFailedToWriteInDir=Erreur d'écriture dans le répertoire %s ErrorFoundBadEmailInFile=Trouver une syntaxe de courrier électronique incorrecte pour les lignes %s dans le fichier (ligne d'exemple %s avec email = %s) ErrorFailedToCreateDir=Impossible de créer un répertoire. Vérifiez que l'utilisateur du serveur Web a la permission d'écrire dans le répertoire de documents Dolibarr. Si le paramètre safe_mode est activé sur ce PHP, vérifiez que les fichiers Dolibarr php appartiennent à l'utilisateur du serveur Web (ou au groupe). ErrorNoMailDefinedForThisUser=Aucun courrier défini pour cet utilisateur -ErrorFeatureNeedJavascript=Cette fonctionnalité nécessite l'activation de JavaScript pour fonctionner. Modifiez ceci dans la configuration - l'affichage. ErrorTopMenuMustHaveAParentWithId0=Un menu de type 'Top' ne peut pas contenir un menu parent. Mettez 0 dans le menu parent ou choisissez un menu de type 'Gauche'. ErrorLeftMenuMustHaveAParentId=Un menu de type 'Gauche' doit avoir un identifiant parent. ErrorFileNotFound=Le fichier %s n'a pas été trouvé (mauvais chemin, mauvaises autorisations ou accès refusé par PHP openbasedir ou paramètre safe_mode) @@ -37,7 +36,6 @@ ErrorFunctionNotAvailableInPHP=La fonction %s est requise pour cette fonc ErrorDirAlreadyExists=Un répertoire avec ce nom existe déjà. ErrorFileAlreadyExists=Un fichier avec ce nom existe déjà. ErrorPartialFile=Fichier non reçu complètement par le serveur. -ErrorNoTmpDir=Le code temporaire %s n'existe pas. ErrorUploadBlockedByAddon=Téléchargement bloqué par un plugin PHP / Apache. ErrorSizeTooLongForIntType=Taille trop longue pour le type int (%s maximum) ErrorSizeTooLongForVarcharType=Taille trop longue pour le type de chaîne (%s chars maximum) @@ -48,7 +46,6 @@ ErrorBadFormatValueList=La valeur de la liste ne peut pas contenir plus d'une vi ErrorExportDuplicateProfil=Ce nom de profil existe déjà pour ce jeu d'exportation. ErrorLDAPSetupNotComplete=La correspondance Dolibarr-LDAP n'est pas complète. ErrorLDAPMakeManualTest=Un fichier .ldif a été généré dans le répertoire %s. Essayez de le charger manuellement à partir de la ligne de commande pour avoir plus d'informations sur les erreurs. -ErrorModuleRequireJavascript=Javascript ne doit pas être désactivé pour que cette fonction fonctionne. Pour activer / désactiver Javascript, accédez au menu Accueil-> Configuration-> Affichage. ErrorPasswordsMustMatch=Les deux mots de passe dactylographiés doivent correspondre les uns aux autres ErrorFileIsInfectedWithAVirus=Le programme antivirus n'a pas pu valider le fichier (le fichier peut être infecté par un virus) ErrorNumRefModel=Une référence existe dans la base de données (%s) et n'est pas compatible avec cette règle de numérotation. Supprimez l'enregistrement ou la renommée référence pour activer ce module. @@ -106,6 +103,7 @@ ErrorCantSetReceptionToTotalDoneWithReceptionDenied=Toutes les réceptions enreg ErrorGlobalVariableUpdater0=La demande HTTP a échoué avec l'erreur '%s' ErrorGlobalVariableUpdater3=Les données demandées n'ont pas été trouvées en résultat ErrorGlobalVariableUpdater5=Aucune variable globale sélectionnée +ErrorFieldMustBeANumeric=Le champ %s doit être une valeur numérique ErrorMandatoryParametersNotProvided=Paramètre (s) obligatoire (s) non fourni ErrorFailedToLoadModuleDescriptorForXXX=Impossible de charger la classe descripteur du module pour %s ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Définition incorrecte de la matrice de menus dans le descripteur de module (mauvaise valeur pour la clé fk_menu) @@ -126,7 +124,6 @@ ErrorPhpMailDelivery=Vérifiez que vous n'utilisez pas un nombre trop élevé de ErrorUserNotAssignedToTask=L'utilisateur doit être affecté à la tâche pour pouvoir saisir le temps consommé. ErrorTaskAlreadyAssigned=Tâche déjà attribuée à l'utilisateur ErrorModuleFileSeemsToHaveAWrongFormat=Le module module semble avoir un mauvais format. -ErrorFilenameDosNotMatchDolibarrPackageRules=Le nom du module package (%s) ne correspond pas à la syntaxe du nom attendu: %s ErrorDuplicateTrigger=Erreur, nom du trigger en double %s. Déjà chargé à partir de %s. ErrorNoWarehouseDefined=Erreur, aucun entrepôt n'a été défini. ErrorBadLinkSourceSetButBadValueForRef=Le lien que vous utilisez n'est pas valide. Une «source» de paiement est définie, mais la valeur pour «ref» n'est pas valide. diff --git a/htdocs/langs/fr_CI/website.lang b/htdocs/langs/fr_CI/website.lang new file mode 100644 index 00000000000..862b8469033 --- /dev/null +++ b/htdocs/langs/fr_CI/website.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - website +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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 626aa2a5c53..2504f0a8a44 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -458,9 +458,9 @@ ExtrafieldSelect=Liste de sélection ExtrafieldSelectList=Liste issue d'une table ExtrafieldSeparator=Séparateur (il ne s'agit pas d'un champ de saisie) ExtrafieldPassword=Mot de passe -ExtrafieldRadio=Radio buttons (1 choice only) -ExtrafieldCheckBox=Select list (n choices) -ExtrafieldCheckBoxFromList=Select from table (n choices) +ExtrafieldRadio=Radio bouton (1 choix uniquement) +ExtrafieldCheckBox=Liste de sélection (n choix) +ExtrafieldCheckBoxFromList=Liste issue d'une table (n choix) ExtrafieldLink=Lien vers un objet ExtrafieldPointGeo=Point géométrique ExtrafieldMultiPointGeo=Multi-point géométrique @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=La liste doit être de la forme clef,valeur (où la cl ExtrafieldParamHelpcheckbox=La liste doit être de la forme clef,valeur (où la clé ne peut être '0')

par exemple :
1,valeur1
2,valeur2
3,valeur3
... ExtrafieldParamHelpradio=La liste doit être de la forme clef,valeur (où la clé ne peut être '0')

par exemple :
1,valeur1
2,valeur2
3,valeur3
... ExtrafieldParamHelpsellist=La liste de valeurs provient d'une table
Syntaxe : table_name:label_field: id_field::filtersql
Exemple : c_typent:libelle:id:: filtersql

- id_field est nécessairement une clé entière primaire
- filtersql est une condition. Elle doit utiliser la syntaxe USF. Exemple : (active:=:1) pour afficher uniquement la valeur active
Vous pouvez également utiliser $ID$ dans le filtre qui est l'identifiant actuel de l'objet actuel
Si vous souhaitez filtrer sur des champs supplémentaires, utilisez la syntaxe extra.fieldcode=... (où le code de champ est le code du champ supplémentaire)

Dans le but d'avoir la liste en fonction d'un autre attribut complémentaire liste:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

Dans commande pour avoir la liste en fonction d'une autre liste :
c_typent:libelle:id:parent_list_code|parent_column:filtre -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=Les paramètres doivent être ObjectName:Classpath
Syntaxe: ObjectName:Classpath ExtrafieldParamHelpSeparator=Garder vide pour un simple séparateur
Définissez-le sur 1 pour un séparateur auto-déroulant (ouvert par défaut pour une nouvelle session, puis le statut est conservé pour la session de l'utilisateur)
Définissez ceci sur 2 pour un séparateur auto-déroulant (réduit par défaut pour une nouvelle session, puis l'état est conservé pour chaque session d'utilisateur). LibraryToBuildPDF=Bibliothèque utilisée pour la génération des PDF @@ -495,7 +494,7 @@ BarcodeInitForThirdparties=Initialisation du code-barre en masse pour les tiers BarcodeInitForProductsOrServices=Initialisation ou purge en masse des codes-barre des produits ou services CurrentlyNWithoutBarCode=Actuellement, vous avez %s enregistrements sur %s %s sans code barre défini. InitEmptyBarCode=Valeur d'initialisation pour les %s codes à barres vides -EraseAllCurrentBarCode=Efface toutes les valeurs de code-barre +EraseAllCurrentBarCode=Effacer toutes les valeurs de code-barre ConfirmEraseAllCurrentBarCode=Etes-vous sur de vouloir effacer toutes les valeurs de code-barre ? AllBarcodeReset=Tous les codes-barre ont été supprimés NoBarcodeNumberingTemplateDefined=Aucun modèle de numérotation de code-barre n'a été activé dans la configuration du module code-barre. @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s suivi du nom de client tronqué du nombre ModuleCompanyCodeSupplierDigitaria=%s suivi du nom du fournisseur tronqué du nombre de caractères: %s pour le code comptable fournisseur. Use3StepsApproval=Par défaut, les commandes fournisseurs nécessitent d'être créées et approuvées par 2 utilisateurs différents (une étape/utilisateur pour créer et une étape/utilisateur pour approuver. Notez que si un utilisateur à les deux permissions, ces deux actions sont effectuées en une seule fois). Cette option ajoute la nécessité d'une approbation par une troisième étape/utilisateur, si le montant de la commande est supérieur au montant d'une valeur définie (soit 3 étapes nécessaire: 1 =Validation, 2=Première approbation et 3=seconde approbation si le montant l'exige).
Laissez le champ vide si une seule approbation (2 étapes) est suffisante, placez une valeur très faible (0.1) si une deuxième approbation (3 étapes) est toujours exigée. UseDoubleApproval=Activer l'approbation en trois étapes si le montant HT est supérieur à... -WarningPHPMail=AVERTISSEMENT : La configuration pour envoyer des e-mails depuis l'application utilise la configuration générique par défaut. Ce choix ne nécessite aucune connaissance technique pour finaliser la configuration.
Cependant, il est souvent préférable de configurer les e-mails sortants pour utiliser le serveur de messagerie de votre fournisseur de message, au lieu de la configuration par défaut pour plusieurs raisons : +WarningPHPMail=REMARQUE : La configuration pour envoyer des e-mails depuis l'application utilise la configuration générique par défaut (appelée « %s »). Ce choix ne nécessite aucune connaissance technique et aucune configuration particulière.
Cependant, il est souvent préférable de configurer les e-mails sortants pour utiliser l'autre méthode (appelée « %s ») pour utiliser le serveur de messagerie de votre fournisseur de messagerie, au lieu de la configuration par défaut pour plusieurs raisons : WarningPHPMailA=- L'utilisation du serveur du fournisseur de messagerie service augmente la fiabilité de votre courrier électronique, ce qui augmente la délivrabilité sans être signalé comme SPAM. -WarningPHPMailB=- Certains fournisseurs de services de messagerie (comme Yahoo) ne vous permettent pas d'envoyer un e-mail à partir d'un autre serveur que leur propre serveur. Votre configuration actuelle utilise le serveur de l'application pour envoyer des e-mails et non le serveur de votre fournisseur de messagerie, donc certains destinataires (ceux compatibles avec le protocole DMARC restrictif), demanderont à votre fournisseur de messagerie si ils peuvent accepter votre message et ce fournisseur de messagerie (comme Yahoo) peut répondre «non» parce que le serveur d'envoi n'est pas le leur, aussi une partie de vos e-mails envoyés peuvent ne pas être acceptés pour la livraison (faites également attention au quota d'envoi de votre fournisseur de messagerie). +WarningPHPMailB=- Si le domaine de votre email (la partie mymaildomain.com dans myname@mymaildomain.com) est protégé par un enregistrement SPF + DMARC, votre email peut être signalé comme SPAM car votre règle DMARC définie dans la zone DNS du domaine de l'expéditeur (mymaildomain.com) n'autorise pas l'envoi par l'expéditeur générique du serveur par défaut. Dans un tel cas, vous devez désactiver le DMARC pour le domaine (ou le régler sur p=none comme le fait @gmail.com) ou, mieux, si vous avez les connaissances techniques, utiliser l'autre méthode pour envoyer des emails en utilisant le serveur SMTP de votre propre fournisseur de messagerie. WarningPHPMailC=- Utiliser le serveur SMTP de votre propre fournisseur de services de messagerie pour envoyer des e-mails est également intéressant afin que tous les e-mails envoyés depuis l'application soient également enregistrés dans votre répertoire "Envoyés" de votre boîte aux lettres. WarningPHPMailD=Il est donc recommandé de changer la méthode d'envoi des e-mails à la valeur "SMTP". WarningPHPMailDbis=Si vous voulez vraiment conserver la méthode par défaut "PHP" pour envoyer des e-mails, ignorez simplement cet avertissement ou supprimez-le en %scliquant ici%s. 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 actuel trouvé (pour l'e-mail %s) : %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 ou entrées suivantes dans l'enregistrement SPF du DNS de votre domaine: %s. +WarningPHPMailSPFDMARC=Si le nom de domaine dans votre adresse e-mail d'expéditeur est protégé par un enregistrement DMARC différent de p=none (demandez à votre registraire de nom de domaine), vous devez supprimer votre enregistrement DMARC ou le définir sur p=none comme le fait @gmail.com) ou utiliser une autre méthode d'envoi. +SPFAndDMARCInformation=Enregistrement DNS SPF et DMARC pour les principales adresses e-mail +ActualMailDNSRecordFound=Enregistrement %s actuel 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) @@ -867,7 +868,7 @@ Permission255=Modifier le mot de passe des autres utilisateurs Permission256=Supprimer ou désactiver les autres utilisateurs Permission262=Étendez l'accès à tous les tiers ET leurs objets (pas seulement aux tiers pour lesquels l'utilisateur est lié en tant que commercial). Permission262b=Non effectif pour les utilisateurs externes (toujours limités à eux-mêmes pour devis, commandes, factures, contrats, etc.). -Permission262c=Non effectif pour les projets (seules les règles sur les autorisations projet et la visibilité et sont importantes). +Permission262c=Non efficace pour les projets (seules les règles sur les autorisations projet, la visibilité et l'assignation des utilisateurs comptent). Permission263=Étendre l'accès à tous les tiers SANS leurs objets (pas seulement les tiers pour lesquels l'utilisateur est un représentant commercial).
Non efficace pour les utilisateurs externes (toujours limités à eux-mêmes pour les propositions, commandes, factures, contrats, etc.).
Non efficace pour les projets (seules les règles sur les autorisations de projet, la visibilité et l'attribution sont importantes). Permission271=Consulter le chiffre d'affaires Permission272=Consulter les factures @@ -944,7 +945,7 @@ Permission776=Payer les notes de frais Permission777=Lire toutes les notes de frais (même celles des utilisateurs non subordonnés) Permission778=Créer / modifier les notes de frais de tout le monde Permission779=Exporter les notes de frais -Permission1001=Consulter les stocks +Permission1001=Lire les entrepôts et leur stocks Permission1002=Créer/modifier entrepôts Permission1003=Supprimer entrepôts Permission1004=Consulter les mouvements de stocks @@ -1457,7 +1458,7 @@ HRMSetup=Configuration du module GRH CompanySetup=Configuration du module Tiers CompanyCodeChecker=Modèle de génération et contrôle des codes tiers (client ou fournisseur) AccountCodeManager=Options pour la génération automatique de codes comptable client ou fournisseur -NotificationsDesc=Email notifications can be sent automatically on certain events.
Recipients of notifications can be defined: +NotificationsDesc=Des notifications par e-mail peuvent être envoyées automatiquement lors de certains événements.
Les destinataires des notifications peuvent être définis : NotificationsDescUser=* par utilisateur (sur l'onglet "Notifications" d'un utilisateur) NotificationsDescContact=* par contacts tiers (sur l'onglet "Notifications" d'un tiers) NotificationsDescGlobal=* ou en définissant des adresses email globales (sur la page de configuration du module). @@ -1993,10 +1994,10 @@ ExpenseReportsRulesSetup=Configuration du module Notes de frais - Règles ExpenseReportNumberingModules=Modèle de numérotation des notes de frais NoModueToManageStockIncrease=Aucun module capable d'assurer l'augmentation de stock en automatique a été activé. La réduction de stock se fera donc uniquement sur mise à jour manuelle. YouMayFindNotificationsFeaturesIntoModuleNotification=Vous pouvez trouver d'autres options pour la notification par Email en activant et configurant le module "Notification". -TemplatesForNotifications=Emails templates for notifications +TemplatesForNotifications=Modèles d'e-mails pour les notifications ListOfNotificationsPerUser=Liste des notifications automatiques par utilisateur* ListOfNotificationsPerUserOrContact=Liste des notifications automatiques (sur les évênements métiers) par utilisateur* ou par contact** -ListOfFixedNotifications=Global recipients emails for automatic email notifications +ListOfFixedNotifications=E-mails des destinataires globaux pour les notifications automatiques par e-mail GoOntoUserCardToAddMore=Allez dans l'onglet "Notifications" d'un utilisateur pour ajouter ou supprimer des notifications pour les utilisateurs GoOntoContactCardToAddMore=Rendez-vous sur l'onglet "Notifications" d'un tiers pour ajouter ou enlever les notifications pour les contacts/adresses Threshold=Seuil @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtre de regex pour nettoyer la valeur (COMPANY_D DuplicateForbidden=Doublon interdit RemoveSpecialWords=Nettoyer certains mots lors de la génération des comptes comptables des tiers pour les clients ou les fournisseurs RemoveSpecialWordsHelp=Précisez les mots à nettoyer avant de calculer le compte comptable des tiers client ou fournisseur. Utiliser un ";" entre chaque mot -GDPRContact=Responsable de la protection des données (DPO ou contact RGPD) +GDPRContact=Délégué à la protection des données (DPO, contact RGPD, ...) 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 @@ -2218,7 +2219,7 @@ CreateCandidature=Créer une candidature FormatZip=Zip MainMenuCode=Code d'entrée du menu (mainmenu) ECMAutoTree=Afficher l'arborescence GED automatique -OperationParamDesc=Définissez les règles à utiliser pour extraire certaines données ou définissez les valeurs à utiliser pour l'opération.

Exemple pour extraire un nom de société du sujet d'un e-mail dans une variable temporaire :
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Exemples pour définir les propriétés d'un objet à créer :
objproperty1=SET:une valeur codée en dur
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:une valeur (la valeur sera définie uniquement si la valeur de la propriété n'est pas déjà définie)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:OBJET:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mon nom de la société est\\s([^\\s]*)

Utilisez une nouvelle ligne pour extraire ou définir plusieurs propriétés. +OperationParamDesc=Définissez les règles à utiliser pour extraire certaines données ou définissez les valeurs à utiliser pour l'opération.

Exemple d'extraction d'une chaîne de l'en-tête, de l'objet ou du corps d'un e-mail dans une variable temporaire:
tmp_var1=EXTRACT:HEADER:Mon expression régulière ([^\n]*)
tmp_var2=EXTRAIT:SUJET:Mon refex ([^\n]*)
tmp_var3=EXTRAIT:CORPS:Mon regex ([^\n]*)

Exemples de définition des propriétés d'un objet à créer:
objproperty1=SET:une valeur codée en dur
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:une valeur (la valeur n'est définie que si la propriété n'est pas déjà définie)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mon nom de société est\\s([^\\s]*)

Utilisez une nouvelle ligne pour extraire ou définir plusieurs propriétés. OpeningHours=Heures d'ouverture OpeningHoursDesc=Entrez ici les heures d'ouverture régulières de votre entreprise. ResourceSetup=Configuration du module Ressource @@ -2264,7 +2265,7 @@ LargerThan=Plus grand que IfTrackingIDFoundEventWillBeLinked=Notez que si un ID de suivi d'un objet est trouvé dans le courrier électronique, ou si l'email est une réponse d'un email déjà collecté et lié à un objet, l'événement sera aussi automatiquement lié à l'objet en question. WithGMailYouCanCreateADedicatedPassword=Avec un compte GMail, si vous avez activé la validation en 2 étapes, il est recommandé de créer un deuxième mot de passe dédié à l'application, au lieu d'utiliser votre propre mot de passe de compte, à partir de https://myaccount.google.com/. EmailCollectorTargetDir=Il peut être souhaitable de déplacer l'e-mail dans un autre tag/répertoire lorsqu'il a été traité avec succès. Définissez simplement une valeur ici pour utiliser cette fonction (N'utilisez PAS de caractères spéciaux dans le nom). Notez que vous devez également utiliser un compte de connexion en lecture/écriture. -EmailCollectorLoadThirdPartyHelp=Vous pouvez utiliser cette action pour utiliser le contenu de l'email pour trouver et charger un tiers existant dans votre base de données (la recherche sera effectuée sur la valeur définie parmi 'id','name','name_alias','email'). Le tiers trouvé (ou créé) sera utilisé pour les actions suivantes qui en ont besoin.
Par exemple, si vous souhaitez créer un tiers avec un nom extrait d'une chaîne 'Nom: nom à rechercher' présente dans le corps, utilisez l'email de l'expéditeur comme email, vous pouvez paramétrer le champ comme ceci :
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Nom:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Vous pouvez utiliser cette action pour utiliser le contenu de l'e-mail pour rechercher et charger un tiers existant dans votre base de données (la recherche sera effectuée sur la propriété définie parmi 'id','name','name_alias','email'). Le tiers trouvé (ou créé) sera utilisé pour les actions suivantes qui en ont besoin.
Par exemple, si vous souhaitez créer un tiers avec un nom extrait d'une chaîne 'Nom : nom à rechercher' présente dans le corps, utilisez l'e-mail de l'expéditeur comme e-mail, vous pouvez définir le champ de paramètre comme ceci:
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Nom:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Attention : de nombreux serveurs de messagerie (comme Gmail) effectuent des recherches par mot complet lors de la recherche sur une chaîne et ne renverront pas de résultat si la chaîne n'est trouvée que partiellement dans un mot. Pour cette raison également, l'utilisation de caractères spéciaux dans un critère de recherche sera ignorée s'ils ne font pas partie de mots existants.
Pour effectuer une recherche d'exclusion sur un mot (qualifie l'email si le mot n'est pas trouvé), vous pouvez utiliser le ! caractère avant le mot (peut ne pas fonctionner sur certains serveurs de messagerie). EndPointFor=Endpoint pour %s: %s DeleteEmailCollector=Supprimer le collecteur d'email @@ -2279,7 +2280,7 @@ NotAPublicIp=Pas une IP publique MakeAnonymousPing=Effectuez un ping «+1» anonyme sur le serveur de la fondation Dolibarr (une seule fois après l’installation) pour permettre à la fondation de compter le nombre d’installations de Dolibarr. FeatureNotAvailableWithReceptionModule=Fonction non disponible lorsque le module Réception est activée EmailTemplate=Modèle d'e-mail -EmailTemplateHelp=You can create emails templates from menu %s - %s +EmailTemplateHelp=Vous pouvez créer des modèles d'e-mails à partir du menu %s - %s EMailsWillHaveMessageID=Les e-mails auront un en-tête 'Message-ID' correspondant à cette syntaxe PDF_SHOW_PROJECT=Afficher le projet sur le document ShowProjectLabel=Libellé du projet @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Nom du tiers - Nom alternatif du tiers ALIAS_THIRDPARTY=Nom alternatif du tiers - Nom du tiers PDFIn2Languages=Afficher les libellés dans le PDF dans 2 langues différentes (cette fonctionnalité peut ne pas fonctionner pour certaines combinaisons de langues) 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 les documents PDF avec le format PDF/A à la place du format PDF standard +PDF_USE_A=Format des documents PDF FafaIconSocialNetworksDesc=Entrez ici le code d'une icône FontAwesome. Si vous ne savez pas ce qu'est FontAwesome, vous pouvez utiliser la valeur générique fa-address-book. RssNote=Remarque: Chaque définition de flux RSS fournit un widget que vous devez activer pour qu'il soit disponible dans le tableau de bord JumpToBoxes=Aller à la Configuration -> Widgets @@ -2550,6 +2551,11 @@ ConfirmDeleteSocialNetwork= Êtes-vous sûr de vouloir supprimer cet enregistrem AnOwnerMustBeSetIfEmailTemplateIsPrivate=Un propriétaire doit être défini si le modèle d'e-mail est défini comme privé ContactsDefaultRoles=Pour les tiers de type « particulier », un contact peut être créé simultanément. Définissez ici les rôles qui seront systématiquement attribués à ce contact. MenuDict=Dictionnaire -AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token +AddMoreParams=Ajouter plus de paramètres pour la connexion (cookies, tokens, ...)
Exemple : token : value token ParamName=Nom du paramètre ParamValue=Valeur du paramètre +ConfirmDeleteParamOfSocialNetwork=Êtes-vous sûr de vouloir supprimer ce paramètre ? +HelpMariaDBToGetPossibleValues=Vous pouvez obtenir une liste de valeurs possibles en exécutant la commande SQL suivante : %s +Captcha=Captcha +CaptchaDesc=Si vous souhaitez protéger votre page de connexion avec un Captcha, vous pouvez choisir celui à utiliser ici +DolibarrStandardCaptcha=Un captcha natif généré par Dolibarr diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang index 3b275bb335e..2b045e646b0 100644 --- a/htdocs/langs/fr_FR/banks.lang +++ b/htdocs/langs/fr_FR/banks.lang @@ -151,7 +151,7 @@ FutureTransaction=Transaction future. Pas moyen de rapprocher. SelectChequeTransactionAndGenerate=Sélectionner/filtrer les chèques à inclure dans le bordereau de remise de chèque et cliquer sur "Créer". SelectPaymentTransactionAndGenerate=Sélectionnez/filtrez les documents qui doivent être inclus dans le bordereau de remise %s. Ensuite, cliquez sur "Créer". InputReceiptNumber=Choisissez le relevé bancaire lié au rapprochement. Utilisez une valeur numérique triable -InputReceiptNumberBis=AAAAMM ou AAAAMMJJ +InputReceiptNumberBis=AAAAMM EventualyAddCategory=En option, une catégorie dans laquelle classer les opérations ToConciliate=A rapprocher ? ThenCheckLinesAndConciliate=Ensuite, cochez les lignes présentes sur le relevé et cliquez sur diff --git a/htdocs/langs/fr_FR/commercial.lang b/htdocs/langs/fr_FR/commercial.lang index 823f524a2db..33ecd79fc26 100644 --- a/htdocs/langs/fr_FR/commercial.lang +++ b/htdocs/langs/fr_FR/commercial.lang @@ -94,3 +94,9 @@ SignatureContractRef=Signature du contrat %s SignatureFichinterRef=Signature de l'intervention %s SignatureSociete_ribRef=Signature du mandat SEPA %s FeatureOnlineSignDisabled=Fonctionnalité pour la signature en ligne désactivée ou document généré avant l'activation de la fonctionnalité +NoSignature=Non signée +SignedSender=Signé en interne +SignedReceiver=Signé par le tiers +SignedReceiverOnline=Signé par le tiers en ligne +SignedAll=Signé par toutes les parties +SignStatus=Statut signature diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang index fb53dbae211..e32c325c7d0 100644 --- a/htdocs/langs/fr_FR/companies.lang +++ b/htdocs/langs/fr_FR/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Identifiant utilisateur NoDolibarrAccess=Pas d'accès utilisateur ExportDataset_company_1=Tiers (sociétés/institutions/particuliers) et attributs ExportDataset_company_2=Contacts (de tiers) et attributs +ExportDataset_company_3=Coordonnées bancaires des tiers ImportDataset_company_1=Tiers (sociétés/institutions/particuliers) et attributs ImportDataset_company_2=Contacts/Adresses (de tiers ou libre) et attributs ImportDataset_company_3=Coordonnées bancaires des tiers diff --git a/htdocs/langs/fr_FR/datapolicy.lang b/htdocs/langs/fr_FR/datapolicy.lang index 12b73b6b5d4..6644c9f2cd2 100644 --- a/htdocs/langs/fr_FR/datapolicy.lang +++ b/htdocs/langs/fr_FR/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Politique de confidentialité des données # Module description 'ModuledatapolicyDesc' Module4100Desc = Module de gestion de la confidentialité des données (conformité avec le RGPD) - -# # Administration page -# datapolicySetup = Configuration de la politique de confidentialité des données du module Deletion = Suppression de données datapolicySetupPage = En fonction des législations de vos pays (Exemple Article 5 du RGPD), les données personnelles doivent être conservées pendant une durée n'excédant pas celle nécessaire aux finalités pour lesquelles elles ont été collectées, sauf à des fins d'archivage.
La suppression se fera automatiquement après une certaine durée sans événement (la durée que vous aurez indiquée ci-dessous). @@ -38,39 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Prospect/Client DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ni prospect/Ni client DATAPOLICY_CONTACT_FOURNISSEUR = Fournisseur DATAPOLICY_ADHERENT = Adhérent -DATAPOLICY_Tooltip_SETUP = Type de contact - Indiquez vos choix pour chaque type. -DATAPOLICYSUBSITUTION = Vous pouvez utiliser les variables suivantes dans votre email (LINKACCEPT permet de créer un lien enregistrant l'accord de la personne, LINKREFUSED permet d'enregistrer le refus de la personne) : +DATAPOLICY_Tooltip_SETUP=Définissez le délai sans interaction après lequel vous souhaitez que l'enregistrement soit automatiquement purgé. SendAgreementText = Vous pouvez envoyer un e-mail RGPD à tous vos contacts concernés (qui n'ont pas encore reçu d'e-mail et pour lesquels vous n'avez rien enregistré concernant leur accord RGPD). Pour ce faire, utilisez le bouton suivant. SendAgreement = Envoyer des emails AllAgreementSend = Tous les e-mails ont été envoyés TXTLINKDATAPOLICYACCEPT = Texte pour le lien "accord" TXTLINKDATAPOLICYREFUSE = Texte pour le lien "désaccord" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = RGPD : Traitement des données personnelles DATAPOLICY_consentement = Consentement obtenu pour le traitement des données personnelles DATAPOLICY_opposition_traitement = S'oppose au traitement de ses données personnelles DATAPOLICY_opposition_prospection = S'oppose au traitement de ses données personnelles à des fins de prospection - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Portabilité RGPD -DATAPOLICY_PORTABILITE_TITLE = Exportation de données personnelles -DATAPOLICY_PORTABILITE_CONFIRMATION = Vous souhaitez exporter les données personnelles de ce contact. Êtes-vous sûr ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Anonymisé le %s - DATAPOLICY_date = Date d'accord/désaccord RGPD DATAPOLICY_send = Date d'envoi de l'e-mail d'accord MailSent = L'email a été envoyé - -# ERROR -=Suite à un problème technique, nous n'avons pas pu enregistrer votre choix. Nous nous en excusons. Contactez-nous pour nous faire part de votre choix. NUMBER_MONTH_BEFORE_DELETION = Nombre de mois avant la suppression diff --git a/htdocs/langs/fr_FR/dict.lang b/htdocs/langs/fr_FR/dict.lang index 7d0ea3a97db..6226e2f4790 100644 --- a/htdocs/langs/fr_FR/dict.lang +++ b/htdocs/langs/fr_FR/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=Francs CFP CurrencySingXPF=Franc CFP CurrencyCentEUR=centimes CurrencyCentSingEUR=centime -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=millime #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 7976dd21ceb..00fefd6e635 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=L'utilisateur doit être assigné à une tâche pour ErrorTaskAlreadyAssigned=Tâche déjà assignée à l'utilisateur ErrorModuleFileSeemsToHaveAWrongFormat=Le package du module semble avoir un mauvais format. ErrorModuleFileSeemsToHaveAWrongFormat2=Au moins un dossier obligatoire doit être présent dans l'archive zip du module : %s ou %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Le nom du package du module (%s) ne correspond pas à la syntaxe attendue: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=Le nom de fichier du package du module (%s) ne correspond pas à la syntaxe de nom attendue : %s ErrorDuplicateTrigger=Erreur, doublon du trigger nommé %s. Déjà chargé à partir de %s. ErrorNoWarehouseDefined=Erreur, aucun entrepôts défini. ErrorBadLinkSourceSetButBadValueForRef=Le lien que vous utilisez n'est pas valide. Une 'source' pour le paiement est définie, mais la valeur pour 'ref' n'est pas valide. @@ -422,4 +422,4 @@ OperNotDefined=Méthode de paiement non définie ErrorThisContactXIsAlreadyDefinedAsThisType=%s est déjà défini comme contact pour ce type. ErrorThisGroupIsAlreadyDefinedAsThisType=Les contacts avec ce groupe sont déjà définis comme contact pour ce type. EmptyMessageNotAllowedError=Les messages vides ne sont pas autorisés -ErrorIsNotInError=%s is not in error +ErrorIsNotInError=%s n'est pas en erreur diff --git a/htdocs/langs/fr_FR/holiday.lang b/htdocs/langs/fr_FR/holiday.lang index a86d739b1a8..82e08b6ab15 100644 --- a/htdocs/langs/fr_FR/holiday.lang +++ b/htdocs/langs/fr_FR/holiday.lang @@ -41,9 +41,9 @@ TitreRequestCP=Demande de congés TypeOfLeaveId=Type de la demande de congès TypeOfLeaveCode=Code du type de congès TypeOfLeaveLabel=Libellé du type de congès -NbUseDaysCP=Nombre de jours de congés consommés -NbUseDaysCPHelp=Le calcul prend en compte les jours non ouvrés et les jours fériés définis dans le dictionnaire. -NbUseDaysCPShort=Jours consommés +NbUseDaysCP=Nombre de jours de congés +NbUseDaysCPHelp=Le calcul du nombre de jours de congés pris prend en compte les jours non ouvrés et les jours fériés définis dans le dictionnaire. +NbUseDaysCPShort=Jours NbUseDaysCPShortInMonth=Jours consommés pour le mois DayIsANonWorkingDay=%s est un jour non ouvré DateStartInMonth=Date de début pour le mois diff --git a/htdocs/langs/fr_FR/hrm.lang b/htdocs/langs/fr_FR/hrm.lang index c3babe7a402..85f041bfef1 100644 --- a/htdocs/langs/fr_FR/hrm.lang +++ b/htdocs/langs/fr_FR/hrm.lang @@ -72,6 +72,9 @@ AddSkill=Ajouter des compétences à ce profil de poste RequiredSkills=Compétences requises pour ce profil de poste UserRank=Niveau employé SkillList=Liste compétence +SkillCreated=%s compétences créées +SkillRank=Rang de compétence +ShowSkillRank=Afficher le rang de compétence SaveRank=Sauvegarder niveau TypeKnowHow=Savoir-faire TypeHowToBe=Savoir-être diff --git a/htdocs/langs/fr_FR/interventions.lang b/htdocs/langs/fr_FR/interventions.lang index 5f8626ac219..7f57aad581e 100644 --- a/htdocs/langs/fr_FR/interventions.lang +++ b/htdocs/langs/fr_FR/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Créer brouillon InterventionContact=Contact intervention DeleteIntervention=Supprimer intervention ValidateIntervention=Valider intervention +SignIntervention=Signer l'intervention +UnsignIntervention=Intervention non signée ModifyIntervention=Modifier intervention CloseIntervention=Clôturer intervention DeleteInterventionLine=Supprimer ligne d'intervention ConfirmDeleteIntervention=Êtes-vous sûr de vouloir effacer cette intervention ? ConfirmValidateIntervention=Êtes-vous sûr de vouloir valider cette intervention sous la référence %s ? +ConfirmSignIntervention=Êtes-vous sûr de pour définir cette intervention comme signée ? +ConfirmUnsignIntervention=Êtes-vous sûr de pour définir cette intervention comme non signée ? ConfirmModifyIntervention=Êtes-vous sûr de vouloir modifier cette intervention ? ConfirmCloseIntervention=Êtes-vous sûr de vouloir clôturer cette intervention ? ConfirmDeleteInterventionLine=Êtes-vous sûr de vouloir effacer cette ligne ? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Fiches interventions et lignes d'intervent InterventionClassifyBilled=Classer "Facturée" InterventionClassifyUnBilled=Classer "Non facturée" InterventionClassifyDone=Classé "Traitée" +InterventionSign=Définir à Signé +InterventionUnsign=Définir non signé SendInterventionRef=Envoi de la fiche intervention %s SendInterventionByMail=Envoyer l'intervention par email InterventionCreatedInDolibarr=Intervention %s créée InterventionValidatedInDolibarr=Intervention %s validée +InterventionSignedInDolibarr=Intervention signée +InterventionSignedOnline=Intervention signée en ligne +InterventionUnsignedInDolibarr=Intervention non signée InterventionModifiedInDolibarr=Intervention %s modifiée InterventionClassifiedBilledInDolibarr=Intervention %s positionné à facturé InterventionClassifiedUnbilledInDolibarr=Intervention %s positionné à non facturé diff --git a/htdocs/langs/fr_FR/intracommreport.lang b/htdocs/langs/fr_FR/intracommreport.lang index c484ab65ae2..e8210cf06cf 100644 --- a/htdocs/langs/fr_FR/intracommreport.lang +++ b/htdocs/langs/fr_FR/intracommreport.lang @@ -1,5 +1,5 @@ IntraCommReport=Déclaration d'échanges intracommunautaires -IntraCommReports=Intracomm reports +IntraCommReports=Rapports intracomm Module68000Name = Déclaration d'échanges intracommunautaires Module68000Desc = Gestion des déclarations d'échanges intracommunautaires (y compris l'export aux formats DEB/DES des douanes françaises) @@ -35,4 +35,4 @@ IntracommReportTypeDeclaration=Type de Déclaration IntracommReportDownload=Télécharger le fichier XML # Invoice IntracommReportTransportMode=Mode de transport -DeleteIntraCommReport=Delete IntraComm report +DeleteIntraCommReport=Supprimer rapport IntraComm diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index 8bf7c8e5106..999a4985085 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -32,8 +32,8 @@ NewMailing=Nouvel emailing NewSMSing=Nouveau smsing EditMailing=Éditer emailing ResetMailing=Ré-envoyer emailing -ConfirmResetMailingTargetMassaction=Bulk target Resend confirmation -ResetMailingTargetMassaction=Resend target +ConfirmResetMailingTargetMassaction=Confirmation de la réinitialisation des cibles état +ResetMailingTargetMassaction=Réinitialiser statut des destinataires DeleteMailing=Supprimer emailing PreviewMailing=Prévisualiser emailing CreateMailing=Créer emailing @@ -55,7 +55,7 @@ ErrorMailRecipientIsEmpty=L'adresse du destinataire est vide WarningNoEMailsAdded=Aucun nouvel email à ajouter à la liste des destinataires. ConfirmValidMailing=Confirmez-vous la validation de l'emailing ? ConfirmResetMailing=Attention, en réinitialisant l'emailing %s, vous autorisez son émission en masse une nouvelle fois. Est-ce bien ce que vous voulez faire ? -ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? +ConfirmResetMailingTargetMassactionQuestion=Êtes-vous sûr de pour réinitialiser le état des destinataires sélectionnés (cela peut signifier que l'e-mail sera renvoyé si vous utilisez la fonction Envoyer un e-mail de l'e-mailing) ? ConfirmDeleteMailing=Êtes-vous sûr de vouloir supprimer cet emailing ? NbOfUniqueEMails=Nombre d'emails uniques NbOfUniquePhones=Nb. de téléphones uniques @@ -193,7 +193,7 @@ NoMoreRecipientToSendTo=Plus de destinataire à qui envoyer l'e-mail EmailOptedOut=Le propriétaire de l'e-mail a demandé à ne plus le contacter avec cet e-mail EvenUnsubscribe=Inclure les e-mails désinscrits EvenUnsubscribeDesc=Inclure les e-mails étant désinscrit lorsque vous sélectionnez des e-mails comme cibles. Utile pour les emails de service obligatoires par exemple. -XEmailsDoneYActionsDone=%s e-mails pré-qualifiés, %s e-mails traités avec succès (pour %s enregistrement/actions effectuées) +XEmailsDoneYActionsDone=%s e-mails pré-qualifiés, %s e-mails traités avec succès (pour %s opérations effectuées) YouCanMakeSomeInstructionForEmail=Vous pouvez créer des instructions pour votre e-mail (Exemple : générer une image dans un modèle d'e-mail...) ModelTemplate=Modèles d'e-mails YouCanChooseAModelForYouMailContent= Vous pouvez choisir l'un des modèles proposés ou en créer un avec l'IA diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index 79195c86bb6..22a9411997d 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -45,6 +45,7 @@ NoError=Aucune erreur Error=Erreur Errors=Erreurs ErrorFieldRequired=Le champ '%s' est obligatoire +CustomMandatoryFieldRule=Règle « Champ obligatoire » personnalisée ErrorFieldFormat=Le champ '%s' a une valeur incorrecte ErrorFileDoesNotExists=Le fichier %s n'existe pas ErrorFailedToOpenFile=Impossible d'ouvrir le fichier %s @@ -503,7 +504,7 @@ ContactsAddressesForCompany=Contacts/adresses de ce tiers AddressesForCompany=Adresses de ce tiers ActionsOnCompany=Événements sur ce tiers ActionsOnContact=Événements à propos de ce contact/adresse -ActionsOnUser=Événements pour ce utilisateur +ActionsOnUser=Événements pour cet utilisateur ActionsOnContract=Événements pour ce contrat ActionsOnMember=Événements vis à vis de cet adhérent ActionsOnProduct=Événements liés au produit @@ -1285,7 +1286,7 @@ AmountSalary=Montant du salaire InvoiceSubtype=Sous-type de facture ConfirmMassReverse=Confirmation d'annulation de masse ConfirmMassReverseQuestion=Êtes-vous sûr de vouloir annuler le(s) %s enregistrement(s) sélectionné(s) ? -ConfirmActionXxx=Confirm action %s +ConfirmActionXxx=Confirmer l'action %s ElementType=Type d'élément ElementId=Identifiant de l'élément Encrypted=Chiffré diff --git a/htdocs/langs/fr_FR/mrp.lang b/htdocs/langs/fr_FR/mrp.lang index 550e2aa4f54..51f5efde5c0 100644 --- a/htdocs/langs/fr_FR/mrp.lang +++ b/htdocs/langs/fr_FR/mrp.lang @@ -140,3 +140,4 @@ QtyCantBeSplit= Quantité non fractionnable NoRemainQtyToDispatch=Aucune quantité restant à fractionner THMOperatorEstimatedHelp=Coût estimé de l'opérateur par heure. Sera utilisé pour estimer le coût d'une nomenclature utilisant ce poste de travail. THMMachineEstimatedHelp=Coût estimé de la machine par heure. Sera utilisé pour estimer le coût d'une nomenclature utilisant ce poste de travail. +BadValueForquantityToConsume=La quantité à consommer d'un composant ne peut être 0 ou négative diff --git a/htdocs/langs/fr_FR/oauth.lang b/htdocs/langs/fr_FR/oauth.lang index 90450ae6c96..15ae26c8025 100644 --- a/htdocs/langs/fr_FR/oauth.lang +++ b/htdocs/langs/fr_FR/oauth.lang @@ -40,7 +40,7 @@ URLOfOAuthServiceEndpointsExample=https://mastodon.example.com URLOfServiceForAuthorization=URL fournie par le service OAuth pour l'authentification Scopes=Permissions ("Scopes" OAuth) ScopeUndefined=Permissions (Cibles) non définies (voir onglet précédent) -ScopesDesc=Exemple : read,write avec Mastodom +ScopesDesc=Exemple : lire, écrire avec Mastodon TokenRawValue=Jeton complet (objet) AccessToken=Jeton d'accès TokenExpired=Expiré diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang index 6ebce92265f..07a3b0883a6 100644 --- a/htdocs/langs/fr_FR/other.lang +++ b/htdocs/langs/fr_FR/other.lang @@ -72,6 +72,7 @@ Notify_BILL_SUPPLIER_SENTBYMAIL=Envoi facture fournisseur par email Notify_BILL_SUPPLIER_CANCELED=Facture fournisseur annulée Notify_CONTRACT_VALIDATE=Validation contrat Notify_FICHINTER_VALIDATE=Validation fiche d'intervention +Notify_FICHINTER_MODIFY=Intervention modifiée Notify_FICHINTER_CLOSE=Intervention clôturée Notify_FICHINTER_ADD_CONTACT=Contact ajouté à l'intervention Notify_FICHINTER_SENTBYMAIL=Envoi fiche d'intervention par email @@ -209,6 +210,7 @@ AmountIn=Montant en %s NumberOfUnitsMos=Quantités à produire dans les ordres de fabrication EMailTextInterventionAddedContact=Une nouvelle intervention %s vous a été assignée EMailTextInterventionValidated=La fiche intervention %s vous concernant a été validée. +EMailTextInterventionModified=L'intervention %s a été modifiée. %s EMailTextInterventionClosed=L'intervention %s a été clôturée. EMailTextInvoiceValidated=La facture %s vous concernant a été validée. EMailTextInvoicePayed=La facture %s a été payée. diff --git a/htdocs/langs/fr_FR/sendings.lang b/htdocs/langs/fr_FR/sendings.lang index d102ba0b21b..b3d5ae247ef 100644 --- a/htdocs/langs/fr_FR/sendings.lang +++ b/htdocs/langs/fr_FR/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=Aucun produit à expédier n'a été trouvé dans WeightVolShort=Poids/vol. ValidateOrderFirstBeforeShipment=Vous devez d'abord valider la commande pour pouvoir créer une expédition. NoLineGoOnTabToAddSome=Aucune ligne, allez sur l'onglet "%s" pour en ajouter -CreateInvoiceForThisCustomerFromSendings=Envois de factures +CreateInvoiceForThisCustomerFromSendings=Créer factures IfValidateInvoiceIsNoSendingStayUnbilled=Si la validation de la facture est "Non", l'envoi restera à l'état "Non facturé" jusqu'à ce que la facture soit validée. OptionToSetSendingBilledNotEnabled=L'option du module Workflow, qui permet de définir l'envoi comme "facturé" automatiquement lorsque la facture est validée, n'est pas activée. Vous devrez donc définir manuellement l'état des envois comme "facturé" après que la facture a été générée. diff --git a/htdocs/langs/fr_FR/stocks.lang b/htdocs/langs/fr_FR/stocks.lang index 566fa580c37..8b9e7b2c5b4 100644 --- a/htdocs/langs/fr_FR/stocks.lang +++ b/htdocs/langs/fr_FR/stocks.lang @@ -341,7 +341,7 @@ InventoryId=ID d'inventaire DateInventory=Date d'inventaire InventoryStatus=Statut inventaire InventoryTitle=Nom de l'inventaire -InventoryLineId=Ligne d'inventaire +InventoryLineId=ID Ligne d'inventaire InventoryRef=Réf d'inventaire QtyViewed=Quantité vue QtyStock=Quantité en stock diff --git a/htdocs/langs/fr_FR/stripe.lang b/htdocs/langs/fr_FR/stripe.lang index db20ddc5bf8..9e4492768b1 100644 --- a/htdocs/langs/fr_FR/stripe.lang +++ b/htdocs/langs/fr_FR/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL offrant une interface de paiement ToOfferALinkForOnlinePaymentOnFreeAmount=URL offrant une interface de paiement en ligne %s d'un montant libre sans existence d'object particulier ToOfferALinkForOnlinePaymentOnMemberSubscription=URL offrant une interface de paiement en ligne %s pour le paiement d'une cotisation d'adhérent ToOfferALinkForOnlinePaymentOnDonation=URL offrant une interface de paiement en ligne %s pour le paiement de dons -YouCanAddTagOnUrl=Vous pouvez également ajouter le paramètre &tag=valeur à n'importe laquelle de ces URL (obligatoire uniquement pour les paiements non liés à un objet) pour ajouter votre propre commentaire de paiement.
Pour l'URL des paiements sans objet existant, vous pouvez également ajouter le paramètre &noidempotency=1 pour que le même lien avec le même tag puisse être utilisé plusieurs fois (certains modes de paiement peuvent limiter le paiement à 1 pour chaque lien différent sans ce paramètre) +YouCanAddTagOnUrl=Vous pouvez également ajouter le paramètre d'URL &tag/catégorie=value à l'une de ces URL (obligatoire uniquement pour les paiements non liés à un objet) pour ajouter votre propre commentaire de paiement tag/catégorie.
Pour l'URL des paiements sans objet existant, vous pouvez également ajouter le paramètre &noidempotency=1 ainsi le même lien avec le même tag/catégorie peut être utilisé plusieurs fois (certains modes de paiement peuvent limiter le paiement à 1 pour chaque lien différent sans ce paramètre) YouCanEmbedOnWebsite=Si vous souhaitez intégrer la page de paiement dans un site Dolibarr, vous pouvez inclure le paramètre : &ws=website_ref.
De plus, deux pages nommées paymentok et paymentko doivent être créés sur le site pour gérer la redirection après une réussite ou un échec du paiement en ligne. SetupStripeToHavePaymentCreatedAutomatically=Configurez votre URL Stripe à %s pour avoir le paiement créé automatiquement si validé. AccountParameter=Paramètres du compte diff --git a/htdocs/langs/fr_FR/suppliers.lang b/htdocs/langs/fr_FR/suppliers.lang index d50ba3b8c0c..2cca4563626 100644 --- a/htdocs/langs/fr_FR/suppliers.lang +++ b/htdocs/langs/fr_FR/suppliers.lang @@ -36,7 +36,7 @@ ListOfSupplierProductForSupplier=Liste des produits et prix du fournisseur %s SentToSuppliers=Envoyés aux fournisseurs ListOfSupplierOrders=Liste des commandes fournisseurs MenuOrdersSupplierToBill=Commandes fournisseurs en facture -NbDaysToDelivery=Délai de livraison en jours +NbDaysToDelivery=Délai de livraison DescNbDaysToDelivery=Le plus gros délai de livraison parmi les produits de cette commande SupplierReputation=Réputation du fournisseur ReferenceReputation=Réputation diff --git a/htdocs/langs/fr_FR/ticket.lang b/htdocs/langs/fr_FR/ticket.lang index 77f73db4bc0..317bca11008 100644 --- a/htdocs/langs/fr_FR/ticket.lang +++ b/htdocs/langs/fr_FR/ticket.lang @@ -115,7 +115,7 @@ TicketsActivatePublicInterfaceHelp=L'interface publique permet à tous les visit TicketsAutoAssignTicket=Affecter automatiquement l'utilisateur qui a créé le ticket TicketsAutoAssignTicketHelp=Lors de la création d'un ticket, l'utilisateur peut être automatiquement affecté au ticket. TicketAutoChangeStatusOnAnswer=Assigner automatiquement un status lors de la réponse à un ticket -TicketAutoChangeStatusOnAnswerHelp=When a user answers to a ticket, the status will automatically be applied to the ticket +TicketAutoChangeStatusOnAnswerHelp=Lorsqu'un utilisateur répond à un ticket, l'état sera automatiquement appliqué au ticket TicketNumberingModules=Module de numérotation des tickets TicketsModelModule=Modèles de documents pour les tickets TicketNotifyTiersAtCreation=Notifier le tiers à la création @@ -139,9 +139,9 @@ TicketUseCaptchaCode=Utiliser le code graphique (CAPTCHA) lors de la création d TicketUseCaptchaCodeHelp=Ajoute la vérification CAPTCHA lors de la création d'un nouveau ticket. TicketsAllowClassificationModificationIfClosed=Autoriser la modification de la classification des tickets fermés TicketsAllowClassificationModificationIfClosedHelp=Permet de modifier la classification (type, groupe de ticket, gravité) même si les tickets sont fermés. -TicketAutoCheckNotifyThirdParty=Check by default “Notify third party” when creating a ticket +TicketAutoCheckNotifyThirdParty=Cochez par défaut « Notifier tiers » lors de la création d'un ticket TicketAutoCheckNotifyThirdPartyHelp=Lors de la création d'un ticket, l'option « Notifier le tiers » sera automatiquement cochée. -TicketAssignContactToMessage=Affecter un contact externe à un message +TicketAssignContactToMessage=Assigner un contact externe à un message TicketAssignContactToMessageHelp=Lorsqu'un contact connu répond à un message, son nom s'affiche dans la liste des messages de tickets. # Index & list page TicketsIndex=Espace tickets diff --git a/htdocs/langs/fr_GA/website.lang b/htdocs/langs/fr_GA/website.lang new file mode 100644 index 00000000000..862b8469033 --- /dev/null +++ b/htdocs/langs/fr_GA/website.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - website +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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
diff --git a/htdocs/langs/gl_ES/admin.lang b/htdocs/langs/gl_ES/admin.lang index 8f7ea5ad537..6bcdb97e2f5 100644 --- a/htdocs/langs/gl_ES/admin.lang +++ b/htdocs/langs/gl_ES/admin.lang @@ -458,9 +458,9 @@ ExtrafieldSelect=Listaxe de selección ExtrafieldSelectList=Listaxe dende unha taboa ExtrafieldSeparator=Separador (non é un campo) ExtrafieldPassword=Contrasinal -ExtrafieldRadio=Radio buttons (1 choice only) -ExtrafieldCheckBox=Select list (n choices) -ExtrafieldCheckBoxFromList=Select from table (n choices) +ExtrafieldRadio=Botóns tipo radio (só 1 seleccionado) +ExtrafieldCheckBox=Seleccionar lista (n opcións) +ExtrafieldCheckBoxFromList=Seleccionar dende a táboa (n opcións) ExtrafieldLink=Vínculo a un obxecto ExtrafieldPointGeo=Punto xeométrico ExtrafieldMultiPointGeo=Multipunto xeométrico @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=A listaxe de parámetros ten que ser key,valor

ExtrafieldParamHelpcheckbox=A listaxe de parámetros debe ser ser liñas con formato key,value (onde key non pode ser '0')

por exemplo:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=A listaxe de parámetros tiene que ser key,valor (onde key non pode ser 0)

por exemplo:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=A lista de valores procede dunha táboa
Sintaxe: table_name:label_field:id_field::filtersql
Exemplo: c_typent:libelle: ::filtersql

- id_field é necesariamente unha clave int primaria
- filtersql é unha condición. Debe usar a sintaxe USF. Exemplo: (active:=:1) para amosar só o valor activo
Tamén pode usar $ID$ no filtro que é o id actual do obxecto actual
Se quere filtrar en campos adicionais, utilice a sintaxe extra.fieldcode=... (onde fieldcode é o código do extrafield)

Para que a listaxe dependa doutra listaxe de atributos complementarios:
c_typent:libelle:id:options_b049271fc81 parent_list_code|parent_column:filter

En orde para que a listaxe dependa doutra listaxe:
c_typent:libelle:id: parent_list_code |columna_pai:filtro -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=Os parámetros deben ser ObjectName:Classpath
Sintaxe: ObjectName:Classpath ExtrafieldParamHelpSeparator=Manter baleiro para un separador simple.
Estableza isto en 1 para un separador colapsado (aberto por defecto para a nova sesión, entón o estado manterase para cada sesión de usuario)
Estableza isto a 2 para un separador colapsado (contraído por defecto para a nova sesión, o estado mantense antes de cada sesión de usuario) LibraryToBuildPDF=Libreria usada na xeración dos PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s seguido do nome de cliente acortado polo n ModuleCompanyCodeSupplierDigitaria=%s seguido do nome do provedor acortado polo número de caracteres:%s para o código de contabilidade do provedor. Use3StepsApproval=De forma predeterminada, os pedimentos a provedor teñen que ser creados e aprobados por 2 usuarios diferentes (un paso/usuario para crear e un paso/usuario para aprobar. Teña conta de que se o usuario ten tanto o permiso para crear e aprobar, un paso/usuario será suficiente. Pode pedir con esta opción introducir unha terceira etapa de aprobación/usuario, se a cantidade é superior a un valor específico (polo que serán precisos 3 pasos: 1 validación, 2=primeira aprobación e 3=segunda aprobación se a cantidade é suficiente).
Deixe baleiro se unha aprobación (2 pasos) é suficiente, se establece un valor moi baixo (0,1) requírese unha segunda aprobación sempre (3 pasos). UseDoubleApproval=Usar 3 pasos de aprobación se o importe (sen IVE) é maior que... -WarningPHPMail=ADVERTENCIA: a configuración para enviar correos electrónicos desde a aplicación está a usar a configuración xenérica predeterminada. Esta opción non precisa de coñecementos técnicos para completar a configuración.
Porén, moitas veces é mellor configurar os correos electrónicos de saída para utilizar o servidor de correo electrónico do seu provedor de servizos de correo electrónico en lugar da configuración predeterminada por varios motivos: +WarningPHPMail=AVISO: a configuración para enviar correos electrónicos desde a aplicación utiliza a configuración xenérica predeterminada (chamada "%s"). Esta opción non precisa ningún coñecemento técnico e ningunha configuración particular.
Porén, moitas veces é mellor configurar os correos electrónicos de saída para usar o outro método (chamado " %s") para utilizar o servidor de correo electrónico do seu provedor de servizos de correo electrónico, en lugar da configuración predeterminada por varios motivos: WarningPHPMailA=- Usar o servidor do provedor de servizos de correo electrónico aumenta a fiabilidade do seu correo electrónico, polo que aumenta a capacidade de entrega sen ser marcado como SPAM -WarningPHPMailB=- Algúns provedores de servizos de correo electrónico (como Yahoo) non permiten enviar un correo electrónico desde outro servidor que o seu propio. A súa configuración actual usa o servidor da aplicación para enviar correo electrónico e non o servidor do seu fornecedor de correo electrónico, polo que algúns destinatarios (o compatible co protocolo DMARC restritivo) preguntarán ao seu fornecedor de correo electrónico se poden aceptar o seu correo electrónico e algúns provedores de correo electrónico. (como Yahoo) pode responder "non" porque o servidor non é seu, polo que poucos dos seus correos electrónicos enviados poden non ser aceptados para a súa entrega (teña coidado tamén coa cota de envío do seu fornecedor de correo electrónico). +WarningPHPMailB=- Se o dominio do seu correo electrónico (a parte mymaildomain.com en myname@mymaildomain.com) está protexido por un rexistro SPF + DMARC, o seu correo electrónico pode marcarse como SPAM porque a súa regra DMARC definiuse na zona DNS do dominio do seu correo electrónico. remitente (mymaildomain.com) non permite o envío como remitente xenérico. Neste caso, debe desactivar o DMARC para o dominio (ou configuralo en p=none como o fixo @gmail.com) ou, mellor, se ten coñecementos técnicos, utilice o outro método para enviar correos electrónicos mediante SMTP. servidor do seu propio provedor de correo electrónico. WarningPHPMailC=- Tamén é interesante usar o servidor SMTP do seu propio fornecedor de servizos de correo electrónico para enviar correos electrónicos, polo que todos os correos electrónicos enviados desde a aplicación tamén se gardarán no directorio "Enviado" da súa caixa de correo. WarningPHPMailD=Polo tanto, recoméndase cambiar o método de envío dos correos electrónicos co valor "SMTP". WarningPHPMailDbis=Se realmente quere manter o método "PHP" predeterminado para enviar correos electrónicos, só ten que ignorar este aviso ou elimínao premendo %sprema aquí %s 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 rexistro SPF actual (para o correo electrónico %s): %s +WarningPHPMailSPF=Se o nome de dominio do enderezo de correo electrónico do seu remitente está protexido por un rexistro SPF (pregúntelle ao rexistrador do seu nome de dominio), debe engadir as seguintes IP ou entrada no rexistro SPF do DNS do seu dominio: %s. +WarningPHPMailSPFDMARC=Se o nome de dominio do enderezo de correo electrónico do seu remitente está protexido por un rexistro DMARC diferente de p=none (pregúntelle ao rexistrador do seu nome de dominio), debe eliminar o seu rexistro DMARC ou configuralo en p=none como fai @gmail.com) ou use o envío doutro método. +SPFAndDMARCInformation=Rexistro DNS SPF e DMARC para os enderezos de correo electrónico principais +ActualMailDNSRecordFound=Atopouse o rexistro actual de %s (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) @@ -944,7 +945,7 @@ Permission776=Pagar informe de gastos Permission777=Ler todos os informes de gastos (incluso os dos usuarios non subordinados) Permission778=Crear/modificar informes de gastos de todos Permission779=Exportar informe de gastos -Permission1001=Consultar stocks +Permission1001=Consultar almacéns e existencias Permission1002=Crear/modificar almacéns Permission1003=Eliminar almacéns Permission1004=Consultar movementos de stock @@ -1457,7 +1458,7 @@ HRMSetup=Setup do módulo RRHH CompanySetup=Configuración do módulo Terceiros CompanyCodeChecker=Opcións para a xeración automática de códigos de clientes / provedores. AccountCodeManager=Opcións para a xeración automática de contas contables de clientes / provedores. -NotificationsDesc=Email notifications can be sent automatically on certain events.
Recipients of notifications can be defined: +NotificationsDesc=As notificacións por correo electrónico pódense enviar automaticamente en determinados eventos.
Pódense definir os destinatarios das notificacións: NotificationsDescUser=* por usuario (na lapela "Notificacións" dun usuario) NotificationsDescContact=* por contactos de terceiros (na lapela "Notificacións" dun terceiro) NotificationsDescGlobal=* ou configurando enderezos de correo electrónico globais (na páxina de configuración do módulo). @@ -1993,10 +1994,10 @@ ExpenseReportsRulesSetup=Configuración do módulo Informes de gastos - Regras ExpenseReportNumberingModules=Módulo de numeración de informes de gastos NoModueToManageStockIncrease=Non se activou ningún módulo capaz de xestionar o aumento automático de stock. O aumento do stock farase só en entrada manual. YouMayFindNotificationsFeaturesIntoModuleNotification=Pode atopar opcións para as notificacións por correo electrónico habilitando e configurando o módulo "Notificación". -TemplatesForNotifications=Emails templates for notifications +TemplatesForNotifications=Padróns de correo electrónico para notificacións ListOfNotificationsPerUser=Listaxe de notificacións automáticas por usuario * ListOfNotificationsPerUserOrContact=Listaxe de posibles notificacións automáticas (no evento empresarial) dispoñibles por usuario * ou por contacto ** -ListOfFixedNotifications=Global recipients emails for automatic email notifications +ListOfFixedNotifications=Correos electrónicos globais para notificacións automáticas por correo electrónico GoOntoUserCardToAddMore=Vaia á pestana "Notificacións" dun usuario para engadir ou eliminar notificacións para os usuarios GoOntoContactCardToAddMore=Vaia á pestana "Notificacións" dun terceiro para engadir ou eliminar notificacións de contactos/enderezos Threshold=Límite @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtro de rexistro para limpar o valor (COMPANY_DI DuplicateForbidden=Prohibido duplicar RemoveSpecialWords=Limpe determinadas palabras ao xerar subcontas para clientes ou provedores RemoveSpecialWordsHelp=Especifique as palabras a limpar antes de calcular a conta de cliente ou provedor. Use un ";" entre cada palabra -GDPRContact=Responsable de protección de datos (DPO, privacidade de datos ou contacto GDPR) +GDPRContact=Delegado de Protección de Datos (DPD, Privacidade de datos ou contacto RGPD,...) GDPRContactDesc=Se almacena datos persoais no seu Sistema de Información, pode nomear aquí o contacto responsable do Regulamento Xeral de Protección de Datos HelpOnTooltip=Texto de axuda para amosar na información de ferramentas HelpOnTooltipDesc=​​= Poner aquí o texto ou unha chave de tradución para que o texto apareza nunha tip sobre ferramentas cando este campo aparece nun formulario @@ -2218,7 +2219,7 @@ CreateCandidature=Crear solicitude de traballo FormatZip=Zip MainMenuCode=Código de entrada do menú (menú principal) ECMAutoTree=Amosar árbore automático GED -OperationParamDesc=Defina as regras que se empregarán para extraer algúns datos ou establecer valores para utilizar para a operación.

Exemplo para extraer o nome dunha empresa do asunto do correo electrónico nunha variable temporal:
tmp_var=EXTRACT:SUBJECT:Mensaxe da empresa ([^\n]*)

Exemplos para definir as propiedades dun obxecto a crear:
objproperty1=SET:un valor codificado en bruto
objproperty2=SET42_property2_0342fccfda19bz0 objproperty2=SET: erty3=SETIFEMPTY:un valor (o valor só se define se a propiedade aínda non está definida)
objproperty4=EXTRACTO:ENcabezado:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACTO:SUBXECTO:([^\n]*)
objecto:EXTRACTO:EXTRACTO:
:
o nome da empresa é\\s([^\\s]*)

Use unha nova liña para extraer ou definir varias propiedades. +OperationParamDesc=Define as regras que se empregarán para extraer algúns datos ou establecer valores para utilizar na operación.

Exemplo para extraer unha cadea da cabeceira do correo electrónico, asunto ou corpo nunha variable temporal:
tmp_var1=EXTRACT:HEADER:A miña expresión regular ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:O miña expresión regular ([^\n]*)
tmp_var3=EXTRACT:BODY:A miña expresión regular ([^\n]*)

Exemplos para definir as propiedades dun obxecto a crear:
objproperty1=SET:un valor codificado
objproperty2=SET:__tmp_var__
objproperty3=valor SETIFEMPETY3:a establécese só se a propiedade aínda non está definida)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:O nome da miña empresa é\\ s([^\\s]*)

Utiliza unha nova liña para extraer ou definir varias propiedades. OpeningHours=Horario de apertura OpeningHoursDesc=Introduza aquí o horario habitual da súa empresa. ResourceSetup=Configuración do módulo Recursos @@ -2264,7 +2265,7 @@ LargerThan=Maior que IfTrackingIDFoundEventWillBeLinked=Teña conta que se se atopa no correo electrónico un ID de seguimento dun correo electrónico entrante é unha resposta dun correo electrónico xa recollido e ligado a un obxecto, o evento creado ligarase automaticamente co obxecto relacionado coñecido. WithGMailYouCanCreateADedicatedPassword=Cunha conta de Gmail, se activou a validación de 2 pasos, recoméndase crear un segundo contrasinal adicado para a aplicación en lugar de usar a súa propia contrasinal da conta de https://myaccount.google.com/. EmailCollectorTargetDir=Pode ser un comportamento desexado mover o correo electrónico a outra etiqueta/directorio cando se procesou con éxito. Simplemente configure o nome do directorio aquí para usar esta función (NON use caracteres especiais no nome). Teña conta que tamén debe usar unha conta de inicio de sesión de lectura/escritura. -EmailCollectorLoadThirdPartyHelp=Pode usar esta acción para empregar o contido do correo electrónico para atopar e cargar un terceiro existente na súa base de datos (a busca realizarase na propiedade definida entre 'id', 'name', 'name_alias', 'email'). O terceiro atopado (ou creado) empregarase para seguir as accións que o precisen.
Por exemplo, se quere crear un terceiro cun nome extraído dunha cadea ' Nome: nome para atopar' presente no corpo, use o correo electrónico do remitente como correo electrónico, pode establecer o campo de parámetros así:
'email=HEADER:^From:(. *);nome=EXTRACT:BODY:Nome:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Pode usar esta acción para empregar o contido do correo electrónico para atopar e cargar un terceiro existente na súa base de datos (a busca realizarase na propiedade definida entre 'id', 'name', 'name_alias', 'email'). O terceiro atopado (ou creado) empregarase para seguir as accións que o precisen.
Por exemplo, se quere crear un terceiro cun nome extraído dunha cadea ' Name: name to find' presente no corpo, use o correo electrónico do remitente como correo electrónico, pode establecer o campo do parámetro así:
'email=EXTRACT:HEADER:^From: (.*);nome=EXTRACT:BODY:Nome:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Aviso: moitos servidores de correo electrónico (como Gmail) están a facer buscas de palabras completas cando buscan nunha cadea e non devolverán un resultado se a cadea só se atopa parcialmente nunha palabra. Por este motivo tamén, ao usar caracteres especiais nunha busca ignoraranse se non forman parte de palabras existentes.
Para facer unha busca de exclusión dunha palabra (devolver o correo electrónico se non se atopa a palabra), pode usar o caracter ! antes da palabra (pode que non funcione nalgúns servidores de correo). EndPointFor=Punto final de %s:%s DeleteEmailCollector=Eliminar o receptor de correo electrónico @@ -2279,7 +2280,7 @@ NotAPublicIp=Non é unha IP pública MakeAnonymousPing=Fai un Ping anónimo '+1' ao servidor da fundación Dolibarr (só se fai unha vez despois da instalación) para permitir á fundación contar o número de instalacións de Dolibarr. FeatureNotAvailableWithReceptionModule=Función non dispoñible cando a recepción do módulo está activada EmailTemplate=Modelo para correo electrónico -EmailTemplateHelp=You can create emails templates from menu %s - %s +EmailTemplateHelp=Pode crear mpadróns de correo electrónico desde o menú %s - %s EMailsWillHaveMessageID=Os correos electrónicos terán un encabezado "ID da mensaxe" que coincida con esta sintaxe PDF_SHOW_PROJECT=Amosar proxecto no documento ShowProjectLabel=Etiqueta do proxecto @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Nome de Terceiros: Alias de terceiros ALIAS_THIRDPARTY=Alias de Terceiros: Nome de Terceiros PDFIn2Languages=Amosa etiquetas no PDF en dous idiomas diferentes (pode que esta opción non funcione nalgúns idiomas) 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 +PDF_USE_A=Formato de documentos PDF FafaIconSocialNetworksDesc=Introduza aquí o código dunha icona FontAwesome. Se non sabe o que é FontAwesome, pode usar o valor xenérico fa-address-book. RssNote=Nota: Cada definición de fonte RSS proporciona un widget que debes habilitar para que estexa dispoñible no panel JumpToBoxes=Ir a Configuración -> Widgets @@ -2550,6 +2551,11 @@ ConfirmDeleteSocialNetwork= Estaá certo de querer eliminar este rexistro? AnOwnerMustBeSetIfEmailTemplateIsPrivate=Debe establecerse un propietario se o modelo de correo electrónico está definido como privado ContactsDefaultRoles=Para terceiros de tipo "individual", pódese crear un contacto simultaneamente. Define aquí os roles que se asignarán sistematicamente a este contacto. MenuDict=Dicionario -AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token +AddMoreParams=Engadir máis parámetros para a conexión (cookies, tokens,...)
Exemplo: token : token de valor ParamName=Nome do parámetro ParamValue=Valor do parámetro +ConfirmDeleteParamOfSocialNetwork=Está certo de querer eliminar este parámetro? +HelpMariaDBToGetPossibleValues=Pode obter unha lista de valores posibles executando o seguinte comando SQL: %s +Captcha=Captcha +CaptchaDesc=Se quere protexer a súa páxina de inicio de sesión cun Captcha, pode escoller cal usar aquí +DolibarrStandardCaptcha=Un captcha nativo xerado por Dolibarr diff --git a/htdocs/langs/gl_ES/commercial.lang b/htdocs/langs/gl_ES/commercial.lang index 56bbaccfb25..a928e05b035 100644 --- a/htdocs/langs/gl_ES/commercial.lang +++ b/htdocs/langs/gl_ES/commercial.lang @@ -94,3 +94,9 @@ SignatureContractRef=Sinatura do contrato %s SignatureFichinterRef=Sinatura da intervención %s SignatureSociete_ribRef=Sinatura do mandato SEPA %s FeatureOnlineSignDisabled=Característica para a sinatura en liña inhabilitada ou documento xerado antes de que fora habilitada a característica +NoSignature=Non asinado +SignedSender=Asinado internamente +SignedReceiver=Asinado por terceiros +SignedReceiverOnline=Asinado por terceiros en liña +SignedAll=Asinado por todas as partes +SignStatus=Estado da sinatura diff --git a/htdocs/langs/gl_ES/companies.lang b/htdocs/langs/gl_ES/companies.lang index 36ab7d581e9..5ec35f7c555 100644 --- a/htdocs/langs/gl_ES/companies.lang +++ b/htdocs/langs/gl_ES/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Login no Dolibarr NoDolibarrAccess=Sen acceso a Dolibarr ExportDataset_company_1=Terceiros (Empresas / fundacións / particulares) e as súas propiedades ExportDataset_company_2=Contactos e as súas propiedades +ExportDataset_company_3=Contas bancarias de terceiros ImportDataset_company_1=Terceiros e as súas propiedades ImportDataset_company_2=Contactos/Enderezos e atributos de terceiros ImportDataset_company_3=Contas bancarias de terceiros diff --git a/htdocs/langs/gl_ES/datapolicy.lang b/htdocs/langs/gl_ES/datapolicy.lang index fb180e0990d..f4fdafd57dd 100644 --- a/htdocs/langs/gl_ES/datapolicy.lang +++ b/htdocs/langs/gl_ES/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,13 +15,10 @@ Module4100Name = Política de privacidade de datos # Module description 'ModuledatapolicyDesc' Module4100Desc = Módulo para xestionar a privacidade de datos (conformidade co GDPR) - -# # Administration page -# datapolicySetup = Configuración da política de privacidade dos datos do módulo Deletion = Eliminación de datos -datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). +datapolicySetupPage = Segundo as leis dos seus países (Exemplo Artigo 5 do GDPR), os datos persoais deben conservarse durante un período non superior ao necesario para os fins para os que foron recollidos, excepto para fins de arquivo.
A eliminación farase automaticamente despois dun tempo determinado sen eventos (a duración que indicará a continuación). NB_MONTHS = %s meses ONE_YEAR = 1 ano NB_YEARS = %s anos @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Cliente potencial/Cliente DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Nin cliente potencial/Nin cliente DATAPOLICY_CONTACT_FOURNISSEUR = Provedor DATAPOLICY_ADHERENT = Membro -DATAPOLICY_Tooltip_SETUP = Tipo de contacto: indique as súas opcións para cada tipo. -DATAPOLICYMail = Configuración de correos electrónicos -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Contido do correo electrónico -DATAPOLICYSUBSITUTION = Pode usar as seguintes variables no seu correo electrónico (LINKACCEPT permite crear unha ligazón rexistrando o acordo da persoa, LINKREFUSED fai posible rexistrar a negativa da persoa): -DATAPOLICYACCEPT = Mensaxe despois do acordo -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define o atraso sen interacción posterior do cal quere que o rexistro se purgue automaticamente. SendAgreementText = Pode enviar un correo electrónico GDPR a todos os seus contactos relevantes (que aínda non recibiron un correo electrónico e para os que non rexistrase nada sobre o seu acordo GDPR). Para iso, use o seguinte botón. SendAgreement = Enviar correos electrónicos AllAgreementSend = Enviáronse todos os correos electrónicos TXTLINKDATAPOLICYACCEPT = Texto para a ligazón "acordo" -TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# +TXTLINKDATAPOLICYREFUSE = Texto para a ligazón "desacordo" # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: Tratamento de datos persoais DATAPOLICY_consentement = Consentimento obtido para o tratamento de datos persoais -DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonimizar un terceiro -DATAPOLICY_POPUP_ANONYME_TEXTE = Non pode eliminar este contacto de Dolibarr porque hai elementos relacionados. De acordo co GDPR, fará que todos estes datos sexan anónimos para respectar as súas obrigas. Gustaríalle continuar? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Portabilidade GDPR -DATAPOLICY_PORTABILITE_TITLE = Exportación de datos persoais -DATAPOLICY_PORTABILITE_CONFIRMATION = Quere exportar os datos persoais deste contacto. Está certo ? - -# +DATAPOLICY_opposition_traitement = Oponse ao tratamento dos seus datos persoais +DATAPOLICY_opposition_prospection = Oponse ao tratamento dos seus datos persoais con fins de prospección # Notes added during an anonymization -# -ANONYMISER_AT = Anónimo %s - -DATAPOLICY_date = Date of agreement/disagreement GDPR -DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Enviar correo electrónico GDPR +DATAPOLICY_date = Data do acordo/desacordo GDPR +DATAPOLICY_send = Data de envío por correo electrónico do acordo MailSent = Enviouse o correo electrónico - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion +NUMBER_MONTH_BEFORE_DELETION = Número de meses antes da eliminación diff --git a/htdocs/langs/gl_ES/dict.lang b/htdocs/langs/gl_ES/dict.lang index e7bc66ccba3..b41422cc2b2 100644 --- a/htdocs/langs/gl_ES/dict.lang +++ b/htdocs/langs/gl_ES/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=Francos CFP CurrencySingXPF=Franco CFP CurrencyCentEUR=céntimos CurrencyCentSingEUR=céntimo -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=milésimo #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/gl_ES/errors.lang b/htdocs/langs/gl_ES/errors.lang index 82818ef5a8c..303baa27f63 100644 --- a/htdocs/langs/gl_ES/errors.lang +++ b/htdocs/langs/gl_ES/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=O usuario debe ser asignado á tarefa para poder ingr ErrorTaskAlreadyAssigned=Tarefa xa asignada ao usuario ErrorModuleFileSeemsToHaveAWrongFormat=O paquete do módulo parece ter un formato incorrecto. ErrorModuleFileSeemsToHaveAWrongFormat2=Debe existir polo menos un directorio obrigatorio no zip do módulo: %s ou %s -ErrorFilenameDosNotMatchDolibarrPackageRules=O nome do paquete do módulo (%s) non coincide coa sintaxe do nome agardada: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=O nome do ficheiro do paquete do módulo (%s) no coincide coa sintaxe do nome agardada: %s ErrorDuplicateTrigger=Erro, nome de triggerr duplicado %s. Xa se cargou desde %s. ErrorNoWarehouseDefined=Erro, sen almacéns definidos. ErrorBadLinkSourceSetButBadValueForRef=A ligazón que usa non é válida. Defínese unha "fonte" para o pago, pero o valor para "ref" non é válido. @@ -422,3 +422,4 @@ OperNotDefined=O moo de pagamento non está definido ErrorThisContactXIsAlreadyDefinedAsThisType=%s xa está definido como contacto para este tipo. ErrorThisGroupIsAlreadyDefinedAsThisType=Os contactos con este grupo xa están definidos como contactos deste tipo. EmptyMessageNotAllowedError=Non se permite a mensaxe baleira +ErrorIsNotInError=%s non ten erros diff --git a/htdocs/langs/gl_ES/hrm.lang b/htdocs/langs/gl_ES/hrm.lang index 80be621235d..fc9a2d222c7 100644 --- a/htdocs/langs/gl_ES/hrm.lang +++ b/htdocs/langs/gl_ES/hrm.lang @@ -1,6 +1,5 @@ # Dolibarr language file - en_US - hrm - # Admin HRM_EMAIL_EXTERNAL_SERVICE=Cooreo electrónico do SPA Establishments=Establecementos @@ -21,32 +20,32 @@ NewEmployee=Novo empregado ListOfEmployees=Listaxe de empregados HrmSetup=Setup do módulo RRHH SkillsManagement=Xestión de habilidades -HRM_MAXRANK=Número máximo de niveis para clasificar unha habilidade -HRM_DEFAULT_SKILL_DESCRIPTION=Descrición predeterminada dos rangos cando se crea a competencia +HRM_MAXRANK=Número máximo de niveis para clasificar unha habilidade +HRM_DEFAULT_SKILL_DESCRIPTION=Descrición predeterminada dos rangos cando se crea a competencia deplacement=Quenda -DateEval=Data de avalición -JobCard=Tarxeta de traballo +DateEval=Data de avaliación das competencias +JobCard=Tarxeta de traballo NewJobProfile=Novo perfil de posto de traballo JobProfile=Perfil do posto de traballo JobsProfiles=Perfís do posto de traballo NewSkill=Nova competencia SkillType=Tipo de competencia -Skilldets=Listaxe de rangos para esta competencia +Skilldets=Listaxe de rangos para esta competencia Skilldet=Nivel de competencia rank=Rango ErrNoSkillSelected=Non se escolleu ningunha competencia ErrSkillAlreadyAdded=Esta competencia xa está incluída na listaxe -SkillHasNoLines=Esta competencia non ten liñas -Skill=Competencia +SkillHasNoLines=Esta competencia non ten liñas +Skill=Competencia Skills=Competencias SkillCard=Tarxeta de competencia -EmployeeSkillsUpdated=Actualizáronse as competencias dos empregados (ver a pestana "Competencias" da tarxeta de empregado) -Eval=Avaliación -Evals=Avaliacións -NewEval=Nova avaliación -ValidateEvaluation=Validar avaliación -ConfirmValidateEvaluation=Está certo de querer validar esta avaliación con referencia %s -EvaluationCard=Tarxeta de avalición +EmployeeSkillsUpdated=Actualizáronse as competencias dos empregados (ver a pestana "Competencias" da tarxeta de empregado) +Eval=Avaliación de competencias +Evals=Avaliacións de competencias +NewEval=Nova avaliación de competencias +ValidateEvaluation=Validar a avaliación de competencias +ConfirmValidateEvaluation=Está certo de querer validar esta avaliación de competencias coa referencia %s? +EvaluationCard=Avaliación de competencias RequiredRank=Rango preciso para o perfil do posto de traballo RequiredRankShort=Rango obrigatorio PositionsWithThisProfile=Postos con este perfil de traballo @@ -55,33 +54,36 @@ EmployeeRankShort=Rango do empregado EmployeePosition=Posto de empregado EmployeePositions=Postos de empregados EmployeesInThisPosition=Empregados nesta posición -group1ToCompare=Grupo de usuarios para analizar +group1ToCompare=Grupo de usuarios para analizar group2ToCompare=Segundo grupo de usuarios para comparar OrJobToCompare=Comparar cos requisitos de competencias dun perfil laboral difference=Diferencia -CompetenceAcquiredByOneOrMore=Competencia adquirida por un ou máis usuarios pero non solicitada polo segundo comparador +CompetenceAcquiredByOneOrMore=Competencia adquirida por un ou máis usuarios pero non solicitada polo segundo comparador MaxlevelGreaterThan=O nivel de empregado é superior ao agardado MaxLevelEqualTo=O nivel de empregado é do nivel agardado MaxLevelLowerThan=O nivel de empregado é inferior ao agardado MaxlevelGreaterThanShort=Nivel superior ao agardado MaxLevelEqualToShort=Nivel igual ao agardado MaxLevelLowerThanShort=Nivel inferior ao agardado -SkillNotAcquired=Competencia non adquirida por todos os usuarios e solicitada polo segundo comparador +SkillNotAcquired=Competencia non adquirida por todos os usuarios e solicitada polo segundo comparador legend=Lenda TypeSkill=Tipo de competencia -AddSkill=Engade competencias ao perfil de traballo +AddSkill=Engade competencias ao perfil de traballo RequiredSkills=Competencias precisas para este perfil laboral -UserRank=Rango de usuario +UserRank=Rango de usuario SkillList=Listaxe de competencias -SaveRank=Gardar rango +SkillCreated=Competencias %s creadas +SkillRank=Rango de competencias +ShowSkillRank=Mostrar rango de competencias +SaveRank=Gardar rango TypeKnowHow=Base de coñecemento -TypeHowToBe=Como ser -TypeKnowledge=Coñecemento -AbandonmentComment=Comentario de abandono +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 +NoEval=Non se fixo ningunha avaliación para este empregado HowManyUserWithThisMaxNote=Número de usuarios con este rango -HighestRank=Máximo rango +HighestRank=Máximo rango SkillComparison=Comparación de competencias ActionsOnJob=Eventos neste traballo VacantPosition=bolsa de traballo @@ -91,7 +93,8 @@ SaveLevelSkill = Gardouse o nivel de competencia DeleteSkill = Competencia eliminada SkillsExtraFields=Atributos complementarios (Habilidades) JobsExtraFields=Atributos complementarios (Perfil do posto de traballo) -EvaluationsExtraFields=Atributos complementarios (Avaliacións) +EvaluationsExtraFields=Atributos complementarios (Avaliacións de competenciais) NeedBusinessTravels=Precisa viaxes de negocios NoDescription=Sen descrición TheJobProfileHasNoSkillsDefinedFixBefore=O perfil laboral avaliado deste empregado non ten ningunha habilidade definida nel. Engada habilidades, despois elimine e reinicie a avaliación. +PDFStandardHrmEvaluation=Padrón estándar para xerar un documento PDF para unha avaliación de competencias diff --git a/htdocs/langs/gl_ES/interventions.lang b/htdocs/langs/gl_ES/interventions.lang index f1c4ce67eea..9ec0a35d459 100644 --- a/htdocs/langs/gl_ES/interventions.lang +++ b/htdocs/langs/gl_ES/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Crear borrador InterventionContact=Contacto intervención DeleteIntervention=Eliminar intervención ValidateIntervention=Validar intervención +SignIntervention=Sinatura da intervención +UnsignIntervention=Anular sinartura da intervención ModifyIntervention=Modificar intervención CloseIntervention=Pechar intervención DeleteInterventionLine=Eliminar liña de intervención ConfirmDeleteIntervention=¿Está certo de querer eliminar esta intervención? ConfirmValidateIntervention=¿Está certo de querer validar esta intervención baixo o nome %s? +ConfirmSignIntervention=Está certo de querer configurar esta intervención como asinada? +ConfirmUnsignIntervention=Está certo de querer definir esta intervención como sen asinar? ConfirmModifyIntervention=¿Está ceto de querer modificar esta intervención? ConfirmCloseIntervention=Está certo de querer pechar esta intervención? ConfirmDeleteInterventionLine=¿Está certo de querer eliminar esta liña da intervención? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Intervencións e liñas de intervención InterventionClassifyBilled=Clasificar "Facturada" InterventionClassifyUnBilled=Clasificar "Non facturada" InterventionClassifyDone=Clasificar "Realizada" +InterventionSign=Establecer Asinado +InterventionUnsign=Establecer sen asinar SendInterventionRef=Envío da intervención %s SendInterventionByMail=Enviar intervención por correo electrónico InterventionCreatedInDolibarr=Intervención %s creada InterventionValidatedInDolibarr=Intervención %s validada +InterventionSignedInDolibarr=Intervención asinada +InterventionSignedOnline=Intervención asinada en liña +InterventionUnsignedInDolibarr=Intervención sen asinar InterventionModifiedInDolibarr=Intervención %s modificada InterventionClassifiedBilledInDolibarr=Intervención %s clasificada como facturada InterventionClassifiedUnbilledInDolibarr=Intervención %s clasificada como non facturada diff --git a/htdocs/langs/gl_ES/intracommreport.lang b/htdocs/langs/gl_ES/intracommreport.lang index 1484eb49802..c5182591b40 100644 --- a/htdocs/langs/gl_ES/intracommreport.lang +++ b/htdocs/langs/gl_ES/intracommreport.lang @@ -1,5 +1,5 @@ IntraCommReport=Informe intracomm -IntraCommReports=Intracomm reports +IntraCommReports=Informes intracomm Module68000Name = Informe intracomm Module68000Desc = Xestión de informes intracomm (soporte para o formato francés DEB / DES) @@ -35,4 +35,4 @@ IntracommReportTypeDeclaration=Tipo de declaración IntracommReportDownload=descargar o ficheiro XML # Invoice IntracommReportTransportMode=Modo de transporte -DeleteIntraCommReport=Delete IntraComm report +DeleteIntraCommReport=Eliminar informe IntraComm diff --git a/htdocs/langs/gl_ES/mails.lang b/htdocs/langs/gl_ES/mails.lang index 4dd76ff1521..ba1853efaec 100644 --- a/htdocs/langs/gl_ES/mails.lang +++ b/htdocs/langs/gl_ES/mails.lang @@ -32,8 +32,8 @@ NewMailing=Novo Mailing NewSMSing=Novo sms EditMailing=Editar Mailing ResetMailing=Novo envío -ConfirmResetMailingTargetMassaction=Bulk target Resend confirmation -ResetMailingTargetMassaction=Resend target +ConfirmResetMailingTargetMassaction=Confirmación do restablecemento do estado dos obxectivos +ResetMailingTargetMassaction=Restablecer o estado dos obxectivos DeleteMailing=Eliminar Mailing PreviewMailing=Previsualizar un Mailing CreateMailing=Crear Mailing @@ -55,7 +55,7 @@ ErrorMailRecipientIsEmpty=O enderezo do destinatario está baleiro WarningNoEMailsAdded=Ningún novo Mailing a engadir á listaxe destinatarios. ConfirmValidMailing=¿Confirma a validación do Mailing? ConfirmResetMailing=Atención, no reinicio do Mailing %s, autoriza novamente a súa emisión en masa. ¿É isto o que quere facer? -ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? +ConfirmResetMailingTargetMassactionQuestion=Está certo de querer restablecer o estado dos destinatarios seleccionados (isto pode significar que o correo electrónico será enviado de novo se utiliza a función Enviar correo electrónico desde o correo electrónico)? ConfirmDeleteMailing=¿Confirma a eliminación do Mailing? NbOfUniqueEMails=Nº de mails únicos NbOfUniquePhones=Número de teléfonos únicos @@ -193,7 +193,7 @@ NoMoreRecipientToSendTo=Non hai máis destinatarios aos que enviar o correo elec EmailOptedOut=O propietario do correo electrónico solicitou que non se poña en contacto con el neste correo electrónico nunca mais EvenUnsubscribe=Incluír correos electrónicos excluidos EvenUnsubscribeDesc=Incluír correos electrónicos excluidos cando seleccione correos electrónicos como destinos. Útil para correos electrónicos de servizo obrigatorio, por exemplo. -XEmailsDoneYActionsDone=Correos electrónicos %s precalificados, correos electrónicos %s procesados correctamente (para %s rexistro/accións realizadas) +XEmailsDoneYActionsDone=Correos electrónicos %s precalificados, %s procesáronse correctamente (para %s operacións feitas) YouCanMakeSomeInstructionForEmail=Pode crear algunhas instrucións para o seu correo electrónico (Exemplo: xerar imaxe no modelo de correo electrónico...) ModelTemplate=Padrón de correo electrónico YouCanChooseAModelForYouMailContent= Pode escoller un dos padróns de modelos ou xerar un con IA diff --git a/htdocs/langs/gl_ES/main.lang b/htdocs/langs/gl_ES/main.lang index f259383ee25..3f9b5a0a219 100644 --- a/htdocs/langs/gl_ES/main.lang +++ b/htdocs/langs/gl_ES/main.lang @@ -45,6 +45,7 @@ NoError=Ningún erro Error=Erro Errors=Errores ErrorFieldRequired=O campo '%s' é obrigatorio +CustomMandatoryFieldRule=Regra personalizada "Campo obrigatorio". ErrorFieldFormat=O campo '%s' ten un valor incorrecto ErrorFileDoesNotExists=O ficheiro %s non existe ErrorFailedToOpenFile=Fallou ao abrir o ficheiro %s @@ -1285,7 +1286,7 @@ AmountSalary=Importe do salario InvoiceSubtype=Subtipo de factura ConfirmMassReverse=Confirmación borrado masivo ConfirmMassReverseQuestion=¿Estás certo de querer eliminar os %s rexistro(s) seleccionado(s)? -ConfirmActionXxx=Confirm action %s +ConfirmActionXxx=Confirmar acción %s ElementType=Tipo de elemento ElementId=Elemento Id Encrypted=Cifrado diff --git a/htdocs/langs/gl_ES/oauth.lang b/htdocs/langs/gl_ES/oauth.lang index 250de32215f..9c90fc8dc76 100644 --- a/htdocs/langs/gl_ES/oauth.lang +++ b/htdocs/langs/gl_ES/oauth.lang @@ -40,7 +40,7 @@ URLOfOAuthServiceEndpointsExample=https://mastodon.example.com URLOfServiceForAuthorization=URL proporcionada polo servizo OAuth para a autenticación Scopes=Permisos (ámbitos) ScopeUndefined=Permisos (Ámbitos) indefinidos (consulte a lapela anterior) -ScopesDesc=Exemplo: ler, escribir con Mastodom +ScopesDesc=Exemplo: ler, escribir con Mastodon TokenRawValue=Token completo (obxecto) AccessToken=Token de acceso TokenExpired=Caducado diff --git a/htdocs/langs/gl_ES/other.lang b/htdocs/langs/gl_ES/other.lang index 33f0b842721..76b6592a6f2 100644 --- a/htdocs/langs/gl_ES/other.lang +++ b/htdocs/langs/gl_ES/other.lang @@ -72,6 +72,7 @@ Notify_BILL_SUPPLIER_SENTBYMAIL=Envío factura de provedor por correo electróni Notify_BILL_SUPPLIER_CANCELED=Cancelouse a factura do provedor Notify_CONTRACT_VALIDATE=Validación contrato Notify_FICHINTER_VALIDATE=Intervención validada +Notify_FICHINTER_MODIFY=Intervención modificada Notify_FICHINTER_CLOSE=Intervención pechada Notify_FICHINTER_ADD_CONTACT=Contacto engadido a intervención Notify_FICHINTER_SENTBYMAIL=Intervención enviada por correo electrónico @@ -209,6 +210,7 @@ AmountIn=Cantidade en %s NumberOfUnitsMos=Número de unidades a producir nos pedimentos de fabricación EMailTextInterventionAddedContact=Unha nova intervencións %s foi asignada a vostede EMailTextInterventionValidated=Ficha intervención %s validada +EMailTextInterventionModified=A intervención %s foi modificada. %s EMailTextInterventionClosed=A intervención %s pechouse. EMailTextInvoiceValidated=Factura %s validada EMailTextInvoicePayed=A factura %s foi pagada. diff --git a/htdocs/langs/gl_ES/sendings.lang b/htdocs/langs/gl_ES/sendings.lang index d50a8bdb916..3172ab12568 100644 --- a/htdocs/langs/gl_ES/sendings.lang +++ b/htdocs/langs/gl_ES/sendings.lang @@ -43,7 +43,7 @@ ConfirmValidateSending=¿Está certo de querer validar esta expedición coa refe ConfirmCancelSending=¿Está certo de querer anular esta expedición? DocumentModelMerou=Modelo Merou A5 WarningNoQtyLeftToSend=Alerta, ningún produto agardando para ser enviado. -StatsOnShipmentsOnlyValidated=As estatísticas son só para envíos validados. A data utilizada é a data de validación do envío (non sempre é coñecida a data de entrega prevista) +StatsOnShipmentsOnlyValidated=As estatísticas son só para envíos validados. A data utilizada é a data de validación do envío (non sempre é coñecida a data de entrega prevista) DateDeliveryPlanned=Data prevista de entrega RefDeliveryReceipt=Ref. nota de entrega StatusReceipt=Estado nota de entrega @@ -53,7 +53,7 @@ SendShippingByEMail=Envío de expedición por correo electrónico SendShippingRef=Envío da expedición %s ActionsOnShipping=Eventos sobre a expedición LinkToTrackYourPackage=Ligazón para o seguimento do seu paquete -ShipmentCreationIsDoneFromOrder=Polo momento, a creación dun novo envío faise a partir do rexistro de pedimentos de venda. +ShipmentCreationIsDoneFromOrder=Polo momento, a creación dun novo envío faise a partir do rexistro de pedimentos de venda. ShipmentLine=Liña de expedición ProductQtyInCustomersOrdersRunning=Cantidade en pedimentos de clientes abertos ProductQtyInSuppliersOrdersRunning=Cantidade en pedimentos a provedores abertos @@ -63,6 +63,9 @@ NoProductToShipFoundIntoStock=Non se atopou ningún produto para enviar no almac WeightVolShort=Peso/Vol. ValidateOrderFirstBeforeShipment=Antes de poder realizar envíos debe validar o pedimento. NoLineGoOnTabToAddSome=Sen liña, vai á lapela "%s" para engadir +CreateInvoiceForThisCustomerFromSendings=Crear facturas +IfValidateInvoiceIsNoSendingStayUnbilled=Se a validación da factura é "Non", o envío permanecerá no estado "Non facturado" ata que se valide a factura. +OptionToSetSendingBilledNotEnabled=A opción do módulo Fluxo de traballo, para establecer o envío como 'Facturado' automaticamente cando se valida a factura, non está habilitada, polo que terá que configurar o estado dos envíos en 'Facturado' manualmente despois de xerar a factura. # Sending methods # ModelDocument @@ -71,16 +74,12 @@ DocumentModelStorm=Modelo de documento máis completo para a compatibilidade de Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constante EXPEDITION_ADDON_NUMBER no definida SumOfProductVolumes=Suma do volume dos produtos SumOfProductWeights=Suma do peso dos produtos - # warehouse details DetailWarehouseNumber= Detalles do almacén DetailWarehouseFormat= Alm.:%s (Cant. : %d) SHIPPING_DISPLAY_STOCK_ENTRY_DATE=Mostra a última data de entrada en stock durante a creación do envío para o número de serie ou o lote CreationOptions=Opcións dispoñibles durante a creación do envío - ShipmentDistribution=Distribución do envío - ErrorTooManyCombinationBatchcode=Non hai envío para a liña %s xa que se atoparon demasiadas combinacións de código de almacén, produto e lote (%s). ErrorNoCombinationBatchcode=Non se puido gardar a liña %s como a combinación de almacén-produto-lote/serie (%s, %s, %s) non se atopou en stock. - ErrorTooMuchShipped=A cantidade enviada non debe ser superior á cantidade solicitada para a liña %s diff --git a/htdocs/langs/gl_ES/stripe.lang b/htdocs/langs/gl_ES/stripe.lang index 02894cbacdf..d697c0fb2ee 100644 --- a/htdocs/langs/gl_ES/stripe.lang +++ b/htdocs/langs/gl_ES/stripe.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - stripe StripeSetup=Configuración do módulo Stripe -StripeDesc=Ofréza aos seus clientes unha páxina de pagamentos en liña para pagamentoss con tarxetas de crédito/débito a través de ``Stripe. Isto pódese usar para permitir que os seus clientes realicen pagamentos ad hoc ou para pagamentos relacionados cun obxecto Dolibarr en particular (factura, pedimento, ...) +StripeDesc=Ofréza aos seus clientes unha páxina de pagamentos en liña para pagamentoss con tarxetas de crédito/débito a través de ``Stripe. Isto pódese usar para permitir que os seus clientes realicen pagamentos ad hoc ou para pagamentos relacionados cun obxecto Dolibarr en particular (factura, pedimento, ...) StripeOrCBDoPayment=Pagar con tarxeta de crédito ou Stripe FollowingUrlAreAvailableToMakePayments=As seguintes URL están dispoñibles para ofrecer unha páxina a un cliente no que facer un pagamento de obxectos Dolibarr PaymentForm=Forma de pagamento @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL para ofrecer unha páxina de paga ToOfferALinkForOnlinePaymentOnFreeAmount=URL para ofrecer unha páxina de pagamento en liña de %s de calquera cantidade sen ningún obxecto existente ToOfferALinkForOnlinePaymentOnMemberSubscription=URL para ofrecer unha páxina de pagamento en liña %s para unha subscrición de membro ToOfferALinkForOnlinePaymentOnDonation=URL para ofrecer unha páxina de pagamento en liña %s para o pagamento dunha doazón/subvención -YouCanAddTagOnUrl=Tamén pode engadir o parámetro URL &tag=valore a calquera deses URL (obrigatorio só para o pagamento non ligado a un obxecto) para engadir a súa propia etiqueta de comentario de pagamento.
Para a URL de pagamentos sen ningún obxecto existente, tamén pode engadir o parámetro &noidempotency=1 para que a mesma ligazón coa mesma etiqueta poida usarse varias veces (algúns modos de pagamento poden limitar o pagamento a 1 por cada ligazón diferente sen este parámetro) +YouCanAddTagOnUrl=Tamén pode engadir o parámetro url &tag=value a calquera destes URL (obrigatorio só para o pagamento non ligado a un obxecto ) para engadir a súa propia etiqueta de comentario de pagamento.
Para o URL dos pagamentos sen obxecto existente, tamén pode engadir o parámetro &noidempotency=1 polo que a mesma ligazón coa mesma etiqueta pode usarse varias veces (algún modo de pagamento pode limitar o pagamento a 1 para cada ligazón diferente sen este parámetro) +YouCanEmbedOnWebsite=Se quere integrar a páxina de pagamento nun sitio web de Dolibarr, pode incluír os seguintes parámetros: &ws=website_ref .
, Adicionalmente dúas páxinas chamadaspaymentok e paymentko

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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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">
+YouCanEditHtmlSource=
Pode incluír código PHP nesta fonte usando as etiquetas <?php ?> . Están dispoñibles as seguintes variables globais: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

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

Pode facer unha redirección a outra páxina/contedor coa seguinte sintaxe (Nota: non saque ningún contido antes dunha redirección):
<?php redirectToContainer(' alias_of_container_to_redirect_to'); ?>
Tamén pode facer unha redirección cos parámetros GET:
<?php redirectToContainer('alias_to_recontainerto_to' 0, 0, $array_of_get_params); ?>

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

Pode establecer dinámicamente o título da páxina e metaetiquetas de SEO (título, palabras clave, descrición ). Simplemente defina as seguintes variables:
$__PAGE__TITLE__ = "Valor do título..."
$__PAGE__KEYWORDS__ = "palabra clave1, palabra clave2, palabra clave3..."; // Separado por coma
$___PAGE =_Descrición ;


Para incluír unha ligazón de descarga almacenado no directorio documents, use o document.php wrapper:
Exemplo, para un ficheiro en documentos/ecm (precisa rexistrarse), a sintaxe é:
<a="/document.php?modulepart=ecm&file=[ relative_dir/]filename.ext">
Para un ficheiro documentos/medios (directorio aberto para acceso público), a sintaxe é:
< /span>a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
Para un ficheiro compartido cunha ligazón para compartir (acceso aberto usando a chave hash para compartir do ficheiro), a sintaxe é:
<a href="/document.php?hashp=publicsharekeyoffile"> >
YouCanEditHtmlSource1=
Para incluír unha imaxe almacenada no directorio de documentos , use o viewimage.php.wrapper
Por exemplo, 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=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 ...">
YouCanEditHtmlSource3=Para obter o URL da imaxe dun obxecto PHP, use
<< span>img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/he_IL/admin.lang b/htdocs/langs/he_IL/admin.lang index 9816ae94595..7e2055a436c 100644 --- a/htdocs/langs/he_IL/admin.lang +++ b/htdocs/langs/he_IL/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=הפרמטרים חייבים להיות ObjectName:Classpath
תחביר: ObjectName:Classpath ExtrafieldParamHelpSeparator=שמור ריק עבור מפריד פשוט
הגדר את זה ל-1 עבור מפריד מתמוטט (פתוח כברירת מחדל עבור הפעלה חדשה, ואז הסטטוס נשמר עבור כל הפעלה של משתמש)
הגדר את זה ל-2 עבור מפריד מכווץ (כווץ כברירת מחדל עבור הפעלה חדשה, ואז הסטטוס נשמר לפני כל הפעלת משתמש) LibraryToBuildPDF=ספרייה המשמשת ליצירת PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s ואחריו שם הלקוח הקטוע ב ModuleCompanyCodeSupplierDigitaria=%s ואחריו שם הספק הקטוע במספר התווים: %s עבור קוד החשבונאות של הספק. Use3StepsApproval=כברירת מחדל, הזמנות רכש צריכות להיווצר ולאשר על ידי 2 משתמשים שונים (שלב/משתמש אחד ליצירה ושלב/משתמש אחד לאישור. שימו לב שאם למשתמש יש גם הרשאה ליצור וגם לאשר, שלב/משתמש אחד יספיק). . אתה יכול לבקש עם אפשרות זו להציג שלב שלישי/אישור משתמש, אם הסכום גבוה מערך ייעודי (לכן יהיה צורך ב-3 שלבים: 1=אימות, 2=אישור ראשון ו-3=אישור שני אם הסכום מספיק).
הגדר את זה לריק אם אישור אחד (2 שלבים) מספיק, הגדר אותו לערך נמוך מאוד (0.1) אם תמיד נדרש אישור שני (3 שלבים). UseDoubleApproval=השתמש באישור בן 3 שלבים כאשר הסכום (ללא מס) גבוה מ... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- חלק מספקי שירותי הדוא"ל (כמו Yahoo) אינם מאפשרים לך לשלוח דוא"ל משרת אחר מאשר השרת שלהם. ההגדרה הנוכחית שלך משתמשת בשרת של היישום כדי לשלוח דוא"ל ולא בשרת של ספק הדוא"ל שלך, כך שחלק מהנמענים (זה התואם לפרוטוקול ה-DMARC המגביל), ישאלו את ספק הדוא"ל שלך אם הם יכולים לקבל את הדוא"ל שלך וחלק מספקי הדוא"ל שלך (כמו יאהו) עשוי להגיב "לא" מכיוון שהשרת אינו שלהם, כך שמעט מהאימיילים שנשלחו לא יתקבלו למשלוח (היזהר גם ממכסת השליחה של ספק הדוא"ל שלך). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- השימוש בשרת ה-SMTP של ספק שירותי הדוא"ל שלך לשליחת אימיילים הוא גם מעניין, כך שכל האימיילים שנשלחו מהאפליקציה יישמרו גם בספריית "נשלח" שלך בתיבת הדואר שלך. WarningPHPMailD=לכן מומלץ לשנות את שיטת שליחת המיילים לערך "SMTP". WarningPHPMailDbis=אם אתה באמת רוצה לשמור על שיטת ברירת המחדל "PHP" לשליחת אימיילים, פשוט התעלם מהאזהרה זו, או הסר אותה על ידי %sלחיצה כאן%s. WarningPHPMail2=אם ספק הדוא"ל SMTP שלך צריך להגביל את לקוח הדוא"ל לכמה כתובות IP (נדיר מאוד), זוהי כתובת ה-IP של סוכן משתמש הדואר (MUA) עבור יישום ה-ERP CRM שלך: %s. -WarningPHPMailSPF=אם שם הדומיין בכתובת הדוא"ל של השולח שלך מוגן ברשומת SPF (שאל את רישום שם הדומיין שלך), עליך להוסיף את כתובות ה-IP הבאות ברשומת ה-SPF של ה-DNS של הדומיין שלך: %s. -ActualMailSPFRecordFound=נמצאה רשומת SPF בפועל (עבור דוא"ל %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=לחץ כדי להציג תיאור DependsOn=מודול זה צריך את המודול/ים RequiredBy=מודול זה נדרש על ידי מודולים @@ -867,7 +868,7 @@ Permission255=שינוי סיסמה משתמשים אחרים Permission256=מחיקה או ביטול של משתמשים אחרים Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=הרחב את הגישה לכל הצדדים השלישיים ללא האובייקטים שלהם (לא רק לצדדים שלישיים שעבורם המשתמש הוא נציג מכירה).
לא יעיל עבור משתמשים חיצוניים (תמיד מוגבל לעצמם להצעות, הזמנות, חשבוניות, חוזים וכו').
לא יעיל עבור פרויקטים (רק כללים בנושא הרשאות פרויקט, נראות והקצאה). Permission271=לקרוא CA Permission272=לקרוא חשבוניות @@ -944,7 +945,7 @@ Permission776=תשלום דוחות הוצאות Permission777=קרא את כל דוחות ההוצאות (גם אלה של משתמשים שאינם כפופים) Permission778=צור/שנה דוחות הוצאות של כולם Permission779=יצוא דוחות הוצאות -Permission1001=לקרוא מניות +Permission1001=Read warehouses and stocks Permission1002=יצירת/שינוי מחסנים Permission1003=מחק מחסנים Permission1004=לקרוא תנועות של מניות @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=מסנן Regex לניקוי ערך (COMPANY_DIGITA DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=נקה מילים מסוימות בעת יצירת חשבונות משנה עבור לקוחות או ספקים RemoveSpecialWordsHelp=ציין את המילים שיש לנקות לפני חישוב חשבון הלקוח או הספק. תשתמש ב ";" בין כל מילה -GDPRContact=קצין הגנת נתונים (DPO, איש קשר לפרטיות נתונים או GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=אם אתה מאחסן נתונים אישיים במערכת המידע שלך, תוכל למנות את איש הקשר האחראי על תקנת הגנת המידע הכללית כאן HelpOnTooltip=טקסט עזרה להצגה בתיאור כלי HelpOnTooltipDesc=שים טקסט או מפתח תרגום כאן כדי שהטקסט יופיע בהסבר כלים כאשר שדה זה מופיע בטופס @@ -2218,7 +2219,7 @@ CreateCandidature=צור מועמדות לעבודה FormatZip=רוכסן MainMenuCode=קוד כניסה לתפריט (תפריט ראשי) ECMAutoTree=הצג עץ ECM אוטומטי -OperationParamDesc=הגדר את הכללים לשימוש כדי לחלץ כמה נתונים או הגדר ערכים לשימוש עבור הפעולה.

דוגמה לחילוץ שם חברה מ נושא דוא"ל למשתנה זמני:
tmp_var=EXTRACT:SUBJECT:הודעה מהחברה ([^\n]*)

דוגמאות להגדרת המאפיינים של אובייקט ליצירה:
objproperty1=SET:ערך מקודד קשיח
objproperty2=SET:__tmp_var__
objproperty3:aSETIFEMP מוגדר רק אם המאפיין לא מוגדר כבר)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:שם החברה שלי הוא\\ s([^\\s]*)

השתמש בשורה חדשה כדי לחלץ או להגדיר מספר מאפיינים. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=שעות פתיחה OpeningHoursDesc=הזן כאן את שעות הפתיחה הרגילות של החברה שלך. ResourceSetup=תצורה של מודול משאבים @@ -2264,7 +2265,7 @@ LargerThan=גדול מ IfTrackingIDFoundEventWillBeLinked=שים לב שאם נמצא מזהה מעקב של אובייקט בדוא"ל, או אם האימייל הוא תשובה לאימייל שכבר נאסף ומקושר לאובייקט, האירוע שנוצר יקושר אוטומטית לאובייקט הקשור הידוע. WithGMailYouCanCreateADedicatedPassword=עם חשבון GMail, אם הפעלת את אימות 2 השלבים, מומלץ ליצור סיסמה שנייה ייעודית לאפליקציה במקום להשתמש בסיסמת החשבון שלך מ-https://myaccount.google.com/. EmailCollectorTargetDir=ייתכן שזו התנהגות רצויה להעביר את האימייל לתג/ספרייה אחרת כאשר הוא עובד בהצלחה. פשוט הגדר את שם הספרייה כאן כדי להשתמש בתכונה זו (אל תשתמש בתווים מיוחדים בשם). שימו לב שעליכם להשתמש גם בחשבון התחברות לקריאה/כתיבה. -EmailCollectorLoadThirdPartyHelp=אתה יכול להשתמש בפעולה זו כדי להשתמש בתוכן האימייל כדי למצוא ולטעון צד שלישי קיים במסד הנתונים שלך (החיפוש יתבצע במאפיין המוגדר בין 'id','name','name_alias','email'). הצד השלישי שנמצא (או נוצר) ישמש לפעולות הבאות שזקוקות לכך.
לדוגמה, אם ברצונך ליצור צד שלישי עם שם שחולץ ממחרוזת ' שם: שם למצוא' קיים בגוף, השתמש בדוא"ל השולח בתור דוא"ל, אתה יכול להגדיר את שדה הפרמטרים כך:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=אזהרה: שרתי דוא"ל רבים (כמו Gmail) מבצעים חיפוש מילים מלאות בעת חיפוש על מחרוזת ולא יחזירו תוצאה אם המחרוזת נמצאת רק בחלקה של מילה. גם מסיבה זו, השימוש בתווים מיוחדים בקריטריוני חיפוש יתעלם אם הם אינם חלק ממילים קיימות.
כדי לבצע חיפוש אי הכללה על מילה (החזר דוא"ל אם מילה לא נמצא), אתה יכול להשתמש ב-! תו לפני המילה (ייתכן שלא יפעל בשרתי דואר מסוימים). EndPointFor=נקודת סיום עבור %s : %s DeleteEmailCollector=מחק את אספן האימייל @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=שם צד שלישי - כינוי צד שלישי ALIAS_THIRDPARTY=כינוי צד שלישי - שם צד שלישי PDFIn2Languages=הצג תוויות ב-PDF ב-2 שפות שונות (ייתכן שתכונה זו לא תעבוד עבור כמה שפות) PDF_USE_ALSO_LANGUAGE_CODE=אם אתה רוצה שישכפלו כמה טקסטים ב-PDF שלך ב-2 שפות שונות באותו PDF שנוצר, עליך להגדיר כאן את השפה השנייה הזו כך שה-PDF שנוצר יכיל 2 שפות שונות באותו עמוד, זו שנבחרה בעת יצירת PDF והזו ( רק מעט תבניות PDF תומכות בכך). השאר ריק עבור שפה אחת לכל PDF. -PDF_USE_A=צור מסמכי PDF בפורמט PDF/A במקום PDF בפורמט ברירת המחדל +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=הזן כאן את הקוד של אייקון FontAwesome. אם אתה לא יודע מה זה FontAwesome, אתה יכול להשתמש ב-fa-address-book עם הערך הגנרי. RssNote=הערה: כל הגדרת הזנת RSS מספקת ווידג'ט שעליך להפעיל כדי שיהיה זמין בלוח המחוונים JumpToBoxes=קפוץ להגדרה -> ווידג'טים @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/he_IL/datapolicy.lang b/htdocs/langs/he_IL/datapolicy.lang index 06069906cf1..68ec463539f 100644 --- a/htdocs/langs/he_IL/datapolicy.lang +++ b/htdocs/langs/he_IL/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = מדיניות פרטיות נתונים # Module description 'ModuledatapolicyDesc' Module4100Desc = מודול לניהול פרטיות נתונים (תאימות ל-GDPR) - -# # Administration page -# datapolicySetup = הגדרת מדיניות פרטיות של נתוני מודול Deletion = מחיקת נתונים datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = פרוספקט/לקוח DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = גם לא לקוח פוטנציאלי/לא לקוח DATAPOLICY_CONTACT_FOURNISSEUR = ספק DATAPOLICY_ADHERENT = חבר -DATAPOLICY_Tooltip_SETUP = סוג איש קשר - ציין את הבחירות שלך עבור כל סוג. -DATAPOLICYMail = הגדרת מיילים -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = תוכן המייל -DATAPOLICYSUBSITUTION = אתה יכול להשתמש במשתנים הבאים במייל שלך (LINKACCEPT מאפשר ליצור קישור המתעד את הסכמת האדם, LINKREFUSED מאפשר לרשום את הסירוב של האדם): -DATAPOLICYACCEPT = הודעה לאחר הסכם -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = אתה יכול לשלוח דוא"ל GDPR לכל אנשי הקשר הרלוונטיים שלך (שעדיין לא קיבלו דוא"ל ועבורם לא רשמת שום דבר על הסכם ה-GDPR שלהם). לשם כך, השתמש בכפתור הבא. SendAgreement = לשלוח מיילים AllAgreementSend = כל המיילים נשלחו TXTLINKDATAPOLICYACCEPT = טקסט לקישור "הסכם" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: עיבוד נתונים אישיים DATAPOLICY_consentement = הסכמה שהתקבלה לעיבוד נתונים אישיים DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = הפוך צד שלישי לאנונימי -DATAPOLICY_POPUP_ANONYME_TEXTE = אינך יכול למחוק איש קשר זה מ-Dolibarr מכיוון שיש פריטים קשורים. בהתאם ל-GDPR, אתה תהפוך את כל הנתונים הללו לאנונימיים כדי לכבד את ההתחייבויות שלך. תרצה להמשיך ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = ניידות GDPR -DATAPOLICY_PORTABILITE_TITLE = ייצוא נתונים אישיים -DATAPOLICY_PORTABILITE_CONFIRMATION = אתה רוצה לייצא את הנתונים האישיים של איש קשר זה. האם אתה בטוח ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = עשה אנונימי את %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = שלח דוא"ל GDPR MailSent = דוא"ל נשלח - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/he_IL/dict.lang b/htdocs/langs/he_IL/dict.lang index eb16989bcb1..9d07329b577 100644 --- a/htdocs/langs/he_IL/dict.lang +++ b/htdocs/langs/he_IL/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=פרנק CFP CurrencySingXPF=פרנק CFP CurrencyCentEUR=סנטים CurrencyCentSingEUR=סֶנט -CurrencyCentINR=פאיסה -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=אָלְפִּית #### Input reasons ##### DemandReasonTypeSRC_INTE=מרשתת diff --git a/htdocs/langs/he_IL/errors.lang b/htdocs/langs/he_IL/errors.lang index c9f8857649d..76df0555683 100644 --- a/htdocs/langs/he_IL/errors.lang +++ b/htdocs/langs/he_IL/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=יש להקצות למשתמש למשימה כדי ל ErrorTaskAlreadyAssigned=המשימה כבר הוקצתה למשתמש ErrorModuleFileSeemsToHaveAWrongFormat=נראה שלחבילת המודול יש פורמט שגוי. ErrorModuleFileSeemsToHaveAWrongFormat2=לפחות ספריית חובה אחת חייבת להתקיים ב-zip של מודול: %s או %s -ErrorFilenameDosNotMatchDolibarrPackageRules=השם של חבילת המודול (%s) אינו תואם תחביר שם צפוי: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=שגיאה, שכפל את שם הטריגר %s. נטען כבר מ-%s. ErrorNoWarehouseDefined=שגיאה, לא הוגדרו מחסנים. ErrorBadLinkSourceSetButBadValueForRef=הקישור שבו אתה משתמש אינו חוקי. 'מקור' לתשלום מוגדר, אבל הערך עבור 'ref' אינו חוקי. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/he_IL/mails.lang b/htdocs/langs/he_IL/mails.lang index 81d38143ed9..9619332a6d2 100644 --- a/htdocs/langs/he_IL/mails.lang +++ b/htdocs/langs/he_IL/mails.lang @@ -32,6 +32,8 @@ NewMailing=מייל חדש NewSMSing=New smsing EditMailing=ערוך מיילים ResetMailing=שלח שוב מייל +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=מחק אימייל PreviewMailing=תצוגה מקדימה של שליחת אימייל CreateMailing=צור אימייל @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=נמען הדוא"ל ריק WarningNoEMailsAdded=אין אימייל חדש להוסיף לרשימת הנמען. ConfirmValidMailing=האם אתה בטוח שברצונך לאמת את הודעת האימייל הזו? ConfirmResetMailing=אזהרה, על ידי אתחול מחדש של שליחת דוא"ל %s, תאפשר שליחה חוזרת של דוא"ל זה בדואר בכמות גדולה. האם אתה בטוח שאתה רוצה לעשות זאת? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=האם אתה בטוח שברצונך למחוק את הודעת האימייל הזו? NbOfUniqueEMails=מספר אימיילים ייחודיים NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=אין עוד נמען לשלוח אליו את המיי EmailOptedOut=בעל האימייל ביקש לא ליצור איתו קשר עם האימייל הזה יותר EvenUnsubscribe=כלול הודעות אימייל לביטול הסכמה EvenUnsubscribeDesc=כלול הודעות אימייל לביטול הסכמה כשאתה בוחר הודעות דוא"ל כיעדים. שימושי עבור דוא"ל שירות חובה למשל. -XEmailsDoneYActionsDone=%s הודעות דוא"ל מוסמכות מראש, הודעות דוא"ל %s עובדו בהצלחה (עבור רשומה %s /פעולות שנעשו) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/he_IL/stripe.lang b/htdocs/langs/he_IL/stripe.lang index 7a00246cf80..a1ea7b3a228 100644 --- a/htdocs/langs/he_IL/stripe.lang +++ b/htdocs/langs/he_IL/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=כתובת אתר להציע %s דף ToOfferALinkForOnlinePaymentOnFreeAmount=כתובת אתר להציע %s דף תשלום מקוון בכל סכום ללא אובייקט קיים ToOfferALinkForOnlinePaymentOnMemberSubscription=כתובת אתר להציע %s דף תשלום מקוון עבור מנוי חבר ToOfferALinkForOnlinePaymentOnDonation=כתובת אתר להציע %s דף תשלום מקוון לתשלום תרומה -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) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=הגדר את ה-Stripe שלך עם כתובת האתר %s כדי ליצור את התשלום באופן אוטומטי מאומת על ידי Stripe. AccountParameter=פרמטרים של חשבון UsageParameter=פרמטרי שימוש @@ -77,4 +78,13 @@ TERMINAL_LOCATION=מיקום (כתובת) עבור מסופי Stripe RequestDirectDebitWithStripe=בקש הוראת קבע עם Stripe RequesCreditTransferWithStripe=בקש העברת אשראי עם Stripe STRIPE_SEPA_DIRECT_DEBIT=אפשר את תשלומי הוראת קבע דרך Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=מצב Stripe Connect +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/hr_HR/admin.lang b/htdocs/langs/hr_HR/admin.lang index 7d0bd17cc0f..9d3ea3d4881 100644 --- a/htdocs/langs/hr_HR/admin.lang +++ b/htdocs/langs/hr_HR/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Popis vrijednosti mora biti redak s formatom ključ,vr ExtrafieldParamHelpcheckbox=Popis vrijednosti moraju biti linije sa strukturom ključ,vrijednost (ključ ne može biti '0')

na primjer:
1,vrijednost1
2,vrijednost2
3,vrijednost3
... ExtrafieldParamHelpradio=Popis vrijednosti moraju biti linije sa strukturom ključ,vrijednost (ključ ne može biti '0')

na primjer:
1,vrijednost1
2,vrijednost2
3,vrijednost3
... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametri moraju biti ObjectName:Classpath
Sintaksa: ObjectName:Classpath ExtrafieldParamHelpSeparator=Ostavite prazno za jednostavan separator
Postavite ovo na 1 za sažimajući separator (otvoreno prema zadanim postavkama za novu sesiju, a status se čuva za svaku korisničku sesiju)
Postavite ovo na 2 za sažimajući separator (sažeto prema zadanim postavkama za novu sesiju, a zatim status se čuva za svaku korisničku sesiju) LibraryToBuildPDF=Biblioteka korištena za kreiranje PDF-a @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s nakon čega slijedi skraćeno ime kupca po ModuleCompanyCodeSupplierDigitaria=%s nakon čega slijedi skraćeno ime dobavljača po broju znakova: %s za obračunski kod dobavljača. Use3StepsApproval=Prema zadanim postavkama, narudžbenice moraju biti izrađene i odobrene od strane 2 različita korisnika (jedan korak po korisniku do izradi i jedan korak po korisniku za odobrenje. Imajte na umu da ako korisnik ima oba dopuštenja za izradi i odobri, jedan korak/korisnik će biti dovoljan). Ovom opcijom možete zatražiti uvođenje trećeg koraka/korisničkog odobrenja, ako je iznos veći od namjenske vrijednosti (pa će biti potrebna 3 koraka: 1=potvrda, 2=prvo odobrenje i 3=drugo odobrenje ako je iznos dovoljan).
Postavite ovo na prazno ako je jedno odobrenje (2 koraka) dovoljno, postavite ga na vrlo nisku vrijednost (0,1) ako uvijek je potrebno drugo odobrenje (3 koraka). UseDoubleApproval=Koristi 3 koraka odobravanja kada je iznos (bez poreza) veći od... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Neki davatelji usluga e-pošte (kao što je Yahoo) ne dopuštaju vam slanje e-pošte s drugog poslužitelja osim s njihovog vlastitog poslužitelja. Vaša trenutna postavka koristi poslužitelj aplikacije za slanje e-pošte, a ne poslužitelj vašeg davatelja e-pošte, tako da će neki primatelji (onaj koji je kompatibilan s restriktivnim DMARC protokolom) pitati vašeg davatelja e-pošte može li prihvatiti vašu e-poštu, a neki davatelji e-pošte (poput Yahooa) može odgovoriti "ne" jer poslužitelj nije njihov, tako da nekoliko vaših poslanih e-poruka možda neće biti prihvaćeno za isporuku (pazite i na kvotu slanja vašeg davatelja e-pošte). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Korištenje SMTP poslužitelja vašeg vlastitog davatelja usluga e-pošte za slanje e-pošte također je zanimljivo tako da će sve e-poruke poslane iz aplikacije također biti spremljene u vaš direktorij "Poslano" vašeg poštanskog sandučića. WarningPHPMailD=Stoga se preporuča promijeniti način slanja e-pošte na vrijednost "SMTP". WarningPHPMailDbis=Ako stvarno želite zadržati zadanu "PHP" metodu za slanje e-pošte, samo zanemarite ovo upozorenje ili je uklonite %sklikom ovdje%s. 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 stvarni SPF zapis (za e-pošta %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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) @@ -867,7 +868,7 @@ Permission255=Izmjeni lozinku ostalih korisnika Permission256=Obriši ili isključi ostale korisnike Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Proširiti pristup svim trećim stranama BEZ njihovih objekata (ne samo trećim osobama za koje je korisnik prodajni zastupnik).
Nije učinkovito za vanjske korisnike (uvijek ograničeni na sebe za prijedloge, narudžbe, fakture, ugovore itd.).
Nije učinkovito za projekte (važna su samo pravila o projektnim dozvolama, vidljivosti i dodjeli). Permission271=Čitaj CA Permission272=Čitaj račune @@ -944,7 +945,7 @@ Permission776=Isplati izvještaje troškova Permission777=Pročitajte sva izvješća o troškovima (čak i ona korisnika koji nisu podređeni) Permission778=Izradite/izmijenite izvješća o troškovima svih Permission779=Izvezi izvještaje troškova -Permission1001=Čitaj zalihe +Permission1001=Read warehouses and stocks Permission1002=Izradi/izmjeni skladišta Permission1003=Obriši skladišta Permission1004=Čitaj kretanja zaliha @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Redovni izraz za čišćenje vrijednosti (COMPANY_ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Očistite određene riječi prilikom generiranja podračuna za kupce ili dobavljače RemoveSpecialWordsHelp=Odredite riječi koje treba očistiti prije izračunavanja računa kupca ili dobavljača. Koristi ";" između svake riječi -GDPRContact=Službenik za zaštitu podataka (DPO, kontakt za privatnost podataka ili GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ako u svom Informacijskom sustavu pohranjujete osobne podatke, ovdje možete navesti kontakt odgovornog za Opću uredbu o zaštiti podataka HelpOnTooltip=Tekst pomoći za prikaz u opisu alata HelpOnTooltipDesc=Ovdje stavite tekst ili ključ za prijevod kako bi se tekst prikazao u opisu alata kada se ovo polje pojavi u obrascu @@ -2218,7 +2219,7 @@ CreateCandidature=Napravite prijavu za posao FormatZip=PBR MainMenuCode=Kôd za unos izbornika (glavni izbornik) ECMAutoTree=Prikaži automatsko ECM stablo -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Radno vrijeme OpeningHoursDesc=Ovdje unesite redovno radno vrijeme Vaše tvrtke. ResourceSetup=Konfiguracija modula resursa @@ -2264,7 +2265,7 @@ LargerThan=Veće od IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into email, or if the email is an answer of an email already collected and linked to an object, the created event will be automatically linked to the known related object. WithGMailYouCanCreateADedicatedPassword=S GMail računom, ako ste omogućili provjeru valjanosti u 2 koraka, preporučuje se izradi namjenska druga lozinka za aplikaciju umjesto korištenja vlastite lozinke računa s https://myaccount .google.com/. EmailCollectorTargetDir=Možda bi bilo poželjno premjestiti e-pošta u drugi oznaka/direktorij nakon što je uspješno obrađen. Ovdje samo postavite ime direktorija da biste koristili ovu značajku (NEMOJTE koristiti posebne znakove u imenu). Imajte na umu da također morate koristiti račun za prijavu za čitanje/pisanje. -EmailCollectorLoadThirdPartyHelp=Ovu radnju možete upotrijebiti za korištenje sadržaja e-pošta za pronalaženje i učitavanja postojeće treće strane u vašoj bazi podataka (pretražit će se na definiranom svojstvu između 'id','name','name_alias','e-pošta'). Pronađena (ili stvorena) treća strana koristit će se za sljedeće radnje koje to trebaju.
Na primjer, ako želite izradi treća strana s imenom izdvojenim iz niza 'Ime: ime za pronalaženje' prisutna u tijelu, koristite pošiljatelja e-pošta kao e-pošta, polje parametra možete postaviti ovako:
'e-pošta=HEADER:^From:(.*) ;name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Upozorenje: mnogi e-pošta poslužitelji (poput Gmaila) traže punu riječ kada pretraživanje niza i neće vratiti rezultat ako se niz nalazi samo djelomično u riječi. Iz tog razloga također, upotreba posebnih znakova u kriteriju pretraživanja bit će zanemarena ako nisu dio postojećih riječi.
Da biste izvršili izuzimanje pretraživanja riječi (vrati e-pošta ako riječ nije pronađena), možete koristiti ! znak prije riječi (možda neće raditi na nekim poslužiteljima e-pošte). EndPointFor=Krajnja točka za %s : %s DeleteEmailCollector=Izbriši sakupljač e-pošte @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Ime treće strane - alias treće strane ALIAS_THIRDPARTY=Alias treće strane - Ime treće strane PDFIn2Languages=Prikaži oznake u PDF-u na 2 različita jezika (ova značajka možda neće raditi za nekoliko jezika) PDF_USE_ALSO_LANGUAGE_CODE=Ako želite imati neke tekstove u vašem PDF-u duplicirane na 2 različita jezika u istom generiranom PDF-u, morate ovdje postaviti ovaj drugi jezik tako da će generirani PDF sadržavati 2 različita jezika na istoj stranici, onom odabranom prilikom generiranja PDF-a i ovaj (ovo podržava samo nekoliko PDF predložaka). Ostavite prazno za 1 jezik po PDF-u. -PDF_USE_A=Generirajte PDF dokumente s formatom PDF/A umjesto zadanog formata PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Ovdje unesite kod ikone FontAwesome. Ako ne znate što je FontAwesome, možete koristiti generičku vrijednost fa-address-book. RssNote=Napomena: Svaka definicija RSS feeda pruža widget koji morate omogućiti da bi bio dostupan na nadzornoj ploči JumpToBoxes=Skočite na Postavljanje -> Widgeti @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/hr_HR/commercial.lang b/htdocs/langs/hr_HR/commercial.lang index 2b484e966e6..80de6cba9c6 100644 --- a/htdocs/langs/hr_HR/commercial.lang +++ b/htdocs/langs/hr_HR/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Jeste li sigurni da želite izbrisati ovaj događaj ? CardAction=Kartica događaja ActionOnCompany=Povezana tvrtka ActionOnContact=Vezani kontakt +ActionOnUser=Related user TaskRDVWith=Sastanak sa %s ShowTask=Prikaži zadatak ShowAction=Prikaži događaj @@ -31,7 +32,7 @@ ListOfProspects=Popis mogućih kupaca ListOfCustomers=Popis kupaca LastDoneTasks=Zadnjih %s izvršenih zadataka LastActionsToDo=Najstarijih %s neizvršenih zadataka -DoneAndToDoActions=Završeni događaji i za odraditi +DoneAndToDoActions=Završeni događaji i za odraditi DoneActions=Završeni događaji ToDoActions=Nedovršeni događaji SendPropalRef=Ponuda %s @@ -47,7 +48,6 @@ LastProspectToContact=Kontaktiraj LastProspectContactInProcess=Kontakti u obradi LastProspectContactDone=Kontak završen ActionAffectedTo=Događaj dodjeljen -ActionDoneBy=Događaj odradio ActionAC_TEL=Telefonski poziv ActionAC_FAX=Pošalji faks ActionAC_PROP=Pošalji ponudu poštom @@ -78,16 +78,25 @@ WelcomeOnOnlineSignaturePageProposal=Dobrodošli na stranicu za prihvaćanje kom WelcomeOnOnlineSignaturePageContract=Dobro došli na %s stranicu za potpisivanje PDF ugovora WelcomeOnOnlineSignaturePageFichinter=Dobro došli na %s interventnu stranicu za potpisivanje PDF-a WelcomeOnOnlineSignaturePageSociete_rib=Dobro došli na %s SEPA stranicu za potpisivanje PDF-a +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=Ovaj zaslon vam omogućuje da prihvatite i potpišete ili odbijete ponudu/komercijalni prijedlog ThisScreenAllowsYouToSignDocFromContract=Ovaj vam zaslon omogućuje online potpisivanje ugovora u PDF formatu. ThisScreenAllowsYouToSignDocFromFichinter=Ovaj vam zaslon omogućuje online potpisivanje intervencije u PDF formatu. ThisScreenAllowsYouToSignDocFromSociete_rib=Ovaj vam zaslon omogućuje online potpisivanje SEPA naloga u PDF formatu. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=Ovo je informacija o dokumentu koji treba prihvatiti ili odbiti ThisIsInformationOnDocumentToSignContract=Ovo su informacije o ugovoru za potpisivanje ThisIsInformationOnDocumentToSignFichinter=Ovo je informacija o intervenciji na potpis ThisIsInformationOnDocumentToSignSociete_rib=Ovo su informacije o SEPA mandatu za potpisivanje +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Potpis ponude/komercijalnog prijedloga %s SignatureContractRef=Potpis ugovora %s SignatureFichinterRef=Potpis intervencije %s SignatureSociete_ribRef=Potpis SEPA mandata %s FeatureOnlineSignDisabled=Značajka za online potpisivanje onemogućena ili dokument generiran prije nego što je značajka omogućena +NoSignature=Nije potpisana +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/hr_HR/companies.lang b/htdocs/langs/hr_HR/companies.lang index c028ef676c1..3d74bedf85c 100644 --- a/htdocs/langs/hr_HR/companies.lang +++ b/htdocs/langs/hr_HR/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr korisničko ime NoDolibarrAccess=Nema pristup Dolibarr-u ExportDataset_company_1=Treće osobe\n(tvrtke/zaklade/fizičke osobe) i njihove osobine ExportDataset_company_2=Kontakti i njihova svojstva +ExportDataset_company_3=Bankovni računi trećih osoba ImportDataset_company_1=Treće osobe i njihove osobine ImportDataset_company_2=Dodatni kontakti/adrese i atributi trećih strana ImportDataset_company_3=Bankovni računi trećih osoba diff --git a/htdocs/langs/hr_HR/datapolicy.lang b/htdocs/langs/hr_HR/datapolicy.lang index 4d172600a7c..f310ecf442f 100644 --- a/htdocs/langs/hr_HR/datapolicy.lang +++ b/htdocs/langs/hr_HR/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Politika privatnosti podataka # Module description 'ModuledatapolicyDesc' Module4100Desc = Modul za upravljanje privatnošću podataka (sukladnost s GDPR-om) - -# # Administration page -# datapolicySetup = Podešavanje pravila o privatnosti podataka modula Deletion = Brisanje podataka datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Potencijalni/Kupac DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ni potencijalni/ni kupac DATAPOLICY_CONTACT_FOURNISSEUR = Dobavljač DATAPOLICY_ADHERENT = Član -DATAPOLICY_Tooltip_SETUP = Vrsta kontakta - navedite svoje izbore za svaku vrstu. -DATAPOLICYMail = Postavljanje e-pošte -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Sadržaj e-pošta -DATAPOLICYSUBSITUTION = Možete koristiti sljedeće varijable u svom e-pošta (LINKACCEPT omogućuje izradi vezu koja bilježi suglasnost osobe, LINKREFUSED to čini moguće zabilježiti odbijanje osobe): -DATAPOLICYACCEPT = Poruka nakon dogovora -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Možete poslati GDPR e-pošta svim svojim relevantnim kontaktima (koji još nisu primili e-pošta i za koje niste registrirali ništa o njihovom GDPR ugovoru). Da biste to učinili, koristite sljedeći gumb. SendAgreement = Pošaljite e-poštu AllAgreementSend = Svi e-mailovi su poslani TXTLINKDATAPOLICYACCEPT = Tekst za link "ugovor" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR : Obrada osobnih podataka DATAPOLICY_consentement = Dobivena suglasnost za obradu osobnih podataka DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonimizirajte treću stranu -DATAPOLICY_POPUP_ANONYME_TEXTE = Ne možete izbrisati ovaj kontakt iz Dolibarra jer postoje povezane stavke. U skladu s GDPR-om, učinit ćete sve ove podatke anonimnima kako biste poštivali svoje obveze. Želite li nastaviti? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Prenosivost GDPR -DATAPOLICY_PORTABILITE_TITLE = Iznos osobnih podataka -DATAPOLICY_PORTABILITE_CONFIRMATION = Želite izvesti osobne podatke ovog kontakta. Jesi li siguran ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Anonimizirao %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Pošalji GDPR e-pošta MailSent = e-pošta je poslano - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/hr_HR/dict.lang b/htdocs/langs/hr_HR/dict.lang index 4e8e4eb1ae8..59c3bc8c85c 100644 --- a/htdocs/langs/hr_HR/dict.lang +++ b/htdocs/langs/hr_HR/dict.lang @@ -137,7 +137,7 @@ CountryLV=Latvija CountryLB=Libanon CountryLS=Lesoto CountryLR=Liberija -CountryLY=Libya +CountryLY=Libija CountryLI=Liechtenstein CountryLT=Lithuania CountryLU=Luksemburg @@ -158,7 +158,7 @@ CountryMX=Meksiko CountryFM=Micronesia CountryMD=Moldavija CountryMN=Mongolia -CountryMS=Monserrat +CountryMS=Montserrat CountryMZ=Mozambik CountryMM=Mijanmar (Burma) CountryNA=Nambija @@ -295,8 +295,8 @@ CurrencyXPF=CFP Francs CurrencySingXPF=CFP Franc CurrencyCentEUR=centi CurrencyCentSingEUR=Cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=tisućuti #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/hr_HR/errors.lang b/htdocs/langs/hr_HR/errors.lang index f5706959f07..794f0303da4 100644 --- a/htdocs/langs/hr_HR/errors.lang +++ b/htdocs/langs/hr_HR/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Korisnik mora biti dodijeljen zadatku kako bi mogao u ErrorTaskAlreadyAssigned=Zadatak je već dodijeljen korisniku ErrorModuleFileSeemsToHaveAWrongFormat=Čini se da paket modula ima pogrešan format. ErrorModuleFileSeemsToHaveAWrongFormat2=Najmanje jedan obavezni direktorij mora postojati u zip modulu: %s ili %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Naziv paketa modula (%s) ne odgovara očekivana sintaksa naziva: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Pogreška, dupli naziv okidača %s. Već učitano s %s. ErrorNoWarehouseDefined=Greška, nema definiranih skladišta. ErrorBadLinkSourceSetButBadValueForRef=Link koji koristite nije valjan. 'Izvor' za plaćanje je definiran, ali vrijednost za 'ref' nije važeća. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/hr_HR/mails.lang b/htdocs/langs/hr_HR/mails.lang index 391a9e2dd31..a59e2beed10 100644 --- a/htdocs/langs/hr_HR/mails.lang +++ b/htdocs/langs/hr_HR/mails.lang @@ -32,6 +32,8 @@ NewMailing=Novo slanje e-pošte NewSMSing=New smsing EditMailing=Uredite e-poštu ResetMailing=Ponovno pošalji e-poštu +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Izbriši slanje e-pošte PreviewMailing=Pregled slanja e-poštom CreateMailing=izradi slanje e-pošte @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=e-pošta primatelj je prazan WarningNoEMailsAdded=Nema novih e-pošta za dodavanje na popis primatelja. ConfirmValidMailing=Jeste li sigurni da želite potvrditi ovu e-poruku? ConfirmResetMailing=Upozorenje, ponovnim pokretanjem slanja e-pošte %s, omogućit ćete ponovno slanje ovog e-pošta u masovnoj pošti. Jeste li sigurni da želite to učiniti? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Jeste li sigurni da želite izbrisati ovu e-poruku? NbOfUniqueEMails=Broj jedinstvenih e-poruka NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Nema više primatelja za slanje e-pošta EmailOptedOut=e-pošta vlasnik je zatražio da ga više ne kontaktira s ovim e-pošta EvenUnsubscribe=Uključite e-poruke za isključivanje EvenUnsubscribeDesc=Uključite e-poruke za isključivanje kada odaberete e-poštu kao ciljeve. Korisno, na primjer, za obavezne servisne e-poruke. -XEmailsDoneYActionsDone=%s e-pošte unaprijed kvalificirane, %s e-pošte uspješno obrađene (za %s zapis /obavljene radnje) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/hr_HR/stripe.lang b/htdocs/langs/hr_HR/stripe.lang index a1731639dfc..366e7f0bdae 100644 --- a/htdocs/langs/hr_HR/stripe.lang +++ b/htdocs/langs/hr_HR/stripe.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - stripe StripeSetup=Postavljanje Stripe modula -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, ...) +StripeDesc=Ponudite svojim klijentima stranicu za online plaćanje za plaćanja kreditnim/debitnim karticama putem Stripe. Ovo se može koristiti kako biste svojim klijentima omogućili ad-hoc plaćanja ili za plaćanja vezana uz određeni Dolibarr objekt (račun, narudžba, ...) StripeOrCBDoPayment=Platite kreditnom karticom ili Stripeom FollowingUrlAreAvailableToMakePayments=Following URLs are available to offer a page to a customer to make a payment on Dolibarr objects PaymentForm=Obrazac plaćanja @@ -13,59 +13,78 @@ STRIPE_PAYONLINE_SENDEMAIL=Obavijest e-poštom nakon pokušaja plaćanja (uspje Creditor=Kreditor PaymentCode=Kod plaćanja StripeDoPayment=Platite Stripeom -YouWillBeRedirectedOnStripe=You will be redirected on secured Stripe page to input you credit card information +YouWillBeRedirectedOnStripe=Bit ćete preusmjereni na zaštićenu Stripe stranicu za unos podataka o vašoj kreditnoj kartici Continue=Sljedeće ToOfferALinkForOnlinePayment=URL za %s plaćanje -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. +ToOfferALinkForOnlinePaymentOnOrder=URL za ponudu %s stranice za online plaćanje za prodajnu narudžbu +ToOfferALinkForOnlinePaymentOnInvoice=URL za ponudu %s stranice za online plaćanje za račun kupca +ToOfferALinkForOnlinePaymentOnContractLine=URL za ponudu %s stranice za online plaćanje za ugovornu liniju +ToOfferALinkForOnlinePaymentOnFreeAmount=URL za ponudu %s stranice za online plaćanje bilo kojeg iznosa bez postojećeg objekta +ToOfferALinkForOnlinePaymentOnMemberSubscription=URL za ponudu %s stranice za online plaćanje za član pretplatu +ToOfferALinkForOnlinePaymentOnDonation=URL za ponudu %s stranice za online plaćanje za uplatu donacije +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. +SetupStripeToHavePaymentCreatedAutomatically=Postavite svoj Stripe s url %s kako bi se plaćanje automatski kreiralo kada potvrdio Stripe. AccountParameter=Parametri računa UsageParameter=Parametri korištenja InformationToFindParameters=Pomoć za pronalaženje podataka o računu %s -STRIPE_CGI_URL_V2=Url of Stripe CGI module for payment +STRIPE_CGI_URL_V2=Url Stripe CGI modula za plaćanje CSSUrlForPaymentForm=CSS style sheet url for payment form -NewStripePaymentReceived=New Stripe payment received -NewStripePaymentFailed=New Stripe payment tried but failed +NewStripePaymentReceived=Primljena nova Stripe uplata +NewStripePaymentFailed=Pokušano je novo plaćanje Stripeom, ali nije uspjelo FailedToChargeCard=Naplata kartice nije uspjela -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 +STRIPE_TEST_SECRET_KEY=Tajni testni ključ +STRIPE_TEST_PUBLISHABLE_KEY=Testni ključ koji se može objaviti +STRIPE_TEST_WEBHOOK_KEY=Testni ključ web-dojavnika +STRIPE_LIVE_SECRET_KEY=Tajni živi ključ +STRIPE_LIVE_PUBLISHABLE_KEY=Ključ uživo koji se može objaviti +STRIPE_LIVE_WEBHOOK_KEY=Webhook ključ uživo +ONLINE_PAYMENT_WAREHOUSE=Zalihe koje se koriste za smanjenje zaliha kada se izvrši online plaćanje
(TODO Kada se izvrši opcija smanjenja zaliha na radnji na fakturi i online plaćanje samo generira fakturu?) +StripeLiveEnabled=Stripe uživo omogućen (inače test/sandbox mod) +StripeImportPayment=Uvoz Stripe plaćanja +ExampleOfTestCreditCard=Primjer kreditne kartice za probno plaćanje: %s => važeća, %s => pogreška CVC, %s => isteklo, %s => naplata nije uspjela +ExampleOfTestBankAcountForSEPA=Primjer BAN-a bankovnog računa za test izravnog zaduženja: %s +StripeGateways=Prugasti pristupnici +OAUTH_STRIPE_TEST_ID=ID klijenta Stripe Connect (ca_...) +OAUTH_STRIPE_LIVE_ID=ID klijenta Stripe Connect (ca_...) +BankAccountForBankTransfer=Bankovni račun za isplatu sredstava +StripeAccount=Stripe račun +StripeChargeList=Popis naknada za Stripe +StripeTransactionList=Popis Stripe transakcija +StripeCustomerId=Stripe korisnički ID +StripePaymentId=Stripe ID plaćanja +StripePaymentModes=Stripe načini plaćanja +LocalID=Lokalni ID StripeID=Stripe ID -NameOnCard=Name on card -CardNumber=Card Number -ExpiryDate=Expiry Date +NameOnCard=Ime na kartici +CardNumber=Broj kartice +ExpiryDate=Datum isteka 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 +DeleteACard=Izbriši karticu +ConfirmDeleteCard=Jeste li sigurni da želite izbrisati ovu kreditnu ili debitnu karticu? +CreateCustomerOnStripe=izradi korisnik na Stripeu +CreateCardOnStripe=izradi kartica na Stripeu +CreateBANOnStripe=izradi banka na Stripeu +ShowInStripe=Prikaži u Stripeu +StripeUserAccountForActions=Korisnički račun koji se koristi za e-pošta obavijest o nekim Stripe događajima (Stripe isplate) +StripePayoutList=Popis Stripe isplata +ToOfferALinkForTestWebhook=Veza za postavljanje Stripe WebHooka za pozivanje IPN-a (testni način) +ToOfferALinkForLiveWebhook=Veza za postavljanje Stripe WebHooka za pozivanje IPN-a (način uživo) +PaymentWillBeRecordedForNextPeriod=Uplata će biti evidentirana za naredni period. +ClickHereToTryAgain=Kliknite ovdje da pokušate ponovno... +CreationOfPaymentModeMustBeDoneFromStripeInterface=Zbog pravila Strong Customer Ovjera vjerodostojnosti, izrada kartice mora se izvršiti iz pozadinskog ureda Stripe. Možete kliknuti ovdje da uključite evidenciju korisnika Stripea: %s +STRIPE_CARD_PRESENT=Kartica prisutna za Stripe terminale +TERMINAL_LOCATION=Lokacija (adresa) za Stripe terminale +RequestDirectDebitWithStripe=Zahtjev za izravno terećenje uz Stripe +RequesCreditTransferWithStripe=Request Credit Transfer with Stripe +STRIPE_SEPA_DIRECT_DEBIT=Omogućite plaćanja izravnim zaduženjem putem Stripea +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT +StripeConnect_Mode=Stripe Connect mod +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/hu_HU/admin.lang b/htdocs/langs/hu_HU/admin.lang index 76ec412d252..3e5e69e9e6f 100644 --- a/htdocs/langs/hu_HU/admin.lang +++ b/htdocs/langs/hu_HU/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Az értékek listájának olyan sorokat kell tartalmaz ExtrafieldParamHelpcheckbox=Az értékek listájának soroknak kell lennie formátumkulccsal, értékkel (ahol a kulcs nem lehet „0”)

például:
1,érték1
2,érték2
3, érték3
... ExtrafieldParamHelpradio=Az értékek listájának soroknak kell lennie formátumkulccsal, értékkel (ahol a kulcs nem lehet „0”)

például:
1,érték1
2,érték2
3, érték3
... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=A paramétereknek ObjectName:Classpath típusúnak kell lennie
Szintaxis: ObjectName:Classpath ExtrafieldParamHelpSeparator=Hagyja üresen egyszerű elválasztó esetén
Állítsa ezt 1-re összecsukódó elválasztó esetén (alapértelmezés szerint nyitva van új munkamenethez, majd az állapot megmarad minden felhasználói munkamenethez)
Állítsa ezt 2-re összecsukódó elválasztó esetén (alapértelmezés szerint összecsukva új munkamenet, akkor az állapot minden felhasználói munkamenetre megmarad) LibraryToBuildPDF=A PDF létrehozásához használt programkönyvtár @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, majd az ügyfél rövidített neve és a ModuleCompanyCodeSupplierDigitaria=%s, majd a szállító rövidített neve és a karakterek száma: %s a beszállítói könyvelési kódhoz. Use3StepsApproval=Alapértelmezés szerint a beszerzési rendeléseket 2 különböző felhasználónak kell létrehoznia és jóváhagynia (egy lépés/felhasználó létrehozása és egy lépés/felhasználó jóváhagyása. Ne feledje, hogy ha a felhasználó rendelkezik mind a létrehozási, mind a jóváhagyási engedéllyel, akkor egy lépés/felhasználó elegendő) . Ezzel az opcióval kérheti egy harmadik lépés/felhasználói jóváhagyás bevezetését, ha az összeg nagyobb, mint egy dedikált érték (tehát 3 lépésre lesz szükség: 1=érvényesítés, 2=első jóváhagyás és 3=második jóváhagyás, ha az összeg elegendő).
Állítsa üresre, ha egy jóváhagyás (2 lépés) elegendő, állítsa nagyon alacsony értékre (0,1), ha mindig szükség van egy második jóváhagyásra (3 lépés). UseDoubleApproval=Használjon 3 lépéses jóváhagyást, ha az összeg (adó nélkül) nagyobb, mint ... -WarningPHPMail=FIGYELMEZTETÉS: Az alkalmazásból az e-mailek küldésének beállítása az alapértelmezett általános beállítást használja. Ez a választás nem igényel műszaki ismereteket a beállítás befejezéséhez.
Azonban gyakran jobb, ha a kimenő e-maileket úgy állítja be, hogy az e-mail szolgáltató e-mail szerverét használja az alapértelmezett beállítás helyett. néhány ok: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: WarningPHPMailA=- Az e-mail szolgáltató szerverének használata növeli az e-mailek megbízhatóságát, így növeli a kézbesíthetőséget anélkül, hogy SPAM-ként jelölnék meg -WarningPHPMailB=- Egyes e-mail szolgáltatók (például a Yahoo) nem engedélyezik, hogy e-mailt küldjön a saját szerverüktől eltérő szerverről. A jelenlegi beállítás az alkalmazás szerverét használja az e-mailek küldésére, nem pedig az e-mail szolgáltató szerverét, így néhány címzett (amely kompatibilis a korlátozó DMARC protokollal) megkérdezi az e-mail szolgáltatóját, hogy elfogadják-e az Ön e-mailjeit, és néhány e-mail szolgáltató. (mint a Yahoo) nemmel válaszolhat, mert a szerver nem az övék, így előfordulhat, hogy néhány elküldött e-mailt nem fogadunk el kézbesítésre (vigyázzon az e-mail szolgáltatója küldési kvótájára is). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- A saját e-mail szolgáltatója SMTP szerverének használata e-mailek küldésére is megfelelő, így az alkalmazásból küldött összes e-mailt a postafiók "Elküldött" könyvtárába is elmentjük. WarningPHPMailD=Ezért javasolt az e-mailek küldési módját "SMTP" értékre módosítani. WarningPHPMailDbis=Ha valóban meg szeretné tartani az alapértelmezett „PHP” módszert az e-mailek küldésére, hagyja figyelmen kívül ezt a figyelmeztetést, vagy távolítsa el %side kattintva%s. 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 található (a %s e-mailhez): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %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 @@ -867,7 +868,7 @@ Permission255=Módosíthat más felhasználó jelszavát Permission256=Törlése vagy tiltsa le más felhasználók Permission262=A hozzáférés kiterjesztése minden harmadik félre ÉS tárgyaikra (nem csak azokra a harmadik felekre, amelyekhez a felhasználó értékesítési képviselőként kapcsolódik). Permission262b=Nem hatékony külső felhasználók számára (mindig magukra korlátozódnak az ajánlatok, megrendelések, számlák, szerződések stb. esetében). -Permission262c=Projekteknél nem hatékony (csak a projektengedélyekre, a láthatóságra és a hozzárendelésre vonatkozó szabályok vonatkoznak). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=A hozzáférés kiterjesztése minden harmadik félre, tárgyaik NÉLKÜL (nem csak olyan harmadik felekre, akiknek a felhasználó értékesítési képviselője).
Külső felhasználók számára nem hatékony (mindig saját magukra korlátozódnak az ajánlatok, rendelések, számlák, szerződések stb. esetében).
Nem hatékony projekteknél (csak a projektengedélyekre, a láthatóságra és a hozzárendelésre vonatkozó szabályok számítanak). Permission271=Olvassa CA Permission272=Olvassa számlák @@ -944,7 +945,7 @@ Permission776=Fizetési költségjelentések Permission777=Minden költségjelentés olvasása (még a felhasználó nem beosztottjaét is) Permission778=Költségjelentések létrehozása/módosítása mindenkiről Permission779=Költségjelentések exportálása -Permission1001=Olvassa készletek +Permission1001=Read warehouses and stocks Permission1002=Raktárak létrehozása/módosítása Permission1003=Raktárak törlése Permission1004=Olvassa állomány mozgását @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex szűrő az érték tisztításához (COMPANY DuplicateForbidden=Másolás tilos RemoveSpecialWords=Tisztítson meg bizonyos szavakat az ügyfelek vagy beszállítók alfiókjainak létrehozásakor RemoveSpecialWordsHelp=Adja meg a tisztítandó szavakat a vevő vagy a szállító fiók kiszámítása előtt. Használj ";" az egyes szavak között -GDPRContact=Adatvédelmi tiszt (adatvédelmi tisztviselő, adatvédelmi vagy GDPR kapcsolattartó) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ha személyes adatokat tárol az Információs Rendszerében, itt meg tudja nevezni az Általános Adatvédelmi Szabályzatért felelős kapcsolattartót HelpOnTooltip=Az eszköztippen megjelenő súgószöveg HelpOnTooltipDesc=Tegyen ide szöveget vagy fordítókulcsot, hogy a szöveg megjelenjen az eszköztippben, amikor ez a mező megjelenik egy űrlapon @@ -2218,7 +2219,7 @@ CreateCandidature=Állással kapcsolatos jelentkezés létrehozása FormatZip=Zip MainMenuCode=Menü belépési kód (főmenü) ECMAutoTree=Automatikus ECM fa megjelenítése -OperationParamDesc=Határozza meg azokat a szabályokat, amelyek alapján bizonyos adatokat kinyerhet, vagy állítson be értékeket a működéshez.

Példa a cégnév kinyerésére e-mail tárgya ideiglenes változóba:
tmp_var=EXTRACT:SUBJECT:Üzenet a cégtől ([^\n]*)

Példák egy létrehozandó objektum tulajdonságainak beállítására:
objproperty1=SET:a keményen kódolt érték
objproperty2=SET:__tmp_var__
objproperty3=aIFEMPe csak akkor van beállítva, ha a tulajdonság még nincs megadva)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=KIVONAT:BODY:My cég neve\\ s([^\\s]*)

Használjon új sort több tulajdonság kibontásához vagy beállításához. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Nyitvatartási idő OpeningHoursDesc=Írja be a cége szokásos nyitvatartási idejét. ResourceSetup=Az erőforrás modul beállítása @@ -2264,7 +2265,7 @@ LargerThan=Nagyobb mint IfTrackingIDFoundEventWillBeLinked=Vegye figyelembe, hogy ha egy objektum nyomkövetési azonosítója található az e-mailben, vagy ha az e-mail egy már összegyűjtött és egy objektumhoz kapcsolt e-mail válasza, akkor a létrehozott esemény automatikusan összekapcsolódik az ismert kapcsolódó objektummal. WithGMailYouCanCreateADedicatedPassword=GMail-fiók esetén, ha engedélyezte a 2 lépésből álló ellenőrzést, javasoljuk, hogy hozzon létre egy dedikált második jelszót az alkalmazás számára ahelyett, hogy saját fiókja jelszavát használná a https://myaccount.google.com/ webhelyről. EmailCollectorTargetDir=Előfordulhat, hogy az e-mail sikeres feldolgozása után egy másik címke/könyvtárba helyezi át az e-mailt. Csak állítsa be itt a könyvtár nevét a funkció használatához (NE használjon speciális karaktereket a névben). Vegye figyelembe, hogy olvasási/írási bejelentkezési fiókot is kell használnia. -EmailCollectorLoadThirdPartyHelp=Ezzel a művelettel az e-mail tartalmát használhatja egy létező partner megkeresésére és betöltésére az adatbázisban (a keresés a megadott tulajdonságon történik az „id”, „name”, "név_álnév", "e-mail"). A talált (vagy létrehozott) partner a következő műveletekhez lesz használva, amelyeknek szüksége van rá.
Ha például létre szeretne hozni a partner egy „Név: keresendő név” karakterláncból kivont név szerepel a törzsben, használja a feladó e-mail-címét e-mailként, a paramétermezőt így állíthatja be:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Név:\\s([^\\s]*);client=SET:2; '
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Figyelmeztetés: sok e-mail szerver (például a Gmail) teljes szó keresést végez, amikor egy karakterláncon keres, és nem ad eredményt, ha a karakterlánc csak részben található meg a szóban. Emiatt is figyelmen kívül hagyja a speciális karakterek használatát a keresési feltételekben, ha azok nem részei a meglévő szavaknak.
Szó kizárása érdekében (szó esetén küldje vissza az e-mailt nem található), használhatja a ! karakter a szó előtt (egyes levelezőszervereken nem működik). EndPointFor=%s végpontja: %s DeleteEmailCollector=E-mail gyűjtő törlése @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Harmadik fél neve – Harmadik fél álneve ALIAS_THIRDPARTY=Harmadik fél alias – Harmadik fél neve PDFIn2Languages=Címkék megjelenítése a PDF-ben 2 különböző nyelven (ez a funkció néhány nyelven nem működik) 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 létrehozása PDF/A formátumban az alapértelmezett PDF helyett +PDF_USE_A=PDF documents format 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. RssNote=Megjegyzés: Minden RSS-hírcsatorna-definíció tartalmaz egy widgetet, amelyet engedélyezned kell, hogy elérhető legyen az irányítópulton JumpToBoxes=Ugrás a Beállítás -> Widgetek menüpontra @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/hu_HU/commercial.lang b/htdocs/langs/hu_HU/commercial.lang index f30cf0fdf6c..363d13aa0ae 100644 --- a/htdocs/langs/hu_HU/commercial.lang +++ b/htdocs/langs/hu_HU/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Biztosan törölni akarja ezt az eseményt? CardAction=Cselekvés kártya ActionOnCompany=Kapcsolódó vállalkozás ActionOnContact=Kapcsolódó kapcsolat +ActionOnUser=Related user TaskRDVWith=Találkozó %s -al ShowTask=Feladat mutatása ShowAction=Cselekvés mutatása @@ -93,3 +94,9 @@ SignatureContractRef=Szerződés aláírása %s SignatureFichinterRef=A beavatkozás aláírása %s SignatureSociete_ribRef=A SEPA megbízás aláírása %s FeatureOnlineSignDisabled=Az online aláírás funkció letiltása vagy a szolgáltatás engedélyezése előtt létrehozott dokumentum +NoSignature=Nincs aláírva +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/hu_HU/companies.lang b/htdocs/langs/hu_HU/companies.lang index 36fe5ca261e..23b7f9db5d6 100644 --- a/htdocs/langs/hu_HU/companies.lang +++ b/htdocs/langs/hu_HU/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr bejelentkezés NoDolibarrAccess=Nem Dolibarr hozzáférés ExportDataset_company_1=Harmadik felek (cégek/alapítványok/fizikai személyek) és tulajdonságaik ExportDataset_company_2=Kapcsolattartók és tulajdonságaik +ExportDataset_company_3=Harmadik fél bankszámlái ImportDataset_company_1=Harmadik felek és tulajdonságaik ImportDataset_company_2=Harmadik féltől származó további kapcsolatok/címek és attribútumok ImportDataset_company_3=Harmadik fél bankszámlái diff --git a/htdocs/langs/hu_HU/datapolicy.lang b/htdocs/langs/hu_HU/datapolicy.lang index c116b570eeb..be7ee7f47cb 100644 --- a/htdocs/langs/hu_HU/datapolicy.lang +++ b/htdocs/langs/hu_HU/datapolicy.lang @@ -33,7 +33,7 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = jelentkező/vevő DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Sem jelentkező/Sem vevő DATAPOLICY_CONTACT_FOURNISSEUR = Beszállító DATAPOLICY_ADHERENT = Tag -DATAPOLICY_Tooltip_SETUP = Kapcsolat típusa – Jelölje meg választását az egyes típusokhoz. +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Küldhet GDPR e-mailt minden érintett kapcsolattartójának (akik még nem kaptak e-mailt, és akikhez még nem regisztrált semmit a GDPR-megállapodásukkal kapcsolatban). Ehhez használja a következő gombot. SendAgreement = Emaileket küld AllAgreementSend = Minden e-mailt elküldtünk diff --git a/htdocs/langs/hu_HU/errors.lang b/htdocs/langs/hu_HU/errors.lang index 16ffa4ebb7f..7f7dfb045a3 100644 --- a/htdocs/langs/hu_HU/errors.lang +++ b/htdocs/langs/hu_HU/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=A felhasználót hozzá kell rendelni a feladathoz, h ErrorTaskAlreadyAssigned=A feladat már hozzá van rendelve a felhasználóhoz ErrorModuleFileSeemsToHaveAWrongFormat=Úgy tűnik, hogy a modulcsomag formátuma rossz. ErrorModuleFileSeemsToHaveAWrongFormat2=Legalább egy kötelező könyvtárnak léteznie kell a modul zip-fájljában: %s vagy %s -ErrorFilenameDosNotMatchDolibarrPackageRules=A modulcsomag neve (%s) nem egyezik a név várt szintaxisával: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Hiba, ismétlődő triggernév: %s. Már betöltve innen: %s. ErrorNoWarehouseDefined=Hiba, nincsenek megadva raktárak. ErrorBadLinkSourceSetButBadValueForRef=A használt hivatkozás érvénytelen. A fizetés „forrása” meg van határozva, de a „ref” értéke nem érvényes. @@ -422,3 +422,4 @@ OperNotDefined=Fizetési mód nincs megadva ErrorThisContactXIsAlreadyDefinedAsThisType=A %s már meg van határozva kapcsolattartóként ehhez a típushoz. ErrorThisGroupIsAlreadyDefinedAsThisType=Az ehhez a csoporthoz tartozó kapcsolatok már meg vannak határozva ehhez a típushoz. EmptyMessageNotAllowedError=Üres üzenet nem megengedett +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/hu_HU/interventions.lang b/htdocs/langs/hu_HU/interventions.lang index 1df5d58590a..be492e2f432 100644 --- a/htdocs/langs/hu_HU/interventions.lang +++ b/htdocs/langs/hu_HU/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Piszkozat létrehozása InterventionContact=Beavatkozási kapcsolat DeleteIntervention=A beavatkozás törlése ValidateIntervention=A beavatkozás érvényesítése +SignIntervention=Beavatkozás aláírása +UnsignIntervention=Unsign intervention ModifyIntervention=A beavatkozás módosítása CloseIntervention=Szoros beavatkozás DeleteInterventionLine=A beavatkozási vonal törlése ConfirmDeleteIntervention=Biztosan törölni szeretné ezt a beavatkozást? ConfirmValidateIntervention=Biztosan érvényesíteni szeretné ezt a beavatkozást %s néven? +ConfirmSignIntervention=Are you sure you want to set this intervention as signed ? +ConfirmUnsignIntervention=Are you sure you want to set this intervention as unsigned ? ConfirmModifyIntervention=Biztosan módosítani szeretné ezt a beavatkozást? ConfirmCloseIntervention=Biztosan bezárja ezt a beavatkozást? ConfirmDeleteInterventionLine=Biztosan törölni szeretné ezt a beavatkozási sort? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Beavatkozások és beavatkozási vonalak InterventionClassifyBilled="Számlázott" besorolás InterventionClassifyUnBilled=Besorolás "Nem számlázva" InterventionClassifyDone=Besorolás "Kész" +InterventionSign=Set Signed +InterventionUnsign=Set Unsigned SendInterventionRef=%s beavatkozás benyújtása SendInterventionByMail=Beavatkozás küldése e-mailben InterventionCreatedInDolibarr=%s beavatkozás létrehozva InterventionValidatedInDolibarr=%s beavatkozás érvényesítve +InterventionSignedInDolibarr=A beavatkozás aláírva +InterventionSignedOnline=Intervention signed online +InterventionUnsignedInDolibarr=Intervention unsigned InterventionModifiedInDolibarr=%s beavatkozás módosítva InterventionClassifiedBilledInDolibarr=%s beavatkozás számlázottként beállítva InterventionClassifiedUnbilledInDolibarr=A %s beavatkozás számlázatlanként beállítva diff --git a/htdocs/langs/hu_HU/mails.lang b/htdocs/langs/hu_HU/mails.lang index 037fbe5182b..74c6e16c6ea 100644 --- a/htdocs/langs/hu_HU/mails.lang +++ b/htdocs/langs/hu_HU/mails.lang @@ -32,6 +32,8 @@ NewMailing=Új e-mail NewSMSing=Új sms EditMailing=E-mail szerkesztése ResetMailing=E-mail újraküldése +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=E-mailezés törlése PreviewMailing=E-mailezés előnézete CreateMailing=E-mail létrehozása @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Az e-mail címzettje üres WarningNoEMailsAdded=Nincs új e-mail a címzettek listájához. ConfirmValidMailing=Biztosan érvényesíteni szeretné ezt az e-mailt? ConfirmResetMailing=Figyelem! A(z) %s e-mail újraindításával engedélyezi ennek az e-mailnek a tömeges levélben történő újraküldését. Biztosan ezt akarod csinálni? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Biztosan törölni szeretné ezt az e-mailt? NbOfUniqueEMails=Egyedi e-mailek száma NbOfUniquePhones=Egyedi telefonok száma @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Nincs több címzett, akinek elküldhetné az e-mailt EmailOptedOut=Az e-mail tulajdonosa azt kérte, hogy többé ne lépjen kapcsolatba vele ezzel az e-mail-címmel EvenUnsubscribe=Tartalmazza a leiratkozási e-maileket EvenUnsubscribeDesc=Ha e-maileket választ ki célként, vegye fel a leiratkozási e-maileket. Hasznos például a kötelező szerviz e-maileknél. -XEmailsDoneYActionsDone=%s e-mailek előminősítettek, %s e-mailek sikeresen feldolgozva (az %s rekord/műveletek elvégzése esetén) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Készíthet néhány utasítást az e-mailekhez (például: hozzon létre képet az e-mail sablonban...) ModelTemplate=E-mail sablon YouCanChooseAModelForYouMailContent= Kiválaszthat egyet a sablonmodellek közül, vagy létrehozhat egyet mesterséges intelligencia segítségével TitleOfMailHolder=Az e-mail címe ide kerül ContentOfMailHolder=Az e-mail tartalma ide kerül... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/hu_HU/sendings.lang b/htdocs/langs/hu_HU/sendings.lang index fe80af7ce4c..82db3705bea 100644 --- a/htdocs/langs/hu_HU/sendings.lang +++ b/htdocs/langs/hu_HU/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=Nem található szállítandó termék a(z) %s< WeightVolShort=Súly/térfogat. ValidateOrderFirstBeforeShipment=Elõször érvényesítenie kell a rendelést, mielõtt kiszállítást végezhet. NoLineGoOnTabToAddSome=Nincs sor, lépjen a „%s” lapra a hozzáadáshoz -CreateInvoiceForThisCustomerFromSendings=Számlaküldések +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=Ha a számla ellenőrzése „Nem”, akkor a küldés „Nem számlázva” állapotú marad mindaddig, amíg a számla nem érvényesül. OptionToSetSendingBilledNotEnabled=A Munkafolyamat modul opciója, hogy a küldést automatikusan "Számlázva" értékre állítsa, amikor a számla érvényesítve van, nincs engedélyezve, ezért manuálisan kell a küldések állapotát "Számlázva"-ra állítania. a számla létrejött. diff --git a/htdocs/langs/hu_HU/stripe.lang b/htdocs/langs/hu_HU/stripe.lang index 4cfbc3e0324..ed7efc4be95 100644 --- a/htdocs/langs/hu_HU/stripe.lang +++ b/htdocs/langs/hu_HU/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL %s online fizetési oldal felajá ToOfferALinkForOnlinePaymentOnFreeAmount=URL egy %s online fizetési oldal felajánlásához bármilyen összegben létező objektum nélkül ToOfferALinkForOnlinePaymentOnMemberSubscription=URL %s online fizetési oldal felajánlásához egy tagi előfizetéshez ToOfferALinkForOnlinePaymentOnDonation=URL %s online fizetési oldal felajánlásához adomány kifizetéséhez -YouCanAddTagOnUrl=A &tag=value url paramétert is hozzáadhatja bármelyik URL-hez (csak olyan fizetés esetén kötelező, amely nem kapcsolódik objektumhoz), és hozzáadhatja saját fizetési megjegyzés címkéjét.< br>A meglévő objektum nélküli fizetések URL-jéhez hozzáadhatja a &noidempotency=1 paramétert is, így ugyanaz a hivatkozás ugyanazzal a címkével többször is használható (egyes fizetési módok 1-re korlátozhatják a fizetést minden egyes hivatkozáshoz e paraméter nélkül) +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) YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Állítsa be a Stripe-ot a(z) %s URL-lel, hogy a Stripe ellenőrzésekor automatikusan létrejöjjön a fizetés. AccountParameter=Számlaparaméterek diff --git a/htdocs/langs/hu_HU/website.lang b/htdocs/langs/hu_HU/website.lang index 20ab1aa31e4..83f4dc5cb55 100644 --- a/htdocs/langs/hu_HU/website.lang +++ b/htdocs/langs/hu_HU/website.lang @@ -62,7 +62,7 @@ NoPageYet=Még nincsenek oldalak YouCanCreatePageOrImportTemplate=Létrehozhat egy új oldalt vagy importálhat egy teljes webhelysablont SyntaxHelp=Súgó adott szintaktikai tippekhez YouCanEditHtmlSourceckeditor=A HTML forráskódot a szerkesztő "Forrás" gombjával szerkesztheti. -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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
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=Megosztási hivatkozással megosztott kép esetén (nyílt hozzáférés a fájl megosztási hash kulcsával) a szintaxis:
<img src="/viewimage.php?hashp=12345679012..."> ;
YouCanEditHtmlSource3=To get the URL of the image of a PHP object, use
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/id_ID/admin.lang b/htdocs/langs/id_ID/admin.lang index 28349ce69af..d203394841a 100644 --- a/htdocs/langs/id_ID/admin.lang +++ b/htdocs/langs/id_ID/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Daftar nilai harus berupa garis dengan kunci format, n ExtrafieldParamHelpcheckbox=Daftar nilai harus berupa garis dengan kunci format, nilai (di mana kunci tidak boleh '0')

misalnya:
1, value1
2, value2 a0342fccfda2b3f0f3f0f3f ExtrafieldParamHelpradio=Daftar nilai harus berupa garis dengan kunci format, nilai (di mana kunci tidak boleh '0')

misalnya:
1, value1
2, value2 a0342fccfda2b3f0f3f0f3f 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parameter harus ObjectName: Classpath
Sintaks: ObjectName: Classpath ExtrafieldParamHelpSeparator=Biarkan kosong untuk pemisah sederhana
Setel ini menjadi 1 untuk pemisah runtuh (buka secara default untuk sesi baru, kemudian status disimpan untuk setiap sesi pengguna) status disimpan sebelum setiap sesi pengguna) LibraryToBuildPDF=Perpustakaan digunakan untuk pembuatan PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s diikuti oleh nama pelanggan terpotong deng ModuleCompanyCodeSupplierDigitaria=%s diikuti oleh nama pemasok terpotong dengan jumlah karakter: %s untuk kode akuntansi pemasok. Use3StepsApproval=Secara default, Pesanan Pembelian harus dibuat dan disetujui oleh 2 pengguna yang berbeda (satu langkah / pengguna untuk membuat dan satu langkah / pengguna untuk menyetujui. Perhatikan bahwa jika pengguna memiliki izin untuk membuat dan menyetujui, satu langkah / pengguna akan cukup) . Anda dapat bertanya dengan opsi ini untuk memperkenalkan langkah ketiga / persetujuan pengguna, jika jumlahnya lebih tinggi dari nilai yang ditentukan (jadi 3 langkah diperlukan: 1 = validasi, 2 = persetujuan pertama dan 3 = persetujuan kedua jika jumlahnya cukup).
Set ini menjadi kosong jika satu persetujuan (2 langkah) sudah cukup, setel ke nilai yang sangat rendah (0,1) jika persetujuan kedua (3 langkah) selalu diperlukan. UseDoubleApproval=Gunakan persetujuan 3 langkah saat jumlah (tanpa pajak) lebih tinggi dari ... -WarningPHPMail=PERINGATAN: Pengaturan untuk mengirim email dari aplikasi menggunakan pengaturan umum default. Pilihan ini tidak memerlukan pengetahuan teknis untuk menyelesaikan penyiapan.
Namun, seringkali lebih baik menyiapkan email keluar untuk menggunakan server email Penyedia Layanan Email Anda daripada penyiapan default untuk beberapa alasan: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: WarningPHPMailA=- Menggunakan server Penyedia Layanan Email meningkatkan kepercayaan email Anda, sehingga meningkatkan kemampuan pengiriman tanpa ditandai sebagai SPAM -WarningPHPMailB=- Beberapa Penyedia Layanan Email (seperti Yahoo) tidak mengizinkan Anda mengirim email dari server lain selain dari server mereka sendiri. Pengaturan Anda saat ini menggunakan server aplikasi untuk mengirim email dan bukan server penyedia email Anda, jadi beberapa penerima (yang kompatibel dengan protokol DMARC terbatas), akan menanyakan penyedia email Anda apakah mereka dapat menerima email Anda dan beberapa penyedia email (seperti Yahoo) mungkin menjawab "tidak" karena server tersebut bukan milik mereka, jadi beberapa Email yang Anda kirim mungkin tidak dapat diterima untuk pengiriman (hati-hati juga dengan kuota pengiriman penyedia email Anda). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Menggunakan server SMTP milik Penyedia Layanan Email Anda sendiri untuk mengirim email juga menarik sehingga semua email yang dikirim dari aplikasi juga akan disimpan ke direktori "Terkirim" di kotak surat Anda. WarningPHPMailD=Oleh karena itu disarankan untuk mengubah metode pengiriman email ke nilai "SMTP". WarningPHPMailDbis=Jika Anda benar-benar ingin tetap menggunakan metode "PHP" default untuk mengirim email, abaikan saja peringatan ini, atau hapus dengan %smengklik di sini%s. 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=Jika nama domain di alamat email pengirim Anda dilindungi oleh data SPF (tanyakan kepada pendaftar nama domain Anda), Anda harus menambahkan IP berikut di data SPF DNS domain Anda: %s. -ActualMailSPFRecordFound=Catatan SPF aktual ditemukan (untuk email %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Klik untuk menampilkan deskripsi DependsOn=Modul ini membutuhkan modul RequiredBy=Modul ini diperlukan oleh modul @@ -867,7 +868,7 @@ Permission255=Merubah Kata Sandi Pengguna Lain Permission256=Hapus atau nonaktifkan pengguna lain Permission262=Perluas akses ke semua pihak ketiga DAN objeknya (tidak hanya pihak ketiga yang penggunanya ditautkan sebagai perwakilan penjualan). Permission262b=Tidak efektif untuk pengguna eksternal (selalu terbatas pada proposal, pesanan, invoice, kontrak, dll). -Permission262c=Tidak efektif untuk proyek (hanya aturan tentang izin proyek, visibilitas, dan penugasan yang penting). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Memperluas akses ke semua pihak ketiga TANPA objek mereka (tidak hanya pihak ketiga yang pengguna sebagai perwakilan penjualannya).
Tidak efektif untuk pengguna eksternal (selalu terbatas pada diri mereka sendiri untuk proposal, pesanan, faktur, kontrak, dll.).
Tidak efektif untuk proyek (hanya aturan tentang izin proyek, visibilitas, dan masalah penugasan). Permission271=Baca CA Permission272=Membaca Nota @@ -944,7 +945,7 @@ Permission776=Membayar laporan pengeluaran Permission777=Baca semua laporan pengeluaran (bahkan laporan pengguna bukan bawahan) Permission778=Buat / ubah laporan pengeluaran semua orang Permission779=Laporan pengeluaran ekspor -Permission1001=Membaca Stok +Permission1001=Read warehouses and stocks Permission1002=Membuat/Merubah Gudang Permission1003=Menghapus Gudang Permission1004=Membaca pergerakan stok @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter untuk membersihkan nilai (COMPANY_DIG DuplicateForbidden=Duplikat dilarang RemoveSpecialWords=Bersihkan kata-kata tertentu saat membuat sub-akun untuk pelanggan atau pemasok RemoveSpecialWordsHelp=Tentukan kata-kata yang akan dibersihkan sebelum menghitung akun pelanggan atau pemasok. Gunakan ";" di antara setiap kata -GDPRContact=Petugas Perlindungan Data (DPO, Privasi Data, atau kontak GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Jika Anda menyimpan data pribadi di Sistem Informasi Anda, Anda dapat menyebutkan kontak yang bertanggung jawab atas Peraturan Perlindungan Data Umum di sini HelpOnTooltip=Bantu teks untuk ditampilkan di tooltip HelpOnTooltipDesc=Letakkan teks atau kunci terjemahan di sini agar teks ditampilkan di tooltip saat baris ini muncul dalam formulir @@ -2218,7 +2219,7 @@ CreateCandidature=Buat lamaran kerja FormatZip=Kode Pos MainMenuCode=Kode entri menu (mainmenu) ECMAutoTree=Tampilkan pohon ECM otomatis -OperationParamDesc=Tentukan aturan yang akan digunakan untuk mengekstrak beberapa data atau tetapkan nilai yang akan digunakan untuk operasi.

Contoh untuk mengekstrak nama perusahaan subjek email ke dalam variabel sementara:
tmp_var=EXTRACT:SUBJECT:Pesan dari perusahaan ([^\n]*)

Contoh untuk menyetel properti objek yang akan dibuat:
objproperty1=SET:nilai kode keras
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:nilai (nilai disetel hanya jika properti belum ditentukan)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EKSTRAK:SUBJEK:([^\n]*)
object.objproperty5=EKSTRAK:BODY:Nama perusahaan saya adalah\\ s([^\\s]*)

Gunakan baris baru untuk mengekstrak atau menyetel beberapa properti. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Jam buka OpeningHoursDesc=Masukkan di sini jam buka reguler perusahaan Anda. ResourceSetup=Modul Konfigurasi Sumber Daya @@ -2264,7 +2265,7 @@ LargerThan=lebih besar dari IfTrackingIDFoundEventWillBeLinked=Perhatikan bahwa jika ID pelacakan suatu objek ditemukan di email, atau jika email tersebut merupakan jawaban dari email yang telah dikumpulkan dan ditautkan ke suatu objek, peristiwa yang dibuat akan secara otomatis ditautkan ke objek terkait yang diketahui. WithGMailYouCanCreateADedicatedPassword=Dengan akun GMail, jika Anda mengaktifkan validasi 2 langkah, disarankan untuk membuat kata sandi kedua khusus untuk aplikasi tersebut daripada menggunakan kata sandi akun Anda sendiri dari https://myaccount.google.com/. EmailCollectorTargetDir=Mungkin merupakan perilaku yang diinginkan untuk memindahkan email ke tag/direktori lain ketika berhasil diproses. Cukup tetapkan nama direktori di sini untuk menggunakan fitur ini (JANGAN gunakan karakter khusus pada nama). Perhatikan bahwa Anda juga harus menggunakan akun login baca/tulis. -EmailCollectorLoadThirdPartyHelp=Anda dapat menggunakan tindakan ini untuk menggunakan konten email untuk menemukan dan memuat pihak ketiga yang ada di database Anda (pencarian akan dilakukan pada properti yang ditentukan di antara 'id','name','name_alias','email'). Pihak ketiga yang ditemukan (atau dibuat) akan digunakan untuk tindakan berikut yang memerlukannya.
Misalnya, jika Anda ingin membuat pihak ketiga dengan nama yang diambil dari string ' Nama: nama yang akan ditemukan' ada di badan, gunakan email pengirim sebagai email, Anda dapat menyetel kolom parameter seperti ini:
'email=HEADER:^From:(. *);nama=EKSTRAK:BODY:Nama:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Peringatan: banyak server email (seperti Gmail) melakukan pencarian kata penuh ketika mencari sebuah string dan tidak akan memberikan hasil jika string hanya ditemukan sebagian menjadi sebuah kata. Karena alasan ini juga, penggunaan karakter khusus ke dalam kriteria pencarian akan diabaikan jika karakter tersebut bukan bagian dari kata yang ada.
Untuk membuat pencarian pengecualian pada sebuah kata (kembalikan email jika ada kata tidak ditemukan), Anda dapat menggunakan ! karakter sebelum kata (mungkin tidak berfungsi pada beberapa server email). EndPointFor=Titik akhir untuk %s: %s DeleteEmailCollector=Hapus pengumpul email @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Nama pihak ketiga - Alias pihak ketiga ALIAS_THIRDPARTY=Alias pihak ketiga - Nama pihak ketiga PDFIn2Languages=Tampilkan label di PDF dalam 2 bahasa berbeda (fitur ini mungkin tidak berfungsi untuk beberapa bahasa) 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=Hasilkan dokumen PDF dengan format PDF/A, bukan format default PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Masukkan di sini kode ikon FontAwesome. Jika Anda tidak tahu apa itu FontAwesome, Anda dapat menggunakan fa-address-book nilai umum. RssNote=Catatan: Setiap definisi umpan RSS menyediakan widget yang harus Anda aktifkan agar tersedia di dasbor JumpToBoxes=Langsung ke Pengaturan -> Widget @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/id_ID/datapolicy.lang b/htdocs/langs/id_ID/datapolicy.lang index 4092d06409d..2c45e855334 100644 --- a/htdocs/langs/id_ID/datapolicy.lang +++ b/htdocs/langs/id_ID/datapolicy.lang @@ -33,7 +33,7 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Prospek/Pelanggan DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Maupun calon pelanggan/Mau pelanggan DATAPOLICY_CONTACT_FOURNISSEUR = Suplier DATAPOLICY_ADHERENT = Anggota -DATAPOLICY_Tooltip_SETUP = Jenis kontak - Tunjukkan pilihan Anda untuk setiap jenis. +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Anda dapat mengirim email GDPR ke semua kontak Anda yang relevan (yang belum menerima email dan Anda belum mendaftarkan apa pun tentang perjanjian GDPR mereka). Untuk melakukan ini, gunakan tombol berikut. SendAgreement = Mengirim email AllAgreementSend = Semua email telah terkirim diff --git a/htdocs/langs/id_ID/dict.lang b/htdocs/langs/id_ID/dict.lang index a47c216e6aa..95a79a971aa 100644 --- a/htdocs/langs/id_ID/dict.lang +++ b/htdocs/langs/id_ID/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=Franc CFP CurrencySingXPF=CFP Franc CurrencyCentEUR=sen CurrencyCentSingEUR=sen -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=keseribu #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/id_ID/errors.lang b/htdocs/langs/id_ID/errors.lang index b7777054e93..feabc17d684 100644 --- a/htdocs/langs/id_ID/errors.lang +++ b/htdocs/langs/id_ID/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Pengguna harus ditugaskan ke tugas untuk dapat memasu ErrorTaskAlreadyAssigned=Tugas sudah ditugaskan kepada pengguna ErrorModuleFileSeemsToHaveAWrongFormat=Paket modul tampaknya memiliki format yang salah. ErrorModuleFileSeemsToHaveAWrongFormat2=Setidaknya satu direktori wajib harus ada ke dalam zip modul:%s atau%s a0a65d071f6fc9z -ErrorFilenameDosNotMatchDolibarrPackageRules=Nama paket modul ( %s ) tidak cocok dengan nama yang diharapkan sintaks:%s a0a65d071f9f +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Kesalahan, duplikat nama pemicu %s. Sudah dimuat dari %s. ErrorNoWarehouseDefined=Kesalahan, tidak ada gudang yang ditentukan. ErrorBadLinkSourceSetButBadValueForRef=Tautan yang Anda gunakan tidak valid. 'Sumber' untuk pembayaran didefinisikan, tetapi nilai untuk 'ref' tidak valid. @@ -422,3 +422,4 @@ OperNotDefined=Metode pembayaran tidak ditentukan ErrorThisContactXIsAlreadyDefinedAsThisType=%s sudah ditetapkan sebagai kontak untuk jenis ini. ErrorThisGroupIsAlreadyDefinedAsThisType=Kontak dengan grup ini sudah ditetapkan sebagai kontak untuk jenis ini. EmptyMessageNotAllowedError=Pesan kosong tidak diperbolehkan +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/id_ID/mails.lang b/htdocs/langs/id_ID/mails.lang index 3339f3a9f7a..f1c89fb140b 100644 --- a/htdocs/langs/id_ID/mails.lang +++ b/htdocs/langs/id_ID/mails.lang @@ -32,6 +32,8 @@ NewMailing=Email baru NewSMSing=SMS baru EditMailing=Edit email ResetMailing=Kirim ulang email +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Hapus email PreviewMailing=Pratinjau email CreateMailing=Buat kiriman email @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Penerima email kosong WarningNoEMailsAdded=Tidak ada Email baru untuk ditambahkan ke daftar penerima. ConfirmValidMailing=Anda yakin ingin memvalidasi email ini? ConfirmResetMailing=Peringatan, dengan menginisialisasi ulang email %s, Anda akan mengizinkan pengiriman ulang email ini dalam pengiriman masal. Anda yakin ingin melakukan ini? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Anda yakin ingin menghapus email ini? NbOfUniqueEMails=Jumlah untuk email unik NbOfUniquePhones=Jumlah telepon unik @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Tidak ada lagi penerima yang dapat dikirimi email EmailOptedOut=Pemilik email telah meminta untuk tidak menghubunginya lagi dengan email ini EvenUnsubscribe=Sertakan email penyisihan EvenUnsubscribeDesc=Sertakan email penyisihan saat Anda memilih email sebagai target. Berguna untuk email layanan wajib misalnya. -XEmailsDoneYActionsDone=%s email pra-kualifikasi, %s email berhasil diproses (untuk catatan %s /tindakan selesai) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Anda dapat membuat beberapa instruksi untuk Email Anda (Contoh: membuat gambar di template email...) ModelTemplate=Templat email YouCanChooseAModelForYouMailContent= Anda dapat memilih salah satu model template atau membuatnya dengan AI TitleOfMailHolder=Judul email ada di sini ContentOfMailHolder=Isi email ada di sini... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/id_ID/sendings.lang b/htdocs/langs/id_ID/sendings.lang index fb9eabd267e..9f19c24c53a 100644 --- a/htdocs/langs/id_ID/sendings.lang +++ b/htdocs/langs/id_ID/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=Tidak ada produk untuk dikirim ditemukan di gudang WeightVolShort=Berat / Vol. ValidateOrderFirstBeforeShipment=Anda harus terlebih dahulu memvalidasi pesanan sebelum dapat melakukan pengiriman. NoLineGoOnTabToAddSome=Tidak ada baris, buka tab "%s" untuk menambahkan -CreateInvoiceForThisCustomerFromSendings=Pengiriman tagihan +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=Jika validasi invoice 'Tidak', pengiriman akan tetap berstatus 'Tidak Ditagih' hingga invoice divalidasi. OptionToSetSendingBilledNotEnabled=Opsi dari modul Alur Kerja, untuk menyetel pengiriman ke 'Ditagih' secara otomatis saat faktur divalidasi, tidak diaktifkan, jadi Anda harus menyetel status pengiriman ke 'Ditagih' secara manual setelah faktur dibuat. diff --git a/htdocs/langs/id_ID/stripe.lang b/htdocs/langs/id_ID/stripe.lang index 74c9d8ff451..0f04309e991 100644 --- a/htdocs/langs/id_ID/stripe.lang +++ b/htdocs/langs/id_ID/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL untuk menawarkan halaman pembayar ToOfferALinkForOnlinePaymentOnFreeAmount=URL untuk menawarkan halaman pembayaran online %s dalam jumlah berapapun tanpa objek yang ada ToOfferALinkForOnlinePaymentOnMemberSubscription=URL untuk menawarkan halaman pembayaran online %s untuk berlangganan anggota ToOfferALinkForOnlinePaymentOnDonation=URL untuk menawarkan halaman pembayaran online %s untuk pembayaran donasi -YouCanAddTagOnUrl=Anda juga dapat menambahkan parameter url& tag = nilai ke salah satu URL tersebut (hanya wajib untuk pembayaran yang tidak terkait dengan objek) untuk menambahkan tag komentar pembayaran Anda sendiri.
Untuk URL pembayaran tanpa objek yang ada, Anda juga dapat menambahkan parameter& noidempotency = 1 sehingga tautan yang sama dengan tag yang sama dapat digunakan beberapa kali (beberapa mode pembayaran dapat membatasi pembayaran ke 1 untuk setiap tautan berbeda tanpa ini) parameter) +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) YouCanEmbedOnWebsite=Jika Anda ingin mengintegrasikan halaman pembayaran ke situs web Dolibarr, Anda dapat menyertakan parameter: &ws=website_ref.
Selain itu, dua laman bernama pembayaranok dan pembayaran harus dibuat di situs web untuk menerima pengalihan setelah pembayaran online berhasil gagal. SetupStripeToHavePaymentCreatedAutomatically=Siapkan Stripe Anda dengan url%sagar pembayaran dibuat secara otomatis saat divalidasi oleh Stripe. AccountParameter=Parameter akun diff --git a/htdocs/langs/id_ID/website.lang b/htdocs/langs/id_ID/website.lang index 4b5344f68c9..bb09b773550 100644 --- a/htdocs/langs/id_ID/website.lang +++ b/htdocs/langs/id_ID/website.lang @@ -62,7 +62,7 @@ NoPageYet=Belum ada halaman YouCanCreatePageOrImportTemplate=Anda dapat membuat halaman baru atau mengimpor template situs web lengkap SyntaxHelp=Bantuan tentang kiat sintaksis khusus YouCanEditHtmlSourceckeditor=Anda dapat mengedit kode sumber HTML menggunakan tombol "Sumber" di editor. -YouCanEditHtmlSource=
Anda dapat memasukkan kode PHP ke dalam sumber ini menggunakan tag <?php ?> . Variabel global berikut tersedia: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

Anda juga dapat menyertakan konten Halaman/Penampung lain dengan sintaksis berikut:
<?php includeContainer('alias_of_container_to_include'); ?>

Anda dapat melakukan pengalihan ke Halaman/Container lain dengan sintaks berikut (Catatan: jangan output apa pun konten sebelum pengalihan):
<?php redirectToContainer(' alias_of_container_to_redirect_to'); ?>
Anda juga dapat melakukan pengalihan dengan parameter GET:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

Untuk menambahkan link ke halaman lain, gunakan sintaksis:
<a href="alias_of_page_to_link_to.php">tautan saya<a>

Untuk menyertakan tautan untuk mengunduh file yang disimpan ke dalam dokumen direktori, gunakan document.php wrapper:
Contoh, untuk file ke dalam dokumen/ecm (perlu dicatat), sintaksnya adalah:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]nama file.ext">
Untuk file ke dalam dokumen/media (direktori terbuka untuk akses publik), sintaksnya adalah:
<a href="/document.php?modulepart=medias&file=[relative_dir/]nama file. ext">
Untuk file yang dibagikan dengan tautan berbagi ( akses terbuka menggunakan kunci hash berbagi file), sintaksnya adalah:
<a href="/document.php?hashp=publicsharekeyoffile">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
Untuk menyertakan gambar disimpan ke dalam direktori dokumen , gunakan wrapper viewimage.php.
Contoh, untuk gambar ke dalam dokumen/media (direktori terbuka untuk akses publik), sintaksnya adalah:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]nama file.ext">
YouCanEditHtmlSource2=Untuk gambar yang dibagikan dengan tautan berbagi (akses terbuka menggunakan kunci hash berbagi file), sintaksnya adalah:
<img src = "/ viewimage.php? YouCanEditHtmlSource3=Untuk mendapatkan URL gambar objek PHP, gunakan
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/is_IS/admin.lang b/htdocs/langs/is_IS/admin.lang index f2bba8963a2..0752b3edc22 100644 --- a/htdocs/langs/is_IS/admin.lang +++ b/htdocs/langs/is_IS/admin.lang @@ -88,6 +88,8 @@ SearchString=Search string NotAvailableWhenAjaxDisabled=Ekki í boði þegar Ajax fatlaðra 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 +PROJECT_DISPLAY_LINKED_BY_CONTACT=Display project linked by a common contact +PROJECT_DISPLAY_LINKED_BY_CONTACT_help=This option adds a new list on Project tab with all projects linked to thirdparty via a contact relationship JavascriptDisabled=JavaScript fatlaðra UsePreviewTabs=Nota forsýning tabs ShowPreview=Sýna forskoðun @@ -248,7 +250,7 @@ Required=Krafist UsedOnlyWithTypeOption=Used by some agenda option only Security=Öryggi Passwords=Lykilorð -DoNotStoreClearPassword=Encrypt passwords stored in database (NOT as plain-text). It is strongly recommended to activate this option. +DoNotStoreClearPassword=Encrypt passwords stored in database. 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"; @@ -301,20 +303,20 @@ 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_NO_WITH_TO_SELECTED=Do not select a default recipient even if there is only 1 possible choice +MAIN_MAIL_NO_WITH_TO_SELECTED=Disable the selection of a default recipient when writing an email, even if there is only 1 possible choice MAIN_MAIL_SENDMODE=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_SMTPS_ID=SMTP username or ID (if sending server requires an authentication) +MAIN_MAIL_SMTPS_PW=SMTP password or token (if sending server requires an authentication) MAIN_MAIL_EMAIL_TLS=Use TLS (SSL) encryption MAIN_MAIL_EMAIL_STARTTLS=Use TLS (STARTTLS) encryption -MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Authorize self-signed certificates +MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Allow connection to mail servers that are using self-signed certificates 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=Aðferð til að nota til að senda SMS -MAIN_MAIL_SMS_FROM=Default sender phone number for SMS sending +MAIN_SMS_FROM=Default sender phone number for SMS sending MAIN_MAIL_DEFAULT_FROMTYPE=Default sender email preselected on forms to send emails UserEmail=User email CompanyEmail=Company Email @@ -341,7 +343,7 @@ MenuHandlers=Valmynd dýraþjálfari MenuAdmin=Valmynd ritstjóri DoNotUseInProduction=Do not use in production ThisIsProcessToFollow=Upgrade procedure: -ThisIsAlternativeProcessToFollow=This is an alternative setup to process manually: +ThisIsAlternativeProcessToFollow=This is an alternative deployment process you can run manually: StepNb=Skref %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). @@ -363,13 +365,17 @@ 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.
+GenericMaskCodes2b={uuuu} the n first characters of the lastname of the user that creates the object (n is number of "u"). GenericMaskCodes3=Allir aðrir stafir í möskva haldast óbreytt.
Bil eru ekki leyfð.
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 2023-01-31:
GenericMaskCodes4b=Example on third party created on 2023-01-31:
GenericMaskCodes4c=Example on product created on 2023-01-31:
-GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC2301-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX
IN{yy}{mm}-{0000}-{t} will give IN2301-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 ABC2301-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX +GenericMaskCodes5b=IN{yy}{mm}-{0000}-{t} will give IN2301-0099-A if the type of company is 'Responsable Inscripto' with code for type that is 'A_RI' GenericNumRefModelDesc=Fara aftur á sérhannaðar númer samkvæmt skilgreiningu lagsins. +DateStartThatModel=Disable use of this numbering rule for all thirdparties created before +DateStartThatModelHelp=You can disable elephant numbering rule for thirdparties created before a date (for example, because they were imported by a migration, from another software using a different rule). Let that field empty to have the rule applied on all thirdparties. ServerAvailableOnIPOrPort=Þjónninn er í boði á% heimilisfang er á gátt %s ServerNotAvailableOnIPOrPort=Þjónninn er ekki í boði á% heimilisfang er á gátt %s DoTestServerAvailability=Próf miðlara Tenging við @@ -391,7 +397,7 @@ LanguageFile=Language file ExamplesWithCurrentSetup=Examples with current configuration ListOfDirectories=Listi yfir OpenDocument sniðmát framkvæmdarstjóra 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 +NumberOfModelFilesFound=Number of ODT/ODS template files found ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\myapp\\mydocumentdir\\mysubdir
/home/myapp/mydocumentdir/mysubdir
DOL_DATA_ROOT/ecm/ecmdir FollowingSubstitutionKeysCanBeUsed=
Til að vita hvernig á að búa odt skjalið sniðmát, áður en að geyma þá í þeim möppum, lesa wiki skjöl: FullListOnOnlineDocumentation=https://wiki.dolibarr.org/index.php/Create_an_ODT_document_template @@ -448,14 +454,18 @@ ExtrafieldPriceWithCurrency=Price with currency ExtrafieldMail = Email ExtrafieldUrl = Url ExtrafieldIP = IP -ExtrafieldSelect = Select list -ExtrafieldSelectList = Select from table +ExtrafieldSelect=Select list +ExtrafieldSelectList=Select from table ExtrafieldSeparator=Separator (not a field) ExtrafieldPassword=Lykilorð -ExtrafieldRadio=Radio buttons (one choice only) -ExtrafieldCheckBox=Checkboxes -ExtrafieldCheckBoxFromList=Checkboxes from table +ExtrafieldRadio=Radio buttons (1 choice only) +ExtrafieldCheckBox=Select list (n choices) +ExtrafieldCheckBoxFromList=Select from table (n choices) ExtrafieldLink=Link to an object +ExtrafieldPointGeo=Geometric Point +ExtrafieldMultiPointGeo=Geometric Multi Point +ExtrafieldLinestringGeo=Geometric Linestring +ExtrafieldPolygonGeo=Geometric Polygon 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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field @@ -464,8 +474,8 @@ ExtrafieldParamHelpPassword=Leaving this field blank means this value will be st 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 necessarily 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 +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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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 @@ -504,15 +514,17 @@ ModuleCompanyCodeCustomerDigitaria=%s followed by the truncated customer name by 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). +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. 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=It is therefore recommended to change the sending method of e-mails to the value "SMTP". WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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 (for email %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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) @@ -533,6 +545,7 @@ 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 +BlockExpenseReportLineCreationIfNotBetweenDates=Block line creation if the date of the added line is not in the expense report range AttachMainDocByDefault=Set this to Yes if you want to attach by default the main document to the email (if applicable) FilesAttachedToEmail=Attach file SendEmailsReminders=Send agenda reminders by emails @@ -655,7 +668,7 @@ 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. +Module2400Desc=Manage manual and automatic events. Use the calendar to record events manually. Log also events automatically for tracking purposes or record manual events or meetings. This is the principal module for good Customer and/or Vendor Relationship Management. Module2430Name=Online appointment scheduling Module2430Desc=Provides an online appointment booking system. This allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM @@ -788,6 +801,7 @@ Permission116=Millifærslur milli reikninga Permission117=Manage checks dispatching Permission121=Lesa þriðja aðila sem tengist notandi Permission122=Búa til / breyta þriðja aðila sem tengist notandi +Permission122b=Not effective for external users (always limited to their third party). Permission125=Eyða þriðja aðila sem tengist notandi Permission126=Útflutningur þriðja aðila Permission130=Create/modify third parties payment information @@ -853,7 +867,9 @@ PermissionAdvanced253=Búa til / breyta innri / ytri notendur og leyfi Permission254=Eyða eða gera öðrum notendum Permission255=Búa til / breyta eigin upplýsingar um notandann sinn Permission256=Breyta eigin lykilorð hans -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). +Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). +Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). 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=Lesa CA Permission272=Lesa reikningum @@ -886,13 +902,13 @@ Permission401=Lesa afsláttur Permission402=Búa til / breyta afsláttur Permission403=Staðfesta afsláttur Permission404=Eyða afsláttur -Permission430=Use Debug Bar +Permission431=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 +Permission521=Read Loans Permission522=Create/modify loans Permission524=Delete loans Permission525=Access loan calculator @@ -913,12 +929,12 @@ 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) +Permission651=Read Bills of Materials +Permission652=Create/Update Bills of Materials +Permission653=Delete Bills of Materials +Permission661=Read Manufacturing Order (MO) +Permission662=Create/Update Manufacturing Order (MO) +Permission663=Delete Manufacturing Order (MO) Permission701=Lesa Fjárframlög Permission702=Búa til / breyta framlög Permission703=Eyða Fjárframlög @@ -930,7 +946,7 @@ 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=Lesa fiskistofna +Permission1001=Read warehouses and stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses Permission1004=hreyfing Lesa lager's @@ -990,7 +1006,7 @@ Permission2515=Skipulag skjöl framkvæmdarstjóra Permission2610=Generate/modify users API key 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 +Permission3201=Read archived events and fingerprints Permission3301=Generate new modules Permission4001=Read skill/job/position Permission4002=Create/modify skill/job/position @@ -1027,9 +1043,9 @@ Permission50152=Edit sales lines Permission50153=Edit ordered sales lines Permission50201=Lesa viðskipti Permission50202=Flytja viðskipti -Permission50330=Read objects of Zapier -Permission50331=Create/Update objects of Zapier -Permission50332=Delete objects of Zapier +Permission50331=Read objects of Zapier +Permission50332=Create/Update objects of Zapier +Permission50333=Delete objects of Zapier Permission50401=Bind products and invoices with accounting accounts Permission50411=Read operations in ledger Permission50412=Write/Edit operations in ledger @@ -1054,16 +1070,16 @@ Permission63002=Create/modify resources Permission63003=Delete resources Permission63004=Link resources to agenda events Permission64001=Allow direct printing -Permission67000=Allow printing of receipts +Permission67001=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 +Permission941601=Read receptions +Permission941602=Create and modify receptions +Permission941603=Validate receptions +Permission941604=Send receptions by email +Permission941605=Export receptions +Permission941606=Delete receptions DictionaryCompanyType=Third-party types DictionaryCompanyJuridicalType=Third-party legal entities DictionaryProspectLevel=Prospect potential level for companies @@ -1118,11 +1134,12 @@ 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 dependent 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. +VATIsUsedStandard=When creating documents (proposals, invoices, orders...), the default Sales Tax rate is set according to the standard rules (depending on seller and buyer countries) +VATIsUsedDesc=By default when creating proposals, 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 dependent 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. -VATType=VAT type +VATType=Tax type ##### Local Taxes ##### TypeOfSaleTaxes=Type of sales tax LTRate=Verð @@ -1158,6 +1175,9 @@ NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), yo LabelUsedByDefault=Merki notaður við vanræksla, ef ekki þýðingu er að finna í kóða LabelOnDocuments=Merki um skjöl LabelOrTranslationKey=Label or translation key +TranslationFound=Translation found +TheTranslationIsSearchedFromKey=The translation is searched from the translation key: %s +TranslationKey=Translation key ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days @@ -1195,9 +1215,11 @@ DefaultMenuManager= Standard matseðill framkvæmdastjóri DefaultMenuSmartphoneManager=Smartphone matseðill framkvæmdastjóri Skin=Skin þema DefaultSkin=Default húð þema -MaxSizeList=Max lengd fyrir lista +MaxSizeList=Max length for lists DefaultMaxSizeList=Default max length for lists +MaxSizeShortList=Max length for short lists DefaultMaxSizeShortList=Default max length for short lists (i.e. in customer card) +DisplayGrandTotalInList=Display grand total (for all pages) in lists footer MessageOfDay=Skilaboð dagsins MessageLogin=Innskráning síðu skilaboð LoginPage=Login page @@ -1205,7 +1227,8 @@ BackgroundImageLogin=Background image PermanentLeftSearchForm=Varanleg leita mynd til vinstri valmynd DefaultLanguage=Default language EnableMultilangInterface=Enable multilanguage support for customer or vendor relationships -EnableShowLogo=Show the company logo in the menu +EnableShowLogo=Show the company logos in the menu +THEME_MENU_COLORLOGO=Show main menu images in color CompanyInfo=Company/Organization CompanyIds=Company/Organization identities CompanyAddress=Heimilisfang @@ -1267,6 +1290,7 @@ BrowserName=Browser name BrowserOS=Browser OS ListOfSecurityEvents=Listi yfir Dolibarr öryggi viðburðir SecurityEventsPurged=Öryggi viðburðir hreinsa +SecurityEvent=Security event TrackableSecurityEvents=Trackable security events 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. @@ -1330,6 +1354,7 @@ AdvancedNumRefModelDesc=Returns the reference number in the format %syymm-nnnn w 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 +ShowLegalFormInAddress=Show the legal form with addresses TranslationUncomplete=Algjör þýðing MAIN_DISABLE_METEO=Disable weather thumb MeteoStdMod=Standard mode @@ -1405,7 +1430,7 @@ 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 address 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@example.com - Paris" or "Dupond Durand - 06 07 59 65 66 - Paris" instead of "Dupond Durand". +AddEmailPhoneTownInContactList=Display Contact email (or phones if not defined) and town into combo lists.
Contacts will appear with a name format of "Dupond Durand - dupond.durand@example.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=%s viði útgáfa FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) @@ -1434,10 +1459,10 @@ HRMSetup=HRM module setup CompanySetup=Stofnanir mát skipulag 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. +NotificationsDesc=Email notifications can be sent automatically on certain events.
Recipients of notifications can be defined: +NotificationsDescUser=* per user (on the tab "Notifications" of a user) +NotificationsDescContact=* per third-party contacts (on the tab "Notifications" of a third party) +NotificationsDescGlobal=* or by setting global email addresses (on the setup page of the module). ModelModules=Document Templates DocumentModelOdt=Generate documents from OpenDocument templates (.ODT / .ODS files from LibreOffice, OpenOffice, KOffice, TextEdit,...) WatermarkOnDraft=Vatnsmerki á drögum að skjali @@ -1473,11 +1498,16 @@ InvoiceOptionCategoryOfOperations=Display the mention "category of operations" o InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner +InvoiceClassifyBilledSupplierOrderWithoutInvoice=Disallow the classification of an order as billed without invoice. +InvoiceClassifyBilledSupplierOrderWithoutInvoiceHelp=An order can be classified as billed by default. If this conf is set to true, it will be not. +##### Supplier Orders ##### +SupplierOrderClassifyBilledWithoutInvoice=Disallow the classification of a purchase order as billed without invoice. +SupplierOrderClassifyBilledWithoutInvoiceHelp=A supplier order can be classified as billed by default. If this conf is set to true, it will be not. ##### Proposals ##### PropalSetup=Auglýsing tillögur mát skipulag ProposalsNumberingModules=Auglýsing tillögu tala mát ProposalsPDFModules=Auglýsing tillögu skjöl módel -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payment mode by default if not defined on the proposal FreeLegalTextOnProposal=Frjáls texti um viðskiptabanka tillögur WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1519,8 +1549,8 @@ MemberCodeChecker=Options for automatic generation of member codes AdherentLoginRequired=Manage a login/password for each member AdherentLoginRequiredDesc=Add a value for a login and a password on the member file. If the member is linked to a user, updating the member login and password will also update the user login and password. AdherentMailRequired=Email required to create a new member -MemberSendInformationByMailByDefault=Checkbox að senda póst staðfestingu á meðlimum (löggilding eða nýja áskrift) er sjálfgefið -MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated +MemberSendInformationByMailByDefault=The checkbox to send an email confirmation to members (validation or new subscription) is on by default +MemberCreateAnExternalUserForSubscriptionValidated=Create automatically an external user (with a login to connect to the application) after an online payment of a membership subscription VisitorCanChooseItsPaymentMode=Visitor can choose from any 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 @@ -1663,11 +1693,12 @@ LDAPDescUsers=Þessi síða leyfir þér að skilgreina LDAP eiginleiki nafn í LDAPDescGroups=Þessi síða leyfir þér að skilgreina LDAP eiginleiki nafn í LDAP tré fyrir hvern gögn fundust á Dolibarr hópa. LDAPDescMembers=Þessi síða leyfir þér að skilgreina LDAP eiginleiki nafn í LDAP tré fyrir hvern gögn fundust á Dolibarr meðlimir mát. LDAPDescMembersTypes=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr members types. -LDAPDescValues=Dæmi gildi eru hannaðar fyrir OpenLDAP með eftirfarandi hlaðinn schemas: core.schema, cosine.schema, inetorgperson.schema). Ef þú notar thoose gildi og OpenLDAP, breyta þínum LDAP config skrá slapd.conf að láta alla thoose schemas hlaðinn. +LDAPDescValues=Example values are designed for OpenLDAP with following loaded schemas: core.schema, cosine.schema, inetorgperson.schema). If you use those values and OpenLDAP, modify your LDAP config file slapd.conf to have all those schemas loaded. ForANonAnonymousAccess=Til að staðfesta aðild (til a skrifa aðgangur til dæmis) PerfDolibarr=Performance setup/optimizing report YouMayFindPerfAdviceHere=This page provides some checks or advice related to performance. NotInstalled=Not installed. +Installed=Installed. NotSlowedDownByThis=Not slowed down by this. NotRiskOfLeakWithThis=Not risk of leak with this. ApplicativeCache=Applicative cache @@ -1811,6 +1842,7 @@ DetailRight=Condition to display unauthorized gray menus DetailLangs=Lang skrá nafn merki númer þýðingar DetailUser=Nemi / Ytri / Allar Target=Markmál +Targets=Markmið DetailTarget=Target for links (_blank top opens a new window) DetailLevel=Level (-1: aðalvalmynd, 0: haus Valmynd> 0 matseðill og undir valmyndinni) ModifMenu=Valmynd breyting @@ -1868,6 +1900,7 @@ ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a so CashDesk=Point of Sale CashDeskSetup=Point of Sales module setup CashDeskThirdPartyForSell=Default generic third party to use for sales +ForbidSalesToTheDefaultCustomer=Do not allow to record sales on a generic third party (must use a different third party for each sale) CashDeskBankAccountForSell=Reikning til að nota til að taka á móti peningum greiðslur CashDeskBankAccountForCheque=Default account to use to receive payments by check CashDeskBankAccountForCB=Reikning til að nota til að taka á móti peningum greiðslur með kreditkortum @@ -1881,6 +1914,7 @@ CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when mak CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13) +CashDeskDefaultProject=Assign new POS sales (invoices) to a project ##### Bookmark ##### BookmarkSetup=Bókamerki mát skipulag 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. @@ -1940,6 +1974,8 @@ CloseFiscalYear=Close accounting period DeleteFiscalYear=Delete accounting period ConfirmDeleteFiscalYear=Are you sure to delete this accounting period? ShowFiscalYear=Show accounting period +##### Assets ##### +AssetNumberingModules=Assets numbering module 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 @@ -1952,16 +1988,17 @@ 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) +##### Expense reports ##### 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 +TemplatesForNotifications=Emails 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 +ListOfFixedNotifications=Global recipients emails for automatic email 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 @@ -1987,6 +2024,7 @@ BackgroundColor=Background color TopMenuBackgroundColor=Background color for Top menu TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Background color for Left menu +LeftmenuId=Left menu ID BackgroundTableTitleColor=Background color for Table title line BackgroundTableTitleTextColor=Text color for Table title line BackgroundTableTitleTextlinkColor=Text color for Table title link line @@ -1996,6 +2034,7 @@ MinimumNoticePeriod=Minimum notice period (Your leave request must be done befor 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 +EnterYesOrNo=Enter Yes or No 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
- fontawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) @@ -2028,6 +2067,7 @@ MailToSendContract=Samningar MailToSendReception=Receptions MailToExpenseReport=Expense reports MailToThirdparty=Í þriðja aðila +MailToContact=Tengiliðir MailToMember=Meðlimir MailToUser=Notendur MailToProject=Verkefni @@ -2058,6 +2098,7 @@ AddMenus=Add menus AddPermissions=Add permissions AddExportProfiles=Add export profiles AddImportProfiles=Add import profiles +AddWebsiteTemplates=Add website templates for the website module AddOtherPagesOrServices=Add other pages or services AddModels=Add document or numbering templates AddSubstitutions=Add keys substitutions @@ -2075,7 +2116,7 @@ BaseCurrency=Reference currency of the company (go into setup of company to chan 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. - +WarningExperimentalFeatureInvoiceSituationNeedToUpgradeToProgressiveMode=If you are using the experimental mode for situation invoices, you will need to update your data to switch from the experimental mode to the official mode. You can contact a partner to help you with this task. A list of preferred partners is available by following this link MAIN_PDF_MARGIN_LEFT=Left margin on PDF MAIN_PDF_MARGIN_RIGHT=Right margin on PDF MAIN_PDF_MARGIN_TOP=Top margin on PDF @@ -2087,14 +2128,14 @@ MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Width of the column if a picture is added on l MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=Hide the unit price column on quotation requests MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=Hide the total price column on quotation requests MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=Hide the unit price column on purchase orders -MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on puchase orders +MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on purchase orders MAIN_PDF_NO_SENDER_FRAME=Hide borders on sender address frame MAIN_PDF_NO_RECIPENT_FRAME=Hide borders on recipient 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 +MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Add a hidden markup into the signature area to allow electronic signature tool to reuse it. May be used by external tools or in the future by the online signature feature. 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 @@ -2103,7 +2144,7 @@ RemoveSpecialChars=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_AQUARIUM_NO_PREFIX=Do not use prefix, only copy customer or supplier code COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) -COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed +DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) @@ -2114,6 +2155,8 @@ YouCanDeleteFileOnServerWith=You can delete this file on the server with Command ChartLoaded=Chart of account loaded SocialNetworkSetup=Setup of module Social Networks EnableFeatureFor=Enable features for %s +EnableModuleX=Enable module %s +SetupModuleX=Setup module %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. @@ -2128,6 +2171,7 @@ oauthToken=OAuth2 token accessType=Access 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). +TokenNotRequiredForOAuthLogin=Token unnecessary for OAuth entry used for Login ImapEncryption = IMAP encryption method ImapEncryptionHelp = Example: none, ssl, tls, notls NoRSH = Use the NoRSH configuration @@ -2161,7 +2205,7 @@ NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing 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) +CreateTicketAndThirdParty=Create or complete 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) @@ -2176,7 +2220,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 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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Opening hours OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module @@ -2206,7 +2250,7 @@ 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 +WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatically 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) @@ -2222,7 +2266,7 @@ 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 already 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 recommended to create a dedicated second password for the application instead of using your own account password from https://myaccount.google.com/. EmailCollectorTargetDir=It may be a desired behavior 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 third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Warning: a lot of email servers (like Gmail) are doing full word searches when searching on a string and will not return a result if the string is only found partially into a word. For this reason too, use special characters into a search criteria will be ignored are they are not part of existing words.
To make an exclude search on a word (return email if word is not found), you can use the ! character before the word (may not work on some mail servers). EndPointFor=End point for %s : %s DeleteEmailCollector=Delete email collector @@ -2230,13 +2274,15 @@ 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. +StaticIPsOfUsers=If applicable, list of all static IPs of users 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 +EmailTemplateHelp=You can create emails templates from menu %s - %s +EMailsWillHaveMessageID=Emails will have a 'Message-ID' header matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in third-party name @@ -2325,11 +2371,10 @@ 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 generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors. - ModuleWebhookName = Webhook ModuleWebhookDesc = Interface to catch dolibarr triggers and send data of the event to an URL WebhookSetup = Webhook setup -WebhookSetupPage = Webhook setup page +WebhookSetupPage = Webhook setup page. To activate a webhook, go on the %s tab and create targets ShowQuickAddLink=Show a button to quickly add an element in top right menu ShowSearchAreaInTopMenu=Show the search area in the top menu HashForPing=Hash used for ping @@ -2338,7 +2383,6 @@ 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 over menu bar @@ -2346,10 +2390,15 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse over th 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 +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices (with a bank account defined for credit transfer) INVOICE_ADD_SWISS_QR_CODEMore=Switzerland's standard for invoices; make sure ZIP & City are filled and that the accounts have valid Swiss/Liechtenstein IBANs. +INVOICE_ADD_EPC_QR_CODE=Show the EPC QR code on invoices (with a bank account defined for credit transfer) +INVOICE_ADD_EPC_QR_CODEMore=This feature allows you to add or remove an EPC QR Code on your invoices, which facilitates automatic SEPA credit transfers. Enabling this option helps your clients make payments easily by scanning the QR code, reducing manual entry errors. Use this feature if you have clients in countries like Austria, Belgium, Finland, Germany, and the Netherlands where this system is supported. Disable it if it's not required for your business operations or client base. +INVOICE_ADD_EPC_QR_CODEPay=Scan this QR code to pay with a smartphone supporting payment with EPC QR code. INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory indication in some countries (France, ...) +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Show billing contact on proposal +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=By default the contact only appears for billing 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 @@ -2363,8 +2412,11 @@ HideAdvancedoptions= Hide advanced options 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 +AuthenticationMethod=Authentication method MAIN_MAIL_SMTPS_AUTH_TYPE=Authentication method UsePassword=Use a password +UseAUTHLOGIN=Use a password (AUTH LOGIN) +UseAUTHPLAIN=Use a password (AUTH PLAIN) UseOauth=Use a OAUTH token Images=Images MaxNumberOfImagesInGetPost=Max number of images allowed in a HTML field submitted in a form @@ -2380,7 +2432,7 @@ CssOnEdit=CSS on edit pages CssOnView=CSS on view pages CssOnList=CSS on lists HelpCssOnEditDesc=The CSS used when editing the field.
Example: "minwiwdth100 maxwidth500 widthcentpercentminusx" -HelpCssOnViewDesc=The CSS used when viewing the field. +HelpCssOnViewDesc=The CSS used when viewing the field.
Example: "longmessagecut" HelpCssOnListDesc=The CSS used when field is inside a list table.
Example: "tdoverflowmax200" RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions @@ -2392,7 +2444,7 @@ DesktopsAndSmartphones=Desktops et smartphones AllowOnlineSign=Allow online signing AllowExternalDownload=Allow external download (without login, using a shared link) DeadlineDayVATSubmission=Deadline day for vat submission on the next month -MaxNumberOfAttachementOnForms=Max number of joinded files in a form +MaxNumberOfAttachementOnForms=Max number of joined files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s Reload=Reload ConfirmReload=Confirm module reload @@ -2408,6 +2460,7 @@ DefaultForTypeDesc=Template used by default when creating a new email for the te OptionXShouldBeEnabledInModuleY=Option "%s" should be enabled into module %s OptionXIsCorrectlyEnabledInModuleY=Option "%s" is enabled into module %s AllowOnLineSign=Allow On Line signature +AllowOnLineSignDesc=A link to allow to sign online a bank document (mandate for direct debit for example) is available in list of payment modes of third parties for bank accounts AtBottomOfPage=At bottom of page FailedAuth=failed authentications MaxNumberOfFailedAuth=Max number of failed authentication in 24h to deny login. @@ -2422,6 +2475,7 @@ LargeModern=Large - Modern SpecialCharActivation=Enable the button to open a virtual keyboard to enter special characters DeleteExtrafield=Delete extrafield ConfirmDeleteExtrafield=Do you confirm deletion of the field %s ? All data saved into this field will be definitely deleted +ConfirmDeleteSetup=Are you sure you want to delete the setup for %s ? ExtraFieldsSupplierInvoicesRec=Complementary attributes (templates invoices) ExtraFieldsSupplierInvoicesLinesRec=Complementary attributes (template invoice lines) ParametersForTestEnvironment=Parameters for test environment @@ -2433,3 +2487,71 @@ UrlPublicInterfaceHelpAdmin=It is possible to define an alias to the web server ExportUseForce=Use the parameter -f ExportUseForceHelp=Force to continue the export even when an error is found (Backup may not be reliable) CustomPrompt=Custom prompts +AiDescription=AI (Artificial Intelligence) features +AiDescriptionLong=Provides AI (Artificial Intelligence) features in different parts of the application. Need external AI API. +AI_API_KEY=Key for AI api +AI_API_URL=Endpoint URL for AI api +AI_API_SERVICE=Service to use for AI features +AiSetup=AI module setup +AiCustomPrompt=AI custom prompt +AI_CONFIGURATIONS_PROMPT=Custom prompt +TextGeneration=Text generation +ImageGeneration=Image generation +VideoGeneration=Video generation +AudioGeneration=Audio generation +AIPromptForFeatures=AI custom prompts for features +EnterAnIP=Enter an IP address +ConvertInto=Convert into +YouAreHere=You are here +BARCODE_ON_SHIPPING_PDF=Show the barcode on the shipping PDF document +BARCODE_ON_RECEPTION_PDF=Show the barcode on the reception PDF document +BARCODE_ON_STOCKTRANSFER_PDF=Show the barcode on the stock transfer PDF document +Unstable=Unstable +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. +TestWebhookTarget=Test WebHook +DataToSendTrigger=Data sent to Url +SendToUrl=Send to Url +WebsiteTemplateWasCopied=The website template(s) "%s" provided by this module has been saved into the directory of website templates (/doctemplates/websites) and is ready to be imported as a new web site. +EnabledByDefaultAtInstall=Enabled by default at install +VulnerableToRCEAttack=You are vulnerable to RCE attacks by using the custom dol_json_decode function +OpenIDconnectSetup=Configuration of the OpenID Connect module +MainAuthenticationOidcClientIdName=Client ID +MainAuthenticationOidcClientIdDesc=OpenID Connect Client ID +MainAuthenticationOidcClientSecretName=Client secret +MainAuthenticationOidcClientSecretDesc=OpenID Connect Client Secret +MainAuthenticationOidcScopesName=Scopes +MainAuthenticationOidcScopesDesc=OpenID scopes to allow access to user information +MainAuthenticationOidcAuthorizeUrlName=Authorize URL +MainAuthenticationOidcAuthorizeUrlDesc=(example: https://example.com/oauth2/authorize) +MainAuthenticationOidcTokenUrlName=Token URL +MainAuthenticationOidcTokenUrlDesc=(example: https://example.com/oauth2/token) +MainAuthenticationOidcUserinfoUrlName=User info URL +MainAuthenticationOidcUserinfoUrlDesc=(example: https://example.com/oauth2/userinfo) +MainAuthenticationOidcLogoutUrlName=Logout URL +MainAuthenticationOidcLogoutUrlDesc=(example: https://example.com/oauth2/logout) +MainAuthenticationOidcRedirectUrlName=Redirect URL +MainAuthenticationOidcRedirectUrlDesc=Redirect URL to authorize on the OpenID provider side +MainAuthenticationOidcLogoutRedirectUrlName=Dolibarr logout URL +MainAuthenticationOidcLogoutRedirectUrlDesc=Dolibarr logout URL to authorize on the OpenID provider side +MainAuthenticationOidcLoginClaimName=Login claim +MainAuthenticationOidcLoginClaimDesc=OpenID Connect claim matching the Dolibarr user login. If not set or empty, defaults to email +BlackListWords=Black list of words +AddBlackList=Add to black list +FediverseSetup=Configuration of fediverse section +ConfigImportSocialNetwork=Configuration of social networks compatible with Fediverse +Fediverse=Fediverse +NewSocialNetwork=New Fediverse social network +SocialNetworkUrl=Fediverse API URL +SocialNetworksNote=Each social network definition provides a widget that you must enable to have it available in dashboard +ConfirmDeleteSocialNetwork= Are you sure want to delete this record ? +AnOwnerMustBeSetIfEmailTemplateIsPrivate=An owner must be set if the email template is set as private +ContactsDefaultRoles=For third parties of the "individual" type, a contact can be created simultaneously. Define here the roles that will be systematically assigned to this contact. +MenuDict=Dictionary +AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token +ParamName=Name of parameter +ParamValue=Value of parameter diff --git a/htdocs/langs/is_IS/commercial.lang b/htdocs/langs/is_IS/commercial.lang index 3f1549e3f8a..2dfcc675a94 100644 --- a/htdocs/langs/is_IS/commercial.lang +++ b/htdocs/langs/is_IS/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Are you sure you want to delete this event? CardAction=Aðgerð kort ActionOnCompany=Related company ActionOnContact=Related contact +ActionOnUser=Related user TaskRDVWith=Fundur með %s ShowTask=Sýna verkefni ShowAction=Sýna aðgerðir @@ -47,7 +48,6 @@ LastProspectToContact=Til að hafa samband LastProspectContactInProcess=Hafðu í vinnslu LastProspectContactDone=Hafðu gert ActionAffectedTo=Aðgerð áhrif til -ActionDoneBy=Aðgerð lokið við ActionAC_TEL=Símtal ActionAC_FAX=Senda símbréfi ActionAC_PROP=Senda tillögu með tölvupósti @@ -64,17 +64,39 @@ ActionAC_SHIP=Senda skipum með pósti ActionAC_SUP_ORD=Send purchase order by mail ActionAC_SUP_INV=Send vendor invoice by mail ActionAC_OTH=Annað -ActionAC_OTH_AUTO=Automatically inserted events -ActionAC_MANUAL=Manually inserted events -ActionAC_AUTO=Automatically inserted events -ActionAC_OTH_AUTOShort=Auto +ActionAC_OTH_AUTO=Other auto +ActionAC_MANUAL=Events inserted manually (by a user) +ActionAC_AUTO=Events inserted automatically +ActionAC_OTH_AUTOShort=Önnur +ActionAC_EVENTORGANIZATION=Event organization events Stats=Sales statistics StatusProsp=Prospect stöðu DraftPropals=Drög auglýsing tillögur 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 +WelcomeOnOnlineSignaturePageProposal=Welcome to the page to accept commercial proposals from %s +WelcomeOnOnlineSignaturePageContract=Welcome to %s Contract PDF Signing Page +WelcomeOnOnlineSignaturePageFichinter=Welcome to %s Intervention PDF Signing Page +WelcomeOnOnlineSignaturePageSociete_rib=Welcome to %s SEPA mandate PDF Signing Page +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page +ThisScreenAllowsYouToSignDocFromProposal=This screen allow you to accept and sign, or refuse, a quote/commercial proposal +ThisScreenAllowsYouToSignDocFromContract=This screen allow you to sign contract on PDF format online. +ThisScreenAllowsYouToSignDocFromFichinter=This screen allow you to sign intervention on PDF format online. +ThisScreenAllowsYouToSignDocFromSociete_rib=This screen allow you to sign SEPA Mandate on PDF format online. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. +ThisIsInformationOnDocumentToSignProposal=This is information on document to accept or refuse +ThisIsInformationOnDocumentToSignContract=This is information on contract to sign +ThisIsInformationOnDocumentToSignFichinter=This is information on intervention to sign +ThisIsInformationOnDocumentToSignSociete_rib=This is information on SEPA Mandate to sign +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Signature of quote/commercial proposal %s +SignatureContractRef=Signature of contract %s +SignatureFichinterRef=Signature of intervention %s +SignatureSociete_ribRef=Signature of SEPA Mandate %s FeatureOnlineSignDisabled=Feature for online signing disabled or document generated before the feature was enabled +NoSignature=Ekki skráð +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/it_IT/admin.lang b/htdocs/langs/it_IT/admin.lang index 3370a3cb81f..67d4229dc0f 100644 --- a/htdocs/langs/it_IT/admin.lang +++ b/htdocs/langs/it_IT/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=I parametri devono essere ObjectName:Classpath
Sintassi: 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=Libreria utilizzata per generare PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s seguito dal nome del cliente troncato dal ModuleCompanyCodeSupplierDigitaria=%s seguito dal nome del fornitore troncato dal numero di caratteri: %s per il codice contabile del fornitore. Use3StepsApproval=By default, Purchase Orders need to be created and approved by 2 different users (one step/user to create and one step/user to approve. Note that if user has both permission to create and approve, one step/user will be enough). You can ask with this option to introduce a third step/user approval, if amount is higher than a dedicated value (so 3 steps will be necessary: 1=validation, 2=first approval and 3=second approval if amount is enough).
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=Utilizzare un'approvazione in 3 passaggi quando l'importo (senza tasse) è superiore a ... -WarningPHPMail=ATTENZIONE: la configurazione per inviare e-mail da Applicazione utilizza la configurazione generica default. Questa scelta non richiede conoscenze tecniche per completare la configurazione.
Tuttavia, spesso è meglio impostare le email in uscita per utilizzare email server del tuo fornitore di servizi email invece della configurazione default per diversi motivi: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: WarningPHPMailA=- L'utilizzo del server del fornitore di servizi email aumenta l'affidabilità del tuo email, quindi aumenta la consegna senza essere contrassegnato come SPAM -WarningPHPMailB=- Alcuni provider di servizi di posta elettronica (come Yahoo) non consentono di inviare un'e-mail da un server diverso dal proprio server. La tua configurazione attuale utilizza il server dell'applicazione per inviare e-mail e non il server del tuo provider di posta elettronica, quindi alcuni destinatari (quello compatibile con il protocollo restrittivo DMARC), chiederanno al tuo provider di posta elettronica se possono accettare la tua posta e alcuni provider di posta elettronica (come Yahoo) potrebbe rispondere "no" perché il server non è il loro, quindi alcune delle tue email inviate potrebbero non essere accettate per la consegna (attenzione anche alla quota di invio del tuo provider di posta elettronica). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Anche l'utilizzo del server SMTP del tuo provider di servizi di posta elettronica per inviare e-mail è interessante, quindi tutte le e-mail inviate dall'applicazione verranno salvate anche nella directory "Inviati" della tua casella di posta. WarningPHPMailD=Si consiglia pertanto di modificare il metodo di invio delle email al valore "SMTP". WarningPHPMailDbis=Se vuoi davvero mantenere il metodo "PHP" predefinito per inviare e-mail, ignora questo avviso o rimuovilo con %s cliccando qui %s. 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 (per e-mail %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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 @@ -867,7 +868,7 @@ Permission255=Cambiare le password di altri utenti Permission256=Eliminare o disabilitare altri utenti Permission262=Estendi l'accesso a tutte le terze parti e ai loro oggetti (non solo alle terze parti per le quali utente è collegato come vendere rappresentante). Permission262b=Non efficace per gli utenti esterni (sempre limitati a se stessi per Proposte, ordini, fatture, contratti, ecc.). -Permission262c=Non efficace per i progetti (solo le regole sulle autorizzazioni progetto, la visibilità e assegnazione sono importanti). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Estendere l'accesso a tutte le terze parti SENZA i loro oggetti (non solo a terze parti per le quali l'utente è un rappresentante di vendita).
Non efficace per gli utenti esterni (sempre limitato a se stesso per proposte, ordini, fatture, contratti, ecc.).
Non efficace per i progetti (solo regole su autorizzazioni di progetto, visibilità e questioni di assegnazione). Permission271=Vedere CA Permission272=Vedere fatture @@ -944,7 +945,7 @@ Permission776=Pagare le note spese Permission777=Leggi tutte le note spese (anche quelle di utenti non subordinati) Permission778=Crea/modifica note spese di tutti Permission779=Esporta note spese -Permission1001=Vedere magazzino +Permission1001=Read warehouses and stocks Permission1002=Crea/modifica magazzini Permission1003=Elimina magazzini Permission1004=Vedere movimenti magazzino @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter su clean value (COMPANY_DIGITARIA_CLE DuplicateForbidden=Vietata la duplicazione RemoveSpecialWords=Pulisci alcune parole durante la generazione di sottoconti per clienti o fornitori RemoveSpecialWordsHelp=Specificare le parole da pulire prima di calcolare il conto cliente o fornitore. Usare un ";" tra ogni parola -GDPRContact=DPO (Data Protection Officer) o in italiano RPD (Responsabile della Protezione dei Dati) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) 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 @@ -2218,7 +2219,7 @@ 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 alcuni dati o impostare valori da utilizzare per l'operazione.

Esempio per estrarre una azienda nome da email soggetto in una variabile temporanea:
tmp_var=EXTRACT:OGGETTO:Messaggio da azienda ([^\n]*)

Esempi per impostare le proprietà di un oggetto su creare:
objproperty1=SET :un valore codificato
objproperty2=SET:__tmp_var__
span>objproperty3=SETIFEMPTY:un valore (il valore viene impostato solo se la proprietà non è già definita)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT :BODY:Il mio nome azienda è\\s([^\\s ]*)

Utilizza un nuovo linea per estrarre o impostare diversi proprietà. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line 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 @@ -2264,7 +2265,7 @@ 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 already collected and linked to an object, the created event will be automatically linked to the known related object. WithGMailYouCanCreateADedicatedPassword=Con una GMail conto, se hai abilitato la convalida in 2 passaggi, si consiglia di creare una seconda password dedicata per Applicazione invece di utilizzare la tua password conto da https://myaccount.google.com/. EmailCollectorTargetDir=Potrebbe essere un comportamento desiderato spostare email in un altro tag/directory quando è stato elaborato correttamente. Basta impostare il nome di directory qui per utilizzare questo funzionalità (NON utilizzare caratteri speciali nel nome). Nota che devi utilizzare anche un leggere/write login conto. -EmailCollectorLoadThirdPartyHelp=Puoi utilizzare questa azione per utilizzare il contenuto email per trovare e caricare una terza parte esistente nel tuo database (la ricerca verrà effettuata sulla proprietà definita tra 'id','name','name_alias','email'). La terza parte trovata (o creata) verrà utilizzata per le azioni seguire che la richiedono.
Per Esempio, se vuoi creare una terza parte con un nome estratto da una stringa 'Nome: nome da trovare' presente nel corpo, usa il mittente email come email, puoi impostare il parametro campo in questo modo:
'email=HEADER:^From:(.*);nome =EXTRACT:CORPO:Nome:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Attenzione: molti server email (come Gmail) eseguono ricerche di parole complete quando la ricerca su una stringa e non restituirà un risultato se la stringa si trova solo parzialmente in una parola. Anche per questo motivo, l'utilizzo di caratteri speciali in un criterio di ricerca verrà ignorato se non fanno parte di parole esistenti.
Per effettuare una ricerca di esclusione su una parola (return email se la parola non viene trovata), puoi usare il ! carattere prima della parola (potrebbe non funzionare su alcuni server di posta). EndPointFor=End point for %s : %s DeleteEmailCollector=Delete email collector @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Nome di terze parti: alias di terze parti ALIAS_THIRDPARTY=Alias di terze parti: nome di terze parti PDFIn2Languages=Mostra le etichette nel PDF in 2 lingue diverse (questo funzionalità potrebbe non funzionare per alcune lingue) 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 con formato PDF/A anziché default formato PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Inserisci qui il codice di un'icona FontAwesome. Se non sai cos'è FontAwesome, puoi utilizzare il valore generico fa-address-book. RssNote=Nota: ogni definizione di feed RSS fornisce un widget che è necessario abilitare per renderlo disponibile nella dashboard JumpToBoxes=Vai a Setup -> Widget @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/it_IT/commercial.lang b/htdocs/langs/it_IT/commercial.lang index e281389932d..e07736dd085 100644 --- a/htdocs/langs/it_IT/commercial.lang +++ b/htdocs/langs/it_IT/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Vuoi davvero eliminare questo evento? CardAction=Scheda Azione/compito ActionOnCompany=Azienda collegata ActionOnContact=Contatto collegato +ActionOnUser=Related user TaskRDVWith=Incontro con %s ShowTask=Visualizza compito ShowAction=Visualizza azione @@ -93,3 +94,9 @@ SignatureContractRef=Firma di Contratto %s SignatureFichinterRef=Firma dell'intervento %s SignatureSociete_ribRef=Firma del mandato SEPA %s FeatureOnlineSignDisabled=Funzionalità per la firma online disattivata o documento generato prima che la funzione fosse abilitata +NoSignature=Non firmato +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/it_IT/companies.lang b/htdocs/langs/it_IT/companies.lang index 3ed4e7a0457..771f9ae90e0 100644 --- a/htdocs/langs/it_IT/companies.lang +++ b/htdocs/langs/it_IT/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr login NoDolibarrAccess=Senza accesso a Dolibarr ExportDataset_company_1=Soggetti terzi (aziende, fondazioni, persone fisiche) e dettagli ExportDataset_company_2=Contatti e loro attributi +ExportDataset_company_3=Third-parties Bank accounts 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 diff --git a/htdocs/langs/it_IT/datapolicy.lang b/htdocs/langs/it_IT/datapolicy.lang index cd8e5c081d5..e3d2af1c829 100644 --- a/htdocs/langs/it_IT/datapolicy.lang +++ b/htdocs/langs/it_IT/datapolicy.lang @@ -33,7 +33,7 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = cliente potenziale/cliente DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Né cliente potenziale/Né cliente DATAPOLICY_CONTACT_FOURNISSEUR = Fornitore DATAPOLICY_ADHERENT = Membro -DATAPOLICY_Tooltip_SETUP = Tipologia di contatto - Indica le tue scelte per ciascuna tipologia. +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Puoi inviare un GDPR email a tutti i tuoi contatti rilevanti (che non hanno ancora ricevuto un email e per il quale non hai registrato nulla relativo al loro accordo GDPR). Per fare ciò, utilizza il pulsante seguire. SendAgreement = Inviare emails AllAgreementSend = Tutte le email sono state inviate diff --git a/htdocs/langs/it_IT/dict.lang b/htdocs/langs/it_IT/dict.lang index c851c1168a6..b9c4ff46a9b 100644 --- a/htdocs/langs/it_IT/dict.lang +++ b/htdocs/langs/it_IT/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=Franchi CFP CurrencySingXPF=Franco CFP CurrencyCentEUR=cents CurrencyCentSingEUR=centesimo -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=Millesimo #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/it_IT/errors.lang b/htdocs/langs/it_IT/errors.lang index 7d98925f02c..8d1f36cb945 100644 --- a/htdocs/langs/it_IT/errors.lang +++ b/htdocs/langs/it_IT/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=User must be assigned to task to be able to enter tim ErrorTaskAlreadyAssigned=Attività già assegnata all'utente ErrorModuleFileSeemsToHaveAWrongFormat=The module package seems to have a wrong format. ErrorModuleFileSeemsToHaveAWrongFormat2=Deve esistere almeno una directory obbligatoria nello zip del modulo: %s o %s -ErrorFilenameDosNotMatchDolibarrPackageRules=The name of the module package (%s) does not match expected name syntax: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Error, duplicate trigger name %s. Already loaded from %s. ErrorNoWarehouseDefined=Errore: non è stato definito un magazzino. ErrorBadLinkSourceSetButBadValueForRef=The link you use is not valid. A 'source' for payment is defined, but value for 'ref' is not valid. @@ -422,3 +422,4 @@ OperNotDefined=Metodo pagamento non definito ErrorThisContactXIsAlreadyDefinedAsThisType=%s è già definito come contatto per questo tipo. ErrorThisGroupIsAlreadyDefinedAsThisType=I contatti con questo gruppo sono già definiti come contatto per questo tipo. EmptyMessageNotAllowedError=Non è consentito un messaggio vuoto +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/it_IT/interventions.lang b/htdocs/langs/it_IT/interventions.lang index 41758768b4a..e50cb4196c3 100644 --- a/htdocs/langs/it_IT/interventions.lang +++ b/htdocs/langs/it_IT/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Crea bozza InterventionContact=Contatto per l'intervento DeleteIntervention=Elimina intervento ValidateIntervention=Convalida intervento +SignIntervention=Firmare l'intervento +UnsignIntervention=Unsign intervention ModifyIntervention=Modificare intervento CloseIntervention=Intervento ravvicinato DeleteInterventionLine=Elimina riga di intervento ConfirmDeleteIntervention=Vuoi davvero eliminare questo intervento? ConfirmValidateIntervention=Vuoi davvero convalidare questo intervento con il riferimento %s? +ConfirmSignIntervention=Are you sure you want to set this intervention as signed ? +ConfirmUnsignIntervention=Are you sure you want to set this intervention as unsigned ? ConfirmModifyIntervention=Vuoi davvero modificare questo intervento? ConfirmCloseIntervention=Sei sicuro che vuoi per chiudere questo intervento? ConfirmDeleteInterventionLine=Vuoi davvero eliminare questa riga di intervento? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Interventi e righe degli interventi InterventionClassifyBilled=Classifica come "Fatturato" InterventionClassifyUnBilled=Classifica come "Non fatturato" InterventionClassifyDone=Classifica "Eseguito" +InterventionSign=Set Signed +InterventionUnsign=Set Unsigned SendInterventionRef=Invio di intervento %s SendInterventionByMail=Send intervention by email InterventionCreatedInDolibarr=Intervento %s creato InterventionValidatedInDolibarr=Intervento %s convalidato +InterventionSignedInDolibarr=Intervento firmato +InterventionSignedOnline=Intervention signed online +InterventionUnsignedInDolibarr=Intervention unsigned InterventionModifiedInDolibarr=Intervento %s modificato InterventionClassifiedBilledInDolibarr=Intervento %s classificato come fatturato InterventionClassifiedUnbilledInDolibarr=Intervento %s classificato come non fatturato diff --git a/htdocs/langs/it_IT/mails.lang b/htdocs/langs/it_IT/mails.lang index d823328c1ab..35525065c38 100644 --- a/htdocs/langs/it_IT/mails.lang +++ b/htdocs/langs/it_IT/mails.lang @@ -32,6 +32,8 @@ NewMailing=Nuovo invio di massa NewSMSing=Nuovo sms EditMailing=Modifica invio ResetMailing=Reset mailing +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Elimina invio PreviewMailing=Anteprima invio di massa CreateMailing=Crea invio @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=L'indirizzo del destinatario è vuoto WarningNoEMailsAdded=Non sono state aggiunte email da inviare. ConfirmValidMailing=Intendi veramente validare questo invio? 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? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Are you sure you want to delete this emailing? NbOfUniqueEMails=No. of unique emails NbOfUniquePhones=N. di telefoni unici @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Nessun altro destinatario a cui inviare email EmailOptedOut=Il proprietario di email ha richiesto di non contattarlo più con questo email EvenUnsubscribe=Includi email di rinuncia EvenUnsubscribeDesc=Includi le email di disattivazione quando selezioni le email come destinazioni. Utile per le email di servizio obbligatorie per Esempio. -XEmailsDoneYActionsDone=%s email prequalificate, %s email elaborate correttamente (per %s record /azioni eseguite) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Puoi dare alcune istruzioni per il tuo email (Esempio: genera immagine in email modello...) ModelTemplate=Modello email YouCanChooseAModelForYouMailContent= Puoi scegliere uno dei modelli modello o generarne uno con l'intelligenza artificiale TitleOfMailHolder=Il titolo di posta elettronica va qui ContentOfMailHolder=Il contenuto di email va qui... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/it_IT/sendings.lang b/htdocs/langs/it_IT/sendings.lang index 0efebd686b0..d91b3707217 100644 --- a/htdocs/langs/it_IT/sendings.lang +++ b/htdocs/langs/it_IT/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=Nessun prodotto da spedire presente all'interno de WeightVolShort=Peso/Vol. ValidateOrderFirstBeforeShipment=È necessario convalidare l'ordine prima di poterlo spedire NoLineGoOnTabToAddSome=No linea, vai sulla scheda "%s" per aggiungere -CreateInvoiceForThisCustomerFromSendings=Invii di fatture +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=Se la convalida fattura è 'No', l'invio rimarrà nello stato 'Non fatturato' fino alla convalida di fattura. OptionToSetSendingBilledNotEnabled=Opzione dal flusso di lavoro modulo, per impostare l'invio a 'fatturato' automaticamente quando fattura è convalidato, non è abilitato, quindi dovrai impostare lo stato degli invii su 'fatturato' manualmente dopo che fattura è stato generato. diff --git a/htdocs/langs/it_IT/stripe.lang b/htdocs/langs/it_IT/stripe.lang index 2dcba801bd0..8ad21e31910 100644 --- a/htdocs/langs/it_IT/stripe.lang +++ b/htdocs/langs/it_IT/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL per il pagamento %s di una riga d ToOfferALinkForOnlinePaymentOnFreeAmount=URL per il pagamento %s di un importo senza riferimenti ToOfferALinkForOnlinePaymentOnMemberSubscription=URL per il pagamento %s dell'adesione di un membro ToOfferALinkForOnlinePaymentOnDonation=URL per offrire una pagina di pagamento online %s per il pagamento di una donazione -YouCanAddTagOnUrl=Puoi anche aggiungere a qualunque di questi url il parametro &tag=value (richiesto solo per il pagamento gratuito) per aggiungere una tag con un tuo commento. +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) YouCanEmbedOnWebsite=Se desideri integrare la pagina pagamento in un sito web Dolibarr, puoi includere il parametro: &ws=website_ref.
Inoltre, due pagine denominate paymentok e paymentko deve essere creato in il sito web per ricevere il reindirizzamento dopo un pagamento online riuscito o non riuscito. SetupStripeToHavePaymentCreatedAutomatically=Setup your Stripe with url %s to have payment created automatically when validated by Stripe. AccountParameter=Dati account diff --git a/htdocs/langs/it_IT/website.lang b/htdocs/langs/it_IT/website.lang index 8b3d004549a..278e3507c41 100644 --- a/htdocs/langs/it_IT/website.lang +++ b/htdocs/langs/it_IT/website.lang @@ -62,7 +62,7 @@ NoPageYet=No pages yet YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template SyntaxHelp=Help on specific syntax tips YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor. -YouCanEditHtmlSource=
Puoi includere PHP codice in questa fonte utilizzando i tag <?php ?>. Sono disponibili le variabili globali seguire: $conf, $db, $mysoc, $utente, $website, $websitepage, $ weblang, $pagelangs.

Puoi anche includere il contenuto di un'altra pagina/contenitore con la sintassi seguire:
<?php includeContainer('alias_of_container_to_include'); ?>

Puoi effettuare un reindirizzamento a un'altra pagina/contenitore con seguire sintassi (Nota: non visualizzare alcun contenuto prima di un reindirizzamento):
<?php reindirizzamentoToContainer('alias_of_container_to_redirect_to'); ?>
Puoi anche effettuare un reindirizzamento con parametri GET:
<?php reindirizzamentoToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

Per aggiungere un collegamento a un'altra pagina, utilizza la sintassi:
< a href="alias_of_page_to_link_to.php">mylink<a>

Per includere un link per scaricare un file archiviato nei documenti directory, utilizza il wrapper document.php:
Esempio, per un file in documenti/ecm (è necessario essere registrati), la sintassi è:
<a href ="/documento.php?modulepart=ecm&file=[relative_dir/]filename.ext">
Per un file in documenti /medias (aperto directory per l'accesso pubblico), la sintassi è:
<a href="/documento.php?modulepart=medias&file=[relative_dir/]filename.ext">
Per un file condiviso con una condivisione collegamento (accesso aperto utilizzando la chiave hash di condivisione di file), la sintassi è:
<a href="/ documento.php?hashp=publicsharekeyoffile">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
Per includere un immagine archiviata nei documenti directory, utilizza il wrapper viewimage.php.
Esempio, per un'immagine in documenti/media (aperto directory per accesso pubblico), la sintassi è:
< img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
YouCanEditHtmlSource2=Per un'immagine condivisa con un link di condivisione (accesso aperto utilizzando la chiave hash di condivisione del file), la sintassi è:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource3=Per ottenere l'URL dell'immagine di un PHP oggetto, utilizza
<img src="<?php print getImagePublicURLOfObject($oggetto , 1, "_small") ?>">
diff --git a/htdocs/langs/ja_JP/admin.lang b/htdocs/langs/ja_JP/admin.lang index 9b6902b5f22..128816037f1 100644 --- a/htdocs/langs/ja_JP/admin.lang +++ b/htdocs/langs/ja_JP/admin.lang @@ -458,9 +458,9 @@ ExtrafieldSelect=リストを選択 ExtrafieldSelectList=表から選択 ExtrafieldSeparator=セパレーター ( フィールドではない ) ExtrafieldPassword=パスワード -ExtrafieldRadio=Radio buttons (1 choice only) -ExtrafieldCheckBox=Select list (n choices) -ExtrafieldCheckBoxFromList=Select from table (n choices) +ExtrafieldRadio=ラジオボタン(選択肢は 1 つだけ) +ExtrafieldCheckBox=選択リスト(n 個の選択肢) +ExtrafieldCheckBoxFromList=表から選択(n 個の選択肢) ExtrafieldLink=オブジェクトへのリンク ExtrafieldPointGeo=幾何学的ポイント ExtrafieldMultiPointGeo=幾何学的マルチポイント @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=値のリストは、 key,value形式 (key は '0' 以 ExtrafieldParamHelpcheckbox=値のリストは、 key,value形式 (key は '0' 以外) の行であること

例 :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=値のリストは、 key,value形式 (key は '0' 以外) の行であること

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=値のリストはテーブルから取得される
構文: table_name:label_field:id_field::filtersql
例: c_typent:libelle:id::filtersql

- id_field は必ず主 int キーだ
- filtersql は条件だ。USF 構文を使用する必要がある。例: (active:=:1) はアクティブな値のみを表示する
また、フィルターでは現在のオブジェクトの現在の ID である $ID$ を使用することもできる
extrafields でフィルターする場合は、構文 extra.fieldcode=... を使用する (fieldcode は extrafield の コード )

別の補完属性リストに依存するリストを作成するには:
c_typent:libelle:id: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=パラメータはObjectName:Classpathでなければならない
構文:ObjectName:Classpath ExtrafieldParamHelpSeparator=単純なセパレーターの場合は空のままにする
折りたたみセパレーターの場合はこれを1に設定する ( 新規セッションの場合はデフォルトで開き、ユーザセッションごとに状態が保持される )
折りたたみセパレーターの場合はこれを2に設定する ( 新規セッションの場合はデフォルトで折りたたむ。状態は各ユーザセッションの間保持される ) LibraryToBuildPDF=PDF生成に使用されるライブラリ @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%sの後に、文字数で切り捨てられ ModuleCompanyCodeSupplierDigitaria=%sの後に、文字数で切り捨てられたサプライヤ名が続く。サプライヤ会計コードの場合は%s。 Use3StepsApproval=デフォルトでは、購買発注は2人の異なるユーザによって作成および承認される必要がある ( 作成する1つのステップ/ユーザと承認する1つのステップ/ユーザ。ユーザが作成と承認の両方の権限を持っている場合は、1つのステップ/ユーザで十分 ) 。金額が専用の値よりも高い場合は、このオプションを使用して3番目のステップ/ユーザ承認を導入するように依頼できる ( したがって、3つのステップが必要になる:1 =検証、2 =最初の承認、3 =金額が十分な場合は2番目の承認 ) 。
1つの承認 ( 2ステップ ) で十分な場合はこれを空に設定し、2番目の承認 ( 3ステップ ) が常に必要な場合は非常に低い値 ( 0.1 ) に設定する。 UseDoubleApproval=金額 ( 税抜き ) が...より高い場合は、3段階の承認を使用すること。 -WarningPHPMail=警告: アプリケーションからメールを送信するための設定では、デフォルトの汎用設定が使用されている。この選択では、設定を完了するために技術的な知識は必要あらない。
ただし、多くの場合、メール送信設定は、デフォルトではなく、メール サービスプロバイダーのメール サーバを使用することをお勧めする。これにはいくつかの理由がある。 +WarningPHPMail=注意: アプリケーションからメールを送信するための設定では、デフォルトの汎用設定 (「%s」と呼ばれる) が使用される。この選択には、技術的な知識や特別な設定は必要ない。
ただし、多くの場合、送信メールをデフォルトの設定に代えて、発信メール設定を別のやり方(「%s」と呼ばれる)、メールサービスプロバイダのメール サーバ を使用するように設定することをお勧めする。これにはいくつかの理由がある: WarningPHPMailA=- メール サービス プロバイダのサーバ を使用すると、メールの信頼性が高まり、スパムとしてフラグ付けされることなく配信率が向上する -WarningPHPMailB=-一部の電子メールサービスプロバイダー ( Yahooなど ) では、独自のサーバー以外のサーバーから電子メールを送信することを許可していない。現在の設定では、電子メールプロバイダーのサーバーではなく、アプリケーションのサーバーを使用して電子メールを送信するため、一部の受信者 ( 制限付きDMARCプロトコルと互換性のある受信者 ) は、電子メールプロバイダーと一部の電子メールプロバイダーを受け入れることができるかどうかを電子メールプロバイダーに尋ねる。 ( Yahooのように ) サーバーが彼らのものではないために「いいえ」と応答する場合がある。そのため、送信された電子メールの一部が配信を受け入れられない場合がある ( 電子メールプロバイダーの送信クォータにも注意すること ) 。 +WarningPHPMailB=- メールのドメイン (mymaildomain.com から myname@mymaildomain.com までの部分) が SPF + DMARC レコードで保護されている場合、送信者のドメイン (mymaildomain.com) の DNS ゾーンに定義されている DMARC ルールでは一般的な送信者としての送信が許可されていないため、メールが SPAM としてフラグ付けされる可能性がある。このような場合は、ドメインの DMARC を無効にする (または @gmail.com のように p=none に設定する) 必要がある。または、技術的な知識がある場合は、自分のメール プロバイダーの SMTP サーバ を使用してメールを送信する別の方法を使用することをお勧めする。 WarningPHPMailC=-独自の電子メールサービスプロバイダーのSMTPサーバーを使用して電子メールを送信することも興味深いので、アプリケーションから送信される全電子メールもメールボックスの「送信済」ディレクトリに保存される。 WarningPHPMailD=したがって、電子メールの送信方法を値「SMTP」に変更することをお勧めする。 WarningPHPMailDbis=メールを送信するデフォルトの「PHP」メソッドを本当に維持したい場合は、この警告を無視するか、%sここをクリック%sして削除すること。 WarningPHPMail2=電子メールSMTPプロバイダーが電子メールクライアントをいくつかのIPアドレスに制限する必要がある場合 ( 非常にまれ ) 、これはERP CRMアプリケーションのメールユーザエージェント ( MUA ) のIPアドレス : %s。 -WarningPHPMailSPF=送信者のメールアドレスのドメイン名がSPFレコードで保護されている場合(ドメイン名登録者に問い合わせる)、自ドメインのDNSのSPFレコードに次のIPを追加する必要がある: %s。 -ActualMailSPFRecordFound=実際の SPF レコードが見つかった (電子メール %s の場合): %s +WarningPHPMailSPF=送信者のメール アドレスのドメイン名が SPF レコードで保護されている場合 (ドメイン名登録者に問い合わせること)、ドメインの DNS の SPF レコードに次の IP またはエントリを追加する必要がある: %s。 +WarningPHPMailSPFDMARC=送信者のメール アドレスのドメイン名が p=none 以外の DMARC レコードで保護されている場合 (ドメイン名登録業者に問合せ)、DMARC レコードを削除するか、@gmail.com のように p=none に設定)するか、別の送信方法を使用する必要がある。 +SPFAndDMARCInformation=メインメールアドレスの SPF および DMARC DNS レコード +ActualMailDNSRecordFound=実際の %s レコードが見つかった (メール %s 用): %s ClickToShowDescription=クリックして説明を表示 DependsOn=このモジュールにはモジュールが必要 RequiredBy=このモジュールはモジュールに必要 @@ -867,7 +868,7 @@ Permission255=他のユーザのパスワードを変更する Permission256=他のユーザを削除するか、または無効にする Permission262=すべての 取引先 とそのオブジェクトへのアクセスを拡張しる (ユーザ が販売担当者としてリンクされている 取引先 だけでなく)。 Permission262b=外部ユーザーには無効 (提案、注文、請求書、契約などは常に自分自身に限定される)。 -Permission262c=プロジェクト には有効ではありません (プロジェクト の権限、可視性、割り当てに関するルールのみ)。 +Permission262c=プロジェクト には有効ではありない (プロジェクト の権限、可視性、およびユーザーの割り当てに関するルールのみが関係する)。 Permission263=オブジェクトなしで、全取引先にアクセスを拡張する(ユーザが営業担当者である取引先だけでなく)。
外部ユーザには効果的ではない(提案、注文、請求書、契約などについては常に自分自身に限定される)。
プロジェクトには効果的ではない(プロジェクトの権限、可視性、および割り当てに関するルールのみが重要)。 Permission271=CAを読込む Permission272=請求書を読込む @@ -944,7 +945,7 @@ Permission776=経費報告書sの支払 Permission777=全経費報告書を読込む(部下ではないユーザの報告書も含む) Permission778=全員の経費報告書sを作成/変更する Permission779=経費報告書sをエクスポート -Permission1001=在庫を読込む +Permission1001=倉庫と 在庫 を読む Permission1002=倉庫の作成/変更 Permission1003=倉庫を削除する Permission1004=在庫推移を読込む @@ -1457,7 +1458,7 @@ HRMSetup=HRMモジュールの設定 CompanySetup=企業のモジュールの設定 CompanyCodeChecker=顧客/仕入先コードの自動生成のオプション AccountCodeManager=顧客/仕入先の会計コードの自動生成のオプション -NotificationsDesc=Email notifications can be sent automatically on certain events.
Recipients of notifications can be defined: +NotificationsDesc=特定のイベントが発生したときに、電子メール通知を送信できる 自動的に。
通知の受信者を定義できる。 NotificationsDescUser=* ユーザ ごと (ユーザ の "通知" タブ上) NotificationsDescContact=* 取引先 連絡先ごと (取引先 の "通知" タブ上) NotificationsDescGlobal=* またはグローバル電子メール アドレスを設定することによって (モジュールの設定ページで)。 @@ -1993,10 +1994,10 @@ ExpenseReportsRulesSetup=モジュール経費報告書sの設定-ルール ExpenseReportNumberingModules=経費報告書s採番モジュール NoModueToManageStockIncrease=自動在庫増加を管理できるモジュールは活性化されていない。在庫増加は手動入力のみで行われる。 YouMayFindNotificationsFeaturesIntoModuleNotification=モジュール「通知」を有効にして構成することにより、電子メール通知のオプションを見つけることができる。 -TemplatesForNotifications=Emails templates for notifications +TemplatesForNotifications=通知用のメールテンプレート ListOfNotificationsPerUser=ユーザごとの自動通知のリスト* ListOfNotificationsPerUserOrContact=ユーザごと*または連絡先ごとに利用可能な ( ビジネスイベントでの ) 可能な自動通知のリスト** -ListOfFixedNotifications=Global recipients emails for automatic email notifications +ListOfFixedNotifications=自動メール通知用のグローバル受信者メール GoOntoUserCardToAddMore=ユーザの "通知" タブに移動して、ユーザへの通知を追加または削除する GoOntoContactCardToAddMore=取引先の ”通知” タブに移動して、連絡先/アドレスの通知を追加または削除する Threshold=しきい値 @@ -2126,7 +2127,7 @@ MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=画像が行に追加された場合の列の MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=見積依頼時の単価欄を非表示にする MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=見積依頼の合計価格列を非表示にする MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=発注書の単価列を非表示にする -MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on purchase orders +MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=注文書の合計金額の列を非表示にする MAIN_PDF_NO_SENDER_FRAME=送信者アドレスフレームの境界線を非表示にする MAIN_PDF_NO_RECIPENT_FRAME=受信者のアドレス枠の枠線を非表示にする MAIN_PDF_HIDE_CUSTOMER_CODE=顧客コードを非表示にする @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=値をクリーンアップするための正規 DuplicateForbidden=重複禁止 RemoveSpecialWords=顧客またはサプライヤーのサブアカウントを生成するときに特定の単語を削除する RemoveSpecialWordsHelp=顧客または仕入先の勘定科目を計算する前に、クリーニングする単語を指定する。 ";" で単語を区切る -GDPRContact=データ保護責任者 ( DPO、データプライバシーまたはGDPRの連絡先 ) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=個人データを情報システムに保存する場合は、ここで一般データ保護規則の責任者を指名できる HelpOnTooltip=ツールチップに表示するヘルプテキスト HelpOnTooltipDesc=このフィールドがフォームに表示されたときにツールチップに表示されるテキストのテキストまたは翻訳キーをここに入力する @@ -2218,7 +2219,7 @@ CreateCandidature=求人応募を作成する FormatZip=郵便番号 MainMenuCode=メニュー入力コード ( メインメニュー ) ECMAutoTree=自動ECMツリーを表示する -OperationParamDesc=データを抽出するためのルールを定義したり、操作に使用する値を設定したりできる。

電子メールの件名から法人名を抽出して一時変数に入れる例:
tmp_var=EXTRACT:SUBJECT:法人からのメッセージ ([^\n]*)

作成するオブジェクトのプロパティを設定する例:
objproperty1=SET:ハードコードされた値
objproperty2=SET:__tmp_var__
objpproperty3=SETIFEMPTY:値 (プロパティがまだ定義されていない場合にのみ値が設定される)
objpproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objpproperty5=EXTRACT:BODY:当法人名は\\s([^\\s]*)

複数プロパティを抽出または設定するには、改行を使用する。 +OperationParamDesc=操作に使用するデータを抽出したり、値を設定するときに使用するルールを定義する。

メールのヘッダー、件名、または本文から文字列を一時変数に抽出する例:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\n]*)

作成するオブジェクトのプロパティを設定する例:
objproperty1=SET:ハードコードされた値
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:値(プロパティがまだ定義されていない場合にのみ値が設定される)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

複数プロパティを抽出・設定するには、改行をする。 OpeningHours=営業時間 OpeningHoursDesc=あなたの法人の通常の営業時間をここに入力すること。 ResourceSetup=リソースモジュールの構成 @@ -2264,7 +2265,7 @@ LargerThan=より大きい IfTrackingIDFoundEventWillBeLinked=オブジェクトのトラッキング ID が電子メールで見つかった場合、または電子メールがすでに収集されてオブジェクトにリンクされている電子メールの回答である場合、作成されるイベントは 自動的に になることに注意すること。既知の関連オブジェクトにリンクされている。 WithGMailYouCanCreateADedicatedPassword=GMail アカウントで 2 段階認証を有効にしている場合は、https://myaccount.google.com/ からの独自のアカウント パスワードを使用するのではなく、アプリケーション専用の 2 番目のパスワードを作成することをお勧めする。 EmailCollectorTargetDir=電子メールが正常に処理された場合、電子メールを別の タグ/ディレクトリに移動することが望ましい動作である可能性がある。この機能を使用するには、ここでディレクトリの名前を設定するだけだ (名前に特殊文字を使用しないこと)。読み取り/書き込みログイン アカウントも使用する必要があることに注意すること。 -EmailCollectorLoadThirdPartyHelp=このアクションを使用すると、電子メールのコンテンツを使用してデータベース内の既存の取引先を検索してロードできる (検索は、「id」、「name」、「name_alias」、「email」の中で定義済プロパティに対して)。見つかった (または作成された) 取引先は、それが必要な次のアクションに使用される。
たとえば、本文にある文字列 'Name: name to find' から抽出された名前で取引先を作成する場合、送信者メールをメールとして使用し、パラメーター フィールドを次のように設定できる:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=このアクションを使用すると、電子メールの内容を使用して、データベース内の既存の 取引先 を検索して読み込むことができる (検索は、'id'、'name'、'name_alias'、'email' の間で定義されたプロパティに対して実行される)。見つかった(または作成された)取引先は、それを必要とする次のアクションに使用される。
たとえば、本文にある文字列「名前: 検索する名前」から抽出された名前で 取引先 を作成し、送信者のメールをメールとして使用する場合は、パラメータ フィールドを次のように設定できる。:
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=警告: 多くの電子メール サーバー (Gmail など) は、文字列を検索するときに完全な単語検索を実行するため、文字列が単語の一部にしか見つからない場合は結果を返さない。この理由からも、既存の単語の一部ではない場合、検索条件に特殊文字を使用しても無視される。
単語を除外検索する (単語が見つからない場合は電子メールを返す) には、! を使用できる。単語の前の文字 (一部のメール サーバーでは機能しない場合がある)。 EndPointFor=%sのエンドポイント:%s DeleteEmailCollector=メールコレクターを削除する @@ -2279,7 +2280,7 @@ NotAPublicIp=公開IPではない MakeAnonymousPing=Dolibarr Foundationサーバーに匿名のPing「+1」を作成し ( インストール後に1回のみ実行 ) 、FoundationがDolibarrのインストール数をカウントできるようにする。 FeatureNotAvailableWithReceptionModule=領収モジュールが有効の場合、この機能は使用不可 EmailTemplate=メールのテンプレート -EmailTemplateHelp=You can create emails templates from menu %s - %s +EmailTemplateHelp=メニュー %s - %s からメール テンプレートを作成できる。 EMailsWillHaveMessageID=メールにはこの構文に一致する「Message-ID」ヘッダーが含まれる PDF_SHOW_PROJECT=ドキュメントにプロジェクトを表示 ShowProjectLabel=プロジェクトラベル @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=取引先名 - 取引先エイリアス ALIAS_THIRDPARTY=取引先エイリアス - 取引先名 PDFIn2Languages=PDF 内のラベルを 2 つの異なる言語で表示する (この機能はいくつかの言語では機能しない場合がある) PDF_USE_ALSO_LANGUAGE_CODE=PDF内の一部のテキストを同じ生成PDFで2つの異なる言語で複製する場合は、ここでこの2番目の言語を設定して、生成されたPDFに同じページに2つの異なる言語が含まれるようにする必要がある。1つはPDFの生成時に選択され、もう1つは ( これをサポートしているPDFテンプレートはごくわずか ) 。 PDFごとに1つの言語を空のままにする。 -PDF_USE_A=デフォルト形式の PDF ではなく PDF/A 形式で PDF ドキュメントを生成する +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=FontAwesomeアイコンのコードをここに入力する。 FontAwesomeとは何かわからない場合は、一般的な値fa-address-bookを使用できる。 RssNote=注:各RSSフィード定義は、ダッシュボードで使用できるようにするために有効化の必要があるウィジェットを提供する JumpToBoxes=【設定】-> 【ウィジェット】にジャンプする @@ -2540,16 +2541,21 @@ MainAuthenticationOidcLoginClaimName=ログインクレーム MainAuthenticationOidcLoginClaimDesc=Dolibarr ユーザ ログインに一致する OpenID Connect クレーム。設定されていないか空の場合、デフォルトでメール アドレスが使用される。 BlackListWords=ブラックリストの単語 AddBlackList=ブラックリストに追加 -FediverseSetup=Configuration of fediverse section -ConfigImportSocialNetwork=Configuration of social networks compatible with Fediverse -Fediverse=Fediverse -NewSocialNetwork=New Fediverse social network -SocialNetworkUrl=Fediverse API URL -SocialNetworksNote=Each social network definition provides a widget that you must enable to have it available in dashboard -ConfirmDeleteSocialNetwork= Are you sure want to delete this record ? +FediverseSetup=フェディバースセクションの構成 +ConfigImportSocialNetwork=Fediverseと互換性のあるソーシャルネットワークの構成 +Fediverse=フェディバース +NewSocialNetwork=新しい Fediverse ソーシャル ネットワーク +SocialNetworkUrl=フェディバースAPI URL +SocialNetworksNote=各ソーシャル ネットワーク定義には ウィジェット が用意されており、ダッシュボードで利用できるようにするにはこれを有効にする必要がある。 +ConfirmDeleteSocialNetwork= このレコードを 削除 してもよろしいか? AnOwnerMustBeSetIfEmailTemplateIsPrivate=メールテンプレートが非公開に設定されている場合は、所有者を設定する必要がある ContactsDefaultRoles=「個人」タイプの 取引先 の場合、連絡先を同時に作成できる。ここで、この連絡先に体系的に割り当てられる役割を定義する。 -MenuDict=Dictionary -AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token -ParamName=Name of parameter -ParamValue=Value of parameter +MenuDict=辞書 +AddMoreParams=接続のパラメータを追加する (Cookie、トークンなど)
例: token : value token +ParamName=パラメータ名 +ParamValue=パラメータの値 +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ja_JP/boxes.lang b/htdocs/langs/ja_JP/boxes.lang index 8467f142689..21e0e4e7dac 100644 --- a/htdocs/langs/ja_JP/boxes.lang +++ b/htdocs/langs/ja_JP/boxes.lang @@ -112,10 +112,12 @@ BoxTitleSuspenseAccount=未割り当て行の数 NumberOfLinesInSuspenseAccount=仮勘定の行数 SuspenseAccountNotDefined=一時停止アカウントが定義されていない BoxLastCustomerShipments=最後の顧客の出荷 -BoxTitleLastCustomerShipments=Latest %s modified customer shipments +BoxTitleLastCustomerShipments=最新の %s 変更された顧客出荷 BoxTitleLastLeaveRequests=最新 %s 変更された休暇申請 NoRecordedShipments=顧客の出荷は記録されていない BoxCustomersOutstandingBillReached=未払いの限度額に達したお客様 +BoxTitleLastFediverseInfos=%s からの最新の %s 件の投稿 +BoxLastFediverseInfos=最新の Fediverse アップデート: ニュースとトレンド # Pages UsersHome=ユーザとグループ MembersHome=ホーム成員資格 diff --git a/htdocs/langs/ja_JP/commercial.lang b/htdocs/langs/ja_JP/commercial.lang index 3c95555ea5e..29b3b5e2974 100644 --- a/htdocs/langs/ja_JP/commercial.lang +++ b/htdocs/langs/ja_JP/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=このイベントを削除してもいいか? CardAction=イベントカード ActionOnCompany=関連法人 ActionOnContact=関連連絡先 +ActionOnUser=関連 ユーザ TaskRDVWith=%sとの打合せ ShowTask=タスクを表示 ShowAction=イベントを表示 @@ -47,7 +48,6 @@ LastProspectToContact=連絡すること LastProspectContactInProcess=連絡実施中 LastProspectContactDone=連絡実施済 ActionAffectedTo=イベントは割当済 -ActionDoneBy=イベントは実行済 ActionAC_TEL=電話 ActionAC_FAX=FAX送信 ActionAC_PROP=メールで提案を送信 @@ -77,13 +77,26 @@ ToOfferALinkForOnlineSignature=オンライン署名へのリンク WelcomeOnOnlineSignaturePageProposal=%sからの商取引提案sを受諾するページへようこそ WelcomeOnOnlineSignaturePageContract=%s 契約 PDF 署名ページへようこそ WelcomeOnOnlineSignaturePageFichinter=%s 出張 PDF 署名ページへようこそ +WelcomeOnOnlineSignaturePageSociete_rib=%s SEPA 委任状の PDF 署名ページへようこそ +WelcomeOnOnlineSignaturePageExpedition=%s 出荷 PDF 署名ページへようこそ ThisScreenAllowsYouToSignDocFromProposal=この画面では、見積書/商取引提案を受諾して署名するか、拒否することができる ThisScreenAllowsYouToSignDocFromContract=この画面では、オンラインで PDF 形式の契約書に署名することができる。 ThisScreenAllowsYouToSignDocFromFichinter=この画面では、オンラインで PDF 形式の出張に署名できる。 +ThisScreenAllowsYouToSignDocFromSociete_rib=この画面では、オンラインで PDF 形式の SEPA 委任状に署名できる。 +ThisScreenAllowsYouToSignDocFromExpedition=この画面では、PDF 形式の出荷にオンラインで署名できる。 ThisIsInformationOnDocumentToSignProposal=これは、承認または拒否するドキュメントに関する情報。 ThisIsInformationOnDocumentToSignContract=これは、署名する契約に関する情報です ThisIsInformationOnDocumentToSignFichinter=署名すべき出張に関して +ThisIsInformationOnDocumentToSignSociete_rib=これは 署名すべきSEPA委任状に関する情報 +ThisIsInformationOnDocumentToSignExpedition= これは署名する出荷に関する情報 SignatureProposalRef=見積書/商取引提案%s の署名 SignatureContractRef=契約書の署名 %s SignatureFichinterRef=出張の署名 %s +SignatureSociete_ribRef=SEPA 委任状の署名 %s FeatureOnlineSignDisabled=オンライン署名の機能が無効になっているか、機能が有効になる前にドキュメントが生成された +NoSignature=署名されていない +SignedSender=内部署名済み +SignedReceiver=取引先 によって署名された +SignedReceiverOnline=取引先 がオンラインで署名した +SignedAll=全ての当事者の署名 +SignStatus=署名ステータス diff --git a/htdocs/langs/ja_JP/companies.lang b/htdocs/langs/ja_JP/companies.lang index 2d4c0122860..eb7e10cc812 100644 --- a/htdocs/langs/ja_JP/companies.lang +++ b/htdocs/langs/ja_JP/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarrログイン NoDolibarrAccess=Dolibarrへのアクセスなし ExportDataset_company_1=取引先(法人・財団・個人)とそのプロパティ ExportDataset_company_2=連絡先とそのプロパティ +ExportDataset_company_3=取引先銀行口座 ImportDataset_company_1=取引先とそのプロパティ ImportDataset_company_2=取引先sの追加的な連絡先s/住所sと諸属性 ImportDataset_company_3=取引先銀行口座 diff --git a/htdocs/langs/ja_JP/datapolicy.lang b/htdocs/langs/ja_JP/datapolicy.lang index 71521bab5d1..9d863eb97ce 100644 --- a/htdocs/langs/ja_JP/datapolicy.lang +++ b/htdocs/langs/ja_JP/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,13 +15,10 @@ Module4100Name = データプライバシーポリシー # Module description 'ModuledatapolicyDesc' Module4100Desc = データのプライバシーを管理するモジュール (GDPR に準拠) - -# # Administration page -# datapolicySetup = モジュール データのプライバシー ポリシーの設定 Deletion = データの削除 -datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). +datapolicySetupPage = お住まいの国の法律 (GDPR の第 5 条 など) に応じて、個人データは一定期間保管する必要がある。アーカイブ目的を除き、データが収集された目的に必要な期間を超えないこと。
削除は自動的に 一定期間後にイベントを伴わず 実施される(期間は以下に指定)。 NB_MONTHS = %s か月 ONE_YEAR = 1年 NB_YEARS = %s年 @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = 見込客/顧客 DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = 見込客でも顧客でもない DATAPOLICY_CONTACT_FOURNISSEUR = サプライヤー DATAPOLICY_ADHERENT = 構成員 -DATAPOLICY_Tooltip_SETUP = 連絡先の種類 - 種類ごとに選択肢を示する。 -DATAPOLICYMail = メール設定 -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = メールの内容 -DATAPOLICYSUBSITUTION = メールでは次の変数を使用できる (LINKACCEPT を使用すると、その人の同意を記録するリンクを作成できる。LINKREFUSED を使用すると、その人の拒否を記録できる): -DATAPOLICYACCEPT = 契約後のメッセージ -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=操作が行われない遅延を定義し、その後レコードを 自動的に 消去する。 SendAgreementText = 関連するすべての連絡先 (まだメールを受信しておらず、GDPR 契約について何も登録していない連絡先) に GDPR メールを送信できる。これを行うには、次のボタンを使用する。 SendAgreement = メールを送る AllAgreementSend = すべてのメールが送信された TXTLINKDATAPOLICYACCEPT = リンク「同意書」のテキスト -TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# +TXTLINKDATAPOLICYREFUSE = リンクのテキスト「意見の相違」 # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR : 個人データの処理 DATAPOLICY_consentement = 個人データの処理について得られた同意 -DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = 取引先を匿名化 -DATAPOLICY_POPUP_ANONYME_TEXTE = 関連アイテムがあるため、この連絡先を Dolibarr から削除できない。 GDPR に従って、義務を順守するために、このすべてのデータを匿名化する。続行してよいか? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = 移植性GDPR -DATAPOLICY_PORTABILITE_TITLE = 個人データのエクスポート -DATAPOLICY_PORTABILITE_CONFIRMATION = この連絡先の個人データをエクスポートする。よいか ? - -# +DATAPOLICY_opposition_traitement = 自分の個人データの処理に反対する +DATAPOLICY_opposition_prospection = 探求目的での個人データの処理に反対する # Notes added during an anonymization -# -ANONYMISER_AT = %s を匿名化 - -DATAPOLICY_date = Date of agreement/disagreement GDPR -DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = GDPR メールを送信する +DATAPOLICY_date = GDPR の同意/不同意の日付 +DATAPOLICY_send = 契約メール送信日 MailSent = メールが送信された - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion +NUMBER_MONTH_BEFORE_DELETION = 削除までの月数 diff --git a/htdocs/langs/ja_JP/dict.lang b/htdocs/langs/ja_JP/dict.lang index 7c44aa57c8e..2ada8187628 100644 --- a/htdocs/langs/ja_JP/dict.lang +++ b/htdocs/langs/ja_JP/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=CFPフラン CurrencySingXPF=CFPフラン CurrencyCentEUR=セント CurrencyCentSingEUR=セント -CurrencyCentINR=パイサ -CurrencyCentSingINR=パイサ(複数) +CurrencyCentINR=パイサ(複数) +CurrencyCentSingINR=パイサ CurrencyThousandthSingTND=千分の一 #### Input reasons ##### DemandReasonTypeSRC_INTE=インターネット diff --git a/htdocs/langs/ja_JP/errors.lang b/htdocs/langs/ja_JP/errors.lang index 4ec6c7cb080..dc56ccb429a 100644 --- a/htdocs/langs/ja_JP/errors.lang +++ b/htdocs/langs/ja_JP/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=消費時間を入力できるようにするには ErrorTaskAlreadyAssigned=既にユーザに割り当てられているタスク ErrorModuleFileSeemsToHaveAWrongFormat=モジュールパッケージの形式が間違っているようだ。 ErrorModuleFileSeemsToHaveAWrongFormat2=モジュールのzipには、少なくとも1つの必須ディレクトリが存在する必要がある: %sまたは%s -ErrorFilenameDosNotMatchDolibarrPackageRules=モジュールパッケージの名前( %s )が予期される名前の構文と一致しない: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=モジュール パッケージの ファイル 名 (%s) が、期待される名前構文と一致しない: %s ErrorDuplicateTrigger=エラー、トリガー名%sが重複している。既に%sからロードされている。 ErrorNoWarehouseDefined=エラー、倉庫が定義されていない。 ErrorBadLinkSourceSetButBadValueForRef=使用しているリンクは無効だ。支払の "ソース" が定義されているが、 "ref" の値が無効だ。 @@ -422,4 +422,4 @@ OperNotDefined=支払い方法が定義されていない ErrorThisContactXIsAlreadyDefinedAsThisType=%s は、このタイプの連絡先としてすでに定義されている。 ErrorThisGroupIsAlreadyDefinedAsThisType=このグループの連絡先は、このタイプの連絡先としてすでに定義されている。 EmptyMessageNotAllowedError=空のメッセージは許可されない -ErrorIsNotInError=%s is not in error +ErrorIsNotInError=%s はエラーではあらず diff --git a/htdocs/langs/ja_JP/hrm.lang b/htdocs/langs/ja_JP/hrm.lang index 5e85191c145..3fbcd8dc5d6 100644 --- a/htdocs/langs/ja_JP/hrm.lang +++ b/htdocs/langs/ja_JP/hrm.lang @@ -1,6 +1,5 @@ # Dolibarr language file - en_US - hrm - # Admin HRM_EMAIL_EXTERNAL_SERVICE=HRM外部サービスを防止するためのメール Establishments=事業所 @@ -24,7 +23,7 @@ SkillsManagement=スキル管理 HRM_MAXRANK=スキルをランク付けするためのレベルの最大数 HRM_DEFAULT_SKILL_DESCRIPTION=スキル作成時のランクのデフォルトの説明 deplacement=シフト -DateEval=評価日 +DateEval=能力評価日 JobCard=仕事カード NewJobProfile=新しい職務プロフィール JobProfile=仕事内容 @@ -41,12 +40,12 @@ Skill=スキル Skills=スキル SkillCard=スキルカード EmployeeSkillsUpdated=従業員のスキルは更新済(従業員カードの「スキル」タブを参照) -Eval=評価 -Evals=評価 -NewEval=新しい評価 -ValidateEvaluation=評価を検証 -ConfirmValidateEvaluation=意思確認: この評価を検証したいか?参照番号 %s -EvaluationCard=評価カード +Eval=能力評価 +Evals=能力評価 +NewEval=新しい能力評価 +ValidateEvaluation=能力評価を検証する +ConfirmValidateEvaluation=この能力評価を参照 %s で検証してもよろしい か? +EvaluationCard=能力評価 RequiredRank=ジョブ プロファイルの必須ランク RequiredRankShort=必要ランク PositionsWithThisProfile=この求人プロフィールを持つポジション @@ -73,6 +72,9 @@ AddSkill=職務プロフィールにスキルを追加する RequiredSkills=この職務プロファイルに必要なスキル UserRank=ユーザランク SkillList=スキルリスト +SkillCreated=%s 個のスキルが作成された +SkillRank=スキルランク +ShowSkillRank=スキルランクを表示 SaveRank=ランクを保存 TypeKnowHow=ノウハウ TypeHowToBe=あるべき姿 @@ -90,8 +92,9 @@ SaveAddSkill = 追加されたスキル(s) SaveLevelSkill = 保存されたスキル(s)レベル DeleteSkill = スキルが削除された SkillsExtraFields=補完的属性(スキル) -JobsExtraFields=補完的属性 (ジョブ プロファイル) -EvaluationsExtraFields=補完的属性(評価) +JobsExtraFields=補完的な属性(職務プロファイル) +EvaluationsExtraFields=補完的な属性(能力評価) NeedBusinessTravels=出張が必要 NoDescription=説明なし TheJobProfileHasNoSkillsDefinedFixBefore=この従業員の評価された職務プロファイルにはスキル(s)が定義されていない。スキルを追加し、削除して評価を再開すること。 +PDFStandardHrmEvaluation=能力評価用の PDF ドキュメント を生成するための標準テンプレート diff --git a/htdocs/langs/ja_JP/interventions.lang b/htdocs/langs/ja_JP/interventions.lang index cca5ba8fe01..1f33ea83427 100644 --- a/htdocs/langs/ja_JP/interventions.lang +++ b/htdocs/langs/ja_JP/interventions.lang @@ -3,7 +3,7 @@ Intervention=出張 Interventions=出張 InterventionCard=出張のカード NewIntervention=新規出張 -AddIntervention=出張を作成 +AddIntervention=出張を作成 ChangeIntoRepeatableIntervention=反復可能な出張への変更 ListOfInterventions=出張のリスト ActionsOnFicheInter=出張のアクション @@ -13,11 +13,17 @@ CreateDraftIntervention=下書きを作成 InterventionContact=出張の接点 DeleteIntervention=出張を削除 ValidateIntervention=出張を検証 +SignIntervention=出張に署名 +UnsignIntervention=出張の署名解除 ModifyIntervention=出張を変更 +CloseIntervention=出張を閉じる DeleteInterventionLine=出張の行を削除 ConfirmDeleteIntervention=この出張を削除してもよいか? ConfirmValidateIntervention=この出張を%s という名前で検証してもよいか? +ConfirmSignIntervention=この出張を署名済みとして設定してもよいか? +ConfirmUnsignIntervention=この出張を未署名として設定してもよいか? ConfirmModifyIntervention=この出張を変更してもよいか? +ConfirmCloseIntervention=この 出張を閉じてよいか? ConfirmDeleteInterventionLine=この出張行を削除してもよいか? ConfirmCloneIntervention=この出張のクローンを作成してもよいか? NameAndSignatureOfInternalContact=出張の名前と署名: @@ -25,28 +31,32 @@ NameAndSignatureOfExternalContact=顧客の名前と署名: DocumentModelStandard=出張のための標準のドキュメントモデル InterventionCardsAndInterventionLines=出張と一連の出張 InterventionClassifyBilled=”請求済” 分類 -InterventionClassifyUnBilled="未請求" 分類 -InterventionClassifyDone="完了" 分類 -StatusInterInvoiced=請求 +InterventionClassifyUnBilled="未請求" 分類 +InterventionClassifyDone="完了" 分類 +InterventionSign=署名済みセット +InterventionUnsign=符号なし設定 SendInterventionRef=出張の提出%s -SendInterventionByMail=電子メールで出張を送信 +SendInterventionByMail=電子メールで出張を送信 InterventionCreatedInDolibarr=出張%sが作成された InterventionValidatedInDolibarr=出張%sは、検証済 +InterventionSignedInDolibarr=署名済出張 +InterventionSignedOnline=出張はオンラインで署名された +InterventionUnsignedInDolibarr=出張未署名 InterventionModifiedInDolibarr=出張%sが変更された InterventionClassifiedBilledInDolibarr=請求済として設定された出張%s InterventionClassifiedUnbilledInDolibarr=出張%sが未請求として設定 InterventionSentByEMail=電子メールで送信された出張%s +InterventionClosedInDolibarr= 出張%s終了 InterventionDeletedInDolibarr=出張%sが削除された InterventionsArea=出張エリア DraftFichinter=下書き出張 LastModifiedInterventions=最新の%s修正された出張 FichinterToProcess=処理 ための出張 -TypeContact_fichinter_external_CUSTOMER=フォローアップ顧客との接触 -PrintProductsOnFichinter=タイプ「製品」(サービスだけでなく)の行も出張カードに印刷 +PrintProductsOnFichinter=タイプ「製品」(サービスだけでなく)の行も出張カードに印刷 PrintProductsOnFichinterDetails=注文から生成された出張 -UseServicesDurationOnFichinter=注文から生成された出張にサービス期間を使用 -UseDurationOnFichinter=出張レコードの期間フィールドを非表示に -UseDateWithoutHourOnFichinter=出張レコードの日付フィールドから時間と分を非表示に +UseServicesDurationOnFichinter=注文から生成された出張にサービス期間を使用 +UseDurationOnFichinter=出張レコードの期間フィールドを非表示に +UseDateWithoutHourOnFichinter=出張レコードの日付フィールドから時間と分を非表示に InterventionStatistics=出張の統計 NbOfinterventions=出張カードの数 NumberOfInterventionsByMonth=月ごとの出張カードの数(検証日) @@ -63,10 +73,15 @@ InterLineDate=ライン日付出張 InterLineDuration=ライン持続時間出張 InterLineDesc=行記述の出張 RepeatableIntervention=出張のテンプレート -ToCreateAPredefinedIntervention=事前定義された出張または定期的な出張を作成 には、共通の出張を作成し、それを出張テンプレートに変換 +ToCreateAPredefinedIntervention=事前定義された出張または定期的な出張を作成 には、共通の出張を作成し、それを出張テンプレートに変換 ConfirmReopenIntervention=出張 %s を開いてよいか? GenerateInter=出張を生成する FichinterNoContractLinked=出張%sは、リンクされた契約なしで作成された。 ErrorFicheinterCompanyDoesNotExist=法人は存在しない。出張は作成されていない。 NextDateToIntervention=次回出張日付生成 NoIntervention=介入なし +TypeContact_fichinter_internal_INTERREPFOLL=介入フォローアップの責任者 +TypeContact_fichinter_internal_INTERVENING=介入者 +TypeContact_fichinter_external_BILLING=介入請求の顧客連絡先 +TypeContact_fichinter_external_CUSTOMER=介入フォローアップの顧客連絡 +NotARecurringInterventionalTemplate=定期的な介入テンプレートではない diff --git a/htdocs/langs/ja_JP/intracommreport.lang b/htdocs/langs/ja_JP/intracommreport.lang index 533cc94b336..cb93dc05b42 100644 --- a/htdocs/langs/ja_JP/intracommreport.lang +++ b/htdocs/langs/ja_JP/intracommreport.lang @@ -1,5 +1,5 @@ IntraCommReport=域内報告書 -IntraCommReports=Intracomm reports +IntraCommReports=イントラコムレポート Module68000Name = 域内報告書 Module68000Desc = 域内報告書管理(フランス語のDEB / DES形式のサポート) @@ -35,4 +35,4 @@ IntracommReportTypeDeclaration=宣言の種類 IntracommReportDownload=XMLファイルをダウンロードする # Invoice IntracommReportTransportMode=輸送モード -DeleteIntraCommReport=Delete IntraComm report +DeleteIntraCommReport=削除 イントラコムレポート diff --git a/htdocs/langs/ja_JP/mails.lang b/htdocs/langs/ja_JP/mails.lang index b651f9c22fb..b9be1f493da 100644 --- a/htdocs/langs/ja_JP/mails.lang +++ b/htdocs/langs/ja_JP/mails.lang @@ -32,8 +32,8 @@ NewMailing=新規メール送信 NewSMSing=新しいSMS送信 EditMailing=電子メールで編集 ResetMailing=電子メールで送信する再送 -ConfirmResetMailingTargetMassaction=Bulk target Resend confirmation -ResetMailingTargetMassaction=Resend target +ConfirmResetMailingTargetMassaction=ターゲットステータスのリセットの確認 +ResetMailingTargetMassaction=ターゲットのステータスをリセット DeleteMailing=電子メールで送信する削除 PreviewMailing=電子メールで送信プレビュー CreateMailing=メール送信作成 @@ -55,7 +55,7 @@ ErrorMailRecipientIsEmpty=電子メールの受信者は空 WarningNoEMailsAdded=受信者のリストに追加するない新規電子メール。 ConfirmValidMailing=このメールを検証してもよいか? ConfirmResetMailing=警告、電子メール %s を再初期化することにより、この電子メールを一括メールで再送信できるようになる。これを実行してもよいか? -ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? +ConfirmResetMailingTargetMassactionQuestion=選択した受信者のステータスをリセットしてもよろしいか (電子メールの送信機能を使用すると、電子メールが再送信される可能性がある)? ConfirmDeleteMailing=このメールを削除してもよいか? NbOfUniqueEMails=固有のメールの数 NbOfUniquePhones=一意の電話機の数 @@ -193,12 +193,12 @@ NoMoreRecipientToSendTo=メールを送信する受信者がもういない EmailOptedOut=電子メールの所有者は、この電子メールで今後連絡を取らないように要求した EvenUnsubscribe=オプトアウトメールを含める EvenUnsubscribeDesc=電子メールをターゲットとして選択するときに、オプトアウト電子メールを含める。たとえば、必須の サービス メールに便利 。 -XEmailsDoneYActionsDone=%s 件のメールが事前に認定され、%s 件のメールが正常に処理された (%s のレコード/アクションが完了した場合) +XEmailsDoneYActionsDone=%s 通のメールが事前審査済み、%s 通のメールが正常に処理された (%s の操作が完了した) YouCanMakeSomeInstructionForEmail=電子メールにいくつかの指示を作成できる (例: 電子メール テンプレートで画像を生成...) ModelTemplate=メールテンプレート YouCanChooseAModelForYouMailContent= テンプレート モデルの 1 つを選択するか、AI で生成することができる TitleOfMailHolder=ここにメールのタイトルが入る ContentOfMailHolder=メールの内容はここにある... LastNews=最新ニュース -ListProducts= List of products +ListProducts= 製品 のリスト PasswordReset=パスワードのリセット diff --git a/htdocs/langs/ja_JP/main.lang b/htdocs/langs/ja_JP/main.lang index ffe11f9c80e..2124dbf3f10 100644 --- a/htdocs/langs/ja_JP/main.lang +++ b/htdocs/langs/ja_JP/main.lang @@ -45,6 +45,7 @@ NoError=エラーなし Error=エラー Errors=エラー ErrorFieldRequired=フィールド '%s'が必要 +CustomMandatoryFieldRule=カスタム「必須フィールド」ルール ErrorFieldFormat=フィールド '%s'は値が不正 ErrorFileDoesNotExists=ファイル%sは存在せず ErrorFailedToOpenFile=ファイル%sを開けず @@ -503,7 +504,7 @@ ContactsAddressesForCompany=取引先の連絡先s/住所s AddressesForCompany=取引先の住所s ActionsOnCompany=この取引先に関する出来事s ActionsOnContact=この 連絡先/住所 に関する出来事 -ActionsOnUser=Events for this user +ActionsOnUser=この ユーザ のイベント ActionsOnContract=この契約に関する出来事 ActionsOnMember=この構成員に関する出来事 ActionsOnProduct=この製品に関する出来事 @@ -1188,8 +1189,8 @@ SetSupervisor=スーパーバイザを設定する CreateExternalUser=外部ユーザを作成する ConfirmAffectTag=一括 タグ 割当 ConfirmAffectUser=一括 ユーザ 割当 -ContactRole=Contact role -ContactRoles=Contact roles +ContactRole=連絡先の役割 +ContactRoles=連絡先の役割 ProjectRole=各プロジェクト/機会に割り当てられた役割 TasksRole=各タスクに割り当てられた役割 (使用されてれば) ConfirmSetSupervisor=バルク スーパーバイザ 設定 @@ -1285,7 +1286,7 @@ AmountSalary=給与額 InvoiceSubtype=請求書のサブタイプ ConfirmMassReverse=一括リバース確定 ConfirmMassReverseQuestion=%s 選択したレコード(s)を元に戻してもよろしい か? -ConfirmActionXxx=Confirm action %s +ConfirmActionXxx=確定 アクション %s ElementType=要素の種類 ElementId=要素ID Encrypted=暗号化された diff --git a/htdocs/langs/ja_JP/oauth.lang b/htdocs/langs/ja_JP/oauth.lang index 803972aa6f4..7313cb2292d 100644 --- a/htdocs/langs/ja_JP/oauth.lang +++ b/htdocs/langs/ja_JP/oauth.lang @@ -28,19 +28,19 @@ OAUTH_GOOGLE_SECRET=OAuthGoogleシークレット OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuthGitHubシークレット OAUTH_URL_FOR_CREDENTIAL=このページに移動する OAuthIDとシークレットを作成または取得するには -OAUTH_STRIPE_TEST_NAME=Stripe Test -OAUTH_STRIPE_LIVE_NAME=Stripe Live +OAUTH_STRIPE_TEST_NAME=ストライプテスト +OAUTH_STRIPE_LIVE_NAME=ストライプライブ OAUTH_ID=OAuth クライアント ID OAUTH_SECRET=OAuthシークレット OAUTH_TENANT=OAuth テナント OAuthProviderAdded=OAuthプロバイダーが追加された AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=このプロバイダーとラベルのOAuthエントリは既に存在する -URLOfOAuthServiceEndpoints=Base URL for OAuth service endpoints +URLOfOAuthServiceEndpoints=OAuth サービス エンドポイントのベース URL URLOfOAuthServiceEndpointsExample=https://mastodon.example.com URLOfServiceForAuthorization=OAuth サービスが認証用に提供する URL Scopes=権限 (スコープ) ScopeUndefined=パーミッション (スコープ) 未定義 (前のタブを参照) -ScopesDesc=Example: read,write with Mastodom +ScopesDesc=例: Mastodon での読み取り、書き込み TokenRawValue=フルトークン(オブジェクト) AccessToken=アクセストークン TokenExpired=期限切れ diff --git a/htdocs/langs/ja_JP/other.lang b/htdocs/langs/ja_JP/other.lang index 07e9b7b29e8..9ed9887d219 100644 --- a/htdocs/langs/ja_JP/other.lang +++ b/htdocs/langs/ja_JP/other.lang @@ -16,9 +16,9 @@ TextPreviousMonthOfInvoice=請求日の前月(文字列) NextMonthOfInvoice=請求日の翌月(数字 1-12) TextNextMonthOfInvoice=請求日の翌月(文字列) PreviousMonth=前月 -PreviousYear=Previous year -NextMonth=Next month -NextYear=Next year +PreviousYear=前年 +NextMonth=来月 +NextYear=来年 CurrentMonth=今月 ZipFileGeneratedInto= %sに生成されたZipファイル。 DocFileGeneratedInto= %sに生成されたドキュメントファイル。 @@ -47,7 +47,7 @@ Notify_ORDER_SENTBYMAIL=メールで送信された販売注文 Notify_ORDER_CLOSE=販売注文が納品された Notify_ORDER_CANCEL=販売注文がキャンセルされた Notify_ORDER_SUPPLIER_SENTBYMAIL=電子メールで送信された購買発注 -Notify_ORDER_SUPPLIER_CANCEL=Purchase order canceled +Notify_ORDER_SUPPLIER_CANCEL=注文がキャンセルされた Notify_ORDER_SUPPLIER_VALIDATE=記録された購買発注 Notify_ORDER_SUPPLIER_APPROVE=購買発注が承認された Notify_ORDER_SUPPLIER_SUBMIT=発注書が送信された @@ -72,6 +72,7 @@ Notify_BILL_SUPPLIER_SENTBYMAIL=メールで送信されるベンダーの請求 Notify_BILL_SUPPLIER_CANCELED=仕入先 請求書がキャンセル済 Notify_CONTRACT_VALIDATE=契約は検証済 Notify_FICHINTER_VALIDATE=出張は検証済 +Notify_FICHINTER_MODIFY=出張の変更 Notify_FICHINTER_CLOSE=介入は終了した Notify_FICHINTER_ADD_CONTACT=介入への連絡先を追加 Notify_FICHINTER_SENTBYMAIL=郵送による介入 @@ -98,20 +99,20 @@ MaxSize=最大サイズ AttachANewFile=新規ファイル/文書を添付する LinkedObject=リンクされたオブジェクト NbOfActiveNotifications=通知の数(受信者の電子メールの数) -PredefinedMailTest=__(Hello)__\nThis is a test mail sent to __EMAIL__.\nThe lines are separated by a carriage return.\n\n__SENDEREMAIL_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.

__SENDEREMAIL_SIGNATURE__ -PredefinedMailContentContract=__(Hello)__\n\n\n__(Sincerely)__\n\n__SENDEREMAIL_SIGNATURE__ -PredefinedMailContentSendInvoice=__(Hello)__\n\nPlease find invoice __REF__ attached \n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__SENDEREMAIL_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__SENDEREMAIL_SIGNATURE__ -PredefinedMailContentSendProposal=__(Hello)__\n\nPlease find commercial proposal __REF__ attached \n\n\n__(Sincerely)__\n\n__SENDEREMAIL_SIGNATURE__ -PredefinedMailContentSendSupplierProposal=__(Hello)__\n\nPlease find price request __REF__ attached\n\n\n__(Sincerely)__\n\n__SENDEREMAIL_SIGNATURE__ -PredefinedMailContentSendOrder=__(Hello)__\n\nPlease find order __REF__ attached\n\n\n__(Sincerely)__\n\n__SENDEREMAIL_SIGNATURE__ -PredefinedMailContentSendSupplierOrder=__(Hello)__\n\nPlease find our order __REF__ attached\n\n\n__(Sincerely)__\n\n__SENDEREMAIL_SIGNATURE__ -PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find invoice __REF__ attached\n\n\n__(Sincerely)__\n\n__SENDEREMAIL_SIGNATURE__ -PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find shipping __REF__ attached\n\n\n__(Sincerely)__\n\n__SENDEREMAIL_SIGNATURE__ -PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find intervention __REF__ attached\n\n\n__(Sincerely)__\n\n__SENDEREMAIL_SIGNATURE__ +PredefinedMailTest=__(こんにちは)__\nこれは__EMAIL__ に送信されたテストメールだ。\n行は改行で区切られている。\n\n__SENDEREMAIL_SIGNATURE__ +PredefinedMailTestHtml=__(こんにちは)__
これは、__EMAIL__ に送信された テスト メールだ (test という単語は太字にする必要がある)。
行は改行で区切られている。

__SENDEREMAIL_SIGNATURE__ +PredefinedMailContentContract=__(こんにちは)__\n\n__(敬具)__\n\n__送信者メール署名__ +PredefinedMailContentSendInvoice=__(こんにちは)__\n\n請求書 __REF__ を添付した\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(よろしくお願いいたする)__\n\n__SENDEREMAIL_SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__(こんにちは)__\n\n請求書 __REF__ が支払われていないようだのでお知らせいたする。請求書のコピーを添付しておるのでご確認ください。\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(よろしくお願いいたする)__\n\n__SENDEREMAIL_SIGNATURE__ +PredefinedMailContentSendProposal=__(こんにちは)__\n\n商業提案書 __REF__ を添付する\n\n__(よろしくお願いいたする)__\n\n__SENDEREMAIL_SIGNATURE__ +PredefinedMailContentSendSupplierProposal=__(こんにちは)__\n\n価格リクエスト __REF__ を添付した\n\n__(よろしくお願いいたする)__\n\n__SENDEREMAIL_SIGNATURE__ +PredefinedMailContentSendOrder=__(こんにちは)__\n\n注文書 __REF__ を添付した\n\n__(よろしくお願いいたする)__\n\n__SENDEREMAIL_SIGNATURE__ +PredefinedMailContentSendSupplierOrder=__(こんにちは)__\n\n注文書 __REF__ を添付した\n\n__(よろしくお願いいたする)__\n\n__SENDEREMAIL_SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__(こんにちは)__\n\n請求書 __REF__ を添付したのでご確認ください\n\n__(よろしくお願いいたする)__\n\n__SENDEREMAIL_SIGNATURE__ +PredefinedMailContentSendShipping=__(こんにちは)__\n\n発送用の__REF__を添付しておる\n\n__(よろしくお願いいたする)__\n\n__SENDEREMAIL_SIGNATURE__ +PredefinedMailContentSendFichInter=__(こんにちは)__\n\n介入 __REF__ を添付する\n\n__(よろしく)__\n\n__SENDEREMAIL_SIGNATURE__ PredefinedMailContentLink=まだ行っていない場合は、下のリンクをクリックして支払を行うことができる。\n\n%s\n\n -PredefinedMailContentGeneric=__(Hello)__\n\n\n__(Sincerely)__\n\n__SENDEREMAIL_SIGNATURE__ +PredefinedMailContentGeneric=__(こんにちは)__\n\n__(敬具)__\n\n__送信者メール署名__ PredefinedMailContentSendActionComm=__EVENT_DATE__の__EVENT_TIME__のイベントリマインダー「__EVENT_LABEL __」

これは自動メッセージ 。返信しないこと。 DemoDesc=Dolibarrは、いくつかのビジネスモジュールをサポートするコンパクトなERP / CRM 。このシナリオは決して発生しないため、全モジュールを紹介するデモは意味がない(数百が利用可能)。したがって、いくつかのデモプロファイルが利用可能 。 ChooseYourDemoProfil=ニーズに最適なデモプロファイルを選択すること... @@ -209,6 +210,7 @@ AmountIn=%sの金額 NumberOfUnitsMos=製造指図で生産するユニットの数 EMailTextInterventionAddedContact=新規介入%sが割り当てられた。 EMailTextInterventionValidated=出張%sは検証済。 +EMailTextInterventionModified=出張 %s が変更された。 %s EMailTextInterventionClosed=介入%sは終了した。 EMailTextInvoiceValidated=請求書%sは検証済。 EMailTextInvoicePayed=請求書%sが支払われた。 @@ -222,7 +224,7 @@ EMailTextOrderValidated=注文%sは検証済。 EMailTextOrderClose=注文品%sが配達された。 EMailTextOrderCanceled=注文 %s はキャンセルされた。 EMailTextSupplierOrderApprovedBy=注文書 %s は %s によって承認された。 -EMailTextSupplierOrderCanceledBy=Purchase order %s has been canceled by %s. +EMailTextSupplierOrderCanceledBy=購入注文 %s は %s によってキャンセルされた。 EMailTextSupplierOrderValidatedBy=注文書 %s は %s によって記録された。 EMailTextSupplierOrderSubmittedBy=注文書 %s は %s によって送信された。 EMailTextSupplierOrderRefusedBy=注文書 %s は %s によって拒否された。 @@ -349,4 +351,4 @@ EmailContent=メールの内容 Pre-Prompt=事前プロンプト Post-Prompt=ポストプロンプト AIProcessingPleaseWait=AI (%s) がリクエストを処理している。お待ちください... -PayOfBankTransferInvoice=You are going to make an online payment for this invoice. However, this invoice has been set up to be paid in "Credit Transfer" mode, so to avoid paying twice, please verify that no current bank transfer has already been initiated before continuing. +PayOfBankTransferInvoice=この請求書の支払いをオンラインで行いる。ただし、この請求書は「クレジット振替」モードで支払われるように設定されているため、二重支払いを避けるため、続行する前に、現在銀行振替が開始されていないことを確認すること。 diff --git a/htdocs/langs/ja_JP/projects.lang b/htdocs/langs/ja_JP/projects.lang index b952f6df5fc..b7f605ac90a 100644 --- a/htdocs/langs/ja_JP/projects.lang +++ b/htdocs/langs/ja_JP/projects.lang @@ -132,6 +132,7 @@ AlsoCloseAProjectTooltip=プロダクション タスクを実行する必要が ReOpenAProject=開いているプロジェクト ConfirmReOpenAProject=このプロジェクトを再開してもよいか? ProjectContact=プロジェクトの連絡先 +ProjectContactTypeManager=連絡先として私を割り当てる TaskContact=タスクの連絡先 ActionsOnProject=プロジェクトのイベント YouAreNotContactOfProject=この民間プロジェクトの接触ではない @@ -142,10 +143,11 @@ DoNotShowMyTasksOnly=私に割り当てられていないタスクも参照す ShowMyTasksOnly=自分に割り当てられたタスクのみを表示 TaskRessourceLinks=タスクの連絡先 ProjectsDedicatedToThisThirdParty=この第三者に専用のプロジェクト +ProjectsLinkedToThisThirdParty=プロジェクト の連絡先が 取引先 の連絡先である NoTasks=このプロジェクトのための作業をしない LinkedToAnotherCompany=他の第三者へのリンク TaskIsNotAssignedToUser=タスクがユーザに割り当てられていない。ボタン ' %s 'を使用して、今すぐタスクを割り当てる。 -ErrorTimeSpentIsEmpty=費やした時間は空 +ErrorTimeSpentIsEmpty=費やした時間は空 TimeRecordingRestrictedToNMonthsBack=時間の記録は、%sか月前に制限されている ThisWillAlsoRemoveTasks=このアクションは、プロジェクトの全タスク(現時点では%sタスク)と過ごした時間の全入力を削除する。 IfNeedToUseOtherObjectKeepEmpty=いくつかのオブジェクト(請求書、注文、...)、別の第三者に属するが、作成するプロジェクトにリンクする必要がある場合は、複数の取引先中のプロジェクトを持っているこの空を保持する。 @@ -203,8 +205,8 @@ InputPerWeek=週あたりの入力 InputPerMonth=1か月あたりの入力 InputDetail=詳細を入力 TimeAlreadyRecorded=これは、このタスク/日およびユーザ%sについて既に記録されている時間。 -ProjectsWithThisUserAsContact=このユーザを連絡先とするプロジェクト -ProjectsWithThisContact=この取引先の連絡先を持つプロジェクト +ProjectsWithThisUserAsContact=プロジェクト がこの ユーザ に割り当てられた +ProjectsWithThisContact=プロジェクト がこの 取引先 連絡先に割り当てられた TasksWithThisUserAsContact=このユーザに割り当てられたタスク ResourceNotAssignedToProject=プロジェクトに割り当てられていない ResourceNotAssignedToTheTask=タスクに割り当てられていない @@ -249,7 +251,7 @@ LatestProjects=最新の%sプロジェクト LatestModifiedProjects=最新の%s変更プロジェクト OtherFilteredTasks=その他のフィルタリングされたタスク NoAssignedTasks=割り当てられたタスクが見つからない(上部の選択ボックスから現在のユーザにプロジェクト/タスクを割り当てて、時間を入力する) -ThirdPartyRequiredToGenerateInvoice=プロジェクトに請求できるようにするには、プロジェクトで取引先を定義する必要がある。 +ThirdPartyRequiredToGenerateIntervention=介入を作成できるようにするには、プロジェクト で 取引先 を定義する必要がある。 ThirdPartyRequiredToGenerateInvoice=プロジェクトに請求できるようにするには、プロジェクトで取引先を定義する必要がある。 ChooseANotYetAssignedTask=まだ割り当てられていないタスクを選択すること # Comments trans @@ -260,7 +262,7 @@ DontHaveTheValidateStatus=プロジェクト%sを閉じるには、開いてい RecordsClosed=%sプロジェクト(s)が終了しました SendProjectRef=情報プロジェクト%s ModuleSalaryToDefineHourlyRateMustBeEnabled=モジュール「給与」を有効にして、時間を評価するために従業員の時給を定義する必要がある -NewTaskRefSuggested=タスク参照は既に使用される。新規タスク参照が必要 +NewTaskRefSuggested=タスク参照は既に使用される。新規タスク参照が必要 NumberOfTasksCloned=%s 個のタスク(s)が複製された TimeSpentInvoiced=請求に費やされた時間 TimeSpentForIntervention=に費や​​された時間は @@ -302,3 +304,11 @@ NewLeadbyWeb=メッセージまたはリクエストは記録済。すぐに回 NewLeadForm=新規問合せフォーム LeadFromPublicForm=公開フォームからのオンライン導線 ExportAccountingReportButtonLabel=レポートを入手 +MergeOriginTask=重複したタスク(削除 したいタスク) +SelectTask=タスクを選択 +ConfirmMergeTasks=選択したタスクを現在のタスクと結合してもよろしい か? リンクされたすべてのオブジェクト (費やした時間、請求書など) は現在のタスクに移動され、その後、選択したタスクは削除される。 +MergeTasks=タスクをマージする +TaskMergeSuccess=タスクが統合された +ErrorTaskIdIsMandatory=エラー: タスク ID は必須 +ErrorsTaskMerge=タスクのマージ中にエラーが発生した +Billable = 請求可能 diff --git a/htdocs/langs/ja_JP/sendings.lang b/htdocs/langs/ja_JP/sendings.lang index 4d87df663c7..815f32684bd 100644 --- a/htdocs/langs/ja_JP/sendings.lang +++ b/htdocs/langs/ja_JP/sendings.lang @@ -63,6 +63,9 @@ NoProductToShipFoundIntoStock=倉庫%sに出荷する製品が見つか WeightVolShort=重量/容量 ValidateOrderFirstBeforeShipment=出荷を行う前に、まず注文を検証する必要がある。 NoLineGoOnTabToAddSome=行がありません。タブ「%s」に移動して追加する +CreateInvoiceForThisCustomerFromSendings=請求書を作成する +IfValidateInvoiceIsNoSendingStayUnbilled=請求書の検証が「いいえ」の場合、請求書が検証されるまで送信は「未請求」のステータスのままになる。 +OptionToSetSendingBilledNotEnabled=請求書が検証されたときに送信を「請求済み」に設定するモジュール ワークフローのオプション 自動的に が有効になっていないため、請求書が生成された後、送信のステータスを手動で「請求済み」に設定する必要がある。 # Sending methods # ModelDocument @@ -71,16 +74,12 @@ DocumentModelStorm=入庫とフィールド外の互換性のためのより完 Error_EXPEDITION_ADDON_NUMBER_NotDefined=定数EXPEDITION_ADDON_NUMBERが定義されていない SumOfProductVolumes=製品量の合計 SumOfProductWeights=製品の重量の合計 - # warehouse details DetailWarehouseNumber= 倉庫の詳細 DetailWarehouseFormat= W:%s(数量:%d) SHIPPING_DISPLAY_STOCK_ENTRY_DATE=シリアル番号またはバッチの出荷作成中に、在庫 にエントリの最終日付を表示する。 CreationOptions=出荷作成時に利用可能なオプション - ShipmentDistribution=出荷配信 - ErrorTooManyCombinationBatchcode=明細 %s は送達されない。ウェアハウス、製品、バッチ コード の多すぎる組合せ (%s) が見つかったため。 ErrorNoCombinationBatchcode=行 %s を、warehouse-製品-lot/serial の組合せとして保存できず。( %s、%s、%s)は在庫に見つからない。 - ErrorTooMuchShipped=出荷される数量は、明細行 %s の注文数量を超えてはならない diff --git a/htdocs/langs/ja_JP/stripe.lang b/htdocs/langs/ja_JP/stripe.lang index 18b81213561..6c8554ef464 100644 --- a/htdocs/langs/ja_JP/stripe.lang +++ b/htdocs/langs/ja_JP/stripe.lang @@ -2,7 +2,7 @@ StripeSetup=Stripe モジュールの設定 StripeDesc= Stripeを介してクレジット/デビットカードで支払うためのオンライン支払ページを顧客に提供する。これを使用して、顧客が臨時の支払や、特定のDolibarrオブジェクト(請求書、注文など)に関連する支払の実行ができるようになる。 StripeOrCBDoPayment=クレジットカードまたはStripeで支払う -FollowingUrlAreAvailableToMakePayments=以下のURLはDolibarrオブジェクト上で支払をするために顧客にページを提供するために利用可能 +FollowingUrlAreAvailableToMakePayments=以下のURLはDolibarrオブジェクト上で支払をするために顧客にページを提供するために利用可能 PaymentForm=支払形態 WelcomeOnPaymentPage=オンライン決済サービスへようこそ ThisScreenAllowsYouToPay=この画面では、%sにオンライン決済を行うことができる。 @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=契約ラインの%sオンライン ToOfferALinkForOnlinePaymentOnFreeAmount=既存のオブジェクトのない任意の金額の%sオンライン支払ページを提供するURL ToOfferALinkForOnlinePaymentOnMemberSubscription=構成員サブスクリプションの%sオンライン支払ページを提供するURL ToOfferALinkForOnlinePaymentOnDonation=寄付の支払のために%sオンライン支払ページを提供するURL -YouCanAddTagOnUrl=また、URLパラメーター&tag=valueをこれらのURLのいずれかに追加して(オブジェクトにリンクされていない支払にのみ必須)、独自の支払コメントタグを追加することもできる。
既存のオブジェクトがない支払のURLの場合、パラメーター&noidempotency=1を追加して、同じタグを持つ同じリンクを複数回使用できるようにすることもできる(一部の支払モードでは、このパラメータがないと、異なるリンクごとに支払が1に制限される場合がある) +YouCanAddTagOnUrl=また、URL パラメータ &タグ=value をこれらの URL のいずれかに追加して (オブジェクトにリンクされていない支払いの場合のみ必須)、独自の支払いコメント タグ を追加することもできる。
既存のオブジェクトがない支払いの URL の場合は、パラメータ &noidempotency=1 なので、同じ タグ を持つ同じリンクを複数回使用できる (一部の支払いモードでは、このパラメータがないと、異なるリンクごとに支払いが 1 回に制限される場合がある) +YouCanEmbedOnWebsite=支払いページを Dolibarr ウェブサイト に統合する場合は、次のパラメータを含めることができる: &ws=website_ref.
さらに、オンライン支払いが成功または失敗した後にリダイレクトを受信するためには、名前がpaymentokpaymentkoの2ページをウェブサイトに作成することが必須。 SetupStripeToHavePaymentCreatedAutomatically=Stripeによって検証済なら支払が自動的に作成されるように、URL %sを使用してStripeを設定する。 AccountParameter=アカウントのパラメータ UsageParameter=使用パラメータ @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Stripe 端末の場所 (アドレス) RequestDirectDebitWithStripe=Stripe で口座振替をリクエストする RequesCreditTransferWithStripe=Stripe でクレジット転送をリクエストする STRIPE_SEPA_DIRECT_DEBIT=Stripe による口座振替の支払いを有効にする +STRIPE_KLARNA=Klarnaを使った支払いを有効化 +STRIPE_BANCONTACT=BANCONTACTを使用した支払いを有効化 +STRIPE_IDEAL=IDEALを使用した支払いを有効化 +STRIPE_GIROPAY=GIROPAYを使用した支払いを有効化 +STRIPE_SOFORT=SOFORTを使用した支払いを有効化 StripeConnect_Mode=ストライプ接続モード +ExampleOnlyForBECustomers=ベルギーのお客様のみ +ExampleOnlyForDECustomers=ドイツのお客様のみ +ExampleOnlyForNLCustomers=オランダのお客様のみ +ExampleOnlyForATBEDEITNLESCustomers=オーストリア、ベルギー、ドイツ、イタリア、オランダ、スペインのお客様のみ diff --git a/htdocs/langs/ja_JP/ticket.lang b/htdocs/langs/ja_JP/ticket.lang index 733b7518ee8..b11092d7710 100644 --- a/htdocs/langs/ja_JP/ticket.lang +++ b/htdocs/langs/ja_JP/ticket.lang @@ -114,6 +114,8 @@ TicketsActivatePublicInterface=公開インターフェイスを活性化する TicketsActivatePublicInterfaceHelp=公開インターフェイスにより、全訪問者がチケットを作成できる。 TicketsAutoAssignTicket=チケットを作成したユーザを自動的に割り当てる TicketsAutoAssignTicketHelp=チケットを作成するときに、ユーザを自動的にチケットに割り当てることができる。 +TicketAutoChangeStatusOnAnswer=自動的に チケットに回答するときにステータスを割り当てる +TicketAutoChangeStatusOnAnswerHelp=ユーザがチケットに回答すると、ステータスが自動的にチケットに適用される TicketNumberingModules=チケット採番モジュール TicketsModelModule=チケットのドキュメントテンプレート TicketNotifyTiersAtCreation=作成時に取引先に通知する @@ -137,6 +139,10 @@ TicketUseCaptchaCode=チケットの作成時にグラフィカル コード (CA TicketUseCaptchaCodeHelp=新しいチケットを作成するときに CAPTCHA 検証を追加する。 TicketsAllowClassificationModificationIfClosed=終了したチケットの分類を変更できるようにする TicketsAllowClassificationModificationIfClosedHelp=チケットがクローズされている場合でも、分類 (タイプ、チケット グループ、重大度) を変更できるようにする。 +TicketAutoCheckNotifyThirdParty=チケットを作成するときにデフォルトで「取引先 に通知する」をチェックする。 +TicketAutoCheckNotifyThirdPartyHelp=チケットを作成するときに、「通知 取引先」オプションが 自動的に チェックされる。 +TicketAssignContactToMessage=メッセージに外部連絡先を割り当てる +TicketAssignContactToMessageHelp=既知の連絡先がメッセージに返信すると、その名前がチケット メッセージ リストに表示される。 # Index & list page TicketsIndex=チケットエリア TicketList=チケット一覧 diff --git a/htdocs/langs/ja_JP/website.lang b/htdocs/langs/ja_JP/website.lang index d5db58ac0cd..8077f97e027 100644 --- a/htdocs/langs/ja_JP/website.lang +++ b/htdocs/langs/ja_JP/website.lang @@ -62,7 +62,7 @@ NoPageYet=まだページはない YouCanCreatePageOrImportTemplate=新規ページを作成するか、完全なWebサイトテンプレートをインポートできる SyntaxHelp=特定の構文のヒントに関するヘルプ YouCanEditHtmlSourceckeditor=エディタの "ソース" ボタンを使用して、HTMLソースコードを編集できる。 -YouCanEditHtmlSource=
このソースに PHP コード を含めるには、タグ <?php ?>。以下のグローバル変数が利用可能 : $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs。

また、次の構文を使用して、別のページ/コンテナーのコンテンツを含めることもできる。:
<?php includeContainer('alias_of_container_to_include'); ?>

次の構文を使用して、別のページ/コンテナーにリダイレクトできる (注意: リダイレクト前にコンテンツを出力しない):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>
GET パラメータを使用してリダイレクトすることもできる:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

別ページへのリンクを追加するには、構文:
<a href="alias_of_page_to_link_to.php">mylink<a>

documentディレクトリに保存されているファイルへの ダウンロードリンクを含めるには、document.php ラッパー:
例、ファイル を documents/ecm にエクスポートする場合 (ログに記録する必要がある)、構文は次のようになる:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
document/メディア(パブリックアクセス用のオープンディレクトリ)への ファイル の場合、構文は:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
ファイル を共有リンクで共有 (ファイルの共有ハッシュ キー を使用してアクセスを開く)。構文は :
<a href="/document.php?hashp=publicsharekeyoffile">
+YouCanEditHtmlSource=
このソースに PHP コード を含めるには、タグ <?php ?>。以下のグローバル変数が利用可能: $conf,$db,$mysoc,$User,$Website,$websitepage,$weblangs,$pagelangs。

また、次の構文を使用して、別のページ/コンテナーのコンテンツを含めることもできる。:
<?php includeContainer('alias_of_container_to_include'); ?>

次の構文を使用して、別のページ/コンテナにリダイレクトできる (注意: リダイレクト前にコンテンツを出力しないこと):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>
GET パラメータを使用してリダイレクトすることもできる:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

別のページへのリンクを追加するには、構文:
<a href="alias_of_page_to_link_to.php">mylink<a>

ページタイトルと SEO メタタグ (タイトル、キーワード、説明) を動的に設定できる。次の変数を定義するだけです:
$__PAGE__TITLE__ = "タイトル値…";
$__PAGE__KEYWORDS__ = "keyword1、keyword2、keyword3 …"; // カンマ区切り
$__PAGE__DESC__ = "説明…";


含めるにはダウンロードリンク ファイル が documents ディレクトリに保存されている場合は、document.php ラッパーを使用する:
たとえば、ファイル を documents/ecm にエクスポートする場合 (ログに記録する必要がある)、構文は次のようになりる。:
<a href="/document.php?modulepart=ecm&ファイル=[relative_dir/]filename.ext">
document/media(パブリックアクセス用のオープンディレクトリ)への ファイル の場合、構文は:
<a href="/document.php?mod ulepart=medias&file=[relative_dir/]filename.ext">
共有リンクで共有された ファイル (共有ハッシュ キー ファイル を使用してアクセスを開く)、構文は :
<a href="/document.php?hashp=publicsharekeyoffile">
YouCanEditHtmlSource1=
含める画像ドキュメント ディレクトリに保存し、viewimage.php ラッパーを使用する。
例:画像を documents/media (公開アクセス用のオープン ディレクトリ) に挿入, 構文は:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]ファイル名.ext">
YouCanEditHtmlSource2=画像を共有リンク (ファイルの共有ハッシュキーを使用したオープンアクセス) で共有するなら、構文は:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource3=PHP オブジェクトの画像の URL を取得する時に使用するのは
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/kk_KZ/admin.lang b/htdocs/langs/kk_KZ/admin.lang index 2274bf63040..34a476a51e5 100644 --- a/htdocs/langs/kk_KZ/admin.lang +++ b/htdocs/langs/kk_KZ/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Мәндер тізімі формат кілті ба ExtrafieldParamHelpcheckbox=Мәндер тізімі формат кілті бар жолдар болуы керек, мән (мұнда кілт '0' болмауы керек)

1, мән1
2, мән2 a0342fccff319f03 ExtrafieldParamHelpradio=Мәндер тізімі формат кілті бар жолдар болуы керек, мән (мұнда кілт '0' болмауы керек)

1, мән1
2, мән2 a0342fccff319f03 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Параметрлер ObjectName болуы керек: Classpath
Синтаксис: ObjectName: Classpath ExtrafieldParamHelpSeparator=Қарапайым сепаратор үшін бос ұстаңыз күй әр пайдаланушы сеансы алдында сақталады) LibraryToBuildPDF=PDF құру үшін пайдаланылатын кітапхана @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, содан кейін таңбалар с ModuleCompanyCodeSupplierDigitaria=%s, содан кейін таңбалар саны бойынша қысқартылған жеткізуші аты: жеткізушінің есеп коды үшін %s. Use3StepsApproval=Әдепкі бойынша, Сатып алу тапсырыстарын 2 түрлі қолданушы құруы және мақұлдауы қажет (бір қадам/пайдаланушы және бір қадам/пайдаланушы мақұлдау. Ескерту, егер пайдаланушының жасауға да, мақұлдауға да рұқсаты болса, бір қадам/пайдаланушы жеткілікті болады) . Сіз бұл параметрмен үшінші қадамды/пайдаланушыны мақұлдауды сұрай аласыз, егер сома белгіленген мәннен жоғары болса (3 қадам қажет болады: 1 = валидация, 2 = бірінші мақұлдау және 3 = егер сома жеткілікті болса).
Егер бір мақұлдау (2 қадам) жеткілікті болса, оны бос күйіне орнатыңыз, егер екінші рұқсат (3 қадам) әрқашан қажет болса, оны өте төмен мәнге (0,1) орнатыңыз. UseDoubleApproval=Егер сома (салықсыз) ... -дан жоғары болса, 3 қадамды бекітуді қолданыңыз. -WarningPHPMail=ЕСКЕРТУ: Қолданбадан электрондық хаттарды жіберуді орнату әдепкі жалпы орнатуды пайдалануда. Бұл таңдау орнатуды аяқтау үшін техникалық білімді қажет етпейді.
Дегенмен, әдетте шығыс электрондық пошталарды электрондық пошта қызметін жеткізушінің электрондық пошта серверін пайдалану үшін әдепкі орнатудың орнына реттеген дұрыс. бірнеше себептер: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: WarningPHPMailA=- Электрондық пошта қызметі провайдерінің серверін пайдалану электрондық поштаның сенімділігін арттырады, осылайша ол СПАМ ретінде белгіленбестен жеткізу мүмкіндігін арттырады. -WarningPHPMailB=- Кейбір электрондық пошта қызметтерін жеткізушілер (Yahoo сияқты) сізге өз серверінен басқа серверден электрондық хат жіберуге рұқсат бермейді. Сіздің қазіргі қондырғыңыз электрондық пошта провайдерінің сервері емес, электрондық поштаны жіберу үшін қосымшаның серверін қолданады, сондықтан кейбір алушылар (шектеулі DMARC протоколымен үйлесімді) сіздің электрондық пошта провайдеріңізден сіздің электрондық поштаңызды және кейбір электрондық пошта провайдерлерін қабылдай алатынын сұрайды. (Yahoo сияқты) «жоқ» деп жауап беруі мүмкін, себебі сервер олардікі емес, сондықтан сіздің жіберген хаттарыңыздың аз бөлігі жеткізілімге қабылданбауы мүмкін (электрондық пошта провайдерінің жіберу квотасына да абай болыңыз). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Электрондық поштаны жіберу үшін өзіңіздің электрондық пошта қызмет провайдерінің SMTP серверін пайдалану да қызықты, сондықтан қосымшадан жіберілген барлық хаттар сіздің пошта жәшігіңіздің «Жіберілген» каталогына сақталады. WarningPHPMailD=Сондықтан электрондық хаттарды жіберу әдісін «SMTP» мәніне өзгерту ұсынылады. WarningPHPMailDbis=Электрондық хаттарды жіберудің әдепкі "PHP" әдісін шынымен сақтағыңыз келсе, жай ғана бұл ескертуді елемеңіз немесе %sосы жерді басу арқылы жойыңыз%s. WarningPHPMail2=Егер сіздің электрондық пошта SMTP провайдеріңізге электрондық пошта клиентін кейбір IP мекенжайларымен шектеу қажет болса (өте сирек), бұл сіздің ERP CRM қосымшасына арналған пошта пайдаланушы агентінің (MUA) IP мекенжайы: %s . -WarningPHPMailSPF=Жіберушінің электрондық пошта мекенжайындағы домен атауы SPF жазбасымен қорғалған болса (домендік атау тіркеушісінен сұраңыз), доменіңіздің DNS SPF жазбасына келесі IP мекенжайларын қосу керек: %s. -ActualMailSPFRecordFound=Нақты SPF жазбасы табылды (%s электрондық поштасы үшін): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Сипаттаманы көрсету үшін басыңыз DependsOn=Бұл модульге модульдер қажет RequiredBy=Бұл модуль модульдер үшін қажет @@ -867,7 +868,7 @@ Permission255=Басқа пайдаланушылардың құпия сөзі Permission256=Басқа пайдаланушыларды өшіру немесе өшіру Permission262=Барлық үшінші тұлғаларға және олардың объектілеріне (пайдаланушы сату өкілі ретінде байланыстырылған үшінші тараптар ғана емес) қол жеткізуді кеңейтіңіз. Permission262b=Сыртқы пайдаланушылар үшін тиімді емес (ұсыныстар, тапсырыстар, шот-фактуралар, келісімшарттар және т.б. үшін әрқашан өздерімен шектеледі). -Permission262c=Жобалар үшін тиімді емес (тек жоба рұқсаттары, көріну және тағайындау мәселелері бойынша ережелер). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Барлық үшінші тұлғаларға объектісіз қол жеткізуді кеңейтіңіз (тек пайдаланушы сату өкілі болып табылатын үшінші тұлғалар ғана емес).
Сыртқы пайдаланушылар үшін тиімді емес (әрқашан ұсыныстар, тапсырыстар, шот -фактуралар, келісімшарттар және т.б. бойынша өздерімен шектеледі).
Жобалар үшін тиімді емес (тек жобаның рұқсаты, көріну және тағайындау мәселелері бойынша ережелер). Permission271=CA оқыңыз Permission272=Шот -фактураларды оқу @@ -944,7 +945,7 @@ Permission776=Шығындар бойынша есептер Permission777=Барлық шығыс есептерін оқыңыз (тіпті бағынышты емес пайдаланушының есептерін де) Permission778=Барлығының шығыс есебін жасаңыз/өзгертіңіз Permission779=Экспорт шығындары туралы есептер -Permission1001=Акцияларды оқу +Permission1001=Read warehouses and stocks Permission1002=Қоймаларды құру/өзгерту Permission1003=Қоймаларды жою Permission1004=Қозғалыс қозғалысын оқыңыз @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Регекс сүзгісі таза мәнге (C DuplicateForbidden=Көшірме жасауға тыйым салынады RemoveSpecialWords=Тұтынушылар немесе жеткізушілер үшін қосалқы шоттарды жасау кезінде белгілі бір сөздерді тазалаңыз RemoveSpecialWordsHelp=Тұтынушы немесе жеткізушінің шотын есептеу алдында тазартылатын сөздерді көрсетіңіз. «;» пайдаланыңыз әр сөз арасында -GDPRContact=Деректерді қорғау жөніндегі қызметкер (DPO, деректердің құпиялылығы немесе GDPR байланысы) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Жеке деректерді Ақпараттық жүйеңізде сақтасаңыз, Деректерді қорғаудың жалпы ережесіне жауапты контактіні осы жерде атай аласыз HelpOnTooltip=Мәтінді құралдар тақтасында көрсетуге көмектесіңіз HelpOnTooltipDesc=Мәтін немесе аударма кілтін осы өріс пішінде пайда болған кезде құралдар кеңесінде көрсету үшін осында қойыңыз @@ -2218,7 +2219,7 @@ CreateCandidature=Жұмысқа өтініш жасаңыз FormatZip=Zip MainMenuCode=Мәзірді енгізу коды (негізгі мәзір) ECMAutoTree=ECM автоматты ағашын көрсету -OperationParamDesc=Кейбір деректерді шығару үшін қолданылатын ережелерді немесе операция үшін пайдаланылатын мәндерді орнатуды анықтаңыз.

Компанияның атын шығару мысалы электрондық пошта тақырыбын уақытша айнымалыға айналдыру:
tmp_var=EXTRACT:SUBJECT:Компаниядан хабарлама ([^\n]*)

Жасалатын нысанның сипаттарын орнату мысалдары:
objproperty1=SET:қатты кодталған мән
objproperty2=SET:__tmp_var__
objFETIMP3a сипат әлі анықталмаған болса ғана орнатылады)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:\\y s([^\\s]*)

Бірнеше сипаттарды шығару немесе орнату үшін жаңа жолды пайдаланыңыз. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Жұмыс уақыты OpeningHoursDesc=Мұнда сіздің компанияңыздың жұмыс уақытын енгізіңіз. ResourceSetup=Ресурс модулінің конфигурациясы @@ -2264,7 +2265,7 @@ LargerThan=Одан үлкен IfTrackingIDFoundEventWillBeLinked=Нысанның бақылау идентификаторы электрондық поштадан табылса немесе электрондық пошта әлдеқашан жиналған және нысанға байланыстырылған электрондық поштаның жауабы болса, жасалған оқиға белгілі қатысты нысанға автоматты түрде байланыстырылатынын ескеріңіз. WithGMailYouCanCreateADedicatedPassword=GMail тіркелгісімен 2 қадамды тексеруді қосқан болсаңыз, https://myaccount.google.com/ сайтындағы жеке тіркелгі құпия сөзін пайдаланудың орнына қолданба үшін арнайы екінші құпия сөзді жасау ұсынылады. EmailCollectorTargetDir=Сәтті өңделген кезде электрондық поштаны басқа тегке/каталогқа жылжыту қалаған әрекет болуы мүмкін. Бұл мүмкіндікті пайдалану үшін осы жерге каталогтың атын қойыңыз (атауда арнайы таңбаларды ҚОЛДАНБАҢЫЗ). Сондай-ақ оқу/жазу кіру тіркелгісін пайдалану керек екенін ескеріңіз. -EmailCollectorLoadThirdPartyHelp=Бұл әрекетті дерекқорыңыздағы бар үшінші тарапты табу және жүктеу үшін электрондық пошта мазмұнын пайдалану үшін пайдалануға болады (іздеу 'id','name','name_alias','email' арасында анықталған сипат бойынша орындалады). Табылған (немесе жасалған) үшінші тарап оны қажет ететін келесі әрекеттер үшін пайдаланылады.
Мысалы, жолдан алынған аты бар үшінші тарапты жасағыңыз келсе ' Атау: табу үшін' негізгі мәтінде көрсетіледі, жіберушінің электрондық поштасын электрондық пошта ретінде пайдаланыңыз, параметр өрісін келесідей орнатуға болады:
'email=HEADER:^Кімнен:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Ескерту: көптеген электрондық пошта серверлері (мысалы, Gmail) жолда іздеу кезінде толық сөздерді іздеуде және жол тек сөзде ішінара табылса, нәтижені қайтармайды. Осы себепті іздеу шартында арнайы таңбаларды пайдалану, егер олар бар сөздердің бөлігі болмаса, еленбейді.
Сөз бойынша іздеуді болдырмау үшін (сөз болса, электрондық поштаны қайтарыңыз. табылмады), сіз пайдалана аласыз! сөздің алдындағы таңба (кейбір пошта серверлерінде жұмыс істемеуі мүмкін). EndPointFor=%s үшін соңғы нүкте: %s DeleteEmailCollector=Электрондық пошта жинаушысын жою @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Үшінші тарап аты - Үшінші тарап бүр ALIAS_THIRDPARTY=Үшінші тарап бүркеншік аты - Үшінші тарап аты PDFIn2Languages=PDF форматындағы белгілерді 2 түрлі тілде көрсету (бұл мүмкіндік кейбір бірнеше тілде жұмыс істемеуі мүмкін) PDF_USE_ALSO_LANGUAGE_CODE=Егер сіз PDF -тегі кейбір мәтіндерді бір PDF форматында 2 түрлі тілде қайталағыңыз келсе, мұнда осы екінші тілді орнатуыңыз керек, осылайша жасалған PDF бір бетте 2 түрлі тілді қамтиды, PDF жасау кезінде таңдалған және осы PDF -тің бірнеше үлгілері ғана қолдайды). PDF үшін 1 тіл үшін бос қалдырыңыз. -PDF_USE_A=Әдепкі PDF пішімінің орнына PDF/A пішімі бар PDF құжаттарын жасаңыз +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Мұнда FontAwesome белгішесінің кодын енгізіңіз. Егер сіз FontAwesome деген не екенін білмесеңіз, fa-address-book жалпы мәнін пайдалана аласыз. RssNote=Ескерту: RSS арнасының әр анықтамасы бақылау тақтасында қол жетімді болуы үшін оны қосу қажет виджетті қамтамасыз етеді JumpToBoxes=Орнату -> виджеттерге өтіңіз @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/kk_KZ/datapolicy.lang b/htdocs/langs/kk_KZ/datapolicy.lang index c6bb9452336..eb71d9667b2 100644 --- a/htdocs/langs/kk_KZ/datapolicy.lang +++ b/htdocs/langs/kk_KZ/datapolicy.lang @@ -33,7 +33,7 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Болашақ/Тұтынушы DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Не перспективалы/Не тұтынушы DATAPOLICY_CONTACT_FOURNISSEUR = Жеткізуші DATAPOLICY_ADHERENT = мүше -DATAPOLICY_Tooltip_SETUP = Контакт түрі - әр түр үшін таңдауыңызды көрсетіңіз. +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Сіз GDPR электрондық поштасын барлық сәйкес контактілеріңізге (әлі электрондық поштаны алмаған және GDPR келісімі туралы ештеңе тіркемеген) жібере аласыз. Мұны істеу үшін келесі түймені пайдаланыңыз. SendAgreement = Электрондық хаттарды жіберу AllAgreementSend = Барлық электрондық хаттар жіберілді diff --git a/htdocs/langs/kk_KZ/dict.lang b/htdocs/langs/kk_KZ/dict.lang index 7f774d4fa0d..7d92bb60194 100644 --- a/htdocs/langs/kk_KZ/dict.lang +++ b/htdocs/langs/kk_KZ/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=CFP франктері CurrencySingXPF=CFP франк CurrencyCentEUR=цент CurrencyCentSingEUR=цент -CurrencyCentINR=пайса -CurrencyCentSingINR=тыныштық +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=мыңыншы #### Input reasons ##### DemandReasonTypeSRC_INTE=ғаламтор diff --git a/htdocs/langs/kk_KZ/errors.lang b/htdocs/langs/kk_KZ/errors.lang index a27c56a79d6..9411f377815 100644 --- a/htdocs/langs/kk_KZ/errors.lang +++ b/htdocs/langs/kk_KZ/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Уақытты енгізу үшін пайдалан ErrorTaskAlreadyAssigned=Қолданушыға тапсырма берілген ErrorModuleFileSeemsToHaveAWrongFormat=Модуль пакетінің пішімі дұрыс емес сияқты. ErrorModuleFileSeemsToHaveAWrongFormat2=Кем дегенде бір міндетті каталог модульдің zip -те болуы керек: %s немесе %s a0a65d071 -ErrorFilenameDosNotMatchDolibarrPackageRules=Модуль пакетінің атауы ( %s ) күтілетін атау синтаксисіне сәйкес келмейді: %s a0a65d071 +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Қате, қайталанатын триггер атауы %s. %s ішінен әлдеқашан жүктелген. ErrorNoWarehouseDefined=Қате, қоймалар анықталмады. ErrorBadLinkSourceSetButBadValueForRef=Сіз қолданатын сілтеме жарамсыз. Төлемнің «көзі» анықталған, бірақ «ref» мәні жарамсыз. @@ -422,3 +422,4 @@ OperNotDefined=Төлем әдісі анықталмаған ErrorThisContactXIsAlreadyDefinedAsThisType=%s осы түр үшін контакт ретінде әлдеқашан анықталған. ErrorThisGroupIsAlreadyDefinedAsThisType=Бұл топтағы контактілер осы түрге арналған контакт ретінде әлдеқашан анықталған. EmptyMessageNotAllowedError=Бос хабарға рұқсат етілмейді +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/kk_KZ/mails.lang b/htdocs/langs/kk_KZ/mails.lang index d8a5748efca..346003136b3 100644 --- a/htdocs/langs/kk_KZ/mails.lang +++ b/htdocs/langs/kk_KZ/mails.lang @@ -32,6 +32,8 @@ NewMailing=Жаңа электрондық пошта NewSMSing=Жаңа смс EditMailing=Электрондық поштаны өңдеу ResetMailing=Электрондық поштаны қайта жіберу +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Электрондық поштаны жою PreviewMailing=Электрондық поштаны алдын ала қарау CreateMailing=Электрондық поштаны құру @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Электрондық пошта алушы бос WarningNoEMailsAdded=Алушылардың тізіміне қосылатын жаңа электрондық пошта жоқ. ConfirmValidMailing=Бұл электрондық поштаны растағыңыз келетініне сенімдісіз бе? ConfirmResetMailing=Ескерту, %s электрондық поштасын қайта инициализациялау арқылы сіз бұл электрондық поштаны жаппай жіберу арқылы қайта жіберуге рұқсат бересіз. Сіз мұны қалайсыз ба? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Бұл электрондық поштаны шынымен жойғыңыз келе ме? NbOfUniqueEMails=Бірегей электрондық пошталардың саны NbOfUniquePhones=Бірегей телефондар саны @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Электрондық поштаны жіберетін EmailOptedOut=Электрондық пошта иесі оған енді осы электрондық пошта арқылы хабарласпауды сұрады EvenUnsubscribe=Бас тарту электрондық пошталарын қосыңыз EvenUnsubscribeDesc=Электрондық пошталарды мақсат ретінде таңдаған кезде бас тарту электрондық пошталарын қосыңыз. Мысалы, міндетті электрондық пошталар үшін пайдалы. -XEmailsDoneYActionsDone=%s электрондық хаттар алдын ала жарамды, %s электрондық пошталар сәтті өңделді (b0ecb2ec87f49fzжазбасы үшін /орындалған әрекеттер) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Электрондық поштаңызға бірнеше нұсқаулар жасай аласыз (Мысалы: электрондық пошта үлгісінде суретті жасау...) ModelTemplate=Электрондық пошта үлгісі YouCanChooseAModelForYouMailContent= Үлгі үлгілерінің бірін таңдауға немесе AI көмегімен біреуін жасауға болады TitleOfMailHolder=Электрондық поштаның тақырыбы осында ContentOfMailHolder=Электрондық поштаның мазмұны осында... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/kk_KZ/sendings.lang b/htdocs/langs/kk_KZ/sendings.lang index c84fd3f359a..7f38a48e563 100644 --- a/htdocs/langs/kk_KZ/sendings.lang +++ b/htdocs/langs/kk_KZ/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock= %s қоймасынан жіберіле WeightVolShort=Салмағы/том. ValidateOrderFirstBeforeShipment=Жеткізуді жасамас бұрын алдымен тапсырысты растауыңыз керек. NoLineGoOnTabToAddSome=Жол жоқ, қосу үшін "%s" қойындысына өтіңіз -CreateInvoiceForThisCustomerFromSendings=Шот жіберу +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=Егер шот-фактураны растау «Жоқ» болса, шот-фактура расталғанға дейін жіберу «Төлемсіз» күйінде қалады. OptionToSetSendingBilledNotEnabled=Шот-фактура расталған кезде автоматты түрде "Есептелді" күйіне жіберуді орнату үшін Жұмыс процесі модулінің опциясы қосылмаған, сондықтан шот-фактура жасалғаннан кейін жіберу күйін "Есептелді" күйіне қолмен орнатуға тура келеді. diff --git a/htdocs/langs/kk_KZ/stripe.lang b/htdocs/langs/kk_KZ/stripe.lang index ea521076310..d2ffd8d1f0b 100644 --- a/htdocs/langs/kk_KZ/stripe.lang +++ b/htdocs/langs/kk_KZ/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=Келісімшарт желісі ToOfferALinkForOnlinePaymentOnFreeAmount=URL нысаны жоқ кез келген соманың %s онлайн төлемдік бетін ұсынады ToOfferALinkForOnlinePaymentOnMemberSubscription=Мүшелік жазылым үшін %s онлайн төлем бетін ұсынатын URL ToOfferALinkForOnlinePaymentOnDonation=Қайырымдылық төлемі үшін %s онлайн төлем бетін ұсынатын URL -YouCanAddTagOnUrl=Сондай -ақ, URL мекенжайының кез келгеніне ur0 параметрін & tag = қосуға болады (тек объектіге байланысы жоқ төлем үшін міндетті).
Қолданыстағы объектісі жоқ төлемдердің URL мекенжайы үшін & noidempotency = 1 параметрін де қосуға болады, сондықтан сол тегпен бір сілтемені бірнеше рет қолдануға болады (кейбір төлем режимі әр түрлі сілтеме үшін төлемді 1 -ге дейін шектеуі мүмкін) параметр) +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) YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Stripe %s url көмегімен Stripe орнатыңыз, Stripe арқылы расталған кезде төлем автоматты түрде жасалады. AccountParameter=Есептік жазба параметрлері diff --git a/htdocs/langs/kk_KZ/website.lang b/htdocs/langs/kk_KZ/website.lang index 7c5fbc9040c..45802d84baa 100644 --- a/htdocs/langs/kk_KZ/website.lang +++ b/htdocs/langs/kk_KZ/website.lang @@ -62,7 +62,7 @@ NoPageYet=Әлі беттер жоқ YouCanCreatePageOrImportTemplate=Сіз жаңа бетті жасай аласыз немесе веб -сайттың толық үлгісін импорттай аласыз SyntaxHelp=Нақты синтаксистік кеңестер бойынша көмек YouCanEditHtmlSourceckeditor=Редактордағы «Дереккөз» батырмасы арқылы HTML бастапқы кодын өңдеуге болады. -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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
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=Бөлісу сілтемесімен бөлісілген кескін үшін (файлдың ортақ хэш кілтін қолдана отырып, ашық қатынас), синтаксис:
<img src = «/viewimage.php? Hashp = 12345679012z00f01f01f0f1f0f4f0f0f0f0f0f09f0f0f0f09b029» YouCanEditHtmlSource3=To get the URL of the image of a PHP object, use
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/km_KH/admin.lang b/htdocs/langs/km_KH/admin.lang index 65293d7dd9c..6508afdfbe8 100644 --- a/htdocs/langs/km_KH/admin.lang +++ b/htdocs/langs/km_KH/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=ប៉ារ៉ាម៉ែត្រត្រូវតែជា ObjectName:Classpath
វាក្យសម្ព័ន្ធ៖ ObjectName:Classpath ExtrafieldParamHelpSeparator=ទុកទទេសម្រាប់សញ្ញាបំបែកសាមញ្ញ
កំណត់វាទៅជា 1 សម្រាប់សញ្ញាបំបែកដែលដួលរលំ (បើកតាមលំនាំដើមសម្រាប់វគ្គថ្មី បន្ទាប់មកស្ថានភាពត្រូវបានរក្សាទុកសម្រាប់សម័យអ្នកប្រើប្រាស់នីមួយៗ)
កំណត់វាទៅជា 2 សម្រាប់សញ្ញាបំបែកដែលដួលរលំ (ដួលរលំតាមលំនាំដើមសម្រាប់វគ្គថ្មី បន្ទាប់មកស្ថានភាពត្រូវបានរក្សាទុកសម្រាប់សម័យអ្នកប្រើប្រាស់នីមួយៗ) LibraryToBuildPDF=បណ្ណាល័យប្រើសម្រាប់ការបង្កើត PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s តាមពីក្រោយដោយឈ ModuleCompanyCodeSupplierDigitaria=%s តាមពីក្រោយដោយឈ្មោះអ្នកផ្គត់ផ្គង់ដែលត្រូវបានកាត់ឱ្យខ្លីតាមចំនួនតួអក្សរ៖ %s សម្រាប់លេខកូដគណនេយ្យអ្នកផ្គត់ផ្គង់។ Use3StepsApproval=តាមលំនាំដើម ការបញ្ជាទិញត្រូវតែត្រូវបានបង្កើត និងអនុម័តដោយអ្នកប្រើប្រាស់ 2 ផ្សេងគ្នា (មួយជំហាន/អ្នកប្រើប្រាស់ដើម្បីបង្កើត និងមួយជំហាន/អ្នកប្រើប្រាស់ដើម្បីអនុម័ត។ ចំណាំថាប្រសិនបើអ្នកប្រើមានទាំងការអនុញ្ញាតដើម្បីបង្កើត និងអនុម័ត មួយជំហាន/អ្នកប្រើប្រាស់នឹងគ្រប់គ្រាន់) . អ្នកអាចសួរដោយប្រើជម្រើសនេះ ដើម្បីណែនាំជំហានទីបី/ការយល់ព្រមពីអ្នកប្រើប្រាស់ ប្រសិនបើចំនួនទឹកប្រាក់ខ្ពស់ជាងតម្លៃដែលបានកំណត់ (ដូច្នេះ 3 ជំហាននឹងចាំបាច់៖ 1=សុពលភាព, 2=ការអនុម័តដំបូង និង 3=ការអនុម័តទីពីរ ប្រសិនបើចំនួនគ្រប់គ្រាន់)។
កំណត់វាឱ្យទទេ ប្រសិនបើការយល់ព្រមមួយ (2 ជំហាន) គឺគ្រប់គ្រាន់ សូមកំណត់វាទៅតម្លៃទាបបំផុត (0.1) ប្រសិនបើការអនុម័តទីពីរ (3 ជំហាន) តែងតែត្រូវបានទាមទារ។ UseDoubleApproval=ប្រើការអនុម័ត 3 ជំហាន នៅពេលដែលចំនួនទឹកប្រាក់ (ដោយគ្មានពន្ធ) ខ្ពស់ជាង... -WarningPHPMail=ការព្រមាន៖ ការដំឡើងដើម្បីផ្ញើអ៊ីមែលពីកម្មវិធីកំពុងប្រើការកំណត់ទូទៅលំនាំដើម។ ជម្រើសនេះមិនត្រូវការចំណេះដឹងបច្ចេកទេសដើម្បីបញ្ចប់ការដំឡើងនោះទេ។
ទោះជាយ៉ាងណាក៏ដោយ ជាញឹកញាប់វាជាការប្រសើរក្នុងការដំឡើងអ៊ីមែលដែលចេញដើម្បីប្រើម៉ាស៊ីនមេអ៊ីមែលរបស់អ្នកផ្តល់សេវាអ៊ីមែលរបស់អ្នក ជំនួសឱ្យការដំឡើងលំនាំដើមសម្រាប់ ហេតុផលជាច្រើន៖ +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: WarningPHPMailA=- ការប្រើប្រាស់ម៉ាស៊ីនមេរបស់អ្នកផ្តល់សេវាអ៊ីមែលបង្កើនភាពជឿជាក់នៃអ៊ីមែលរបស់អ្នក ដូច្នេះវាបង្កើនលទ្ធភាពនៃការចែកចាយដោយមិនត្រូវបានដាក់ទង់ថាជា SPAM -WarningPHPMailB=- អ្នកផ្តល់សេវាអ៊ីមែលមួយចំនួន (ដូចជា Yahoo) មិនអនុញ្ញាតឱ្យអ្នកផ្ញើអ៊ីមែលពីម៉ាស៊ីនមេផ្សេងជាងម៉ាស៊ីនមេរបស់ពួកគេទេ។ ការដំឡើងបច្ចុប្បន្នរបស់អ្នកប្រើម៉ាស៊ីនមេនៃកម្មវិធីដើម្បីផ្ញើអ៊ីមែល ហើយមិនមែនម៉ាស៊ីនមេរបស់អ្នកផ្តល់អ៊ីមែលរបស់អ្នកទេ ដូច្នេះអ្នកទទួលមួយចំនួន (ដែលត្រូវគ្នាជាមួយពិធីការ DMARC រឹតបន្តឹង) នឹងសួរអ្នកផ្តល់អ៊ីមែលរបស់អ្នកថាតើពួកគេអាចទទួលយកអ៊ីមែលរបស់អ្នក និងអ្នកផ្តល់អ៊ីមែលមួយចំនួនដែរឬទេ។ (ដូចជា Yahoo) អាចនឹងឆ្លើយតបថា "ទេ" ដោយសារតែម៉ាស៊ីនមេមិនមែនជារបស់ពួកគេ ដូច្នេះអ៊ីមែលមួយចំនួនដែលអ្នកបានផ្ញើប្រហែលជាមិនត្រូវបានទទួលយកសម្រាប់ការចែកចាយទេ (សូមប្រយ័ត្នចំពោះកូតាផ្ញើរបស់អ្នកផ្តល់សេវាអ៊ីមែលរបស់អ្នកផងដែរ)។ +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- ការប្រើប្រាស់ម៉ាស៊ីនមេ SMTP របស់អ្នកផ្តល់សេវាអ៊ីមែលផ្ទាល់ខ្លួនរបស់អ្នកដើម្បីផ្ញើអ៊ីមែលក៏គួរឱ្យចាប់អារម្មណ៍ផងដែរ ដូច្នេះអ៊ីមែលទាំងអស់ដែលបានផ្ញើពីកម្មវិធីក៏នឹងត្រូវបានរក្សាទុកទៅក្នុងថត "ផ្ញើ" នៃប្រអប់សំបុត្ររបស់អ្នក។ WarningPHPMailD=ដូច្នេះវាត្រូវបានផ្ដល់អនុសាសន៍ឱ្យផ្លាស់ប្តូរវិធីសាស្រ្តនៃការផ្ញើអ៊ីមែលទៅតម្លៃ "SMTP" ។ WarningPHPMailDbis=ប្រសិនបើអ្នកពិតជាចង់រក្សាវិធីសាស្ត្រ "PHP" លំនាំដើមដើម្បីផ្ញើអ៊ីមែល គ្រាន់តែមិនអើពើនឹងការព្រមាននេះ ឬលុបវាចេញដោយ %sចុចទីនេះ%s ។ WarningPHPMail2=ប្រសិនបើអ្នកផ្តល់សេវា SMTP អ៊ីមែលរបស់អ្នកត្រូវដាក់កម្រិតកម្មវិធីអ៊ីមែលទៅអាសយដ្ឋាន IP មួយចំនួន (កម្រណាស់) នេះគឺជាអាសយដ្ឋាន IP របស់ភ្នាក់ងារអ្នកប្រើប្រាស់សំបុត្រ (MUA) សម្រាប់កម្មវិធី ERP CRM របស់អ្នក៖ %s។ -WarningPHPMailSPF=ប្រសិនបើឈ្មោះដែននៅក្នុងអាសយដ្ឋានអ៊ីមែលអ្នកផ្ញើរបស់អ្នកត្រូវបានការពារដោយកំណត់ត្រា SPF (សួរឈ្មោះដែនរបស់អ្នកចុះឈ្មោះ) អ្នកត្រូវតែបន្ថែម IPs ខាងក្រោមនៅក្នុងកំណត់ត្រា SPF នៃ DNS នៃដែនរបស់អ្នក៖ %s។ -ActualMailSPFRecordFound=បានរកឃើញកំណត់ត្រា SPF ពិតប្រាកដ (សម្រាប់អ៊ីមែល %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=ចុចដើម្បីបង្ហាញការពិពណ៌នា DependsOn=ម៉ូឌុលនេះត្រូវការម៉ូឌុល RequiredBy=ម៉ូឌុលនេះត្រូវបានទាមទារដោយម៉ូឌុល @@ -867,7 +868,7 @@ Permission255=កែប្រែពាក្យសម្ងាត់អ្នក Permission256=លុប ឬបិទអ្នកប្រើប្រាស់ផ្សេងទៀត។ Permission262=ពង្រីកការចូលប្រើទៅកាន់ភាគីទីបីទាំងអស់ និងវត្ថុរបស់ពួកគេ (មិនត្រឹមតែភាគីទីបីដែលអ្នកប្រើប្រាស់ត្រូវបានភ្ជាប់ជាអ្នកតំណាងលក់ប៉ុណ្ណោះទេ)។ Permission262b=មិនមានប្រសិទ្ធភាពសម្រាប់អ្នកប្រើប្រាស់ខាងក្រៅ (តែងតែកំណត់ចំពោះពួកគេសម្រាប់សំណើ ការបញ្ជាទិញ វិក្កយបត្រ កិច្ចសន្យា។ល។)។ -Permission262c=មិនមានប្រសិទ្ធភាពសម្រាប់គម្រោង (មានតែច្បាប់ស្តីពីការអនុញ្ញាតគម្រោង ភាពមើលឃើញ និងបញ្ហានៃការចាត់តាំងប៉ុណ្ណោះ)។ +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=ពង្រីកការចូលប្រើទៅកាន់ភាគីទីបីទាំងអស់ដោយគ្មានវត្ថុរបស់ពួកគេ (មិនត្រឹមតែភាគីទីបីដែលអ្នកប្រើប្រាស់ជាអ្នកតំណាងផ្នែកលក់ប៉ុណ្ណោះទេ)។ ការបញ្ជាទិញ វិក្កយបត្រ កិច្ចសន្យា។ល។)។
មិនមានប្រសិទ្ធភាពសម្រាប់គម្រោងទេ (មានតែច្បាប់ស្តីពីការអនុញ្ញាតគម្រោង លទ្ធភាពមើលឃើញ និងបញ្ហាការងារ)។ Permission271=អាន CA Permission272=អានវិក្កយបត្រ @@ -944,7 +945,7 @@ Permission776=បង់របាយការណ៍ចំណាយ Permission777=អានរបាយការណ៍ចំណាយទាំងអស់ (សូម្បីតែអ្នកប្រើប្រាស់មិនមែនជាអ្នកក្រោមបង្គាប់) Permission778=បង្កើត/កែប្រែរបាយការណ៍ចំណាយរបស់អ្នកគ្រប់គ្នា Permission779=របាយការណ៍ចំណាយនាំចេញ -Permission1001=អានភាគហ៊ុន +Permission1001=Read warehouses and stocks Permission1002=បង្កើត/កែប្រែឃ្លាំង Permission1003=លុបឃ្លាំង Permission1004=អានចលនាភាគហ៊ុន @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=តម្រង Regex ដើម្បីសម្ DuplicateForbidden=ហាមចម្លង RemoveSpecialWords=សម្អាតពាក្យជាក់លាក់នៅពេលបង្កើតគណនីរងសម្រាប់អតិថិជន ឬអ្នកផ្គត់ផ្គង់ RemoveSpecialWordsHelp=បញ្ជាក់ពាក្យដែលត្រូវសម្អាតមុនពេលគណនាគណនីអតិថិជន ឬអ្នកផ្គត់ផ្គង់។ ប្រើ ";" រវាងពាក្យនីមួយៗ -GDPRContact=មន្ត្រីការពារទិន្នន័យ (DPO, ឯកជនភាពទិន្នន័យ ឬទំនាក់ទំនង GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=ប្រសិនបើអ្នករក្សាទុកទិន្នន័យផ្ទាល់ខ្លួននៅក្នុងប្រព័ន្ធព័ត៌មានរបស់អ្នក អ្នកអាចដាក់ឈ្មោះទំនាក់ទំនងដែលទទួលខុសត្រូវចំពោះបទប្បញ្ញត្តិការពារទិន្នន័យទូទៅនៅទីនេះ HelpOnTooltip=អត្ថបទជំនួយដើម្បីបង្ហាញនៅលើព័ត៌មានជំនួយ HelpOnTooltipDesc=ដាក់អត្ថបទ ឬគន្លឹះបកប្រែនៅទីនេះសម្រាប់អត្ថបទដើម្បីបង្ហាញនៅក្នុងព័ត៌មានជំនួយ នៅពេលដែលវាលនេះបង្ហាញក្នុងទម្រង់មួយ។ @@ -2218,7 +2219,7 @@ CreateCandidature=បង្កើតកម្មវិធីការងារ FormatZip=Zip MainMenuCode=លេខកូដធាតុម៉ឺនុយ (ម៉ឺនុយមេ) ECMAutoTree=បង្ហាញមែកធាង ECM ដោយស្វ័យប្រវត្តិ -OperationParamDesc=កំណត់ច្បាប់ដែលត្រូវប្រើដើម្បីស្រង់ទិន្នន័យមួយចំនួន ឬកំណត់តម្លៃដែលត្រូវប្រើសម្រាប់ប្រតិបត្តិការ។

ឧទាហរណ៍ដើម្បីស្រង់ឈ្មោះក្រុមហ៊ុនចេញពី ប្រធានបទអ៊ីមែលចូលទៅក្នុងអថេរបណ្តោះអាសន្ន៖
tmp_var=EXTRACT:SUBJECT:សារពីក្រុមហ៊ុន ([^\n]*)

ឧទាហរណ៍ដើម្បីកំណត់លក្ខណសម្បត្តិរបស់វត្ថុដើម្បីបង្កើត៖
objproperty1=SET:តម្លៃកូដរឹង
objproperty2=SET:__tmp_var__
objproperty3=aSETIF ត្រូវ​បាន​កំណត់​លុះត្រា​តែ​លក្ខណសម្បត្តិ​មិន​ត្រូវ​បាន​កំណត់​រួច​ទេ)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY: ឈ្មោះក្រុមហ៊ុនរបស់ខ្ញុំ s([^\\s]*)

ប្រើបន្ទាត់ថ្មីដើម្បីស្រង់ចេញ ឬកំណត់លក្ខណៈសម្បត្តិជាច្រើន។ +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=ម៉ោងបើក OpeningHoursDesc=បញ្ចូលនៅទីនេះម៉ោងបើកធម្មតារបស់ក្រុមហ៊ុនរបស់អ្នក។ ResourceSetup=ការកំណត់រចនាសម្ព័ន្ធម៉ូឌុលធនធាន @@ -2264,7 +2265,7 @@ LargerThan=ធំជាង IfTrackingIDFoundEventWillBeLinked=ចំណាំថាប្រសិនបើលេខសម្គាល់តាមដានវត្ថុមួយត្រូវបានរកឃើញនៅក្នុងអ៊ីមែល ឬប្រសិនបើអ៊ីមែលគឺជាចម្លើយរបស់អ៊ីមែលដែលបានប្រមូល និងភ្ជាប់ទៅវត្ថុរួចហើយ ព្រឹត្តិការណ៍ដែលបានបង្កើតនឹងត្រូវបានភ្ជាប់ដោយស្វ័យប្រវត្តិទៅវត្ថុដែលពាក់ព័ន្ធ។ WithGMailYouCanCreateADedicatedPassword=ជាមួយនឹងគណនី GMail ប្រសិនបើអ្នកបើកដំណើរការសុពលភាព 2 ជំហាន វាត្រូវបានណែនាំឱ្យបង្កើតពាក្យសម្ងាត់ទីពីរសម្រាប់កម្មវិធីជំនួសឱ្យការប្រើពាក្យសម្ងាត់គណនីផ្ទាល់ខ្លួនរបស់អ្នកពី https://myaccount.google.com/ ។ EmailCollectorTargetDir=វាអាចជាអាកប្បកិរិយាដែលចង់ផ្លាស់ទីអ៊ីមែលទៅក្នុងស្លាក/ថតផ្សេងទៀត នៅពេលដែលវាត្រូវបានដំណើរការដោយជោគជ័យ។ គ្រាន់តែកំណត់ឈ្មោះថតនៅទីនេះ ដើម្បីប្រើមុខងារនេះ (កុំប្រើតួអក្សរពិសេសក្នុងឈ្មោះ)។ ចំណាំថាអ្នកក៏ត្រូវប្រើគណនីចូលអាន/សរសេរផងដែរ។ -EmailCollectorLoadThirdPartyHelp=អ្នកអាចប្រើសកម្មភាពនេះ ដើម្បីប្រើប្រាស់ខ្លឹមសារអ៊ីមែល ដើម្បីស្វែងរក និងផ្ទុកភាគីទីបីដែលមានស្រាប់នៅក្នុងមូលដ្ឋានទិន្នន័យរបស់អ្នក (ការស្វែងរកនឹងធ្វើឡើងនៅលើលក្ខណៈសម្បត្តិដែលបានកំណត់ក្នុងចំណោម 'id','name','name_alias','email')។ ភាគីទីបីដែលបានរកឃើញ (ឬបង្កើត) នឹងត្រូវបានប្រើសម្រាប់ការធ្វើតាមសកម្មភាពដែលត្រូវការវា។
ឧទាហរណ៍ ប្រសិនបើអ្នកចង់បង្កើតភាគីទីបីដែលមានឈ្មោះដកស្រង់ចេញពីខ្សែអក្សរ ' ឈ្មោះ៖ ឈ្មោះដើម្បីស្វែងរក' មានវត្តមាននៅក្នុងរាងកាយ ប្រើអ៊ីមែលអ្នកផ្ញើជាអ៊ីមែល អ្នកអាចកំណត់វាលប៉ារ៉ាម៉ែត្រដូចនេះ៖
'email=HEADER:^ ពី៖ (។ *);name=EXTRACT:BODY:Name:\\s([^\\s]*); client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=ការព្រមាន៖ ម៉ាស៊ីនមេអ៊ីមែលជាច្រើន (ដូចជា Gmail) កំពុងធ្វើការស្វែងរកពាក្យពេញ នៅពេលស្វែងរកនៅលើខ្សែអក្សរ ហើយនឹងមិនផ្តល់លទ្ធផលមកវិញទេ ប្រសិនបើខ្សែអក្សរត្រូវបានរកឃើញតែផ្នែកខ្លះនៃពាក្យមួយ។ សម្រាប់ហេតុផលនេះផងដែរ ការប្រើតួអក្សរពិសេសទៅក្នុងលក្ខណៈវិនិច្ឆ័យស្វែងរកនឹងត្រូវមិនអើពើ ថាតើវាមិនមែនជាផ្នែកនៃពាក្យដែលមានស្រាប់នោះទេ។
ដើម្បីធ្វើការដកចេញការស្វែងរកលើពាក្យមួយ (ត្រឡប់អ៊ីមែលប្រសិនបើពាក្យ រកមិនឃើញទេ) អ្នកអាចប្រើ ! តួអក្សរនៅពីមុខពាក្យ (ប្រហែលជាមិនដំណើរការលើម៉ាស៊ីនមេសំបុត្រមួយចំនួន)។ EndPointFor=ចំណុចបញ្ចប់សម្រាប់ %s : %s DeleteEmailCollector=លុបអ្នកប្រមូលអ៊ីមែល @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=ឈ្មោះភាគីទីបី - ឈ្មោះភា ALIAS_THIRDPARTY=ឈ្មោះភាគីទីបី - ឈ្មោះភាគីទីបី PDFIn2Languages=បង្ហាញស្លាកនៅក្នុង PDF ជា 2 ភាសាផ្សេងគ្នា (លក្ខណៈពិសេសនេះប្រហែលជាមិនដំណើរការសម្រាប់ពីរបីភាសាទេ) PDF_USE_ALSO_LANGUAGE_CODE=ប្រសិនបើអ្នកចង់ឱ្យអត្ថបទមួយចំនួននៅក្នុង PDF របស់អ្នកស្ទួនជា 2 ភាសាផ្សេងគ្នានៅក្នុង PDF ដែលបានបង្កើតដូចគ្នា អ្នកត្រូវតែកំណត់នៅទីនេះជាភាសាទីពីរនេះ ដូច្នេះ PDF ដែលត្រូវបានបង្កើតនឹងមាន 2 ភាសាផ្សេងគ្នានៅក្នុងទំព័រតែមួយ ដែលជាភាសាដែលត្រូវបានជ្រើសរើសនៅពេលបង្កើត PDF និងមួយ ( មានតែគំរូ PDF មួយចំនួនប៉ុណ្ណោះដែលគាំទ្រវា) ។ ទុកទទេសម្រាប់ 1 ភាសាក្នុងមួយ PDF ។ -PDF_USE_A=បង្កើតឯកសារ PDF ជាទម្រង់ PDF/A ជំនួសឱ្យទម្រង់ PDF លំនាំដើម +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=បញ្ចូលកូដនៃរូបតំណាង FontAwesome នៅទីនេះ។ ប្រសិនបើអ្នកមិនដឹងថាអ្វីជា FontAwesome អ្នកអាចប្រើតម្លៃទូទៅ fa-address-book ។ RssNote=ចំណាំ៖ និយមន័យមតិព័ត៌មាន RSS នីមួយៗផ្តល់នូវធាតុក្រាហ្វិកដែលអ្នកត្រូវតែបើកដើម្បីឱ្យវាមាននៅក្នុងផ្ទាំងគ្រប់គ្រង JumpToBoxes=លោតទៅការដំឡើង -> ធាតុក្រាហ្វិក @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/km_KH/dict.lang b/htdocs/langs/km_KH/dict.lang index 3bb49f30988..b0b3bc9e3c0 100644 --- a/htdocs/langs/km_KH/dict.lang +++ b/htdocs/langs/km_KH/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=ហ្វ្រង់ CFP CurrencySingXPF=ហ្វ្រង់ CFP CurrencyCentEUR=សេន CurrencyCentSingEUR=សេន -CurrencyCentINR=ប៉ាសា -CurrencyCentSingINR=បង់ +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=ពាន់ #### Input reasons ##### DemandReasonTypeSRC_INTE=អ៊ីនធឺណិត diff --git a/htdocs/langs/km_KH/errors.lang b/htdocs/langs/km_KH/errors.lang index 600d9db4bd2..f46e835491e 100644 --- a/htdocs/langs/km_KH/errors.lang +++ b/htdocs/langs/km_KH/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=អ្នក​ប្រើ​ត្រូវ​ត ErrorTaskAlreadyAssigned=ភារកិច្ចត្រូវបានប្រគល់ឱ្យអ្នកប្រើប្រាស់រួចហើយ ErrorModuleFileSeemsToHaveAWrongFormat=កញ្ចប់ម៉ូឌុលហាក់ដូចជាមានទម្រង់ខុស។ ErrorModuleFileSeemsToHaveAWrongFormat2=យ៉ាងហោចណាស់មានថតឯកសារចាំបាច់មួយត្រូវតែមាននៅក្នុង zip នៃម៉ូឌុល៖ %s%s -ErrorFilenameDosNotMatchDolibarrPackageRules=ឈ្មោះនៃកញ្ចប់ម៉ូឌុល (%s) មិនត្រូវគ្នាទេ វាក្យសម្ព័ន្ធឈ្មោះដែលរំពឹងទុក៖ %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=កំហុស ស្ទួនឈ្មោះកេះ %s។ បាន​ផ្ទុក​រួច​ហើយ​ពី %s។ ErrorNoWarehouseDefined=មាន​បញ្ហា គ្មាន​ឃ្លាំង​ដែល​បាន​កំណត់។ ErrorBadLinkSourceSetButBadValueForRef=តំណ​ដែល​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ។ 'ប្រភព' សម្រាប់ការទូទាត់ត្រូវបានកំណត់ ប៉ុន្តែតម្លៃសម្រាប់ 'ref' គឺមិនត្រឹមត្រូវទេ។ @@ -422,3 +422,4 @@ OperNotDefined=វិធីសាស្រ្តទូទាត់មិនត ErrorThisContactXIsAlreadyDefinedAsThisType=%s ត្រូវបានកំណត់រួចហើយថាជាទំនាក់ទំនងសម្រាប់ប្រភេទនេះ។ ErrorThisGroupIsAlreadyDefinedAsThisType=ទំនាក់ទំនងជាមួយក្រុមនេះត្រូវបានកំណត់រួចហើយថាជាទំនាក់ទំនងសម្រាប់ប្រភេទនេះ។ EmptyMessageNotAllowedError=សារទទេមិនត្រូវបានអនុញ្ញាតទេ។ +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/km_KH/mails.lang b/htdocs/langs/km_KH/mails.lang index b0e4940bd69..6abb3a5ad39 100644 --- a/htdocs/langs/km_KH/mails.lang +++ b/htdocs/langs/km_KH/mails.lang @@ -32,6 +32,8 @@ NewMailing=ការផ្ញើអ៊ីមែលថ្មី។ NewSMSing=ការផ្ញើសារថ្មី។ EditMailing=កែសម្រួលការផ្ញើអ៊ីមែល ResetMailing=ផ្ញើអ៊ីមែលឡើងវិញ +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=លុបការផ្ញើអ៊ីមែល PreviewMailing=មើលការផ្ញើអ៊ីមែលជាមុន CreateMailing=បង្កើតការផ្ញើអ៊ីមែល @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=អ្នកទទួលអ៊ីមែលគឺទទ WarningNoEMailsAdded=មិនមានអ៊ីមែលថ្មីដើម្បីបន្ថែមទៅក្នុងបញ្ជីរបស់អ្នកទទួលទេ។ ConfirmValidMailing=តើ​អ្នក​ប្រាកដ​ជា​ចង់​ធ្វើ​ឱ្យ​ការ​ផ្ញើ​អ៊ីមែល​នេះ​មាន​សុពលភាព​ឬ? ConfirmResetMailing=ការព្រមាន ដោយចាប់ផ្តើមការផ្ញើអ៊ីមែលឡើងវិញ %s អ្នកនឹងអនុញ្ញាត ការ​ផ្ញើ​អ៊ីមែល​នេះ​ឡើង​វិញ​ក្នុង​ការ​ផ្ញើ​សំបុត្រ​ជា​ច្រើន​។ តើអ្នកប្រាកដថាចង់ធ្វើបែបនេះទេ? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=តើអ្នកប្រាកដថាចង់លុបអ៊ីមែលនេះទេ? NbOfUniqueEMails=ចំនួន​អ៊ីមែល​ពិសេស NbOfUniquePhones=លេខទូរសព្ទពិសេស @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=គ្មានអ្នកទទួលទៀតទេ EmailOptedOut=ម្ចាស់​អ៊ីមែល​បាន​ស្នើសុំ​មិន​ទាក់ទង​គាត់​ជាមួយ​អ៊ីមែល​នេះ​ទៀត​ទេ។ EvenUnsubscribe=រួម​បញ្ចូល​អ៊ីមែល​ជ្រើសរើស​មិន​ប្រើ EvenUnsubscribeDesc=រួមបញ្ចូលអ៊ីមែលដែលមិនប្រើ នៅពេលអ្នកជ្រើសរើសអ៊ីមែលជាគោលដៅ។ មានប្រយោជន៍សម្រាប់អ៊ីមែលសេវាកម្មចាំបាច់។ -XEmailsDoneYActionsDone=%s អ៊ីមែលដែលមានលក្ខណៈសម្បត្តិគ្រប់គ្រាន់ជាមុន %s ដំណើរការដោយជោគជ័យ (សម្រាប់ %s / សកម្មភាពដែលបានធ្វើ) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=អ្នកអាចធ្វើការណែនាំមួយចំនួនសម្រាប់អ៊ីមែលរបស់អ្នក (ឧទាហរណ៍៖ បង្កើតរូបភាពក្នុងគំរូអ៊ីមែល...) ModelTemplate=គំរូអ៊ីមែល YouCanChooseAModelForYouMailContent= អ្នកអាចជ្រើសរើសគំរូគំរូមួយ ឬបង្កើតមួយជាមួយ AI TitleOfMailHolder=ចំណងជើងនៃអ៊ីមែលទៅទីនេះ ContentOfMailHolder=ខ្លឹមសារនៃអ៊ីមែលមកទីនេះ... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/km_KH/sendings.lang b/htdocs/langs/km_KH/sendings.lang index 257937a2507..41a39bef8b7 100644 --- a/htdocs/langs/km_KH/sendings.lang +++ b/htdocs/langs/km_KH/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=រកមិនឃើញផលិតផលដែ WeightVolShort=ទម្ងន់/វ៉ុល។ ValidateOrderFirstBeforeShipment=អ្នកត្រូវតែបញ្ជាក់ការបញ្ជាទិញជាមុនសិន មុននឹងអាចធ្វើការដឹកជញ្ជូនបាន។ NoLineGoOnTabToAddSome=គ្មានបន្ទាត់ សូមចូលទៅកាន់ផ្ទាំង "%s" ដើម្បីបន្ថែម -CreateInvoiceForThisCustomerFromSendings=ការផ្ញើវិក្កយបត្រ +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=ប្រសិនបើវិក្កយបត្រមានសុពលភាពគឺ 'ទេ' ការផ្ញើនឹងនៅតែស្ថិតក្នុងស្ថានភាព 'មិនទាន់ចេញវិក្កយបត្រ' រហូតដល់វិក្កយបត្រមានសុពលភាព។ OptionToSetSendingBilledNotEnabled=ជម្រើសពីម៉ូឌុលការងារ ដើម្បីកំណត់ការផ្ញើទៅ 'បានចេញវិក្កយបត្រ' ដោយស្វ័យប្រវត្តិ នៅពេលដែលវិក្កយបត្រត្រូវបានផ្ទៀងផ្ទាត់ មិនត្រូវបានបើកទេ ដូច្នេះអ្នកនឹងត្រូវកំណត់ស្ថានភាពនៃការផ្ញើទៅ 'ចេញវិក្កយបត្រ' ដោយដៃ បន្ទាប់ពីវិក្កយបត្រត្រូវបានបង្កើត។ diff --git a/htdocs/langs/km_KH/stripe.lang b/htdocs/langs/km_KH/stripe.lang index 4027e29edd6..03a5519403b 100644 --- a/htdocs/langs/km_KH/stripe.lang +++ b/htdocs/langs/km_KH/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL ដើម្បីផ្តល់ ToOfferALinkForOnlinePaymentOnFreeAmount=URL ដើម្បីផ្តល់ជូន %s ទំព័រទូទាត់តាមអ៊ីនធឺណិតនៃចំនួនទឹកប្រាក់ណាមួយដោយគ្មានវត្ថុដែលមានស្រាប់ ToOfferALinkForOnlinePaymentOnMemberSubscription=URL ដើម្បីផ្តល់ទំព័រទូទាត់តាមអ៊ីនធឺណិត %s សម្រាប់ការជាវសមាជិក ToOfferALinkForOnlinePaymentOnDonation=URL ដើម្បីផ្តល់ទំព័រទូទាត់តាមអ៊ីនធឺណិត %s សម្រាប់ការទូទាត់អំណោយ -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) +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) YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=ដំឡើង Stripe របស់អ្នកជាមួយ url %s ដើម្បីបង្កើតការទូទាត់ដោយស្វ័យប្រវត្តិនៅពេល បញ្ជាក់ដោយ Stripe ។ AccountParameter=ប៉ារ៉ាម៉ែត្រគណនី diff --git a/htdocs/langs/km_KH/website.lang b/htdocs/langs/km_KH/website.lang index b701a9d1039..26fadc48767 100644 --- a/htdocs/langs/km_KH/website.lang +++ b/htdocs/langs/km_KH/website.lang @@ -62,7 +62,7 @@ NoPageYet=មិនមានទំព័រនៅឡើយទេ YouCanCreatePageOrImportTemplate=អ្នកអាចបង្កើតទំព័រថ្មី ឬនាំចូលគំរូគេហទំព័រពេញលេញ SyntaxHelp=ជួយលើគន្លឹះវាក្យសម្ព័ន្ធជាក់លាក់ YouCanEditHtmlSourceckeditor=អ្នកអាចកែសម្រួលកូដប្រភព HTML ដោយប្រើប៊ូតុង "ប្រភព" នៅក្នុងកម្មវិធីនិពន្ធ។ -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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
ដើម្បីរួមបញ្ចូល image រក្សាទុកក្នុង documents ប្រើviewimage.php wrapper។
រូបភាពចូលទៅក្នុងឯកសារ/ប្រព័ន្ធផ្សព្វផ្សាយ (ថតបើកសម្រាប់ការចូលប្រើជាសាធារណៈ) វាក្យសម្ព័ន្ធគឺ៖
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"7b00128
YouCanEditHtmlSource2=សម្រាប់រូបភាពដែលបានចែករំលែកជាមួយតំណចែករំលែក (បើកការចូលប្រើដោយប្រើសោការចែករំលែកនៃឯកសារ) វាក្យសម្ព័ន្ធគឺ៖
<img src="/viewimage.php?hashp=12345679012...

YouCanEditHtmlSource3=To get the URL of the image of a PHP object, use
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/ko_KR/sendings.lang b/htdocs/langs/ko_KR/sendings.lang index 91d85671c2f..61bb0e54c27 100644 --- a/htdocs/langs/ko_KR/sendings.lang +++ b/htdocs/langs/ko_KR/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=%s창고에 배송할 제품이 없습니 WeightVolShort=무게/부피 ValidateOrderFirstBeforeShipment=선적을 하려면 먼저 주문를 확인 처리해야 합니다. NoLineGoOnTabToAddSome=항목이 없습니다. 추가를 위해 탭 "%s"로 가세요 -CreateInvoiceForThisCustomerFromSendings=청구서 발송물 +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=청구서 확인 처리 상태가 '안됨'이라면 발송물은 송장이 확인 처리 되기 전까지 '청구되지 않음'으로 남을 것입니다. OptionToSetSendingBilledNotEnabled=모듈 워크플로의 옵션, 송장이 확인 처리되었을 때 발송물을 '청구됨'으로 자동 설정하는 것이 불가합니다. 송장이 생성될 때 수동으로 발송물의 상태를 '청구됨'으로 변경해주세요. diff --git a/htdocs/langs/lo_LA/admin.lang b/htdocs/langs/lo_LA/admin.lang index f055048c25f..c4882c77b67 100644 --- a/htdocs/langs/lo_LA/admin.lang +++ b/htdocs/langs/lo_LA/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=ບັນຊີລາຍຊື່ຂອງຄ່າຕ ExtrafieldParamHelpcheckbox=ລາຍການຄ່າຕ້ອງເປັນແຖວທີ່ມີລະຫັດຮູບແບບ, ຄ່າ (ບ່ອນທີ່ກະແຈບໍ່ສາມາດເປັນ '0')

ຕົວຢ່າງ:
1, value1
2, value2
3, value3 a0cc2 ... ExtrafieldParamHelpradio=ລາຍການຄ່າຕ້ອງເປັນແຖວທີ່ມີລະຫັດຮູບແບບ, ຄ່າ (ບ່ອນທີ່ກະແຈບໍ່ສາມາດເປັນ '0')

ຕົວຢ່າງ:
1, value1
2, value2
3, value3 a0cc2 ... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=ພາຣາມິເຕີຕ້ອງເປັນ ObjectName: Classpath
Syntax: ObjectName: Classpath ExtrafieldParamHelpSeparator=ຮັກສາຫວ່າງເປົ່າສໍາລັບຕົວແຍກແບບງ່າຍ simple
ຕັ້ງອັນນີ້ເປັນ 1 ສໍາລັບຕົວແຍກຕົວຫຍໍ້ (ເປີດຕາມຄ່າເລີ່ມຕົ້ນສໍາລັບຊ່ວງເວລາເຂົ້າໃ,່, ຈາກນັ້ນສະຖານະຈະຖືກເກັບໄວ້ສໍາລັບແຕ່ລະຊ່ວງເວລາຂອງຜູ້ໃຊ້)
ກໍານົດອັນນີ້ເປັນ 2 ສໍາລັບຕົວແຍກການຫຍໍ້ (ຫຍໍ້ລົງຕາມຄ່າເລີ່ມຕົ້ນສໍາລັບເຊດຊັນໃ,່, ຈາກນັ້ນ ສະຖານະພາບໄດ້ຖືກເກັບຮັກສາໄວ້ໃນແຕ່ລະກອງປະຊຸມຜູ້ໃຊ້) LibraryToBuildPDF=ຫ້ອງສະusedຸດໃຊ້ ສຳ ລັບສ້າງ PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s ຕິດຕາມມາດ້ວຍຊື ModuleCompanyCodeSupplierDigitaria=%s ຕິດຕາມດ້ວຍຊື່ຜູ້ສະ ໜອງ ທີ່ຖືກຕັດອອກໂດຍ ຈຳ ນວນຕົວອັກສອນ: %s ສຳ ລັບລະຫັດບັນຊີຜູ້ສະ ໜອງ. Use3StepsApproval=ຕາມຄ່າເລີ່ມຕົ້ນ, ຄຳ ສັ່ງຊື້ຕ້ອງສ້າງແລະອະນຸມັດໂດຍຜູ້ໃຊ້ 2 ຄົນທີ່ແຕກຕ່າງກັນ (ຂັ້ນຕອນ ໜຶ່ງ/ຜູ້ໃຊ້ເພື່ອສ້າງແລະຂັ້ນຕອນ ໜຶ່ງ/ຜູ້ໃຊ້ເພື່ອອະນຸມັດ. ຈື່ໄວ້ວ່າຖ້າຜູ້ໃຊ້ມີທັງການອະນຸຍາດສ້າງແລະອະນຸມັດ, ໜຶ່ງ ຂັ້ນຕອນ/ຜູ້ໃຊ້ຈະພຽງພໍ) . ເຈົ້າສາມາດຖາມດ້ວຍຕົວເລືອກນີ້ເພື່ອແນະ ນຳ ຂັ້ນຕອນທີສາມ/ການອະນຸມັດຂອງຜູ້ໃຊ້, ຖ້າ ຈຳ ນວນສູງກວ່າມູນຄ່າສະເພາະ (ສະນັ້ນຈະຕ້ອງມີ 3 ຂັ້ນຕອນ: 1 = ການກວດສອບ, 2 = ການອະນຸມັດ ທຳ ອິດແລະ 3 = ການອະນຸມັດຄັ້ງທີສອງຖ້າ ຈຳ ນວນພຽງພໍ).
ຕັ້ງອັນນີ້ຫວ່າງເປົ່າຖ້າການອະນຸມັດອັນ ໜຶ່ງ (2 ຂັ້ນຕອນ) ແມ່ນພຽງພໍ, ຕັ້ງມັນເປັນຄ່າຕໍ່າຫຼາຍ (0.1) ຖ້າຕ້ອງການການອະນຸມັດທີສອງ (3 ຂັ້ນຕອນ) ສະເີ. UseDoubleApproval=ໃຊ້ການອະນຸມັດ 3 ຂັ້ນຕອນເມື່ອ ຈຳ ນວນ (ບໍ່ລວມພາສີ) ສູງກວ່າ ... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- ບາງຜູ້ໃຫ້ບໍລິການອີເມລ like (ເຊັ່ນ Yahoo) ບໍ່ອະນຸຍາດໃຫ້ເຈົ້າສົ່ງອີເມວຈາກເຊີບເວີອື່ນຫຼາຍກວ່າເຊີບເວີຂອງເຂົາເຈົ້າເອງ. ການຕັ້ງຄ່າປັດຈຸບັນຂອງເຈົ້າໃຊ້ເຊີບເວີຂອງແອັບພລິເຄຊັນເພື່ອສົ່ງອີເມວແລະບໍ່ແມ່ນເຊີບເວີຂອງຜູ້ໃຫ້ບໍລິການອີເມວຂອງເຈົ້າ, ສະນັ້ນຜູ້ຮັບບາງຄົນ (ອັນທີ່ເຂົ້າກັນໄດ້ກັບໂປຣໂຕຄໍ DMARC ທີ່ຈໍາກັດ), ຈະຖາມຫາຜູ້ໃຫ້ບໍລິການອີເມວຂອງເຈົ້າຖ້າເຂົາເຈົ້າສາມາດຍອມຮັບອີເມວຂອງເຈົ້າແລະບາງຜູ້ໃຫ້ບໍລິການອີເມວ. (ຄື Yahoo) ອາດຈະຕອບ "ບໍ່" ເພາະວ່າເຊີບເວີບໍ່ແມ່ນຂອງເຂົາເຈົ້າ, ສະນັ້ນອີເມລທີ່ເຈົ້າສົ່ງໄປນັ້ນຈໍານວນ ໜຶ່ງ ອາດຈະບໍ່ຖືກຍອມຮັບສໍາລັບການຈັດສົ່ງ (ຈົ່ງລະວັງໂຄຕ້າສົ່ງຂອງຜູ້ໃຫ້ບໍລິການອີເມລຂອງເຈົ້ານໍາ). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- ການໃຊ້ເຊີບເວີ SMTP ຂອງຜູ້ໃຫ້ບໍລິການອີເມລ your ຂອງເຈົ້າເອງເພື່ອສົ່ງອີເມລ is ກໍ່ເປັນສິ່ງທີ່ ໜ້າ ສົນໃຈດັ່ງນັ້ນອີເມລ sent ທັງsentົດທີ່ສົ່ງຈາກແອັບພລິເຄຊັນກໍ່ຈະຖືກບັນທຶກໄວ້ໃນບັນຊີລາຍການ "ສົ່ງແລ້ວ" ຂອງກ່ອງຈົດyourາຍຂອງເຈົ້າ. WarningPHPMailD=ດັ່ງນັ້ນ, ມັນໄດ້ຖືກແນະນໍາໃຫ້ປ່ຽນວິທີການສົ່ງອີເມລ໌ກັບຄ່າ "SMTP". WarningPHPMailDbis=ຖ້າທ່ານຕ້ອງການຮັກສາວິທີການເລີ່ມຕົ້ນ "PHP" ໃນການສົ່ງອີເມວ, ພຽງແຕ່ບໍ່ສົນໃຈຄໍາເຕືອນນີ້, ຫຼືເອົາມັນອອກໂດຍ %sຄລິກທີ່ນີ້%s. WarningPHPMail2=ຖ້າຜູ້ໃຫ້ບໍລິການ SMTP ອີເມລຂອງເຈົ້າຕ້ອງການຈໍາກັດລູກຄ້າອີເມລ to ຫາບາງທີ່ຢູ່ IP (ຫາຍາກຫຼາຍ), ນີ້ແມ່ນທີ່ຢູ່ IP ຂອງຕົວແທນຜູ້ໃຊ້ຈົດ(າຍ (MUA) ສໍາລັບການສະEັກ ERP CRM ຂອງເຈົ້າ: %s . -WarningPHPMailSPF=ຖ້າຊື່ໂດເມນໃນທີ່ຢູ່ອີເມວຜູ້ສົ່ງຂອງເຈົ້າຖືກປົກປ້ອງໂດຍບັນທຶກ SPF (ຂໍໃຫ້ລົງທະບຽນຊື່ໂດເມນຂອງເຈົ້າ), ເຈົ້າຕ້ອງເພີ່ມ IP ຕໍ່ໄປນີ້ໃນບັນທຶກ SPF ຂອງ DNS ຂອງໂດເມນຂອງເຈົ້າ: %s. -ActualMailSPFRecordFound=ພົບບັນທຶກ SPF ຕົວຈິງ (ສຳລັບອີເມວ %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=ຄລິກເພື່ອສະແດງລາຍລະອຽດ DependsOn=ໂມດູນນີ້ຕ້ອງການໂມດູນ RequiredBy=ໂມດູນນີ້ຕ້ອງການໂດຍໂມດູນ @@ -867,7 +868,7 @@ Permission255=ແກ້ໄຂລະຫັດຜ່ານຜູ້ໃຊ້ອື Permission256=ລຶບຫຼືປິດການ ນຳ ໃຊ້ຜູ້ໃຊ້ອື່ນ Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=ຂະຫຍາຍການເຂົ້າເຖິງທຸກພາກສ່ວນທີສາມໂດຍບໍ່ມີວັດຖຸຂອງເຂົາເຈົ້າ (ບໍ່ພຽງແຕ່ພາກສ່ວນທີສາມທີ່ຜູ້ໃຊ້ເປັນຕົວແທນຂາຍ).
ບໍ່ມີປະສິດທິພາບສໍາລັບຜູ້ໃຊ້ພາຍນອກ (ຈໍາກັດສະເພາະຕົນເອງສະເforີສໍາລັບຂໍ້ສະ ເໜີ, ຄໍາສັ່ງ, ໃບແຈ້ງ ໜີ້, ສັນຍາ, ແລະອື່ນ)).
ບໍ່ມີປະສິດທິພາບສໍາລັບໂຄງການ (ມີພຽງກົດລະບຽບກ່ຽວກັບການອະນຸຍາດໂຄງການ, ການເບິ່ງເຫັນແລະເລື່ອງການມອບາຍ). Permission271=ອ່ານ CA Permission272=ອ່ານໃບແຈ້ງ ໜີ້ @@ -944,7 +945,7 @@ Permission776=ລາຍງານລາຍຈ່າຍ Permission777=ອ່ານ​ລາຍ​ງານ​ຄ່າ​ໃຊ້​ຈ່າຍ​ທັງ​ຫມົດ (ເຖິງ​ແມ່ນ​ວ່າ​ຂອງ​ຜູ້​ໃຊ້​ບໍ່​ແມ່ນ subordinates​) Permission778=ສ້າງ/ແກ້ໄຂລາຍງານຄ່າໃຊ້ຈ່າຍຂອງທຸກຄົນ Permission779=ລາຍງານຄ່າໃຊ້ຈ່າຍໃນການສົ່ງອອກ -Permission1001=ອ່ານຮຸ້ນ +Permission1001=Read warehouses and stocks Permission1002=ສ້າງ/ດັດແປງຄັງສິນຄ້າ Permission1003=ລຶບສາງ Permission1004=ອ່ານການເຄື່ອນໄຫວຂອງຫຼັກຊັບ @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=ຕົວກອງ Regex ເພື່ອເຮັ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=ເຮັດຄວາມສະອາດຄໍາທີ່ແນ່ນອນໃນເວລາທີ່ສ້າງບັນຊີຍ່ອຍສໍາລັບລູກຄ້າຫຼືຜູ້ສະຫນອງ RemoveSpecialWordsHelp=ລະບຸຄໍາທີ່ຕ້ອງເຮັດຄວາມສະອາດກ່ອນທີ່ຈະຄິດໄລ່ບັນຊີລູກຄ້າຫຼືຜູ້ສະຫນອງ. ໃຊ້ ";" ລະຫວ່າງແຕ່ລະຄໍາ -GDPRContact=ເຈົ້າ ໜ້າ ທີ່ປົກປ້ອງຂໍ້ມູນ (DPO, ຄວາມເປັນສ່ວນຕົວຂອງຂໍ້ມູນຫຼືການຕິດຕໍ່ GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=ຖ້າທ່ານເກັບຂໍ້ມູນສ່ວນຕົວຢູ່ໃນລະບົບຂໍ້ມູນຂອງທ່ານ, ທ່ານສາມາດຕັ້ງຊື່ຜູ້ຕິດຕໍ່ຜູ້ທີ່ຮັບຜິດຊອບຕໍ່ກົດລະບຽບການປົກປ້ອງຂໍ້ມູນທົ່ວໄປຢູ່ທີ່ນີ້ HelpOnTooltip=ຂໍ້ຄວາມຊ່ວຍເຫຼືອເພື່ອສະແດງຢູ່ໃນຄໍາແນະນໍາ HelpOnTooltipDesc=ວາງຕົວ ໜັງ ສືຫຼືກະແຈການແປຢູ່ບ່ອນນີ້ເພື່ອໃຫ້ຂໍ້ຄວາມສະແດງຢູ່ໃນ ຄຳ ແນະ ນຳ ເມື່ອຊ່ອງຂໍ້ມູນນີ້ປະກົດຂຶ້ນໃນແບບຟອມ @@ -2218,7 +2219,7 @@ CreateCandidature=ສ້າງໃບສະjobັກວຽກ FormatZip=Zip MainMenuCode=ລະຫັດການເຂົ້າເມນູ (ເມນູຫຼັກ) ECMAutoTree=ສະແດງຕົ້ນໄມ້ ECM ອັດຕະໂນມັດ -OperationParamDesc=ກໍານົດກົດລະບຽບທີ່ຈະໃຊ້ເພື່ອສະກັດຂໍ້ມູນບາງຢ່າງ ຫຼືກໍານົດຄ່າທີ່ຈະໃຊ້ສໍາລັບການປະຕິບັດງານ.

ຕົວຢ່າງເພື່ອສະກັດຊື່ບໍລິສັດຈາກ ຫົວຂໍ້ອີເມວເຂົ້າໄປໃນຕົວແປຊົ່ວຄາວ:
tmp_var=EXTRACT:SUBJECT:ຂໍ້ຄວາມຈາກບໍລິສັດ ([^\n]*)

ຕົວຢ່າງເພື່ອກຳນົດຄຸນສົມບັດຂອງວັດຖຸເພື່ອສ້າງ:
objproperty1=SET:ຄ່າລະຫັດຍາກ
objproperty2=SET:__tmp_var__
objproperty3=aSETIFEMIF ຖືກກໍານົດພຽງແຕ່ຖ້າຄຸນສົມບັດບໍ່ໄດ້ຖືກກໍານົດໄວ້ແລ້ວ)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY\\:ຊື່ບໍລິສັດຂອງຂ້ອຍ s([^\\s]*)

ໃຊ້ແຖວໃໝ່ເພື່ອແຍກ ຫຼືຕັ້ງຄຸນສົມບັດຫຼາຍຢ່າງ. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=ເວລາເປີດ OpeningHoursDesc=ມາທີ່ນີ້ເວລາເປີດປົກກະຕິຂອງບໍລິສັດຂອງເຈົ້າ. ResourceSetup=ການຕັ້ງຄ່າໂມດູນຊັບພະຍາກອນ @@ -2264,7 +2265,7 @@ LargerThan=ໃຫຍ່ກວ່າ IfTrackingIDFoundEventWillBeLinked=ໃຫ້ສັງເກດວ່າຖ້າ ID ການຕິດຕາມຂອງວັດຖຸຖືກພົບເຫັນຢູ່ໃນອີເມວ, ຫຼືຖ້າອີເມວເປັນຄໍາຕອບຂອງອີເມວທີ່ເກັບກໍາແລະເຊື່ອມໂຍງກັບວັດຖຸ, ເຫດການທີ່ສ້າງຂຶ້ນຈະຖືກເຊື່ອມຕໍ່ໂດຍອັດຕະໂນມັດກັບວັດຖຸທີ່ກ່ຽວຂ້ອງທີ່ຮູ້ຈັກ. WithGMailYouCanCreateADedicatedPassword=ດ້ວຍບັນຊີ GMail, ຖ້າທ່ານເປີດໃຊ້ການກວດສອບ 2 ຂັ້ນຕອນ, ແນະນໍາໃຫ້ສ້າງລະຫັດຜ່ານທີສອງສະເພາະສໍາລັບແອັບພລິເຄຊັນແທນທີ່ຈະໃຊ້ລະຫັດຜ່ານບັນຊີຂອງເຈົ້າເອງຈາກ https://myaccount.google.com/. EmailCollectorTargetDir=ມັນອາດຈະເປັນພຶດຕິກໍາທີ່ຕ້ອງການເພື່ອຍ້າຍອີເມລ໌ເຂົ້າໄປໃນແທັກ / ໄດເລກະທໍລີອື່ນເມື່ອມັນຖືກປຸງແຕ່ງຢ່າງສໍາເລັດຜົນ. ພຽງແຕ່ຕັ້ງຊື່ຂອງໄດເລກະທໍລີຢູ່ທີ່ນີ້ເພື່ອໃຊ້ຄຸນສົມບັດນີ້ (ຢ່າໃຊ້ຕົວອັກສອນພິເສດໃນຊື່). ໃຫ້ສັງເກດວ່າທ່ານຍັງຕ້ອງໃຊ້ບັນຊີເຂົ້າສູ່ລະບົບອ່ານ / ຂຽນ. -EmailCollectorLoadThirdPartyHelp=ທ່ານສາມາດນໍາໃຊ້ການດໍາເນີນການນີ້ເພື່ອນໍາໃຊ້ເນື້ອໃນອີເມລ໌ເພື່ອຊອກຫາແລະໂຫຼດພາກສ່ວນທີສາມທີ່ມີຢູ່ແລ້ວໃນຖານຂໍ້ມູນຂອງທ່ານ (ການຊອກຫາຈະເຮັດໄດ້ໃນຄຸນສົມບັດທີ່ກໍານົດໄວ້ລະຫວ່າງ 'id','name','name_alias','email'). ພາກສ່ວນທີສາມທີ່ພົບເຫັນ (ຫຼືສ້າງ) ຈະຖືກໃຊ້ເພື່ອປະຕິບັດຕາມຄຳສັ່ງທີ່ຕ້ອງການ.
ຕົວຢ່າງ: ຖ້າທ່ານຕ້ອງການສ້າງພາກສ່ວນທີສາມທີ່ມີຊື່ທີ່ແຍກອອກມາຈາກ string ' ຊື່: ຊື່ເພື່ອຊອກຫາ' ຢູ່ໃນຮ່າງກາຍ, ໃຊ້ອີເມວຜູ້ສົ່ງເປັນອີເມລ໌, ທ່ານສາມາດກໍານົດພາກສະຫນາມພາລາມິເຕີເຊັ່ນນີ້:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Warning: a lot of email servers (like Gmail) are doing full word searches when searching on a string and will not return a result if the string is only found partially into a word. For this reason too, use special characters into a search criteria will be ignored are they are not part of existing words.
To make an exclude search on a word (return email if word is not found), you can use the ! character before the word (may not work on some mail servers). EndPointFor=ຈຸດສິ້ນສຸດ ສຳ ລັບ %s: %s DeleteEmailCollector=ລຶບຜູ້ເກັບອີເມລ @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=ຊື່ພາກສ່ວນທີສາມ - ນາມແຝ ALIAS_THIRDPARTY=ນາມແຝງພາກສ່ວນທີສາມ - ຊື່ພາກສ່ວນທີສາມ PDFIn2Languages=ສະແດງປ້າຍຊື່ໃນ PDF ເປັນ 2 ພາສາທີ່ແຕກຕ່າງກັນ (ຄຸນສົມບັດນີ້ອາດຈະບໍ່ເຮັດວຽກກັບບາງພາສາ) PDF_USE_ALSO_LANGUAGE_CODE=ຖ້າເຈົ້າຕ້ອງການໃຫ້ມີຕົວ ໜັງ ສືບາງອັນຢູ່ໃນ PDF ຂອງເຈົ້າຊໍ້າກັນຢູ່ໃນ 2 ພາສາທີ່ແຕກຕ່າງກັນຢູ່ໃນ PDF ທີ່ສ້າງຂຶ້ນອັນດຽວກັນ, ເຈົ້າຕ້ອງຕັ້ງເປັນພາສາທີສອງຢູ່ທີ່ນີ້ເພື່ອໃຫ້ PDF ທີ່ສ້າງຂຶ້ນຈະມີ 2 ພາສາແຕກຕ່າງກັນຢູ່ໃນ ໜ້າ ດຽວ, ອັນທີ່ເລືອກເມື່ອສ້າງ PDF ແລະອັນນີ້ ( ມີພຽງແຕ່ແມ່ແບບ PDF ບາງອັນທີ່ສະ ໜັບ ສະ ໜູນ ອັນນີ້). ຮັກສາຫວ່າງເປົ່າສໍາລັບ 1 ພາສາຕໍ່ PDF. -PDF_USE_A=ສ້າງເອກະສານ PDF ທີ່ມີຮູບແບບ PDF/A ແທນທີ່ຈະເປັນຮູບແບບ PDF ເລີ່ມຕົ້ນ +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=ໃສ່ທີ່ນີ້ລະຫັດຂອງໄອຄອນ FontAwesome. ຖ້າເຈົ້າບໍ່ຮູ້ວ່າ FontAwesome ແມ່ນຫຍັງ, ເຈົ້າສາມາດໃຊ້ຄ່າທົ່ວໄປ fa-address-book. RssNote=Noteາຍເຫດ: ແຕ່ລະນິຍາມອາຫານ RSS ໃຫ້ widget ທີ່ເຈົ້າຕ້ອງເປີດໃຊ້ເພື່ອໃຫ້ມັນມີຢູ່ໃນ dashboard JumpToBoxes=ໄປຫາການຕັ້ງຄ່າ -> ວິດເຈັດ @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/lo_LA/datapolicy.lang b/htdocs/langs/lo_LA/datapolicy.lang index 643c2181e64..756698883fe 100644 --- a/htdocs/langs/lo_LA/datapolicy.lang +++ b/htdocs/langs/lo_LA/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = ນະໂຍບາຍຄວາມເປັນສ່ວນຕົວຂອງຂໍ້ມູນ # Module description 'ModuledatapolicyDesc' Module4100Desc = ໂມດູນເພື່ອຈັດການຄວາມເປັນສ່ວນຕົວຂອງຂໍ້ມູນ (ສອດຄ່ອງກັບ GDPR) - -# # Administration page -# datapolicySetup = ການຕັ້ງຄ່ານະໂຍບາຍຄວາມເປັນສ່ວນຕົວຂອງຂໍ້ມູນໂມດູນ Deletion = ການລຶບຂໍ້ມູນ datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = ຄວາມສົດໃສດ້ານ/ລ DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = ບໍ່ແມ່ນຄວາມສົດໃສດ້ານ / ຫຼືລູກຄ້າ DATAPOLICY_CONTACT_FOURNISSEUR = ຜູ້ສະຫນອງ DATAPOLICY_ADHERENT = ສະມາຊິກ -DATAPOLICY_Tooltip_SETUP = ປະເພດຂອງການຕິດຕໍ່ - ຊີ້ບອກການເລືອກຂອງທ່ານສໍາລັບແຕ່ລະປະເພດ. -DATAPOLICYMail = ການຕັ້ງຄ່າອີເມວ -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = ເນື້ອໃນຂອງອີເມວ -DATAPOLICYSUBSITUTION = ທ່ານສາມາດນໍາໃຊ້ຕົວແປຕໍ່ໄປນີ້ໃນອີເມວຂອງທ່ານ (LINKACCEPT ອະນຸຍາດໃຫ້ສ້າງການເຊື່ອມຕໍ່ບັນທຶກຂໍ້ຕົກລົງຂອງບຸກຄົນ, LINKREFUSED ເຮັດໃຫ້ມັນເປັນໄປໄດ້ທີ່ຈະບັນທຶກການປະຕິເສດຂອງບຸກຄົນ): -DATAPOLICYACCEPT = ຂໍ້ຄວາມຫຼັງຈາກຂໍ້ຕົກລົງ -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = ທ່ານສາມາດສົ່ງອີເມວ GDPR ໄປຫາຜູ້ຕິດຕໍ່ທີ່ກ່ຽວຂ້ອງທັງຫມົດຂອງທ່ານ (ຜູ້ທີ່ຍັງບໍ່ທັນໄດ້ຮັບອີເມລ໌ແລະທີ່ທ່ານບໍ່ໄດ້ລົງທະບຽນຫຍັງກ່ຽວກັບຂໍ້ຕົກລົງ GDPR ຂອງພວກເຂົາ). ເພື່ອເຮັດສິ່ງນີ້, ໃຊ້ປຸ່ມຕໍ່ໄປນີ້. SendAgreement = ສົ່ງອີເມວ AllAgreementSend = ອີເມວທັງໝົດຖືກສົ່ງໄປແລ້ວ TXTLINKDATAPOLICYACCEPT = ຂໍ້ຄວາມສໍາລັບການເຊື່ອມຕໍ່ "ຂໍ້ຕົກລົງ" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR : ການປະມວນຜົນຂໍ້ມູນສ່ວນຕົວ DATAPOLICY_consentement = ການຍິນຍອມທີ່ໄດ້ຮັບສຳລັບການປະມວນຜົນຂໍ້ມູນສ່ວນຕົວ DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = ເປີດເຜີຍຊື່ບຸກຄົນທີສາມ -DATAPOLICY_POPUP_ANONYME_TEXTE = ທ່ານບໍ່ສາມາດລຶບລາຍຊື່ນີ້ອອກຈາກ Dolibarr ເພາະວ່າມີລາຍການທີ່ກ່ຽວຂ້ອງ. ອີງຕາມ GDPR, ທ່ານຈະເຮັດໃຫ້ຂໍ້ມູນທັງຫມົດນີ້ບໍ່ເປີດເຜີຍຊື່ເພື່ອເຄົາລົບພັນທະຂອງທ່ານ. ທ່ານຕ້ອງການສືບຕໍ່ບໍ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = GDPR ແບບພົກພາ -DATAPOLICY_PORTABILITE_TITLE = ສົ່ງອອກຂໍ້ມູນສ່ວນຕົວ -DATAPOLICY_PORTABILITE_CONFIRMATION = ທ່ານຕ້ອງການສົ່ງອອກຂໍ້ມູນສ່ວນຕົວຂອງຜູ້ຕິດຕໍ່ນີ້. ເຈົ້າ​ແນ່​ໃຈ​ບໍ່ ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = ບໍ່ໄດ້ລະບຸຊື່ %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = ສົ່ງອີເມວ GDPR MailSent = ອີ​ເມວ​ໄດ້​ຖືກ​ສົ່ງ​ໄປ​ແລ້ວ - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/lo_LA/dict.lang b/htdocs/langs/lo_LA/dict.lang index a41e82aca11..816f890acd7 100644 --- a/htdocs/langs/lo_LA/dict.lang +++ b/htdocs/langs/lo_LA/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=CFP ຟຣັງ CurrencySingXPF=CFP ຟຣັງ CurrencyCentEUR=ເຊັນ CurrencyCentSingEUR=ເປີເຊັນ -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=ພັນ #### Input reasons ##### DemandReasonTypeSRC_INTE=ອິນເຕີເນັດ diff --git a/htdocs/langs/lo_LA/errors.lang b/htdocs/langs/lo_LA/errors.lang index 229ca178174..dad2360d7f9 100644 --- a/htdocs/langs/lo_LA/errors.lang +++ b/htdocs/langs/lo_LA/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=ຜູ້ໃຊ້ຕ້ອງໄດ້ມອບtoາ ErrorTaskAlreadyAssigned=ມອບTasາຍ ໜ້າ ວຽກໃຫ້ຜູ້ໃຊ້ແລ້ວ ErrorModuleFileSeemsToHaveAWrongFormat=ຊຸດໂມດູນເບິ່ງຄືວ່າມີຮູບແບບທີ່ບໍ່ຖືກຕ້ອງ. ErrorModuleFileSeemsToHaveAWrongFormat2=ຢ່າງ ໜ້ອຍ ຕ້ອງມີໄດເຣັກທໍຣີທີ່ ຈຳ ເປັນຕ້ອງມີຢູ່ໃນ zip ຂອງໂມດູນ: %s ຫຼື %s -ErrorFilenameDosNotMatchDolibarrPackageRules=ຊື່ຂອງແພັກເກດໂມດູນ ( %s ) ບໍ່ກົງກັບໄວຍະກອນຊື່ທີ່ຄາດໄວ້: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=ຜິດພາດ, ຊື່ທຣິກເກີຊໍ້າກັນ %s. ໂຫຼດມາແລ້ວຈາກ %s. ErrorNoWarehouseDefined=ຜິດພາດ, ບໍ່ໄດ້ ກຳ ນົດຄັງສິນຄ້າ. ErrorBadLinkSourceSetButBadValueForRef=ລິ້ງທີ່ເຈົ້າໃຊ້ບໍ່ຖືກຕ້ອງ. ໄດ້ກໍານົດ 'ແຫຼ່ງ' ສໍາລັບການຊໍາລະ, ແຕ່ຄ່າສໍາລັບ 'ຜູ້ອ້າງອີງ' ບໍ່ຖືກຕ້ອງ. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/lo_LA/mails.lang b/htdocs/langs/lo_LA/mails.lang index 81200462e4a..3d35457275a 100644 --- a/htdocs/langs/lo_LA/mails.lang +++ b/htdocs/langs/lo_LA/mails.lang @@ -32,6 +32,8 @@ NewMailing=ການສົ່ງອີເມວໃ່ NewSMSing=New smsing EditMailing=ແກ້ໄຂການສົ່ງອີເມວ ResetMailing=ສົ່ງອີເມວຄືນໃ່ +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=ລຶບການສົ່ງອີເມວ PreviewMailing=ເບິ່ງຕົວຢ່າງການສົ່ງອີເມວ CreateMailing=ສ້າງອີເມລ @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=ຜູ້ຮັບອີເມວຫວ່າງເປ WarningNoEMailsAdded=ບໍ່ມີອີເມວໃto່ເພື່ອເພີ່ມໃສ່ລາຍຊື່ຜູ້ຮັບ. ConfirmValidMailing=ເຈົ້າແນ່ໃຈບໍ່ວ່າເຈົ້າຕ້ອງການກວດສອບການສົ່ງອີເມວນີ້? ConfirmResetMailing=ຄຳ ເຕືອນ, ໂດຍການເລີ່ມອີເມລ 0 %s ຄືນໃyou່, ເຈົ້າຈະອະນຸຍາດໃຫ້ສົ່ງອີເມລ re ນີ້ຄືນໄດ້ຄືນໃ່ເປັນຈໍານວນຫຼາຍ. ເຈົ້າແນ່ໃຈບໍ່ວ່າເຈົ້າຕ້ອງການເຮັດອັນນີ້? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=ເຈົ້າແນ່ໃຈບໍ່ວ່າເຈົ້າຕ້ອງການລຶບການສົ່ງອີເມວນີ້? NbOfUniqueEMails=ຈຳ ນວນອີເມວທີ່ບໍ່ຊໍ້າກັນ NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=ບໍ່ມີຜູ້ຮັບທີ່ຈະສົ EmailOptedOut=ເຈົ້າ​ຂອງ​ອີ​ເມວ​ໄດ້​ຮ້ອງ​ຂໍ​ທີ່​ຈະ​ບໍ່​ຕິດ​ຕໍ່​ເຂົາ​ດ້ວຍ​ອີ​ເມວ​ນີ້​ອີກ​ຕໍ່​ໄປ EvenUnsubscribe=ຮວມເອົາອີເມວທີ່ເລືອກອອກ EvenUnsubscribeDesc=ຮວມເອົາອີເມວທີ່ເລືອກອອກ ເມື່ອທ່ານເລືອກອີເມວເປັນເປົ້າໝາຍ. ເປັນປະໂຫຍດສໍາລັບອີເມລ໌ບໍລິການບັງຄັບສໍາລັບຕົວຢ່າງ. -XEmailsDoneYActionsDone=%s ອີເມວທີ່ຜ່ານເງື່ອນໄຂກ່ອນ, %s ປະມວນຜົນສຳເລັດແລ້ວ (ສຳລັບ %s ບັນທຶກ / ການ​ປະ​ຕິ​ບັດ​ສໍາ​ເລັດ​) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/lo_LA/stripe.lang b/htdocs/langs/lo_LA/stripe.lang index cbf0ed1236a..0e80a9fcc99 100644 --- a/htdocs/langs/lo_LA/stripe.lang +++ b/htdocs/langs/lo_LA/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL ເພື່ອສະ ເໜີ % ToOfferALinkForOnlinePaymentOnFreeAmount=URL ເພື່ອສະ ເໜີ %s ໜ້າ ການຊໍາລະເງິນອອນໄລນ of ຂອງຈໍານວນໃດ ໜຶ່ງ ທີ່ບໍ່ມີວັດຖຸທີ່ມີຢູ່ແລ້ວ ToOfferALinkForOnlinePaymentOnMemberSubscription=URL ເພື່ອສະ ເໜີ %s ໜ້າ ການຊໍາລະເງິນອອນໄລນ for ສໍາລັບການສະmemberັກສະມາຊິກ ToOfferALinkForOnlinePaymentOnDonation=URL ເພື່ອສະ ເໜີ %s ໜ້າ ການຊໍາລະເງິນອອນໄລນ for ສໍາລັບການຊໍາລະເງິນບໍລິຈາກ -YouCanAddTagOnUrl=ເຈົ້າສາມາດເພີ່ມພາລາມິເຕີ url & tag = ຄ່າ ໃສ່ໃນ URL ເຫຼົ່ານັ້ນ (ບັງຄັບໃຊ້ສໍາລັບການຈ່າຍເງິນເທົ່ານັ້ນບໍ່ໄດ້ເຊື່ອມຕໍ່ກັບວັດຖຸ) ເພື່ອເພີ່ມແທັກຄໍາເຫັນການຊໍາລະຂອງເຈົ້າເອງ.
ສໍາລັບ URL ຂອງການຊໍາລະທີ່ບໍ່ມີວັດຖຸທີ່ມີຢູ່, ເຈົ້າອາດຈະເພີ່ມພາຣາມິເຕີ & noidempotency = 1 ສະນັ້ນການເຊື່ອມຕໍ່ດຽວກັນທີ່ມີແທັກອັນດຽວກັນສາມາດໃຊ້ໄດ້ຫຼາຍຄັ້ງ (ບາງຮູບແບບການຈ່າຍເງິນອາດຈໍາກັດການຊໍາລະເປັນ 1 ສໍາລັບແຕ່ລະລິ້ງທີ່ແຕກຕ່າງກັນໂດຍບໍ່ມີອັນນີ້) ພາລາມິເຕີ) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=ຕັ້ງຄ່າ Stripe ຂອງເຈົ້າດ້ວຍ url %s ເພື່ອໃຫ້ມີການຊໍາລະເງິນໂດຍອັດຕະໂນມັດເມື່ອຖືກກວດສອບໂດຍ Stripe. AccountParameter=ຕົວກໍານົດການບັນຊີ UsageParameter=ຕົວກໍານົດການນໍາໃຊ້ @@ -77,4 +78,13 @@ TERMINAL_LOCATION=ສະຖານທີ່ (ທີ່ຢູ່) ສໍາລັ RequestDirectDebitWithStripe=ຮ້ອງຂໍການຫັກເງິນໂດຍກົງດ້ວຍເສັ້ນດ່າງ RequesCreditTransferWithStripe=ຮ້ອງຂໍການໂອນສິນເຊື່ອດ້ວຍ Stripe STRIPE_SEPA_DIRECT_DEBIT=ເປີດໃຊ້ການຊໍາລະເດບິດໂດຍກົງຜ່ານ Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=ໂໝດ Stripe Connect +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/lt_LT/admin.lang b/htdocs/langs/lt_LT/admin.lang index ea2a4ef8bb8..27c68940a21 100644 --- a/htdocs/langs/lt_LT/admin.lang +++ b/htdocs/langs/lt_LT/admin.lang @@ -88,6 +88,8 @@ SearchString=Search string NotAvailableWhenAjaxDisabled=Neprieinamas, Ajax esant išjungtam 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 +PROJECT_DISPLAY_LINKED_BY_CONTACT=Display project linked by a common contact +PROJECT_DISPLAY_LINKED_BY_CONTACT_help=This option adds a new list on Project tab with all projects linked to thirdparty via a contact relationship JavascriptDisabled=JavaScript išjungtas UsePreviewTabs=Nautdoti apžiūros korteles ShowPreview=Rodyti apžiūrą @@ -139,7 +141,7 @@ ClientHour=Kliento laikas (vartotojas) OSTZ=Serverio OS laiko zona PHPTZ=PHP serverio Laiko Juosta DaylingSavingTime=Vasaros laikas -CurrentHour=PHP serverio laikas +CurrentHour=PHP serverio laikas CurrentSessionTimeOut=Einamosios sesijos pertrauka 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. @@ -157,7 +159,7 @@ Language_en_US_es_MX_etc=Language (en_US, es_MX, ...) System=Sistema SystemInfo=Sistemos informacija SystemToolsArea=Sistemos įrankių sritis -SystemToolsAreaDesc=This area provides administration functions. Use the menu to choose the required feature. +SystemToolsAreaDesc=Šioje srityje atliekamos administravimo funkcijos. Naudodamiesi meniu pasirinkite reikiamą funkciją. Purge=Išvalyti 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) @@ -185,7 +187,7 @@ ImportMySqlDesc=To import a MySQL backup file, you may use phpMyAdmin via your h ImportPostgreSqlDesc=Norėdami importuoti atsarginės kopijos failą, turite naudoti pg_restore komandą iš komandinės eilutės: ImportMySqlCommand=%s %s < mybackupfile.sql ImportPostgreSqlCommand=%s %s mybackupfile.sql -FileNameToGenerate=Filename for backup: +FileNameToGenerate=Atsarginės kopijos failo pavadinimas: Compression=Suspaudimas CommandsToDisableForeignKeysForImport=Komanda svetimų raktų išjungimui importo metu CommandsToDisableForeignKeysForImportWarning=Privaloma, nornt vėliau atkurti SQL šiukšliadėžę @@ -208,7 +210,7 @@ EncodeBinariesInHexa=Koduojami dvejetainiai duomenys į šešioliktainius IgnoreDuplicateRecords=Ignore errors of duplicate record (INSERT IGNORE) AutoDetectLang=Automatinis aptikimas (naršyklės kalba) FeatureDisabledInDemo=Funkcija išjungta demo versijoje -FeatureAvailableOnlyOnStable=Feature only available on official stable versions +FeatureAvailableOnlyOnStable=Funkcija prieinama tik oficialiose stabiliose versijose BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the trashcan to disable it. OnlyActiveElementsAreShown=Rodomi tik elementai iš leidžiami moduliai. 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. @@ -248,7 +250,7 @@ Required=Reikalingas UsedOnlyWithTypeOption=Naudojamas tik kai kuriose darbotvarkės opcijose Security=Saugumas Passwords=Slaptažodžiai -DoNotStoreClearPassword=Encrypt passwords stored in database (NOT as plain-text). It is strongly recommended to activate this option. +DoNotStoreClearPassword=Encrypt passwords stored in database. 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"; @@ -301,20 +303,20 @@ 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_NO_WITH_TO_SELECTED=Do not select a default recipient even if there is only 1 possible choice +MAIN_MAIL_NO_WITH_TO_SELECTED=Disable the selection of a default recipient when writing an email, even if there is only 1 possible choice MAIN_MAIL_SENDMODE=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_SMTPS_ID=SMTP username or ID (if sending server requires an authentication) +MAIN_MAIL_SMTPS_PW=SMTP password or token (if sending server requires an authentication) MAIN_MAIL_EMAIL_TLS=Use TLS (SSL) encryption MAIN_MAIL_EMAIL_STARTTLS=Use TLS (STARTTLS) encryption -MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Authorize self-signed certificates +MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Allow connection to mail servers that are using self-signed certificates 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=SMS siuntimui naudoti metodą -MAIN_MAIL_SMS_FROM=Default sender phone number for SMS sending +MAIN_SMS_FROM=Default sender phone number for SMS sending MAIN_MAIL_DEFAULT_FROMTYPE=Default sender email preselected on forms to send emails UserEmail=User email CompanyEmail=Company Email @@ -341,7 +343,7 @@ MenuHandlers=Meniu prižiūrėtojai MenuAdmin=Meniu redaktorius DoNotUseInProduction=Nenaudoti gamyboje ThisIsProcessToFollow=Upgrade procedure: -ThisIsAlternativeProcessToFollow=This is an alternative setup to process manually: +ThisIsAlternativeProcessToFollow=This is an alternative deployment process you can run manually: StepNb=Žingsnis %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). @@ -363,13 +365,17 @@ UpdateServerOffline=Atnaujinti 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.
+GenericMaskCodes2b={uuuu} the n first characters of the lastname of the user that creates the object (n is number of "u"). GenericMaskCodes3=Visi kiti simboliai maskuotėje išliks nepakitę.
Tarpai neleidžiami.
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 2023-01-31:
GenericMaskCodes4b=Example on third party created on 2023-01-31:
GenericMaskCodes4c=Example on product created on 2023-01-31:
-GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC2301-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX
IN{yy}{mm}-{0000}-{t} will give IN2301-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 ABC2301-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX +GenericMaskCodes5b=IN{yy}{mm}-{0000}-{t} will give IN2301-0099-A if the type of company is 'Responsable Inscripto' with code for type that is 'A_RI' GenericNumRefModelDesc=Grąžina taikomą numerį pagal nustatytą numeravimo maskuotę. +DateStartThatModel=Disable use of this numbering rule for all thirdparties created before +DateStartThatModelHelp=You can disable elephant numbering rule for thirdparties created before a date (for example, because they were imported by a migration, from another software using a different rule). Let that field empty to have the rule applied on all thirdparties. ServerAvailableOnIPOrPort=Serveris yra pasiekiamas adresu %s, prievadas (port) %s ServerNotAvailableOnIPOrPort=Serveris nėra pasiekiamas adresu %s, prievadas (port) %s DoTestServerAvailability=Išbandyti serverio prisijungimą @@ -391,7 +397,7 @@ LanguageFile=Language file ExamplesWithCurrentSetup=Examples with current configuration ListOfDirectories=OpenDocument šablonų katalogų sąrašas 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 +NumberOfModelFilesFound=Number of ODT/ODS template files found ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\myapp\\mydocumentdir\\mysubdir
/home/myapp/mydocumentdir/mysubdir
DOL_DATA_ROOT/ecm/ecmdir FollowingSubstitutionKeysCanBeUsed=
Norėdami sužinoti, kaip sukurti savo odt dokumentų šablonus, prieš išsaugant juos šiuose kataloguose, paskaityti Wiki dokumentus: FullListOnOnlineDocumentation=https://wiki.dolibarr.org/index.php/Create_an_ODT_document_template @@ -448,14 +454,18 @@ ExtrafieldPriceWithCurrency=Price with currency ExtrafieldMail = El. paštas ExtrafieldUrl = Url ExtrafieldIP = IP -ExtrafieldSelect = Pasirinkti sąrašą -ExtrafieldSelectList = Pasirinkite iš lentelės +ExtrafieldSelect=Pasirinkti sąrašą +ExtrafieldSelectList=Pasirinkite iš lentelės ExtrafieldSeparator=Separator (not a field) ExtrafieldPassword=Slaptažodis -ExtrafieldRadio=Radio buttons (one choice only) -ExtrafieldCheckBox=Checkboxes -ExtrafieldCheckBoxFromList=Checkboxes from table +ExtrafieldRadio=Radio buttons (1 choice only) +ExtrafieldCheckBox=Select list (n choices) +ExtrafieldCheckBoxFromList=Select from table (n choices) ExtrafieldLink=Nuoroda į objektą, +ExtrafieldPointGeo=Geometric Point +ExtrafieldMultiPointGeo=Geometric Multi Point +ExtrafieldLinestringGeo=Geometric Linestring +ExtrafieldPolygonGeo=Geometric Polygon 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, $objectoffield.
WARNING: If you need properties of an object 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:
$objectoffield->id < 10 ? round($objectoffield->id / 2, 2): ($objectoffield->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($objectoffield->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($objectoffield->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Store computed field @@ -464,8 +474,8 @@ ExtrafieldParamHelpPassword=Leaving this field blank means this value will be st 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 necessarily 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 +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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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 @@ -504,15 +514,17 @@ ModuleCompanyCodeCustomerDigitaria=%s followed by the truncated customer name by 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). +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. 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=It is therefore recommended to change the sending method of e-mails to the value "SMTP". WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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 (for email %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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) @@ -533,6 +545,7 @@ 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 +BlockExpenseReportLineCreationIfNotBetweenDates=Block line creation if the date of the added line is not in the expense report range AttachMainDocByDefault=Set this to Yes if you want to attach by default the main document to the email (if applicable) FilesAttachedToEmail=Attach file SendEmailsReminders=Send agenda reminders by emails @@ -655,7 +668,7 @@ Module2200Desc=Use maths expressions for auto-generation of prices Module2300Name=Suplanuoti darbai 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. +Module2400Desc=Manage manual and automatic events. Use the calendar to record events manually. Log also events automatically for tracking purposes or record manual events or meetings. This is the principal module for good Customer and/or Vendor Relationship Management. Module2430Name=Online appointment scheduling Module2430Desc=Provides an online appointment booking system. This allow anyone to book rendez-vous, according to predefined ranges or availabilities. Module2500Name=DMS / ECM @@ -788,6 +801,7 @@ Permission116=Pervedimai tarp sąskaitų Permission117=Manage checks dispatching Permission121=Skaityti trečiąsias šalis, susijusias su vartotoju Permission122=Sukurti/pakeisti trečiąsias šalis, susijusias su vartotoju +Permission122b=Not effective for external users (always limited to their third party). Permission125=Ištrinti trečiąsias šalis, susijusias su vartotoju Permission126=Eksportuoti trečiąsias šalis Permission130=Create/modify third parties payment information @@ -853,7 +867,9 @@ PermissionAdvanced253=Sukurti/keisti vidaus/išorės vartotojus ir leidimus Permission254=Sukurti/keisti tik išorės vartotojus Permission255=Keisti kitų vartotojų slaptažodžius Permission256=Ištrinti ar išjungti kitus vartotojus -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). +Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). +Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). 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=Skaityti CA Permission272=Skaityti sąskaitas faktūras @@ -886,13 +902,13 @@ Permission401=Skaityti nuolaidas Permission402=Sukurti/keisti nuolaidas Permission403=Patvirtinti nuolaidas Permission404=Ištrinti nuolaidas -Permission430=Use Debug Bar +Permission431=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=Eksportuoti atlyginimus -Permission520=Skaityti Paskolas +Permission521=Skaityti Paskolas Permission522=Sukurti / redaguoti paskolas Permission524=Ištrinti paskolas Permission525=Paskolos skaičiuoklė @@ -913,12 +929,12 @@ 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) +Permission651=Read Bills of Materials +Permission652=Create/Update Bills of Materials +Permission653=Delete Bills of Materials +Permission661=Read Manufacturing Order (MO) +Permission662=Create/Update Manufacturing Order (MO) +Permission663=Delete Manufacturing Order (MO) Permission701=Skaityti aukas Permission702=Sukurti/keisti aukas Permission703=Ištrinti aukas @@ -930,7 +946,7 @@ Permission776=Mokamų išlaidų ataskaitos Permission777=Read all expense reports (even those of user not subordinates) Permission778=Create/modify expense reports of everybody Permission779=Eksportuoti išlaidų ataskaitas -Permission1001=Skaityti atsargas +Permission1001=Read warehouses and stocks Permission1002=Sukurti / keisti sandėlius Permission1003=Panaikinti sandėlius Permission1004=Skaityti atsargų judėjimą @@ -990,7 +1006,7 @@ Permission2515=Nustatyti dokumentų katalogus Permission2610=Generate/modify users API key Permission2801=Naudokite FTP klientą skaitymo režime (tik naršyti ir parsisiųsti) Permission2802=Naudokite FTP klientą įrašymo režimu (ištrinti ar įkelti failus) -Permission3200=Read archived events and fingerprints +Permission3201=Read archived events and fingerprints Permission3301=Generate new modules Permission4001=Read skill/job/position Permission4002=Create/modify skill/job/position @@ -1027,9 +1043,9 @@ Permission50152=Edit sales lines Permission50153=Edit ordered sales lines Permission50201=Skaityti sandorius/transakcijas Permission50202=Importuoti sandorius/transakcijas -Permission50330=Read objects of Zapier -Permission50331=Create/Update objects of Zapier -Permission50332=Delete objects of Zapier +Permission50331=Read objects of Zapier +Permission50332=Create/Update objects of Zapier +Permission50333=Delete objects of Zapier Permission50401=Bind products and invoices with accounting accounts Permission50411=Read operations in ledger Permission50412=Write/Edit operations in ledger @@ -1054,16 +1070,16 @@ Permission63002=Create/modify resources Permission63003=Delete resources Permission63004=Link resources to agenda events Permission64001=Allow direct printing -Permission67000=Allow printing of receipts +Permission67001=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 +Permission941601=Read receptions +Permission941602=Create and modify receptions +Permission941603=Validate receptions +Permission941604=Send receptions by email +Permission941605=Export receptions +Permission941606=Delete receptions DictionaryCompanyType=Third-party types DictionaryCompanyJuridicalType=Third-party legal entities DictionaryProspectLevel=Prospect potential level for companies @@ -1118,11 +1134,12 @@ 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 dependent 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. +VATIsUsedStandard=When creating documents (proposals, invoices, orders...), the default Sales Tax rate is set according to the standard rules (depending on seller and buyer countries) +VATIsUsedDesc=By default when creating proposals, 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 dependent 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. -VATType=VAT type +VATType=Tax type ##### Local Taxes ##### TypeOfSaleTaxes=Type of sales tax LTRate=Norma @@ -1158,6 +1175,9 @@ NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), yo LabelUsedByDefault=Etiketė naudojamas pagal nutylėjimą, jei kodui nerandamas vertimas LabelOnDocuments=Dokumentų etiketė LabelOrTranslationKey=Label or translation key +TranslationFound=Translation found +TheTranslationIsSearchedFromKey=The translation is searched from the translation key: %s +TranslationKey=Translation key ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days @@ -1195,9 +1215,11 @@ DefaultMenuManager= Standartinio meniu valdytojas DefaultMenuSmartphoneManager=Smartphone meniu valdytojas Skin=Grafinio vaizdo (skin) tema DefaultSkin=Grafinio vaizdo (skin) tema pagal nutylėjimą -MaxSizeList=Maksimalus sąrašo ilgis +MaxSizeList=Max length for lists DefaultMaxSizeList=Default max length for lists +MaxSizeShortList=Max length for short lists DefaultMaxSizeShortList=Default max length for short lists (i.e. in customer card) +DisplayGrandTotalInList=Display grand total (for all pages) in lists footer MessageOfDay=Dienos pranešimas MessageLogin=Prisijungimo prie sistemos ekrano pranešimas LoginPage=Login page @@ -1205,7 +1227,8 @@ BackgroundImageLogin=Background image PermanentLeftSearchForm=Nuolatinė paieškos forma kairiajame meniu DefaultLanguage=Default language EnableMultilangInterface=Enable multilanguage support for customer or vendor relationships -EnableShowLogo=Show the company logo in the menu +EnableShowLogo=Show the company logos in the menu +THEME_MENU_COLORLOGO=Show main menu images in color CompanyInfo=Company/Organization CompanyIds=Company/Organization identities CompanyAddress=Adresas @@ -1267,6 +1290,7 @@ BrowserName=Naršyklės pavadinimas BrowserOS=Naršyklės OS ListOfSecurityEvents=Dolibarr saugumo įvykių sąrašas SecurityEventsPurged=Saugumo įvykiai išvalyti +SecurityEvent=Security event TrackableSecurityEvents=Trackable security events 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. @@ -1330,6 +1354,7 @@ AdvancedNumRefModelDesc=Returns the reference number in the format %syymm-nnnn w 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 +ShowLegalFormInAddress=Show the legal form with addresses TranslationUncomplete=Dalinis vertimas MAIN_DISABLE_METEO=Disable weather thumb MeteoStdMod=Standard mode @@ -1405,7 +1430,7 @@ 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 address 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@example.com - Paris" or "Dupond Durand - 06 07 59 65 66 - Paris" instead of "Dupond Durand". +AddEmailPhoneTownInContactList=Display Contact email (or phones if not defined) and town into combo lists.
Contacts will appear with a name format of "Dupond Durand - dupond.durand@example.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=Lauko %s redagavimas FillThisOnlyIfRequired=Pavyzdys: +2 (pildyti tik tuomet, jei laiko juostos nuokrypio problemos yra žymios) @@ -1434,10 +1459,10 @@ HRMSetup=HRM module setup CompanySetup=Įmonių modulio nuostatos 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. +NotificationsDesc=Email notifications can be sent automatically on certain events.
Recipients of notifications can be defined: +NotificationsDescUser=* per user (on the tab "Notifications" of a user) +NotificationsDescContact=* per third-party contacts (on the tab "Notifications" of a third party) +NotificationsDescGlobal=* or by setting global email addresses (on the setup page of the module). ModelModules=Document Templates DocumentModelOdt=Generate documents from OpenDocument templates (.ODT / .ODS files from LibreOffice, OpenOffice, KOffice, TextEdit,...) WatermarkOnDraft=Vandens ženklas ant dokumento projekto @@ -1473,11 +1498,16 @@ InvoiceOptionCategoryOfOperations=Display the mention "category of operations" o InvoiceOptionCategoryOfOperationsHelp=Depending on the situation, the mention will appear in the form:
- Category of operations: Delivery of goods
- Category of operations: Provision of services
- Category of operations: Mixed - Delivery of goods & provision of services InvoiceOptionCategoryOfOperationsYes1=Yes, below the address block InvoiceOptionCategoryOfOperationsYes2=Yes, in the lower left-hand corner +InvoiceClassifyBilledSupplierOrderWithoutInvoice=Disallow the classification of an order as billed without invoice. +InvoiceClassifyBilledSupplierOrderWithoutInvoiceHelp=An order can be classified as billed by default. If this conf is set to true, it will be not. +##### Supplier Orders ##### +SupplierOrderClassifyBilledWithoutInvoice=Disallow the classification of a purchase order as billed without invoice. +SupplierOrderClassifyBilledWithoutInvoiceHelp=A supplier order can be classified as billed by default. If this conf is set to true, it will be not. ##### Proposals ##### PropalSetup=Komercinių pasiūlymų modulio nuostatos ProposalsNumberingModules=Komercinių pasiūlymų numeracijos modeliai ProposalsPDFModules=Komercinio pasiūlymo dokumentų modeliai -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payment mode by default if not defined on the proposal FreeLegalTextOnProposal=Laisvas tekstas komerciniame pasiūlyme WatermarkOnDraftProposal=Vandens ženklas komercinių pasiūlymų projekte (nėra, jei lapas tuščias) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Klausti pasiūlyme esančios banko sąskaitos paskirties @@ -1519,8 +1549,8 @@ MemberCodeChecker=Options for automatic generation of member codes AdherentLoginRequired=Manage a login/password for each member AdherentLoginRequiredDesc=Add a value for a login and a password on the member file. If the member is linked to a user, updating the member login and password will also update the user login and password. AdherentMailRequired=Email required to create a new member -MemberSendInformationByMailByDefault=Patvirtinimas paukščiuku žymimame langelyje pašto siuntimui nariams (patvirtinimas arba nauja įmoka) yra pagal nutylėjimą -MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated +MemberSendInformationByMailByDefault=The checkbox to send an email confirmation to members (validation or new subscription) is on by default +MemberCreateAnExternalUserForSubscriptionValidated=Create automatically an external user (with a login to connect to the application) after an online payment of a membership subscription VisitorCanChooseItsPaymentMode=Visitor can choose from any 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 @@ -1663,11 +1693,12 @@ LDAPDescUsers=Šis puslapis leidžia jums nustatyti LDAP atributų vardą LDAP m LDAPDescGroups=Šis puslapis leidžia jums nustatyti LDAP atributų vardą LDAP medyje kiekvienam iš duomenų rastam Dolibarr grupių sąraše. LDAPDescMembers=Šis puslapis leidžia jums nustatyti LDAP atributų vardą LDAP medyje kiekvienam iš duomenų rastam Dolibarr narių modulyje. LDAPDescMembersTypes=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr members types. -LDAPDescValues=Pavyzdinės reikšmės yra skirtos OpenLDAP su šiomis įkeltomis schemomis: core.schema, cosine.schema, inetorgperson.schema). Jei naudojate tas reikšmes ir OpenLDAP, pakeiskite Jūsų LDAP konfigūracijos failą slapd.conf kad būtų visos šios schemos įkeltos. +LDAPDescValues=Example values are designed for OpenLDAP with following loaded schemas: core.schema, cosine.schema, inetorgperson.schema). If you use those values and OpenLDAP, modify your LDAP config file slapd.conf to have all those schemas loaded. ForANonAnonymousAccess=Prieigai su patvirtinimu (pvz.: su įrašymo galimybe) PerfDolibarr=Charakteristikos nustatymo/optimizavimo ataskaita YouMayFindPerfAdviceHere=This page provides some checks or advice related to performance. NotInstalled=Not installed. +Installed=Installed. NotSlowedDownByThis=Not slowed down by this. NotRiskOfLeakWithThis=Not risk of leak with this. ApplicativeCache=Taikomoji sparčioji tarpinė atmintis @@ -1811,6 +1842,7 @@ DetailRight=Condition to display unauthorized gray menus DetailLangs=Lang failo pavadinimas etiketės kodo vertimui DetailUser=Vidinis / Išorinis / Visi Target=Duomenų adresatas +Targets=Uždaviniai DetailTarget=Target for links (_blank top opens a new window) DetailLevel=Lygis (-1:viršutinis meniu, 0:antraštės meniu, >0 meniu ir submeniu) ModifMenu=Meniu keitimas @@ -1868,6 +1900,7 @@ ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a so CashDesk=Point of Sale CashDeskSetup=Point of Sales module setup CashDeskThirdPartyForSell=Default generic third party to use for sales +ForbidSalesToTheDefaultCustomer=Do not allow to record sales on a generic third party (must use a different third party for each sale) CashDeskBankAccountForSell=Sąskaita grynųjų pinigų įmokoms pagal nutylėjimą CashDeskBankAccountForCheque=Default account to use to receive payments by check CashDeskBankAccountForCB=Sąskaita įmokoms kreditinėmis kortelėmis pagal nutylėjimą @@ -1881,6 +1914,7 @@ CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when mak CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. CashDeskReaderKeyCodeForEnter=Key ASCII code for "Enter" defined in barcode reader (Example: 13) +CashDeskDefaultProject=Assign new POS sales (invoices) to a project ##### Bookmark ##### BookmarkSetup=Žymeklių modulio nustatymas 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. @@ -1940,6 +1974,8 @@ CloseFiscalYear=Close accounting period DeleteFiscalYear=Delete accounting period ConfirmDeleteFiscalYear=Are you sure to delete this accounting period? ShowFiscalYear=Show accounting period +##### Assets ##### +AssetNumberingModules=Assets numbering module AlwaysEditable=Visada gali būti redaguojama MAIN_APPLICATION_TITLE=Taikyti matomą aplikacijos vardą (įspėjimas: Jūsų nuosavo vardo nustatymas gali nutraukti automatinio prisijungimo funkciją naudojant DoliDroid mobiliąją aplikaciją) NbMajMin=Minimalus didžiųjų simbolių skaičius @@ -1952,16 +1988,17 @@ SortOrder=Rūšiavimo tvarka Format=Forma, pobūdis TypePaymentDesc=0:Customer payment type, 1:Vendor payment type, 2:Both customers and suppliers payment type IncludePath=Įtraukti kelią (kaip apibrėžta kintamojo %s) +##### Expense reports ##### ExpenseReportsSetup=Išlaidų ataskaitų modulio nustatymai TemplatePDFExpenseReports=Šablonai Išlaidų ataskaitų generavimui 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 +TemplatesForNotifications=Emails 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 +ListOfFixedNotifications=Global recipients emails for automatic email 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=Slenkstis @@ -1987,6 +2024,7 @@ BackgroundColor=Background color TopMenuBackgroundColor=Background color for Top menu TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Background color for Left menu +LeftmenuId=Left menu ID BackgroundTableTitleColor=Background color for Table title line BackgroundTableTitleTextColor=Text color for Table title line BackgroundTableTitleTextlinkColor=Text color for Table title link line @@ -1996,6 +2034,7 @@ MinimumNoticePeriod=Minimum notice period (Your leave request must be done befor 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 +EnterYesOrNo=Enter Yes or No 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
- fontawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) @@ -2028,6 +2067,7 @@ MailToSendContract=Sutartys MailToSendReception=Receptions MailToExpenseReport=Išlaidų ataskaitos MailToThirdparty=Trečiosios šalys +MailToContact=Adresatai MailToMember=Nariai MailToUser=Vartotojai MailToProject=Projektai @@ -2058,6 +2098,7 @@ AddMenus=Add menus AddPermissions=Add permissions AddExportProfiles=Add export profiles AddImportProfiles=Add import profiles +AddWebsiteTemplates=Add website templates for the website module AddOtherPagesOrServices=Add other pages or services AddModels=Add document or numbering templates AddSubstitutions=Add keys substitutions @@ -2075,7 +2116,7 @@ BaseCurrency=Reference currency of the company (go into setup of company to chan 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. - +WarningExperimentalFeatureInvoiceSituationNeedToUpgradeToProgressiveMode=If you are using the experimental mode for situation invoices, you will need to update your data to switch from the experimental mode to the official mode. You can contact a partner to help you with this task. A list of preferred partners is available by following this link MAIN_PDF_MARGIN_LEFT=Left margin on PDF MAIN_PDF_MARGIN_RIGHT=Right margin on PDF MAIN_PDF_MARGIN_TOP=Top margin on PDF @@ -2087,14 +2128,14 @@ MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Width of the column if a picture is added on l MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=Hide the unit price column on quotation requests MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=Hide the total price column on quotation requests MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=Hide the unit price column on purchase orders -MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on puchase orders +MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on purchase orders MAIN_PDF_NO_SENDER_FRAME=Hide borders on sender address frame MAIN_PDF_NO_RECIPENT_FRAME=Hide borders on recipient 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 +MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Add a hidden markup into the signature area to allow electronic signature tool to reuse it. May be used by external tools or in the future by the online signature feature. 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 @@ -2103,7 +2144,7 @@ RemoveSpecialChars=Remove special characters COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_AQUARIUM_NO_PREFIX=Do not use prefix, only copy customer or supplier code COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) -COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed +DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) @@ -2114,6 +2155,8 @@ YouCanDeleteFileOnServerWith=You can delete this file on the server with Command ChartLoaded=Chart of account loaded SocialNetworkSetup=Setup of module Social Networks EnableFeatureFor=Enable features for %s +EnableModuleX=Enable module %s +SetupModuleX=Setup module %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. @@ -2128,6 +2171,7 @@ oauthToken=OAuth2 token accessType=Access 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). +TokenNotRequiredForOAuthLogin=Token unnecessary for OAuth entry used for Login ImapEncryption = IMAP encryption method ImapEncryptionHelp = Example: none, ssl, tls, notls NoRSH = Use the NoRSH configuration @@ -2161,7 +2205,7 @@ NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing 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) +CreateTicketAndThirdParty=Create or complete 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) @@ -2176,7 +2220,7 @@ CreateCandidature=Create job application FormatZip=Pašto kodas MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Show automatic ECM tree -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Opening hours OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module @@ -2206,7 +2250,7 @@ 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 +WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramatically 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) @@ -2222,7 +2266,7 @@ 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 already 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 recommended to create a dedicated second password for the application instead of using your own account password from https://myaccount.google.com/. EmailCollectorTargetDir=It may be a desired behavior 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 third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Warning: a lot of email servers (like Gmail) are doing full word searches when searching on a string and will not return a result if the string is only found partially into a word. For this reason too, use special characters into a search criteria will be ignored are they are not part of existing words.
To make an exclude search on a word (return email if word is not found), you can use the ! character before the word (may not work on some mail servers). EndPointFor=End point for %s : %s DeleteEmailCollector=Delete email collector @@ -2230,13 +2274,15 @@ 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. +StaticIPsOfUsers=If applicable, list of all static IPs of users 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 +EmailTemplateHelp=You can create emails templates from menu %s - %s +EMailsWillHaveMessageID=Emails will have a 'Message-ID' header matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in third-party name @@ -2325,11 +2371,10 @@ 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 generate the dump file (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that the file is complete and error message can't be reported if it fails. Use it if you experience not enough memory errors. - ModuleWebhookName = Webhook ModuleWebhookDesc = Interface to catch dolibarr triggers and send data of the event to an URL WebhookSetup = Webhook setup -WebhookSetupPage = Webhook setup page +WebhookSetupPage = Webhook setup page. To activate a webhook, go on the %s tab and create targets ShowQuickAddLink=Show a button to quickly add an element in top right menu ShowSearchAreaInTopMenu=Show the search area in the top menu HashForPing=Hash used for ping @@ -2338,7 +2383,6 @@ 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 over menu bar @@ -2346,10 +2390,15 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse over th 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 +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices (with a bank account defined for credit transfer) INVOICE_ADD_SWISS_QR_CODEMore=Switzerland's standard for invoices; make sure ZIP & City are filled and that the accounts have valid Swiss/Liechtenstein IBANs. +INVOICE_ADD_EPC_QR_CODE=Show the EPC QR code on invoices (with a bank account defined for credit transfer) +INVOICE_ADD_EPC_QR_CODEMore=This feature allows you to add or remove an EPC QR Code on your invoices, which facilitates automatic SEPA credit transfers. Enabling this option helps your clients make payments easily by scanning the QR code, reducing manual entry errors. Use this feature if you have clients in countries like Austria, Belgium, Finland, Germany, and the Netherlands where this system is supported. Disable it if it's not required for your business operations or client base. +INVOICE_ADD_EPC_QR_CODEPay=Scan this QR code to pay with a smartphone supporting payment with EPC QR code. INVOICE_SHOW_SHIPPING_ADDRESS=Show shipping address INVOICE_SHOW_SHIPPING_ADDRESSMore=Compulsory indication in some countries (France, ...) +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Show billing contact on proposal +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=By default the contact only appears for billing 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 @@ -2363,8 +2412,11 @@ HideAdvancedoptions= Hide advanced options 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 +AuthenticationMethod=Authentication method MAIN_MAIL_SMTPS_AUTH_TYPE=Authentication method UsePassword=Use a password +UseAUTHLOGIN=Use a password (AUTH LOGIN) +UseAUTHPLAIN=Use a password (AUTH PLAIN) UseOauth=Use a OAUTH token Images=Images MaxNumberOfImagesInGetPost=Max number of images allowed in a HTML field submitted in a form @@ -2380,7 +2432,7 @@ CssOnEdit=CSS on edit pages CssOnView=CSS on view pages CssOnList=CSS on lists HelpCssOnEditDesc=The CSS used when editing the field.
Example: "minwiwdth100 maxwidth500 widthcentpercentminusx" -HelpCssOnViewDesc=The CSS used when viewing the field. +HelpCssOnViewDesc=The CSS used when viewing the field.
Example: "longmessagecut" HelpCssOnListDesc=The CSS used when field is inside a list table.
Example: "tdoverflowmax200" RECEPTION_PDF_HIDE_ORDERED=Hide the quantity ordered on the generated documents for receptions MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Show the price on the generated documents for receptions @@ -2392,7 +2444,7 @@ DesktopsAndSmartphones=Desktops et smartphones AllowOnlineSign=Allow online signing AllowExternalDownload=Allow external download (without login, using a shared link) DeadlineDayVATSubmission=Deadline day for vat submission on the next month -MaxNumberOfAttachementOnForms=Max number of joinded files in a form +MaxNumberOfAttachementOnForms=Max number of joined files in a form IfDefinedUseAValueBeetween=If defined, use a value between %s and %s Reload=Reload ConfirmReload=Confirm module reload @@ -2408,6 +2460,7 @@ DefaultForTypeDesc=Template used by default when creating a new email for the te OptionXShouldBeEnabledInModuleY=Option "%s" should be enabled into module %s OptionXIsCorrectlyEnabledInModuleY=Option "%s" is enabled into module %s AllowOnLineSign=Allow On Line signature +AllowOnLineSignDesc=A link to allow to sign online a bank document (mandate for direct debit for example) is available in list of payment modes of third parties for bank accounts AtBottomOfPage=At bottom of page FailedAuth=failed authentications MaxNumberOfFailedAuth=Max number of failed authentication in 24h to deny login. @@ -2422,6 +2475,7 @@ LargeModern=Large - Modern SpecialCharActivation=Enable the button to open a virtual keyboard to enter special characters DeleteExtrafield=Delete extrafield ConfirmDeleteExtrafield=Do you confirm deletion of the field %s ? All data saved into this field will be definitely deleted +ConfirmDeleteSetup=Are you sure you want to delete the setup for %s ? ExtraFieldsSupplierInvoicesRec=Complementary attributes (templates invoices) ExtraFieldsSupplierInvoicesLinesRec=Complementary attributes (template invoice lines) ParametersForTestEnvironment=Parameters for test environment @@ -2433,3 +2487,71 @@ UrlPublicInterfaceHelpAdmin=It is possible to define an alias to the web server ExportUseForce=Use the parameter -f ExportUseForceHelp=Force to continue the export even when an error is found (Backup may not be reliable) CustomPrompt=Custom prompts +AiDescription=AI (Artificial Intelligence) features +AiDescriptionLong=Provides AI (Artificial Intelligence) features in different parts of the application. Need external AI API. +AI_API_KEY=Key for AI api +AI_API_URL=Endpoint URL for AI api +AI_API_SERVICE=Service to use for AI features +AiSetup=AI module setup +AiCustomPrompt=AI custom prompt +AI_CONFIGURATIONS_PROMPT=Custom prompt +TextGeneration=Text generation +ImageGeneration=Image generation +VideoGeneration=Video generation +AudioGeneration=Audio generation +AIPromptForFeatures=AI custom prompts for features +EnterAnIP=Enter an IP address +ConvertInto=Convert into +YouAreHere=You are here +BARCODE_ON_SHIPPING_PDF=Show the barcode on the shipping PDF document +BARCODE_ON_RECEPTION_PDF=Show the barcode on the reception PDF document +BARCODE_ON_STOCKTRANSFER_PDF=Show the barcode on the stock transfer PDF document +Unstable=Unstable +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. +TestWebhookTarget=Test WebHook +DataToSendTrigger=Data sent to Url +SendToUrl=Send to Url +WebsiteTemplateWasCopied=The website template(s) "%s" provided by this module has been saved into the directory of website templates (/doctemplates/websites) and is ready to be imported as a new web site. +EnabledByDefaultAtInstall=Enabled by default at install +VulnerableToRCEAttack=You are vulnerable to RCE attacks by using the custom dol_json_decode function +OpenIDconnectSetup=Configuration of the OpenID Connect module +MainAuthenticationOidcClientIdName=Client ID +MainAuthenticationOidcClientIdDesc=OpenID Connect Client ID +MainAuthenticationOidcClientSecretName=Client secret +MainAuthenticationOidcClientSecretDesc=OpenID Connect Client Secret +MainAuthenticationOidcScopesName=Scopes +MainAuthenticationOidcScopesDesc=OpenID scopes to allow access to user information +MainAuthenticationOidcAuthorizeUrlName=Authorize URL +MainAuthenticationOidcAuthorizeUrlDesc=(example: https://example.com/oauth2/authorize) +MainAuthenticationOidcTokenUrlName=Token URL +MainAuthenticationOidcTokenUrlDesc=(example: https://example.com/oauth2/token) +MainAuthenticationOidcUserinfoUrlName=User info URL +MainAuthenticationOidcUserinfoUrlDesc=(example: https://example.com/oauth2/userinfo) +MainAuthenticationOidcLogoutUrlName=Logout URL +MainAuthenticationOidcLogoutUrlDesc=(example: https://example.com/oauth2/logout) +MainAuthenticationOidcRedirectUrlName=Redirect URL +MainAuthenticationOidcRedirectUrlDesc=Redirect URL to authorize on the OpenID provider side +MainAuthenticationOidcLogoutRedirectUrlName=Dolibarr logout URL +MainAuthenticationOidcLogoutRedirectUrlDesc=Dolibarr logout URL to authorize on the OpenID provider side +MainAuthenticationOidcLoginClaimName=Login claim +MainAuthenticationOidcLoginClaimDesc=OpenID Connect claim matching the Dolibarr user login. If not set or empty, defaults to email +BlackListWords=Black list of words +AddBlackList=Add to black list +FediverseSetup=Configuration of fediverse section +ConfigImportSocialNetwork=Configuration of social networks compatible with Fediverse +Fediverse=Fediverse +NewSocialNetwork=New Fediverse social network +SocialNetworkUrl=Fediverse API URL +SocialNetworksNote=Each social network definition provides a widget that you must enable to have it available in dashboard +ConfirmDeleteSocialNetwork= Are you sure want to delete this record ? +AnOwnerMustBeSetIfEmailTemplateIsPrivate=An owner must be set if the email template is set as private +ContactsDefaultRoles=For third parties of the "individual" type, a contact can be created simultaneously. Define here the roles that will be systematically assigned to this contact. +MenuDict=Dictionary +AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token +ParamName=Name of parameter +ParamValue=Value of parameter diff --git a/htdocs/langs/lt_LT/commercial.lang b/htdocs/langs/lt_LT/commercial.lang index 47fde3a2fd4..c1ce9a487aa 100644 --- a/htdocs/langs/lt_LT/commercial.lang +++ b/htdocs/langs/lt_LT/commercial.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - commercial -Commercial=Commerce +Commercial=Prekyba CommercialArea=Commerce area Customer=Klientas Customers=Klientai @@ -10,15 +10,16 @@ NewAction=Naujas įvykis AddAction=Sukurti įvykį AddAnAction=Sukurti įvykį AddActionRendezVous=Sukurti susitikimo (Rendez-vous) įvykį -ConfirmDeleteAction=Are you sure you want to delete this event? +ConfirmDeleteAction=Ar tikrai norite ištrinti šį įvykį? CardAction=Įvykio kortelė -ActionOnCompany=Related company -ActionOnContact=Related contact +ActionOnCompany=Susijusi įmonė +ActionOnContact=Susijęs kontaktas +ActionOnUser=Related user TaskRDVWith=Susitikimas su %s ShowTask=Rodyti užduotį ShowAction=Rodyti įvykį ActionsReport=Įvykių ataskaita -ThirdPartiesOfSaleRepresentative=Third parties with sales representative +ThirdPartiesOfSaleRepresentative=Trečiosios šalys su prekybos atstovu SaleRepresentativesOfThirdParty=Sales representatives of third party SalesRepresentative=Pardavimų atstovas SalesRepresentatives=Pardavimo atstovai @@ -29,8 +30,8 @@ ShowCustomer=Rodyti klientą ShowProspect=Rodyti planą ListOfProspects=Planų sąrašas ListOfCustomers=Klientų sąrašas -LastDoneTasks=Latest %s completed actions -LastActionsToDo=Oldest %s not completed actions +LastDoneTasks=Paskutiniai % užbaigti veiksmai +LastActionsToDo=Seniausi % nebaigti veiksmai DoneAndToDoActions=Įvykiai, jau įvykdyti ir tie, kuriuos dar reikia įvykdyti DoneActions=Įvykdyti įvykiai ToDoActions=Neįvykdyti įvykiai @@ -47,7 +48,6 @@ LastProspectToContact=Susisiekti LastProspectContactInProcess=Susisiekimas vyksta LastProspectContactDone=Susisiekmas įvyko ActionAffectedTo=Įvykis priskiriamas -ActionDoneBy=Įvykį įvykdė ActionAC_TEL=Telefono skambutis ActionAC_FAX=Siųsti faksu ActionAC_PROP=Siųsti pasiūlymą paštu @@ -59,31 +59,44 @@ ActionAC_FAC=Siųsti kliento sąskaitą-faktūrą paštu ActionAC_REL=Siųsti kliento sąskaitą-faktūrą paštu (priminimas) ActionAC_CLO=Uždaryti ActionAC_EMAILING=Siųsti masinį e-laišką -ActionAC_COM=Send sales order by mail +ActionAC_COM=Pardavimo užsakymą siųskite paštu ActionAC_SHIP=Siųsti pakrovimo dokumentus paštu -ActionAC_SUP_ORD=Send purchase order by mail -ActionAC_SUP_INV=Send vendor invoice by mail +ActionAC_SUP_ORD=Pirkimo užsakymą siųsti paštu +ActionAC_SUP_INV=Pardavėjo sąskaitą faktūrą siųsti paštu ActionAC_OTH=Kitas ActionAC_OTH_AUTO=Other auto -ActionAC_MANUAL=Events inserted manually (by a user) -ActionAC_AUTO=Events inserted automatically +ActionAC_MANUAL=Rankiniu būdu (naudotojo) įterpti įvykiai +ActionAC_AUTO=Automatiškai įterpiami įvykiai ActionAC_OTH_AUTOShort=Kiti ActionAC_EVENTORGANIZATION=Event organization events Stats=Pardavimų statistika StatusProsp=Plano būklė DraftPropals=Komercinių pasiūlymų projektai NoLimit=Be apribojimų -ToOfferALinkForOnlineSignature=Link for online signature +ToOfferALinkForOnlineSignature=Nuoroda į elektroninį parašą WelcomeOnOnlineSignaturePageProposal=Welcome to the page to accept commercial proposals from %s -WelcomeOnOnlineSignaturePageContract=Welcome to %s Contract PDF Signing Page +WelcomeOnOnlineSignaturePageContract=Sveiki atvykę į %s sutarties PDF pasirašymo puslapį WelcomeOnOnlineSignaturePageFichinter=Welcome to %s Intervention PDF Signing Page -ThisScreenAllowsYouToSignDocFromProposal=This screen allow you to accept and sign, or refuse, a quote/commercial proposal +WelcomeOnOnlineSignaturePageSociete_rib=Welcome to %s SEPA mandate PDF Signing Page +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page +ThisScreenAllowsYouToSignDocFromProposal=Šiame lange galite priimti ir pasirašyti arba atmesti pasiūlymą ir (arba) komercinį pasiūlymą. ThisScreenAllowsYouToSignDocFromContract=This screen allow you to sign contract on PDF format online. ThisScreenAllowsYouToSignDocFromFichinter=This screen allow you to sign intervention on PDF format online. +ThisScreenAllowsYouToSignDocFromSociete_rib=This screen allow you to sign SEPA Mandate on PDF format online. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=This is information on document to accept or refuse ThisIsInformationOnDocumentToSignContract=This is information on contract to sign ThisIsInformationOnDocumentToSignFichinter=This is information on intervention to sign +ThisIsInformationOnDocumentToSignSociete_rib=This is information on SEPA Mandate to sign +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Signature of quote/commercial proposal %s SignatureContractRef=Signature of contract %s SignatureFichinterRef=Signature of intervention %s +SignatureSociete_ribRef=Signature of SEPA Mandate %s FeatureOnlineSignDisabled=Feature for online signing disabled or document generated before the feature was enabled +NoSignature=Nepasirašyta +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/lt_LT/dict.lang b/htdocs/langs/lt_LT/dict.lang index 3a7d098f819..302a0d84061 100644 --- a/htdocs/langs/lt_LT/dict.lang +++ b/htdocs/langs/lt_LT/dict.lang @@ -158,7 +158,7 @@ CountryMX=Meksika CountryFM=Mikronezija CountryMD=Moldova CountryMN=Mongolija -CountryMS=Monseratas +CountryMS=Montserrat CountryMZ=Mozambikas CountryMM=Myanmar (Burma) CountryNA=Namibija @@ -233,7 +233,7 @@ CountryUY=Urugvajus CountryUZ=Uzbekistanas CountryVU=Vanuatu CountryVE=Venesuela -CountryVN=Vietnamas +CountryVN=Vietnam CountryVG=Didžiosios Britanijos Mergelių salos CountryVI=Mergelių salos, JAV CountryWF=Volisas ir Futūna diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang index a364910191d..40ce9e26025 100644 --- a/htdocs/langs/lv_LV/admin.lang +++ b/htdocs/langs/lv_LV/admin.lang @@ -365,7 +365,7 @@ UpdateServerOffline=Atjaunināšanas serveris bezsaistē WithCounter=Pārvaldīt skaitītāju GenericMaskCodes=Jūs varat ievadīt jebkuru numerācijas masku. Šajā maskā var izmantot šādus tagus:
{000000} atbilst skaitlim, kas tiks palielināts katrā %s. Ievadiet tik daudz nulles, cik vēlamais skaitītāja garums. Skaitītāju aizpildīs ar nulli no kreisās puses, lai tajā būtu tikpat daudz nulles kā maskā.
{000000 + 000} tāds pats kā iepriekšējais, bet nobīde, kas atbilst skaitlim pa labi no zīmes +, tiek piemērota, sākot ar pirmo %s.
{000000 @ x} tāds pats kā iepriekšējais, bet skaitītājs tiek atiestatīts uz nulli, kad ir sasniegts mēnesis x (x no 1 līdz 12, vai 0, lai izmantotu jūsu konfigurācijā definētos fiskālā gada sākuma mēnešus, vai no 99 līdz katru mēnesi atiestatīt uz nulli). Ja tiek izmantota šī opcija un x ir 2 vai lielāks, ir nepieciešama arī secība {yy} {mm} vai {gggg} {mm}.
{dd} diena (no 01 līdz 31).
{mm} mēnesis (no 01 līdz 12).
{yy} , {yyyy} vai {y} a09a4b
GenericMaskCodes2= {cccc} klienta kods uz n rakstzīmēm
{cccc000} a09a4b739f17fz Šis klientam veltītais skaitītājs tiek atiestatīts vienlaikus ar globālo skaitītāju.
{tttt} Trešās puses tipa kods uz n rakstzīmēm (skatiet izvēlni Sākums - Iestatīšana - Vārdnīca - Trešo personu veidi). Ja pievienosit šo tagu, katram trešās puses tipam skaitītājs būs atšķirīgs.
-GenericMaskCodes2b={uuuu} the n first characters of the lastname of the user that creates the object (n is number of "u"). +GenericMaskCodes2b={uuuu} tā lietotāja uzvārda n pirmās rakstzīmes izveido objektu (n ir "u" skaitlis). GenericMaskCodes3=Visas citas rakstzīmes masku paliks neskartas.
Atstarpes nav atļautas.
GenericMaskCodes3EAN=Visas pārējās maskas rakstzīmes paliks neskartas (izņemot * vai? EAN13 13. pozīcijā).
Atstarpes nav atļautas.
EAN13, pēdējam rakstzīmei pēc pēdējā} 13. pozīcijā jābūt * vai? . To aizstās aprēķinātā atslēga.
GenericMaskCodes4a=Piemērs par trešās puses TheCompany 99. piemēru %s ar datumu 2023. 01.31.:
@@ -374,8 +374,8 @@ GenericMaskCodes4c=Piemērs par produktu, kas izveidots 2023.01.31.:
GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC2301-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX GenericMaskCodes5b=IN{yy}{mm}-{0000}-{t} will give IN2301-0099-A if the type of company is 'Responsable Inscripto' with code for type that is 'A_RI' GenericNumRefModelDesc=Atgriež pielāgojamu numuru atbilstoši noteiktajai maskai. -DateStartThatModel=Disable use of this numbering rule for all thirdparties created before -DateStartThatModelHelp=You can disable elephant numbering rule for thirdparties created before a date (for example, because they were imported by a migration, from another software using a different rule). Let that field empty to have the rule applied on all thirdparties. +DateStartThatModel=Atspējot šīs numerācijas kārtulas izmantošanu visām iepriekš izveidotajām trešajām pusēm +DateStartThatModelHelp=Varat atspējot ziloņu numerācijas kārtulu trešajām pusēm, kas izveidotas pirms datuma (piemēram, tāpēc, ka tās tika importētas migrācijas rezultātā, no citas programmatūras, izmantojot citu kārtulu). Ļaujiet šim laukam iztukšot, lai kārtula tiktu piemērota visām trešajām pusēm. ServerAvailableOnIPOrPort=Serveris ir pieejams adresē %s ports %s ServerNotAvailableOnIPOrPort=Serveris nav pieejams adresē %s ports %s DoTestServerAvailability=Pārbaudīt servera savienojumu @@ -458,9 +458,9 @@ ExtrafieldSelect=Izvēlēties sarakstu ExtrafieldSelectList=Izvēlieties kādu no tabulas ExtrafieldSeparator=Atdalītājs (nevis lauks) ExtrafieldPassword=Parole -ExtrafieldRadio=Radio buttons (1 choice only) -ExtrafieldCheckBox=Select list (n choices) -ExtrafieldCheckBoxFromList=Select from table (n choices) +ExtrafieldRadio=Radio pogas (tikai 1 izvēle) +ExtrafieldCheckBox=Atlasīt sarakstu (n izvēles) +ExtrafieldCheckBoxFromList=Atlasīt no tabulas (n izvēles) ExtrafieldLink=Saite uz objektu ExtrafieldPointGeo=Ģeometriskais punkts ExtrafieldMultiPointGeo=Ģeometriski daudzpunktu @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Vērtību sarakstam jābūt rindām ar formāta atslē ExtrafieldParamHelpcheckbox=Vērtību sarakstam jābūt rindām ar formāta atslēgu, vērtība (kur atslēga nevar būt '0')

, piemēram,: 1, vērtība1
2, vērtība2
3, vērtība3 < br> ... ExtrafieldParamHelpradio=Vērtību sarakstam jābūt rindām ar formāta atslēgu, vērtība (kur atslēga nevar būt '0')

, piemēram,: 1, vērtība1
2, vērtība2
3, vērtība3 < br> ... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametriem jābūt ObjectName: Classpath
Sintakse: ObjectName: Classpath ExtrafieldParamHelpSeparator=Vienkārša atdalītāja atstāšana tukša
Iestatiet to uz 1 sabrūkošajam atdalītājam (pēc noklusējuma atveriet jaunu sesiju, pēc tam katras lietotāja sesijai tiek saglabāts statuss)
Iestatiet to uz 2 sabrukušajam atdalītājam (jaunajai sesijai pēc noklusējuma sabrūk, pēc tam katras lietotāja sesijas laikā tiek saglabāts statuss) LibraryToBuildPDF=Bibliotēka, ko izmanto PDF veidošanai @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, kam seko saīsināts klienta nosaukums ar ModuleCompanyCodeSupplierDigitaria=%s, kam seko saīsināts piegādātāja nosaukums ar rakstzīmju skaitu: %s piegādātāja grāmatvedības kodam. Use3StepsApproval=Pēc noklusējuma ir jābūt veidotam un apstiprinātam Pirkšanas pasūtījumam no 2 dažādiem lietotājiem (viens solis / lietotājs, lai izveidotu un viens solis / lietotājs apstiprinātu. Ņemiet vērā, ka, ja lietotājam ir gan atļauja izveidot un apstiprināt, viens solis / lietotājs būs pietiekams) . Ar šo opciju varat prasīt trešās pakāpes / lietotāja apstiprinājumu, ja summa ir lielāka par īpašo vērtību (tādēļ būs nepieciešami 3 soļi: 1 = validācija, 2 = pirmais apstiprinājums un 3 = otrais apstiprinājums, ja summa ir pietiekama).
Iestatiet, ka tas ir tukšs, ja pietiek vienam apstiprinājumam (2 pakāpieniem), ja tam vienmēr ir nepieciešams otrais apstiprinājums (3 pakāpieni). UseDoubleApproval=Izmantojiet 3 pakāpju apstiprinājumu, ja summa (bez nodokļiem) ir lielāka par ... -WarningPHPMail=BRĪDINĀJUMS. Iestatījumā e-pasta ziņojumu sūtīšanai no lietojumprogrammas tiek izmantota noklusējuma vispārīgā iestatīšana. Šai izvēlei nav vajadzīgas tehniskas zināšanas, lai pabeigtu iestatīšanu.
Tomēr bieži vien labāk ir iestatīt izejošos e-pastus, lai izmantotu sava e-pasta pakalpojumu sniedzēja e-pasta serveri, nevis noklusējuma iestatījumus vairāki iemesli: +WarningPHPMail=PAZIŅOJUMS. Iestatījumā e-pasta ziņojumu sūtīšanai no lietojumprogrammas tiek izmantota noklusējuma vispārīgā iestatīšana (ko sauc par "%s"). Šai izvēlei nav vajadzīgas tehniskas zināšanas un īpaša iestatīšana.
Tomēr bieži vien labāk ir iestatīt izejošos e-pastus, lai izmantotu citu metodi (ko sauc par %s"), lai izmantotu sava e-pasta pakalpojumu sniedzēja e-pasta serveri, nevis noklusējuma iestatījumu vairāku iemeslu dēļ. WarningPHPMailA=- E-pasta pakalpojumu sniedzēja servera izmantošana palielina jūsu e-pasta uzticamību, tāpēc tas palielina piegādes iespējas, neatzīmējot to kā surogātpastu. -WarningPHPMailB=- Daži e-pasta pakalpojumu sniedzēji (piemēram, Yahoo) neļauj sūtīt e-pastu no cita servera, izņemot viņu pašu serveri. Pašreizējā iestatījumā e-pasta ziņojumu sūtīšanai tiek izmantots lietojumprogrammas serveris, nevis jūsu e-pasta pakalpojumu sniedzēja serveris, tāpēc daži adresāti (kas ir saderīgi ar ierobežojošo DMARC protokolu) jautās jūsu e-pasta pakalpojumu sniedzējam, vai viņi var pieņemt jūsu e-pastu, un dažiem e-pasta pakalpojumu sniedzējiem (piemēram, Yahoo) var atbildēt "nē", jo serveris nav viņu, tāpēc daži no jūsu nosūtītajiem e-pasta ziņojumiem var netikt pieņemti piegādei (esiet piesardzīgs arī attiecībā uz sava e-pasta pakalpojumu sniedzēja sūtīšanas kvotu). +WarningPHPMailB=- Ja jūsu e-pasta domēns (daļa mymaildomain.com uz myname@mymaildomain.com) ir aizsargāts ar SPF + DMARC ierakstu, jūsu e-pasts var tikt atzīmēts kā SPAM, jo jūsu DMARC noteikums ir definēts domēna domēna DNS zonā. sūtītājs (mymaildomain.com) neļauj sūtīt kā vispārējs sūtītājs. Šādā gadījumā jums ir jāatspējo domēna DMARC (vai jāiestata uz p=none, kā to izdarīja @gmail.com) vai, labāk, ja jums ir tehniskās zināšanas, izmantojiet citu metodi, lai nosūtītu e-pastus, izmantojot SMTP. sava e-pasta pakalpojumu sniedzēja serveri. WarningPHPMailC=- Arī sava e-pasta pakalpojumu sniedzēja SMTP servera izmantošana e-pasta ziņojumu sūtīšanai ir interesanta, tāpēc visi no lietojumprogrammas nosūtītie e-pasta ziņojumi tiks saglabāti arī jūsu pastkastes direktorijā Nosūtītie. WarningPHPMailD=Tāpēc ir ieteicams mainīt e-pasta sūtīšanas metodi uz vērtību "SMTP". WarningPHPMailDbis=Ja patiešām vēlaties saglabāt noklusējuma "PHP" metodi e-pasta sūtīšanai, vienkārši ignorējiet šo brīdinājumu vai noņemiet to, %snoklikšķinot šeit%s. 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=Atrasts faktiskais SPF ieraksts (e-pastam %s): %s +WarningPHPMailSPF=Ja domēna nosaukums jūsu sūtītāja e-pasta adresē ir aizsargāts ar SPF ierakstu (jautājiet savam domēna vārda reģistratoram), jums ir jāpievieno šādi IP vai ieraksts sava domēna DNS SPF ierakstā: %s. +WarningPHPMailSPFDMARC=Ja domēna nosaukumu jūsu sūtītāja e-pasta adresē aizsargā DMARC ieraksts, kas atšķiras no p=none (jautājiet savam domēna vārda reģistratoram), jums ir jānoņem savs DMARC ieraksts vai jāiestata uz p=none, piemēram, @gmail.com) vai izmantojiet citu sūtīšanas metodi. +SPFAndDMARCInformation=SPF un DMARC DNS ieraksts galvenajām e-pasta adresēm +ActualMailDNSRecordFound=Atrasts faktiskais %s ieraksts (e-pastam %s): %s ClickToShowDescription=Noklikšķiniet, lai parādītu aprakstu DependsOn=Šim modulim nepieciešams modulis(-i) RequiredBy=Šis modulis nepieciešams modulim (-ļiem) @@ -666,7 +667,7 @@ Module2200Desc=Izmantojiet matemātikas izteiksmes cenu automātiskai ģenerēš Module2300Name=Plānotie darbi Module2300Desc=Plānotais darbavietu vadība (alias cron vai chrono galds) Module2400Name=Pasākumi / darba kārtība -Module2400Desc=Manage manual and automatic events. Use the calendar to record events manually. Log also events automatically for tracking purposes or record manual events or meetings. This is the principal module for good Customer and/or Vendor Relationship Management. +Module2400Desc=Pārvaldiet manuālus un automātiskus notikumus. Izmantojiet kalendāru, lai manuāli ierakstītu notikumus. Reģistrējiet notikumus arī automātiski, lai izsekotu vai ierakstītu manuālus notikumus vai sanāksmes. Šis ir galvenais modulis labas klientu un/vai pārdevēju attiecību pārvaldībai. Module2430Name=Tiešsaistes tikšanās plānošana Module2430Desc=Nodrošina tiešsaistes tikšanās rezervēšanas sistēmu. Tādējādi ikviens var rezervēt tikšanās vietas atbilstoši iepriekš noteiktam diapazonam vai pieejamībai. Module2500Name=DMS / ECM @@ -867,7 +868,7 @@ Permission255=Mainīt citu lietotāju paroli Permission256=Izdzēst vai bloķēt citus lietotājus Permission262=Paplašiniet piekļuvi visām trešajām personām UN to objektiem (ne tikai trešajām personām, kurām lietotājs ir piesaistīts kā tirdzniecības pārstāvis). Permission262b=Nav efektīva ārējiem lietotājiem (vienmēr tikai paši priekšlikumiem, pasūtījumiem, rēķiniem, līgumiem utt.). -Permission262c=Nav spēkā projektiem (tikai noteikumi par projektu atļaujām, redzamību un piešķiršanas jautājumiem). +Permission262c=Nav spēkā projektiem (svarīgi ir tikai noteikumi par projektu atļaujām, redzamību un lietotāju piešķiršanu). Permission263=Paplašiniet piekļuvi visām trešajām pusēm BEZ viņu objektiem (ne tikai trešajām personām, kuru lietotājs ir pārdošanas pārstāvis).
Nav efektīvs ārējiem lietotājiem (vienmēr tikai un vienīgi attiecībā uz priekšlikumiem, pasūtījumiem, rēķiniem, līgumiem utt.)
Nav spēkā projektiem (tikai noteikumi par projekta atļaujām, redzamību un piešķiršanas jautājumiem). Permission271=Lasīt CA Permission272=Lasīt rēķinus @@ -944,7 +945,7 @@ Permission776=Apmaksāt izdevumu pārskatus Permission777=Lasīt visus izdevumu pārskatus (arī lietotāja, kas nav padotie) Permission778=Izveidojiet / mainiet visu izdevumu pārskatus Permission779=Eksportēt izdevumu atskaites -Permission1001=Lasīt krājumus +Permission1001=Izlasiet noliktavas un krājumus Permission1002=Izveidot/labot noliktavas Permission1003=Dzēst noliktavas Permission1004=Lasīt krājumu pārvietošanas @@ -1061,7 +1062,7 @@ Permission54001=Drukāt Permission55001=Lasīt aptaujas Permission55002=Izveidot/labot aptaujas Permission59001=Read commercial margins -Permission59002=Define commercial margins +Permission59002=Definējiet komerciālās normas Permission59003=Read every user margin Permission63001=Lasīt resursus Permission63002=Izveidot/labot resursus @@ -1238,7 +1239,7 @@ CompanyObject=Uzņēmuma objekts IDCountry=ID valsts Logo=Logotips LogoDesc=Galvenais uzņēmuma logotips. Tiks izmantots ģenerētajos dokumentos (PDF, ...) -LogoSquarred=Logotips (kvadrātā) +LogoSquarred=Logotips (kvadrātveida) LogoSquarredDesc=Jābūt kvadrāta ikonai (platums = augstums). Šis logotips tiks izmantots kā iecienītākā ikona vai cita nepieciešamība, piemēram, augšējā izvēlnes joslā (ja displeja iestatījumos tas nav atspējots). DoNotSuggestPaymentMode=Neieteikt NoActiveBankAccountDefined=Nav definēts aktīvs bankas konts @@ -1247,7 +1248,7 @@ BankModuleNotActive=Bankas kontu modulis nav ieslēgts ShowBugTrackLink=Rādīt saiti " %s " ShowBugTrackLinkDesc=Turiet tukšu, lai nerādītu šo saiti, izmantojiet vērtību “github” saitei uz projektu Dolibarr vai tieši definējiet URL “https: // ...” Alerts=Brīdinājumi -DelaysOfToleranceBeforeWarning=Tiek rādīts brīdinājuma brīdinājums... +DelaysOfToleranceBeforeWarning=Tiek rādīts brīdinājums par... DelaysOfToleranceDesc=Iestatiet aizkavi pirms brīdinājuma ikonas %s parādīšanas ekrānā par novēloto elementu. Delays_MAIN_DELAY_ACTIONS_TODO=Plānotie notikumi (darba kārtības notikumi) nav pabeigti Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Projekts nav slēgts laikā @@ -1296,7 +1297,7 @@ SystemInfoDesc=Sistēmas informācija ir dažādi tehniskā informācija jums ti SystemAreaForAdminOnly=Šī sadaļa ir pieejama tikai administratora lietotājiem. Dolibarr lietotāja atļaujas nevar mainīt šo ierobežojumu. CompanyFundationDesc=Rediģējiet sava uzņēmuma / organizācijas informāciju. Kad tas ir izdarīts, noklikšķiniet uz pogas "%s" lapas apakšā. MoreNetworksAvailableWithModule=Iespējojot moduli "Sociālie tīkli", var būt pieejami vairāk sociālo tīklu. -AccountantDesc=Ja jums ir ārējais grāmatvedis / grāmatvedis, varat rediģēt šeit savu informāciju. +AccountantDesc=Ja jums ir ārējais grāmatvedis / grāmatvedis, varat rediģēt šeit informāciju. AccountantFileNumber=Grāmatveža kods DisplayDesc=Šeit var mainīt parametrus, kas ietekmē lietojumprogrammas izskatu un noformējumu. AvailableModules=Pieejamās progrmma / moduļi @@ -1457,7 +1458,7 @@ HRMSetup=HRM moduļa iestatīšana CompanySetup=Uzņēmuma moduļa uzstādīšana CompanyCodeChecker=Klienta/pārdevēja kodu automātiskās ģenerēšanas iespējas AccountCodeManager=Klienta / pārdevēja grāmatvedības kodu automātiskās ģenerēšanas iespējas -NotificationsDesc=Email notifications can be sent automatically on certain events.
Recipients of notifications can be defined: +NotificationsDesc=E-pasta paziņojumus var nosūtīt automātiski par noteiktiem notikumiem.
Paziņojumu saņēmējus var definēt: NotificationsDescUser=* katram lietotājam (lietotāja cilnē "Paziņojumi") NotificationsDescContact=* par trešās puses kontaktpersonām (trešās puses cilnē "Paziņojumi") NotificationsDescGlobal=* vai iestatot globālās e-pasta adreses (moduļa iestatīšanas lapā). @@ -1481,7 +1482,7 @@ BillsNumberingModule=Rēķinu un kredītu piezīmes numerācijas modelis BillsPDFModules=Rēķina dokumentu modeļi BillsPDFModulesAccordindToInvoiceType=Rēķinu dokumentu modeļi atbilstoši rēķina veidam PaymentsPDFModules=Maksājumu dokumentu paraugi -ForceInvoiceDate=Force rēķina datumu apstiprināšanas datuma +ForceInvoiceDate=Rēķina datums kā pārbaudes datums SuggestedPaymentModesIfNotDefinedInInvoice=Ierosinātais maksājuma režīms rēķinā pēc noklusējuma, ja tas nav definēts rēķinā SuggestPaymentByRIBOnAccount=Iesakiet norēķinu ar norēķinu kontu SuggestPaymentByChequeToAddress=Ieteikt maksājumu ar čeku uz @@ -1496,16 +1497,16 @@ InvoiceOptionCategoryOfOperations=Rēķinā parādiet norādi "operāciju katego InvoiceOptionCategoryOfOperationsHelp=Atkarībā no situācijas minējums tiks parādīts šādā formā:
- Darbību kategorija: Preču piegāde
- Darbību kategorija: Pakalpojumu sniegšana
- Darbību kategorija: Jaukts - Preču piegāde un pakalpojumi InvoiceOptionCategoryOfOperationsYes1=Jā, zem adreses bloka InvoiceOptionCategoryOfOperationsYes2=Jā, apakšējā kreisajā stūrī -InvoiceClassifyBilledSupplierOrderWithoutInvoice=Disallow the classification of an order as billed without invoice. -InvoiceClassifyBilledSupplierOrderWithoutInvoiceHelp=An order can be classified as billed by default. If this conf is set to true, it will be not. +InvoiceClassifyBilledSupplierOrderWithoutInvoice=Neatļaut pasūtījuma klasificēšanu kā rēķinu bez rēķina. +InvoiceClassifyBilledSupplierOrderWithoutInvoiceHelp=Pasūtījumu pēc noklusējuma var klasificēt kā rēķinu. Ja šī konf. ir iestatīta uz patiesu, tā nebūs. ##### Supplier Orders ##### -SupplierOrderClassifyBilledWithoutInvoice=Disallow the classification of a purchase order as billed without invoice. -SupplierOrderClassifyBilledWithoutInvoiceHelp=A supplier order can be classified as billed by default. If this conf is set to true, it will be not. +SupplierOrderClassifyBilledWithoutInvoice=Neatļaut pirkuma pasūtījuma klasificēšanu kā tādu, par kuru rēķins ir bez rēķina. +SupplierOrderClassifyBilledWithoutInvoiceHelp=Piegādātāja pasūtījumu pēc noklusējuma var klasificēt kā rēķinu. Ja šī konf. ir iestatīta uz patiesu, tā nebūs. ##### Proposals ##### PropalSetup=Commercial priekšlikumi modulis uzstādīšana ProposalsNumberingModules=Komerciālie priekšlikumu numerācijas modeļi ProposalsPDFModules=Komerciālie priekšlikumu dokumentu modeļi -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payment mode by default if not defined on the proposal +SuggestedPaymentModesIfNotDefinedInProposal=Ieteicamais maksājuma veids pēc noklusējuma, ja priekšlikumā nav definēts FreeLegalTextOnProposal=Brīvais teksts komerciālajos priekšlikumos WatermarkOnDraftProposal=Ūdenszīme projektu komerciālo priekšlikumiem (nav ja tukšs) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1547,8 +1548,8 @@ MemberCodeChecker=Iespējas automātiskai dalībnieku kodu ģenerēšanai AdherentLoginRequired=Pārvaldiet katra dalībnieka pieteikumvārdu/paroli AdherentLoginRequiredDesc=Pievienojiet dalībnieka failam pieteikumvārda un paroles vērtību. Ja dalībnieks ir saistīts ar lietotāju, atjauninot dalībnieka pieteikumvārdu un paroli, tiks atjaunināts arī lietotāja pieteikumvārds un parole. AdherentMailRequired=Lai izveidotu jaunu dalībnieku, nepieciešams e-pasts -MemberSendInformationByMailByDefault=The checkbox to send an email confirmation to members (validation or new subscription) is on by default -MemberCreateAnExternalUserForSubscriptionValidated=Create automatically an external user (with a login to connect to the application) after an online payment of a membership subscription +MemberSendInformationByMailByDefault=Pēc noklusējuma ir ieslēgta izvēles rūtiņa, lai dalībniekiem nosūtītu apstiprinājumu e-pastā (validācija vai jauns abonements). +MemberCreateAnExternalUserForSubscriptionValidated=Pēc dalības abonementa tiešsaistes maksājuma automātiski izveidojiet ārēju lietotāju (ar pieteikšanos, lai izveidotu savienojumu ar lietojumprogrammu). VisitorCanChooseItsPaymentMode=Apmeklētājs var izvēlēties kādu no pieejamajiem maksāšanas veidiem MEMBER_REMINDER_EMAIL=Iespējot automātisku atgādinājumu pa e-pastu par beidzies abonementi. Piezīme. Modulim %s jābūt iespējotai un pareizi iestatītai, lai nosūtītu atgādinājumus. MembersDocModules=Dokumentu veidnes dokumentiem, kas ģenerēti no dalībnieku ieraksta @@ -1875,8 +1876,8 @@ AgendaSetup = Notikumi un kārtības modulis uzstādīšana AGENDA_DEFAULT_FILTER_TYPE = Šādu pasākumu automātiski iestatīt darba kārtības skatā meklēšanas filtūrā AGENDA_DEFAULT_FILTER_STATUS = Automātiski iestatīt šo statusu notikumu skatīšanai darba filtru meklēšanas filtūrā AGENDA_DEFAULT_VIEW = Kuru skatu vēlaties atvērt pēc noklusējuma, izvēloties izvēlni Agenda -AGENDA_EVENT_PAST_COLOR = Pagājušā pasākuma krāsa -AGENDA_EVENT_CURRENT_COLOR = Pašreizējā pasākuma krāsa +AGENDA_EVENT_PAST_COLOR = Pagājuša pasākuma krāsa +AGENDA_EVENT_CURRENT_COLOR = Pašreizēja pasākuma krāsa AGENDA_EVENT_FUTURE_COLOR = Nākotnes pasākuma krāsa AGENDA_REMINDER_BROWSER = Iespējojiet notikuma atgādinājumu lietotāja pārlūkprogrammā (Kad ir atgādinājuma datums, pārlūkprogramma parāda uznirstošo logu. Katrs lietotājs var atspējot šādus paziņojumus pārlūka paziņojumu iestatījumos). AGENDA_REMINDER_BROWSER_SOUND = Iespējot skaņas paziņojumu @@ -1993,10 +1994,10 @@ ExpenseReportsRulesSetup=Moduļa Expense Reports iestatīšana - noteikumi ExpenseReportNumberingModules=Izdevumu pārskatu numerācijas modulis NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. YouMayFindNotificationsFeaturesIntoModuleNotification=Varat atrast e-pasta paziņojumu iespējas, iespējot un konfigurējot moduli "Paziņošana". -TemplatesForNotifications=Emails templates for notifications +TemplatesForNotifications=Paziņojumu e-pasta veidnes ListOfNotificationsPerUser=Automātisko paziņojumu saraksts katram lietotājam* ListOfNotificationsPerUserOrContact=Iespējamo automātisko paziņojumu (par biznesa notikumu) saraksts, kas pieejams katram lietotājam* vai kontaktam** -ListOfFixedNotifications=Global recipients emails for automatic email notifications +ListOfFixedNotifications=Globālie adresātu e-pasta ziņojumi automātiskiem e-pasta paziņojumiem GoOntoUserCardToAddMore=Atveriet lietotāja cilni "Paziņojumi", lai pievienotu vai noņemtu paziņojumus lietotājiem GoOntoContactCardToAddMore=Lai pievienotu vai noņemtu kontaktpersonu / adrešu paziņojumus, dodieties uz trešās puses cilni “Paziņojumi” Threshold=Slieksnis @@ -2032,7 +2033,7 @@ MinimumNoticePeriod=Minimum notice period (Your leave request must be done befor NbAddedAutomatically=Number of days added to counters of users (automatically) each month EnterAnyCode=Šajā laukā ir norāde, lai identificētu līniju. Ievadiet jebkuru izvēlēto vērtību, bet bez īpašām rakstzīmēm. Enter0or1=Ievadiet 0 vai 1 -EnterYesOrNo=Enter Yes or No +EnterYesOrNo=Ievadiet Jā vai Nē 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=Ikonas nosaukums šādā formātā:
- image.png attēla failam pašreizējā motīva direktorijā
- image.png@module ja fails atrodas moduļa direktorijā /img/
- fa-xxx FontAwesome fa-xxx picto
- fontawesome_xxx_fa_color_size FontAwesome fa-xxx attēlam (ar prefiksu, krāsu un izmēru komplektu) @@ -2126,7 +2127,7 @@ MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Kolonnas platums, ja līnijām ir pievienots a MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=Slēpt vienības cenas kolonnu piedāvājuma pieprasījumos MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=Slēpt kopējās cenas kolonnu piedāvājuma pieprasījumos MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=Slēpt vienības cenas kolonnu pirkšanas pasūtījumos -MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on purchase orders +MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Slēpt kopējās cenas kolonnu pirkšanas pasūtījumos MAIN_PDF_NO_SENDER_FRAME=Slēpt adresāta rāmja robežas MAIN_PDF_NO_RECIPENT_FRAME=Paslēpt adresāta adreses rāmja robežas MAIN_PDF_HIDE_CUSTOMER_CODE=Paslēpt klienta kodu @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filtrs, lai notīrītu vērtību (COMPANY_DI DuplicateForbidden=Dublikāts aizliegts RemoveSpecialWords=Izveidojot klientu vai piegādātāju apakškontus, notīriet noteiktus vārdus RemoveSpecialWordsHelp=Pirms klienta vai piegādātāja konta aprēķināšanas norādiet vārdus, kas jātīra. Lieto ";" starp katru vārdu -GDPRContact=Datu aizsardzības inspektors (DPO, datu konfidencialitāte vai GDPR kontakts) +GDPRContact=Datu aizsardzības speciālists (DPO, datu privātuma vai GDPR kontaktpersona, ...) 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ā @@ -2218,7 +2219,7 @@ CreateCandidature=Izveidot darba pieteikumu FormatZip=Pasta indekss MainMenuCode=Izvēlnes ievades kods (mainmenu) ECMAutoTree=Rādīt automātisko ECM koku -OperationParamDesc=Definējiet kārtulas, kas jāizmanto, lai izvilktu dažus darbības datus vai iestatītu vērtības.

Piemērs uzņēmuma nosaukuma izvilkšanai no e-pasta tēmu pagaidu mainīgajā:
tmp_var=EXTRACT:SUBJECT:Ziņojums no uzņēmuma ([^\n]*)

Piemēri izveidojamā objekta rekvizītu iestatīšanai:
objproperty1=SET: stingri kodēta vērtība
objproperty2=SET:__tmp_var__
objvalue:3=aIFEMP ir iestatīts tikai tad, ja rekvizīts vēl nav definēts)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My uzņēmuma nosaukums ir\\ s([^\\s]*)

Izmantojiet jaunu rindiņu, lai izvilktu vai iestatītu vairākus rekvizītus. +OperationParamDesc=Definējiet kārtulas, kas jāizmanto, lai izvilktu dažus darbības datus vai iestatītu vērtības.

Piemērs virknes izvilkšanai no e-pasta. galvene, tēma vai pamatteksts pagaidu mainīgajā:
tmp_var1=EXTRACT:HEADER:Mans regulārais izteiksme ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:Mans atsauce ([^\n]*)
tmp_var3=EXTRACT:BODY:Mans regex ([^\n]*)

Piemēri izveidojamā objekta rekvizītu iestatīšanai:
objproperty1=SET: stingri kodēta vērtība
objproperty2=SET:__tmp_var__
objvalue:3=aIFEMP ir iestatīts tikai tad, ja rekvizīts vēl nav definēts)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My uzņēmuma nosaukums ir\\ s([^\\s]*)

Izmantojiet jaunu rindiņu, lai izvilktu vai iestatītu vairākus rekvizītus. OpeningHours=Darba laiks OpeningHoursDesc=Ievadiet šeit sava uzņēmuma pastāvīgo darba laiku. ResourceSetup=Resursu moduļa konfigurēšana @@ -2264,7 +2265,7 @@ LargerThan=Lielāks nekā IfTrackingIDFoundEventWillBeLinked=Ņemiet vērā: ja e-pastā tiek atrasts objekta izsekošanas ID vai ja e-pasts ir atbilde uz e-pasta ziņojumu, kas jau ir savākts un saistīts ar objektu, izveidotais notikums tiks automātiski saistīts ar zināmo saistīto objektu. WithGMailYouCanCreateADedicatedPassword=Ja esat iespējojis 2 pakāpju validāciju, izmantojot Gmail kontu, ieteicams lietojumprogrammai izveidot īpašu otro paroli, nevis izmantot sava konta paroli vietnē https://myaccount.google.com/. EmailCollectorTargetDir=Var būt vēlama e-pasta pārvietošana uz citu tagu/direktoriju, kad tas tika veiksmīgi apstrādāts. Vienkārši iestatiet šeit direktorija nosaukumu, lai izmantotu šo funkciju (NELIETOJIET speciālās rakstzīmes nosaukumā). Ņemiet vērā, ka jums ir jāizmanto arī lasīšanas/rakstīšanas pieteikšanās konts. -EmailCollectorLoadThirdPartyHelp=Varat izmantot šo darbību, lai izmantotu e-pasta saturu, lai atrastu un ielādētu esošu trešo pusi savā datu bāzē (meklēšana tiks veikta definētajā rekvizītā starp 'id', 'name', 'name_alias', 'email'). Atrastā (vai izveidotā) trešā puse tiks izmantota šādām darbībām, kurām tā ir nepieciešama.
Piemēram, ja vēlaties izveidot trešo pusi ar nosaukumu, kas izvilkts no virknes " Nosaukums: vārds, kas jāatrod, izmantojiet sūtītāja e-pastu kā e-pastu, parametra lauku varat iestatīt šādi:
'email=HEADER:^No:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Varat izmantot šo darbību, lai izmantotu e-pasta saturu, lai atrastu un ielādētu esošu trešo pusi savā datu bāzē (meklēšana tiks veikta definētajā rekvizītā starp 'id', 'name', 'name_alias', 'email'). Atrastā (vai izveidotā) trešā puse tiks izmantota šādām darbībām, kurām tā ir nepieciešama.
Piemēram, ja vēlaties izveidot trešo pusi ar nosaukumu, kas izvilkts no virknes " Nosaukums: meklējamais vārds' ir iekļauts pamattekstā, izmantojiet sūtītāja e-pasta adresi kā e-pastu, parametra lauku varat iestatīt šādi:
'email=EXTRACT:HEADER:^No: (.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Brīdinājums: daudzi e-pasta serveri (piemēram, Gmail), meklējot virknē, veic pilnu vārdu meklēšanu un neatgriezīs rezultātu, ja virkne tiks atrasta tikai daļēji. Arī šī iemesla dēļ speciālo rakstzīmju izmantošana meklēšanas kritērijos tiks ignorēta, ja tie nav daļa no esošajiem vārdiem.
Lai veiktu vārda izslēgšanu (ja vārds tiks nosūtīts atpakaļ e-pastā nav atrasts), varat izmantot ! rakstzīme pirms vārda (var nedarboties dažos pasta serveros). EndPointFor=Beigu punkts %s: %s DeleteEmailCollector=Dzēst e-pasta kolekcionāru @@ -2272,14 +2273,14 @@ ConfirmDeleteEmailCollector=Vai tiešām vēlaties dzēst šo e-pasta kolekcion RecipientEmailsWillBeReplacedWithThisValue=Adresātu e-pasti vienmēr tiks aizstāti ar šo vērtību AtLeastOneDefaultBankAccountMandatory=Jādefinē vismaz 1 noklusējuma bankas konts RESTRICT_ON_IP=Atļaut API piekļuvi tikai noteiktiem klientu IP adresēm (aizstājējzīme nav atļauta, izmantojiet atstarpi starp vērtībām). Tukšs nozīmē, ka var piekļūt katrs klients. -StaticIPsOfUsers=If applicable, list of all static IPs of users +StaticIPsOfUsers=Ja piemērojams, visu statisko lietotāju IP saraksts IPListExample=127.0.0.1 192.168.0.2 [:: 1] BaseOnSabeDavVersion=Balstīts uz bibliotēkas SabreDAV versiju NotAPublicIp=Nav publiskā IP MakeAnonymousPing=Izveidojiet anonīmu Ping '+1' Dolibarr pamata serverim (to veic tikai vienu reizi pēc instalēšanas), lai fonds varētu uzskaitīt Dolibarr instalācijas skaitu. FeatureNotAvailableWithReceptionModule=Funkcija nav pieejama, ja ir iespējota moduļa uztveršana EmailTemplate=E-pasta veidne -EmailTemplateHelp=You can create emails templates from menu %s - %s +EmailTemplateHelp=E-pasta veidnes varat izveidot izvēlnē %s - %s EMailsWillHaveMessageID=E-pastiem būs galvene "Ziņojuma ID", kas atbilst šai sintaksei PDF_SHOW_PROJECT=Parādīt projektu dokumentā ShowProjectLabel=Projekta etiķete @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Trešās puses nosaukums — trešās puses aizstājvārds ALIAS_THIRDPARTY=Trešās puses aizstājvārds — trešās puses nosaukums PDFIn2Languages=Rādīt PDF faila iezīmes 2 dažādās valodās (šī funkcija var nedarboties dažās valodās) 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 +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Šeit ievadiet FontAwesome ikonas kodu. Ja jūs nezināt, kas ir FontAwesome, varat izmantot vispārīgo vērtību fa-adrešu grāmata. RssNote=Piezīme. Katra RSS plūsmas definīcija nodrošina logrīku, kas jums jāiespējo, lai tas būtu pieejams informācijas panelī JumpToBoxes=Pāriet uz Iestatīšana -> logrīki @@ -2395,8 +2396,8 @@ INVOICE_ADD_EPC_QR_CODEMore=Šī funkcija ļauj rēķiniem pievienot vai noņemt INVOICE_ADD_EPC_QR_CODEPay=Skenējiet šo QR kodu, lai norēķinātos ar viedtālruni, kas atbalsta maksājumu ar EPC QR kodu. INVOICE_SHOW_SHIPPING_ADDRESS=Rādīt piegādes adresi INVOICE_SHOW_SHIPPING_ADDRESSMore=Obligāta norāde dažās valstīs (Francijā, ...) -SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Show billing contact on proposal -SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=By default the contact only appears for billing +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Rādīt norēķinu kontaktpersonu priekšlikumā +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=Pēc noklusējuma kontaktpersona tiek rādīta tikai norēķ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 DarkThemeMode=Tumšā motīva režīms @@ -2430,7 +2431,7 @@ CssOnEdit=CSS rediģēšanas lapās CssOnView=CSS skata lapās CssOnList=CSS sarakstos HelpCssOnEditDesc=CSS, kas izmantots, rediģējot lauku.
Piemērs: "minwiwdth100 maxwidth500 widthcentpercentminusx" -HelpCssOnViewDesc=The CSS used when viewing the field.
Example: "longmessagecut" +HelpCssOnViewDesc=CSS, ko izmanto, skatot lauku.
Piemērs: "longmessagecut" HelpCssOnListDesc=CSS, ko izmanto, ja lauks atrodas saraksta tabulā.
Piemērs: "tdoverflowmax200" RECEPTION_PDF_HIDE_ORDERED=Slēpt pasūtīto daudzumu uz ģenerētajiem pieņemšanas dokumentiem MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Parādiet cenu uz ģenerētajiem pieņemšanas dokumentiem @@ -2487,8 +2488,8 @@ ExportUseForceHelp=Piespiedu kārtā turpināt eksportēšanu pat tad, ja tiek a CustomPrompt=Pielāgotas uzvednes AiDescription=AI (mākslīgā intelekta) funkcijas AiDescriptionLong=Nodrošina AI (mākslīgā intelekta) funkcijas dažādās lietojumprogrammas daļās. Nepieciešama ārēja AI API. -AI_API_KEY=AI api atslēga -AI_API_URL=Endpoint URL for AI api +AI_API_KEY=AI api atslēga +AI_API_URL=AI API galapunkta URL AI_API_SERVICE=Pakalpojums, ko izmantot AI funkcijām AiSetup=AI moduļa iestatīšana AiCustomPrompt=AI pielāgota uzvedne @@ -2496,7 +2497,7 @@ AI_CONFIGURATIONS_PROMPT=Pielāgota uzvedne TextGeneration=Teksta ģenerēšana ImageGeneration=Attēlu ģenerēšana VideoGeneration=Video ģenerēšana -AudioGeneration=Audio generation +AudioGeneration=Audio ģenerēšana AIPromptForFeatures=AI pielāgotas funkcijas EnterAnIP=Ievadiet IP adresi ConvertInto=Pārvērst par @@ -2517,39 +2518,44 @@ SendToUrl=Sūtīt uz URL WebsiteTemplateWasCopied=Vietnes veidne(-es) "%s", ko nodrošina šis modulis, ir saglabātas vietņu veidņu direktorijā (/doctemplates/websites) un ir gatavas importēšanai kā jauna tīmeklī. vietne. EnabledByDefaultAtInstall=Pēc noklusējuma ir iespējots instalēšanas laikā VulnerableToRCEAttack=Jūs esat neaizsargāts pret RCE uzbrukumiem, izmantojot pielāgoto funkciju dol_json_decode -OpenIDconnectSetup=Configuration of the OpenID Connect module -MainAuthenticationOidcClientIdName=Client ID -MainAuthenticationOidcClientIdDesc=OpenID Connect Client ID -MainAuthenticationOidcClientSecretName=Client secret -MainAuthenticationOidcClientSecretDesc=OpenID Connect Client Secret -MainAuthenticationOidcScopesName=Scopes -MainAuthenticationOidcScopesDesc=OpenID scopes to allow access to user information -MainAuthenticationOidcAuthorizeUrlName=Authorize URL -MainAuthenticationOidcAuthorizeUrlDesc=(example: https://example.com/oauth2/authorize) -MainAuthenticationOidcTokenUrlName=Token URL -MainAuthenticationOidcTokenUrlDesc=(example: https://example.com/oauth2/token) -MainAuthenticationOidcUserinfoUrlName=User info URL -MainAuthenticationOidcUserinfoUrlDesc=(example: https://example.com/oauth2/userinfo) -MainAuthenticationOidcLogoutUrlName=Logout URL -MainAuthenticationOidcLogoutUrlDesc=(example: https://example.com/oauth2/logout) -MainAuthenticationOidcRedirectUrlName=Redirect URL -MainAuthenticationOidcRedirectUrlDesc=Redirect URL to authorize on the OpenID provider side -MainAuthenticationOidcLogoutRedirectUrlName=Dolibarr logout URL -MainAuthenticationOidcLogoutRedirectUrlDesc=Dolibarr logout URL to authorize on the OpenID provider side -MainAuthenticationOidcLoginClaimName=Login claim -MainAuthenticationOidcLoginClaimDesc=OpenID Connect claim matching the Dolibarr user login. If not set or empty, defaults to email -BlackListWords=Black list of words -AddBlackList=Add to black list -FediverseSetup=Configuration of fediverse section -ConfigImportSocialNetwork=Configuration of social networks compatible with Fediverse -Fediverse=Fediverse -NewSocialNetwork=New Fediverse social network -SocialNetworkUrl=Fediverse API URL -SocialNetworksNote=Each social network definition provides a widget that you must enable to have it available in dashboard -ConfirmDeleteSocialNetwork= Are you sure want to delete this record ? -AnOwnerMustBeSetIfEmailTemplateIsPrivate=An owner must be set if the email template is set as private -ContactsDefaultRoles=For third parties of the "individual" type, a contact can be created simultaneously. Define here the roles that will be systematically assigned to this contact. -MenuDict=Dictionary -AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token -ParamName=Name of parameter -ParamValue=Value of parameter +OpenIDconnectSetup=OpenID Connect moduļa konfigurācija +MainAuthenticationOidcClientIdName=Klienta ID +MainAuthenticationOidcClientIdDesc=OpenID Connect klienta ID +MainAuthenticationOidcClientSecretName=Klienta noslēpums +MainAuthenticationOidcClientSecretDesc=OpenID Connect klienta noslēpums +MainAuthenticationOidcScopesName=Darbības jomas +MainAuthenticationOidcScopesDesc=OpenID darbības jomas, lai nodrošinātu piekļuvi lietotāja informācijai +MainAuthenticationOidcAuthorizeUrlName=Autorizēt URL +MainAuthenticationOidcAuthorizeUrlDesc=(piemērs: https://example.com/oauth2/authorize) +MainAuthenticationOidcTokenUrlName=Token URL +MainAuthenticationOidcTokenUrlDesc=(piemērs: https://example.com/oauth2/token) +MainAuthenticationOidcUserinfoUrlName=Lietotāja informācijas URL +MainAuthenticationOidcUserinfoUrlDesc=(piemērs: https://example.com/oauth2/userinfo) +MainAuthenticationOidcLogoutUrlName=Atteikšanās URL +MainAuthenticationOidcLogoutUrlDesc=(piemērs: https://example.com/oauth2/logout) +MainAuthenticationOidcRedirectUrlName=Novirzīt URL +MainAuthenticationOidcRedirectUrlDesc=Novirzīt URL, lai autorizētu OpenID nodrošinātāja pusē +MainAuthenticationOidcLogoutRedirectUrlName=Dolibarr atteikšanās URL +MainAuthenticationOidcLogoutRedirectUrlDesc=Dolibarr atteikšanās URL, lai autorizētu OpenID nodrošinātāja pusē +MainAuthenticationOidcLoginClaimName=Pieteikšanās prasība +MainAuthenticationOidcLoginClaimDesc=OpenID Connect pretenzija, kas atbilst Dolibarr lietotāja pieteikuminformācijai. Ja tas nav iestatīts vai ir tukšs, pēc noklusējuma tiek rādīts e-pasts +BlackListWords=Melnais vārdu saraksts +AddBlackList=Pievienot melnajam sarakstam +FediverseSetup=Fediversās sadaļas konfigurācija +ConfigImportSocialNetwork=Ar Fediverse saderīgu sociālo tīklu konfigurācija +Fediverse=Fediverss +NewSocialNetwork=Jauns Fediverse sociālais tīkls +SocialNetworkUrl=Fediverse API URL +SocialNetworksNote=Katra sociālā tīkla definīcija nodrošina logrīku, kas ir jāiespējo, lai tas būtu pieejams informācijas panelī +ConfirmDeleteSocialNetwork= Vai tiešām vēlaties dzēst šo ierakstu? +AnOwnerMustBeSetIfEmailTemplateIsPrivate=Ja e-pasta veidne ir iestatīta kā privāta, ir jāiestata īpašnieks +ContactsDefaultRoles=Trešajām "individuālā" tipa personām kontaktu var izveidot vienlaikus. Šeit definējiet lomas, kas tiks sistemātiski piešķirtas šim kontaktam. +MenuDict=Vārdnīca +AddMoreParams=Pievienojiet papildu savienojuma parametrus (sīkfailus, pilnvaras, ...)
Piemērs: marķieris : vērtības marķieris +ParamName=Parametra nosaukums +ParamValue=Parametra vērtība +ConfirmDeleteParamOfSocialNetwork=Vai tiešām vēlaties dzēst šo parametru? +HelpMariaDBToGetPossibleValues=Varat iegūt iespējamo vērtību sarakstu, izpildot šādu SQL komandu: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/lv_LV/commercial.lang b/htdocs/langs/lv_LV/commercial.lang index 3cf7d999ae0..7222f800428 100644 --- a/htdocs/langs/lv_LV/commercial.lang +++ b/htdocs/langs/lv_LV/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Vai tiešām vēlaties dzēst šo notikumu? CardAction=Notikumu kartiņa ActionOnCompany=Saistīts uzņēmums ActionOnContact=Saistītie kontakti +ActionOnUser=Related user TaskRDVWith=Tikšanās ar %s ShowTask=Rādīt uzdevumu ShowAction=Rādīt notikumu @@ -93,3 +94,9 @@ SignatureContractRef=Līguma parakstīšana %s SignatureFichinterRef=Intervences paraksts %s SignatureSociete_ribRef=SEPA mandāta paraksts %s FeatureOnlineSignDisabled=Pirms funkcija tika aktivizēta, funkcija tiešsaistes parakstīšanai ir atspējota vai dokuments ir izveidots +NoSignature=Nav parakstīts +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/lv_LV/companies.lang b/htdocs/langs/lv_LV/companies.lang index 1b66375b205..85e9991fb5b 100644 --- a/htdocs/langs/lv_LV/companies.lang +++ b/htdocs/langs/lv_LV/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr pieteikšanās NoDolibarrAccess=Nav Dolibarr piekļuve ExportDataset_company_1=Trešās puses (uzņēmumi/fondi/fiziskie cilvēki) un to īpašības ExportDataset_company_2=Kontakti un to īpašības +ExportDataset_company_3=Trešo pušu bankas konti ImportDataset_company_1=Trešās puses un to īpašības ImportDataset_company_2=Trešo pušu papildu kontakti/adreses un atribūti ImportDataset_company_3=Trešo pušu bankas konti diff --git a/htdocs/langs/lv_LV/datapolicy.lang b/htdocs/langs/lv_LV/datapolicy.lang index 3acddd06505..766a606d24d 100644 --- a/htdocs/langs/lv_LV/datapolicy.lang +++ b/htdocs/langs/lv_LV/datapolicy.lang @@ -33,7 +33,7 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Iespējamais/klients DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ne potenciālais/ne klients DATAPOLICY_CONTACT_FOURNISSEUR = Piegādātājs DATAPOLICY_ADHERENT = Dalībnieks -DATAPOLICY_Tooltip_SETUP = Saziņas veids — norādiet savu izvēli katram veidam. +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Jūs varat nosūtīt GDPR e-pastu uz visām jūsu attiecīgajām kontaktpersonām (kuras vēl nav saņēmušas e-pastu un kurām neesat reģistrējis neko par viņu GDPR līgumu). Lai to izdarītu, izmantojiet šo pogu. SendAgreement = Sūtīt ēpastus AllAgreementSend = Visi e-pasti ir nosūtīti diff --git a/htdocs/langs/lv_LV/dict.lang b/htdocs/langs/lv_LV/dict.lang index 1d46c33a273..689d79f5890 100644 --- a/htdocs/langs/lv_LV/dict.lang +++ b/htdocs/langs/lv_LV/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=KZP franki CurrencySingXPF=CFP Franc CurrencyCentEUR=centi CurrencyCentSingEUR=cents -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=tūkstošais #### Input reasons ##### DemandReasonTypeSRC_INTE=Internets diff --git a/htdocs/langs/lv_LV/errors.lang b/htdocs/langs/lv_LV/errors.lang index 6e6b8aaf9f9..e05aa58a8bb 100644 --- a/htdocs/langs/lv_LV/errors.lang +++ b/htdocs/langs/lv_LV/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Lietotājam ir jāpiešķir uzdevums, lai varētu iev ErrorTaskAlreadyAssigned=Uzdevums jau ir piešķirts lietotājam ErrorModuleFileSeemsToHaveAWrongFormat=Šķiet, ka moduļu pakotne ir nepareizā formātā. ErrorModuleFileSeemsToHaveAWrongFormat2=Vismaz vienam obligātajam direktorijam jābūt moduļa ZIP failā : %s vai %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Moduļu pakotnes nosaukums (%s) neatbilst paredzētai sintaksei: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Kļūda, dublikātu izraisītāja nosaukums %s. Jau piekrauts no %s. ErrorNoWarehouseDefined=Kļūda, noliktavas nav definētas. ErrorBadLinkSourceSetButBadValueForRef=Izmantotā saite nav derīga. Maksājuma avots ir definēts, bet "ref" vērtība nav derīga. @@ -422,3 +422,4 @@ OperNotDefined=Maksājuma veids nav definēts ErrorThisContactXIsAlreadyDefinedAsThisType=%s jau ir definēts kā šī veida kontaktpersona. ErrorThisGroupIsAlreadyDefinedAsThisType=Kontaktpersonas ar šo grupu jau ir definētas kā kontaktpersonas šim veidam. EmptyMessageNotAllowedError=Tukšs ziņojums nav atļauts +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/lv_LV/mails.lang b/htdocs/langs/lv_LV/mails.lang index 5b1e8d706d5..ac6ef55ab7a 100644 --- a/htdocs/langs/lv_LV/mails.lang +++ b/htdocs/langs/lv_LV/mails.lang @@ -32,6 +32,8 @@ NewMailing=Jauna e-pasta vēstuļu sūtīšana NewSMSing=Jauna sms EditMailing=Labot pasta vēstuļu sūtīšanu ResetMailing=Vēlreiz nosūtīt e-pastu +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Dzēst pasta vēstuļu sūtīšanas PreviewMailing=Preview pasta vēstuļu sūtīšanas CreateMailing=Izveidot e-pastu @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=E-pasta adresāts ir tukšs WarningNoEMailsAdded=Nav jaunu e-pastu, lai pievienotu adresātu sarakstā. ConfirmValidMailing=Vai tiešām vēlaties apstiprināt šo e-pasta ziņojumu? ConfirmResetMailing=Brīdinājums, atkārtoti inicializējot e-pastu %s , jūs ļausit atkārtoti nosūtīt šo e-pastu lielapjoma pastā. Vai tiešām vēlaties to darīt? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Vai tiešām vēlaties dzēst šo e-pasta ziņojumu? NbOfUniqueEMails=Unikālo e-pasta ziņojumu skaits NbOfUniquePhones=Unikālo tālruņu skaits @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Vairs nav adresātu, kam nosūtīt e-pastu EmailOptedOut=E-pasta īpašnieks ir pieprasījis vairs nesazināties ar viņu, izmantojot šo e-pasta ziņojumu EvenUnsubscribe=Iekļaujiet atteikšanās e-pasta ziņojumus EvenUnsubscribeDesc=Iekļaujiet atteikšanās e-pastus, kad atlasāt e-pastus kā mērķus. Noder, piemēram, obligātajiem pakalpojumu e-pastiem. -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) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Varat izveidot dažus norādījumus savam e-pastam (piemērs: ģenerējiet attēlu e-pasta veidnē...) ModelTemplate=E-pasta veidne YouCanChooseAModelForYouMailContent= Varat izvēlēties vienu no veidņu modeļiem vai ģenerēt to ar AI TitleOfMailHolder=E-pasta virsraksts ir šeit ContentOfMailHolder=E-pasta saturs nonāk šeit... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/lv_LV/sendings.lang b/htdocs/langs/lv_LV/sendings.lang index 9f9ecc98587..985c1e62626 100644 --- a/htdocs/langs/lv_LV/sendings.lang +++ b/htdocs/langs/lv_LV/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=Noliktavā nav atrasts neviens produkts, kas pared WeightVolShort=Svars / tilp. ValidateOrderFirstBeforeShipment=Vispirms jums ir jāapstiprina pasūtījums, lai varētu veikt sūtījumus. NoLineGoOnTabToAddSome=Nav rindiņas, atveriet cilni %s, lai pievienotu -CreateInvoiceForThisCustomerFromSendings=Rēķinu nosūtīšana +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=Ja rēķina apstiprināšana ir “Nē”, nosūtīšanas statuss būs “Bez rēķina”, līdz rēķins tiks apstiprināts. OptionToSetSendingBilledNotEnabled=Nav iespējota opcija no moduļa Workflow, lai pēc rēķina apstiprināšanas automātiski iestatītu sūtīšanu uz 'Rēķins', tāpēc pēc rēķina ģenerēšanas jums būs manuāli jāiestata sūtījumu statuss uz 'Rēķins'. diff --git a/htdocs/langs/lv_LV/stripe.lang b/htdocs/langs/lv_LV/stripe.lang index 70afd73abcc..4d20cad8ebf 100644 --- a/htdocs/langs/lv_LV/stripe.lang +++ b/htdocs/langs/lv_LV/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL, kas piedāvā %s tiešsaistes ma ToOfferALinkForOnlinePaymentOnFreeAmount=URL, lai piedāvātu %s tiešsaistes maksājumu lapu par jebkuru summu, kurai nav esoša objekta ToOfferALinkForOnlinePaymentOnMemberSubscription=URL, lai piedāvātu %s tiešsaistes maksājuma lapu dalībnieka abonementam ToOfferALinkForOnlinePaymentOnDonation=URL, lai piedāvātu tiešsaistes maksājuma lapu %s ziedojuma samaksai -YouCanAddTagOnUrl=Varat arī pievienot URL parametru & tag = vērtību jebkuram no šiem URL (obligāts tikai maksājumam, kas nav saistīts ar objektu), lai pievienotu savu maksājuma komentāra tagu.
Maksājumu URL, kuriem nav neviena objekta, varat pievienot arī parametru & noidempotency = 1, lai vienu un to pašu saiti ar vienu tagu varētu izmantot vairākas reizes (dažos maksājuma režīmos var būt ierobežots maksājums līdz 1 par katru atšķirīgo saiti bez šī parametra). +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) YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Set up your Stripe ar url %s , lai maksājums tiktu izveidots automātiski, ja to apstiprina Stripe. AccountParameter=Konta parametri diff --git a/htdocs/langs/lv_LV/website.lang b/htdocs/langs/lv_LV/website.lang index a6d4b220de6..77c19ade954 100644 --- a/htdocs/langs/lv_LV/website.lang +++ b/htdocs/langs/lv_LV/website.lang @@ -62,7 +62,7 @@ NoPageYet=Vēl nav nevienas lapas YouCanCreatePageOrImportTemplate=Jūs varat izveidot jaunu lapu vai importēt pilnu vietnes veidni SyntaxHelp=Palīdzība par konkrētiem sintakses padomiem YouCanEditHtmlSourceckeditor=Jūs varat rediģēt HTML avota kodu, izmantojot redaktorā pogu "Avots". -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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
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=Attēlam, kas tiek koplietots ar koplietošanas saiti (atvērta piekļuve, izmantojot faila koplietošanas hash atslēgu), sintakse ir:
<img src = "/ viewimage.php? Hashp = 123456790120f0f0f0f0f0f0c0f0fcfcfcfcfcfcfcfcfcfcfcflcflcfcflcflcfl0f0flffcfcfcflflfcflflflflflflflflflflflflflflflflflflflflflflfcflflflflflflflflflflflflflrlxlrg" " YouCanEditHtmlSource3=To get the URL of the image of a PHP object, use
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/mk_MK/admin.lang b/htdocs/langs/mk_MK/admin.lang index 2bd023a90df..f67f2b869e1 100644 --- a/htdocs/langs/mk_MK/admin.lang +++ b/htdocs/langs/mk_MK/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Параметрите мора да бидат ObjectName:Classpath
Синтакса: ObjectName:Classpath ExtrafieldParamHelpSeparator=Чувајте го празно за едноставен сепаратор
Поставете го ова на 1 за разделувач што се собира (отворен стандардно за нова сесија, а потоа статусот се задржува за секоја корисничка сесија)
Поставете го ова на 2 за сепаратор што се собира (стандардно се собира за нова сесија, а потоа статусот се задржува за секоја корисничка сесија) LibraryToBuildPDF=Библиотека која се користи за генерирање PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s проследено со отсечено ModuleCompanyCodeSupplierDigitaria=%s проследено со отсеченото име на добавувачот според бројот на знаци: %s за сметководствената шифра на добавувачот. Use3StepsApproval=Стандардно, налозите за купување треба да бидат креирани и одобрени од 2 различни корисници (еден чекор/корисник за креирање и еден чекор/корисник за одобрување. Имајте предвид дека ако корисникот има и дозвола за создавање и одобрување, еден чекор/корисник ќе биде доволен) . Може да побарате со оваа опција да се воведе трет чекор/одобрување од корисник, ако износот е поголем од посветената вредност (затоа ќе бидат потребни 3 чекори: 1=валидација, 2=прво одобрување и 3=второ одобрување ако износот е доволен).
Поставете го ова да се испразни ако е доволно едно одобрение (2 чекори), поставете го на многу ниска вредност (0,1) ако секогаш е потребно второ одобрување (3 чекори). UseDoubleApproval=Користете одобрение од 3 чекори кога износот (без данок) е поголем од... -WarningPHPMail=ПРЕДУПРЕДУВАЊЕ: Поставувањето за испраќање е-пошта од апликацијата го користи стандардното генеричко поставување. За овој избор не е потребно техничко знаење за да се заврши поставувањето.
Сепак, често е подобро да се постават појдовните е-пошта за да се користи серверот за е-пошта на вашиот давател на е-пошта наместо стандардното поставување за неколку причини: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: WarningPHPMailA=- Користењето на серверот на давателот на услуги за е-пошта ја зголемува доверливоста на вашата е-пошта, така што ја зголемува испораката без да биде означена како СПАМ -WarningPHPMailB=- Некои даватели на е-пошта (како Yahoo) не дозволуваат да испраќате е-пошта од друг сервер освен нивниот сопствен сервер. Вашето тековно поставување го користи серверот на апликацијата за испраќање е-пошта, а не серверот на вашиот давател на е-пошта, така што некои примачи (оној компатибилен со рестриктивниот протокол DMARC) ќе го прашаат вашиот давател на е-пошта дали може да ја прифатат вашата е-пошта и некои даватели на е-пошта (како Yahoo) може да одговори со „не“ затоа што серверот не е нивен, така што неколку од вашите испратени е-пошта може да не бидат прифатени за испорака (исто така внимавајте на квотата за испраќање на вашиот давател на е-пошта). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Користењето на SMTP серверот на вашиот сопствен давател на е-пошта за испраќање е-пошта е исто така интересно, така што сите пораки испратени од апликацијата исто така ќе бидат зачувани во вашиот директориум „Испратени“ на вашето поштенско сандаче. WarningPHPMailD=Затоа се препорачува да се смени начинот на испраќање на е-пошта на вредноста „SMTP“. WarningPHPMailDbis=Ако навистина сакате да го задржите стандардниот „PHP“ метод за испраќање е-пошта, едноставно игнорирајте го ова предупредување или отстранете го со %sкликнете овде%s. WarningPHPMail2=Ако вашиот давател на е-пошта SMTP треба да го ограничи клиентот за е-пошта на некои IP адреси (многу ретко), ова е IP адресата на корисничкиот агент за пошта (MUA) за вашата ERP CRM апликација: %s. -WarningPHPMailSPF=Ако името на доменот во вашата адреса на е-пошта на испраќачот е заштитено со запис со SPF (прашајте го регистрирачот на име на домен), мора да ги додадете следните IP-адреси во записот SPF на DNS на вашиот домен: %s. -ActualMailSPFRecordFound=Пронајден вистински запис со SPF (за е-пошта %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Кликнете за да се прикаже описот DependsOn=Овој модул има потреба од модул(и) RequiredBy=Овој модул е потребен од модулите @@ -867,7 +868,7 @@ Permission255=Изменете ја лозинката на другите ко Permission256=Избришете или оневозможете други корисници Permission262=Проширете го пристапот до сите трети страни И нивните објекти (не само трети страни за кои корисникот е поврзан како претставник за продажба). Permission262b=Не е ефективно за надворешни корисници (секогаш ограничени на самите себе за предлози, нарачки, фактури, договори итн.). -Permission262c=Не е ефикасен за проекти (само правила за дозволи за проекти, видливост и прашања за доделување). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Проширете го пристапот до сите трети страни БЕЗ нивните објекти (не само трети лица за кои корисникот е застапник за продажба).
Не е ефективно за надворешни корисници (секогаш ограничени на самите себе за предлози, нарачки, фактури, договори, итн.).
Не се ефективни за проекти (само правила за дозволи за проекти, видливост и прашања за доделување). Permission271=Прочитајте CA Permission272=Читајте фактури @@ -944,7 +945,7 @@ Permission776=Извештаи за трошоци за плаќање Permission777=Прочитајте ги сите извештаи за трошоците (дури и оние на корисниците кои не се подредени) Permission778=Креирајте/изменете ги извештаите за трошоците на сите Permission779=Извештаи за извозни трошоци -Permission1001=Читајте акции +Permission1001=Read warehouses and stocks Permission1002=Креирајте/измени магацини Permission1003=Избришете ги магацините Permission1004=Прочитајте ги движењата на акциите @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Регекс филтер до чиста вред DuplicateForbidden=Забрането е дупликат RemoveSpecialWords=Исчистете одредени зборови кога генерирате под-сметки за клиенти или добавувачи RemoveSpecialWordsHelp=Наведете ги зборовите што треба да се исчистат пред да ја пресметате сметката на клиентот или добавувачот. Користи ";" помеѓу секој збор -GDPRContact=Службеник за заштита на податоци (DPO, приватност на податоци или контакт со GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ако складирате лични податоци во вашиот информативен систем, можете да го наведете контактот кој е одговорен за Општата регулатива за заштита на податоците овде HelpOnTooltip=Текст за помош за да се прикаже на советот за алатка HelpOnTooltipDesc=Ставете текст или клуч за превод овде за текстот да се прикаже во совет за алатка кога ова поле ќе се појави во форма @@ -2218,7 +2219,7 @@ CreateCandidature=Креирајте апликација за работа FormatZip=Поштенски MainMenuCode=Код за влез во менито (главно мени) ECMAutoTree=Прикажи автоматско ECM дрво -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Работно време OpeningHoursDesc=Внесете го овде редовното работно време на вашата компанија. ResourceSetup=Конфигурација на модулот за ресурси @@ -2264,7 +2265,7 @@ LargerThan=Поголем од IfTrackingIDFoundEventWillBeLinked=Забележете дека ако ID за следење на објект се најде во е-пошта, или ако е-поштата е одговор на е-пошта веќе собрана и поврзана со објект, креираниот настан автоматски ќе се поврзе со познатиот поврзан објект. WithGMailYouCanCreateADedicatedPassword=Со GMail сметка, доколку сте ја овозможиле валидацијата во 2 чекори, се препорачува да креирате посебна втора лозинка за апликацијата наместо да ја користите лозинката за вашата сметка од https://myaccount.google.com/. EmailCollectorTargetDir=Можеби е посакувано однесување да се премести е-поштата во друга ознака/директориум кога е успешно обработена. Само поставете го името на директориумот овде за да ја користите оваа функција (НЕ користете специјални знаци во името). Имајте предвид дека мора да користите и сметка за најавување за читање/запишување. -EmailCollectorLoadThirdPartyHelp=Можете да го користите ова дејство за да ја користите содржината на е-пошта за да пронајдете и вчитате постоечка трета страна во вашата база на податоци (пребарувањето ќе се изврши на дефинираното својство меѓу „id“, „име“, „име_алиас“, „пошта“). Пронајдената (или создадена) трета страна ќе се користи за следните дејства на кои им е потребна.
На пример, ако сакате да создадете трета страна со име извлечено од низа ' Име: име за наоѓање' присутно во телото, користете ја е-поштата на испраќачот како е-пошта, можете да го поставите полето за параметар вака:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Предупредување: многу сервери за е-пошта (како Gmail) вршат целосни пребарувања на зборови кога бараат низа и нема да вратат резултат ако низата се најде само делумно во зборот. И поради оваа причина, користете специјални знаци во критериумите за пребарување ќе бидат игнорирани доколку не се дел од постоечките зборови.
За да се исклучи пребарувањето на зборот (вратете е-пошта ако зборот не е пронајден), можете да го користите ! знак пред зборот (може да не работи на некои сервери за пошта). EndPointFor=Крајна точка за %s : %s DeleteEmailCollector=Избришете го собирачот на е-пошта @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Име на трета страна - алијас од тре ALIAS_THIRDPARTY=Алијас од трета страна - Име на трета страна PDFIn2Languages=Прикажи етикети во PDF на 2 различни јазици (оваа функција може да не работи на неколку јазици) PDF_USE_ALSO_LANGUAGE_CODE=Ако сакате да имате некои текстови во вашиот PDF дупликат на 2 различни јазици во истиот генериран PDF, мора да го поставите овде овој втор јазик така генериран PDF ќе содржи 2 различни јазици на истата страница, оној избран при генерирање PDF и овој ( само неколку PDF шаблони го поддржуваат ова). Чувајте празно за 1 јазик по PDF. -PDF_USE_A=Генерирајте PDF документи со формат PDF/A наместо стандарден формат PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Внесете го овде кодот на иконата FontAwesome. Ако не знаете што е FontAwesome, можете да ја користите генеричката вредност фа-адрес-книга. RssNote=Забелешка: Секоја дефиниција за RSS довод обезбедува графичка контрола што мора да ја овозможите за да ја имате достапна во контролната табла JumpToBoxes=Скокни до Поставување -> Додатоци @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/mk_MK/datapolicy.lang b/htdocs/langs/mk_MK/datapolicy.lang index 91de10ca7dc..a3490e5fd00 100644 --- a/htdocs/langs/mk_MK/datapolicy.lang +++ b/htdocs/langs/mk_MK/datapolicy.lang @@ -33,7 +33,7 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Проспект/клиент DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ниту потенцијален/ниту клиент DATAPOLICY_CONTACT_FOURNISSEUR = Добавувачот DATAPOLICY_ADHERENT = Член -DATAPOLICY_Tooltip_SETUP = Вид на контакт - Наведете ги вашите избори за секој тип. +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Можете да испратите е-пошта за GDPR до сите ваши релевантни контакти (кои сè уште немаат добиено е-пошта и за кои не сте регистрирале ништо за нивниот договор за GDPR). За да го направите ова, користете го следното копче. SendAgreement = Испратете е-пошта AllAgreementSend = Сите пораки се испратени diff --git a/htdocs/langs/mk_MK/dict.lang b/htdocs/langs/mk_MK/dict.lang index f3b4460909a..0e71388de1f 100644 --- a/htdocs/langs/mk_MK/dict.lang +++ b/htdocs/langs/mk_MK/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=CFP Francs CurrencySingXPF=CFP Franc CurrencyCentEUR=центи CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=thousandth #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/mk_MK/errors.lang b/htdocs/langs/mk_MK/errors.lang index 22a69aa5659..988753c587f 100644 --- a/htdocs/langs/mk_MK/errors.lang +++ b/htdocs/langs/mk_MK/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Корисникот мора да биде доде ErrorTaskAlreadyAssigned=Задачата е веќе доделена на корисникот ErrorModuleFileSeemsToHaveAWrongFormat=Се чини дека пакетот со модули има погрешен формат. ErrorModuleFileSeemsToHaveAWrongFormat2=At least one mandatory directory must exists into zip of module: %s or %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Името на пакетот модул (%s не се совпаѓа) очекувана синтакса на името: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Грешка, дупликат име на активирањето %s. Веќе е вчитан од %s. ErrorNoWarehouseDefined=Грешка, нема дефинирани магацини. ErrorBadLinkSourceSetButBadValueForRef=Врската што ја користите не е валидна. Дефиниран е „извор“ за плаќање, но вредноста за „реф“ не е валидна. @@ -375,7 +375,7 @@ WarningCreateSubAccounts=Предупредување, не можете дир WarningAvailableOnlyForHTTPSServers=Достапно само ако се користи HTTPS обезбедена врска. WarningModuleXDisabledSoYouMayMissEventHere=Модулот %s не е овозможен. Така, може да пропуштите многу настани овде. WarningPaypalPaymentNotCompatibleWithStrict=Вредноста „Строго“ прави функциите за онлајн плаќање да не работат правилно. Наместо тоа, користете „Лакс“. -WarningThemeForcedTo=Предупредување, темата е принудена на %s +WarningThemeForcedTo=Предупредување, темата е принудена на %s WarningPagesWillBeDeleted=Предупредување, ова ќе ги избрише и сите постоечки страници/контејнери на веб-локацијата. Треба да ја извезете вашата веб-локација претходно, за да имате резервна копија за повторно да ја увезете подоцна. WarningAutoValNotPossibleWhenStockIsDecreasedOnInvoiceVal=Автоматската валидација е оневозможена кога опцијата за намалување на залихите е поставена на „Потврда на фактурата“. WarningModuleNeedRefresh = Модулот %s е оневозможен. Не заборавајте да го овозможите @@ -422,3 +422,4 @@ OperNotDefined=Начинот на плаќање не е дефиниран ErrorThisContactXIsAlreadyDefinedAsThisType=%s е веќе дефиниран како контакт за овој тип. ErrorThisGroupIsAlreadyDefinedAsThisType=Контактите со оваа група се веќе дефинирани како контакт за овој тип. EmptyMessageNotAllowedError=Празна порака не е дозволена +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/mk_MK/mails.lang b/htdocs/langs/mk_MK/mails.lang index c3d66017582..eed6c638a51 100644 --- a/htdocs/langs/mk_MK/mails.lang +++ b/htdocs/langs/mk_MK/mails.lang @@ -32,6 +32,8 @@ NewMailing=Ново испраќање е-пошта NewSMSing=Ново смс EditMailing=Уредете е-пошта ResetMailing=Повторно испратете е-пошта +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Избришете е-пошта PreviewMailing=Преглед на е-пошта CreateMailing=Креирајте е-пошта @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Примачот на е-пошта е празен WarningNoEMailsAdded=Нема нова е-пошта за додавање во списокот на примачи. ConfirmValidMailing=Дали сте сигурни дека сакате да го потврдите ова испраќање е-пошта? 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? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Дали сте сигурни дека сакате да ја избришете оваа е-пошта? NbOfUniqueEMails=Број на уникатни е-пошта NbOfUniquePhones=Број на уникатни телефони @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Нема повеќе примач на кој треб EmailOptedOut=Сопственикот на е-пошта побара повеќе да не контактира со него со оваа е-пошта EvenUnsubscribe=Вклучете е-пошта за откажување EvenUnsubscribeDesc=Вклучете е-пошта за откажување кога избирате е-пораки како цели. Корисно за е-пошта за задолжителна услуга, на пример. -XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Можете да направите некои инструкции за вашата е-пошта (пример: генерира слика во шаблон за е-пошта...) ModelTemplate=Шаблон за е-пошта YouCanChooseAModelForYouMailContent= Можете да изберете еден од моделите на шаблони или да генерирате еден со вештачка интелигенција TitleOfMailHolder=Насловот на е-поштата оди овде ContentOfMailHolder=Содржината на е-пошта оди овде... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/mk_MK/sendings.lang b/htdocs/langs/mk_MK/sendings.lang index 44d81552ee8..b4af2377169 100644 --- a/htdocs/langs/mk_MK/sendings.lang +++ b/htdocs/langs/mk_MK/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=No product to ship found in warehouse %s. C WeightVolShort=Тежина/вол. ValidateOrderFirstBeforeShipment=Прво мора да ја потврдите нарачката пред да можете да вршите пратки. NoLineGoOnTabToAddSome=Нема линија, одете на картичката „%s“ за да додадете -CreateInvoiceForThisCustomerFromSendings=Испраќање на сметки +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=Ако валидацијата на фактурата е „Не“, испраќањето ќе остане во статус „Нефактурирана“ додека не се потврди фактурата. OptionToSetSendingBilledNotEnabled=Опцијата од модулот Workflow, автоматски да го поставите испраќањето на „Наплатено“ кога фактурата е потврдена, не е овозможена, така што ќе мора рачно да го поставите статусот на испраќањето на „Наплатено“ откако ќе се генерира фактурата. diff --git a/htdocs/langs/mk_MK/stripe.lang b/htdocs/langs/mk_MK/stripe.lang index 5de81a24402..7835eb89596 100644 --- a/htdocs/langs/mk_MK/stripe.lang +++ b/htdocs/langs/mk_MK/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL за да понуди %s стр ToOfferALinkForOnlinePaymentOnFreeAmount=URL за да понуди %s страница за онлајн плаќање на кој било износ без постоечки објект ToOfferALinkForOnlinePaymentOnMemberSubscription=URL за да понуди %s страница за онлајн плаќање за претплата на член ToOfferALinkForOnlinePaymentOnDonation=URL за да понуди %s страница за онлајн плаќање за плаќање на донација -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) +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) YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Поставете го вашиот Stripe со url %s автоматски се создаваат плаќања потврдено од Stripe. AccountParameter=Account parameters diff --git a/htdocs/langs/mk_MK/website.lang b/htdocs/langs/mk_MK/website.lang index bdbdb4d0e93..065e74c4883 100644 --- a/htdocs/langs/mk_MK/website.lang +++ b/htdocs/langs/mk_MK/website.lang @@ -62,7 +62,7 @@ NoPageYet=Сè уште нема страници YouCanCreatePageOrImportTemplate=Можете да креирате нова страница или да увезете целосен образец на веб-локација SyntaxHelp=Помош за специфични совети за синтакса YouCanEditHtmlSourceckeditor=Можете да го уредувате изворниот код на HTML користејќи го копчето „Извор“ во уредникот. -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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
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=За слика споделена со врска за споделување (отворен пристап користејќи го хаш-клучот за споделување на датотеката), синтаксата е:
<img src="/viewimage.php?hashp=12345679012...">
for eksempel:
1,verdi1
2,verdi2
3,verdi3
... ExtrafieldParamHelpradio=Liste over verdier må være linjer med formatet nøkkel,verdi (hvor nøkkelen ikke kan være '0')

for eksempel:
1,verdi1
2,verdi2
3,verdi3
... ExtrafieldParamHelpsellist=Liste over verdier kommer fra en tabell
Syntaks: table_name:label_field:id_field::filtersql
Eksempel: c_idtypent:libelle: ::filtersql

- id_field er nødvendigvis en primær int-nøkkel
- filtersql er en betingelse. Den må bruke USF-syntaksen. Eksempel: (active:=:1) for å vise bare aktiv verdi
Du kan også bruke $ID$ i filter som er gjeldende ID for gjeldende objekt
Hvis du vil filtrere på ekstrafelt, bruk syntaks extra.fieldcode=... (der feltkode er koden til ekstrafelt)

For å ha listen avhengig av en annen komplementær attributtliste:
libellec:typent id:options_parent_list_code|parent_column:filter

For å ha listen avhengig av en annen liste:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Liste over verdier kommer fra en tabell
Syntaks: table_name:label_field:id_field::filtersql
Eksempel: c_idtypent:libelle: ::filtersql

filter kan være en enkel test (f.eks. active=1 for å bar vise aktiv verdi)
Du kan også bruke $ID$ i filter som er gjeldende ID for gjeldende objekt
For å gjøre et SELECT i filter, bruk $SEL$
hvis du vil filtrere på ekstrafelt, bruk syntaks extra.fieldcode=... (der feltkode er koden til extrafield)

For å ha listen avhengig av en annen komplementær attributtliste:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

For å ha listen avhengig av en annen liste:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametere må være ObjectName:Classpath
Syntaks: ObjectName:Classpath ExtrafieldParamHelpSeparator=Hold tomt for en enkel separator
Sett dette til 1 for en kollaps-separator (åpnes som standard for ny økt, da beholdes status for hver brukerøkt)
Sett dette til 2 for en kollaps-separator (kollapset som standard for ny økt, da holdes status foran hver brukerøkt) LibraryToBuildPDF=Bibliotek brukt for PDF-generering @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s etterfulgt av det avkortede kundenavnet me ModuleCompanyCodeSupplierDigitaria=%s etterfulgt av det avkortede leverandørnavnet med antall tegn: %s for leverandørens regnskapskode. Use3StepsApproval=Som standard må innkjøpsordrer opprettes og godkjennes av 2 forskjellige brukere (ett trinn/bruker for å opprette og ett trinn/bruker for å godkjenne. Merk at hvis brukeren har både tillatelse til å opprette og godkjenne, vil ett trinn/ bruker vil være nok). Du kan bruke dette alternativet for å innføre et tredje trinn/bruker godkjenning, hvis beløpet er høyere enn en spesifisert verdi (så vil 3 trinn være nødvendig: 1=validering, 2=første godkjenning og 3=andre godkjenning dersom beløpet er høyt nok).
Sett denne tom en godkjenning (2 trinn) er nok, sett den til en svært lav verdi (0,1) hvis det alltid kreves en andre godkjenning (3 trinn). UseDoubleApproval=Bruk 3-trinns godkjennelse når beløpet (eks. MVA) er høyere enn... -WarningPHPMail=ADVARSEL: Oppsettet for å sende e-post fra applikasjonen bruker det generelle standardoppsettet. Dette valget trenger ingen teknisk kunnskap for å fullføre oppsettet.
Det er imidlertid ofte bedre å konfigurere utgående e-post for å bruke epost serveren til epost tjenesteleverandøren din i stedet for standardoppsettet av flere grunner: +WarningPHPMail=MERKNAD: Oppsettet for å sende e-post fra applikasjonen bruker standard generisk oppsett (kalt "%s"). Dette valget krever ingen teknisk kunnskap og ingen spesielt oppsett.
Det er imidlertid ofte bedre å sette opp utgående e-poster for å bruke den andre metoden (kalt "%s") for å bruke epost-serveren til epost Tjenesteleverandør, i stedet for standardoppsettet av flere grunner: WarningPHPMailA=- Bruk av serveren til epost tjenesteleverandøren øker påliteligheten til epost, så det øker leveringsevnen uten å bli flagget som SPAM -WarningPHPMailB=- Noen e-posttjenesteleverandører (som Yahoo) tillater ikke at du sender en e-post fra en annen server enn deres egen server. Det nåværende oppsettet ditt bruker serveren til applikasjonen til å sende e-post og ikke serveren til e-postleverandøren din, så noen mottakere (den som er kompatibel med den begrensende DMARC-protokollen) vil spørre e-postleverandøren din om de kan godta e-posten din og noen e-postleverandører (som Yahoo) kan svare "nei" fordi serveren ikke er deres. Noen av de sendte e-postene dine blir kanskje ikke akseptert for levering (vær også oppmerksom på e-postleverandørens sendekvote). +WarningPHPMailB=- Hvis domenet til epost (delen mymaildomain.com i mittnavn@mymaildomain.com) er beskyttet av en SPF + en DMARC-post, kan eposten din bli flagget som SPAM fordi DMARC-regelen din definert i DNS-sonen til domenet til avsenderen (mymaildomain.com) ikke tillater sending som en generisk avsender. I et slikt tilfelle må du deaktivere DMARC for domenet (eller sette den til p=ingen som gjort av @gmail.com) eller, bedre, hvis du har den tekniske kunnskapen, bruke den andre metoden for å sende e-poster ved hjelp av SMTP server til din egen epost-leverandør. WarningPHPMailC=- Ved å bruke SMTP-serveren til din egen e-posttjenesteleverandør for å sende e-post vil alle e-postmeldinger som sendes fra applikasjonen bli lagret i "Sendt"-katalogen i postkassen din. WarningPHPMailD=Det anbefales derfor å endre sendemetoden for e-post til verdien "SMTP". WarningPHPMailDbis=Hvis du virkelig ønsker å beholde standard "PHP"-metoden for å sende e-poster, bare ignorer denne advarselen, eller fjern den ved å %sklikke her%s. 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 (for e-post %s): %s +WarningPHPMailSPF=Hvis domenenavnet i avsenderens epost-adresse er beskyttet av en SPF-post (spør domenenavnsregistratoren), må du legge til følgende IP-er eller oppføring i SPF-posten til DNS av domenet ditt: %s. +WarningPHPMailSPFDMARC=Hvis domenenavnet i epost-adressen til avsenderen din er beskyttet av en annen DMARC-post enn p=none (spør domenenavnsregistratoren), må du fjerne DMARC-posten din, eller angi p=none på samme måte som @gmail.com, eller bruk send med en annen metode. +SPFAndDMARCInformation=SPF og DMARC DNS-post for epost hovedadresser +ActualMailDNSRecordFound=Faktisk %s-post funnet (for epost %s) : %s ClickToShowDescription=Klikk for å vise beskrivelse DependsOn=Denne modulen trenger modulen(ene) RequiredBy=Denne modulen er påkrevd av modul(ene) @@ -867,7 +868,7 @@ Permission255=Opprett/endre egen brukerinformasjon Permission256=Slett eller deaktiver andre brukere Permission262=Utvid tilgangen til alle tredjeparter og deres objekter (ikke bare tredjeparter som brukeren er knyttet til som salgsrepresentant). Permission262b=Ikke effektiv for eksterne brukere (alltid begrenset til seg selv for tilbud, ordre, fakturaer, kontrakter osv.). -Permission262c=Ikke effektiv for prosjekter (bare regler for prosjekttillatelser, synlighet og oppgaverelatert). +Permission262c=Ikke effektiv for prosjekter (bare regler for prosjekttillatelser, synlighet og brukeroppdrag er viktige). Permission263=Utvid tilgangen til alle tredjeparter UTEN deres objekter (ikke bare tredjeparter som brukeren er salgsrepresentant for).
Ikke effektiv for eksterne brukere (alltid begrenset til seg selv for tilbud, ordre, fakturaer, kontrakter osv.).
Ikke effektiv for prosjekter (bare regler for prosjekttillatelser, synlighet og oppgaver). Permission271=Vis CA Permission272=Vis fakturaer @@ -944,7 +945,7 @@ Permission776=Betal utgift Permission777=Les alle utgiftsrapporter (selv de til brukere som ikke er underordnede) Permission778=Lag/endre utgiftsrapporter for alle Permission779=Eksporter utgiftsrapporter -Permission1001=Vis beholdning +Permission1001=Les lager og varer Permission1002=Opprett/endre lager Permission1003=Slett lager Permission1004=Vis lagerbevegelser @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter til ren verdi (COMPANY_DIGITARIA_CLEA DuplicateForbidden=Duplikat forbudt RemoveSpecialWords=Rengjør visse ord når du genererer underkontoer for kunder eller leverandører RemoveSpecialWordsHelp=Angi ordene som skal renses før du beregner kunde- eller leverandørkontoen. Bruk en ";" mellom hvert ord -GDPRContact=Databeskyttelsesansvarlig (DPO, Data Privacy eller GDPR kontakt) +GDPRContact=Databeskyttelsesansvarlig (DPO, personvern eller GDPR-kontakt, ...) GDPRContactDesc=Hvis du lagrer personopplysninger i ditt informasjonssystem, kan du navngi kontakten som er ansvarlig for GDPR her HelpOnTooltip=Hjelpetekst til å vise på verktøytips HelpOnTooltipDesc=Sett tekst eller en oversettelsesnøkkel her for at teksten skal vises i et verktøytips når dette feltet vises i et skjema @@ -2218,7 +2219,7 @@ CreateCandidature=Opprett jobbsøknad FormatZip=Postnummer MainMenuCode=Meny-oppføringskode (hovedmeny) ECMAutoTree=Vis ECM-tre automatisk  -OperationParamDesc=Definer reglene som skal brukes for å trekke ut noen data eller angi verdier som skal brukes for drift.

Eksempel for å trekke ut et firmanavn fra e-postemne til en midlertidig variabel:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Eksempler for å angi egenskapene til et objekt som skal opprettes:
objproperty1=SET:en hardkodet verdi
objproperty2=OBJproperty2=varcc__fjda9=SET:__01mprty2=SET:__01mp3mp3__00 SETIFEMPTY:en verdi (verdi angis bare hvis egenskapen ikke allerede er definert)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*) firmanavn er\\s([^\\s]*)

Bruk en ny linje for å trekke ut eller angi flere egenskaper. +OperationParamDesc=Definer reglene som skal brukes for å trekke ut noen data eller angi verdier som skal brukes for operasjon.

Eksempel for å trekke ut en streng fra epost overskrift, emne eller brødtekst inn i en midlertidig variabel:
tmp_var1=EXTRACT:HEADER:Min regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:Min regeks ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\n]*)

Eksempler for å angi egenskapene til et objekt som skal opprettes:
objproperty1=SET:en hardkodet verdi
objproperty2=SET:__tmp_var__
objproperty3=aSETIFETY (verdi angis bare hvis egenskapen ikke allerede er definert)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mitt firmanavn er\\ s([^\\s]*)

Bruk en ny linje for å trekke ut eller angi flere egenskaper. OpeningHours=Åpningstider OpeningHoursDesc=Skriv inn de vanlige åpningstidene for bedriften din. ResourceSetup=Konfigurasjon av ressursmodulen @@ -2264,7 +2265,7 @@ LargerThan=Større enn IfTrackingIDFoundEventWillBeLinked=Merk at hvis en sporings-ID for et objekt blir funnet i eposten, eller hvis eposten er et svar på en allerede samlet epost som er knyttet til et objekt, vil den opprettede hendelsen automatisk bli knyttet til det kjente relaterte objektet. WithGMailYouCanCreateADedicatedPassword=Med en Gmail-konto, hvis du har aktivert 2-trinns validering, anbefales det å opprette et dedikert andre passord for applikasjonen i stedet for å bruke ditt eget kontopassord fra https://myaccount.google.com/. EmailCollectorTargetDir=Det kan være en ønsket oppførsel å flytte epost til en annen merke/katalog når den ble behandlet. Bare angi navn på katalog her for å bruke denne funksjonen (IKKE bruk spesialtegn i navnet). Merk at du også må bruke en lese/skrive påloggingskonto. -EmailCollectorLoadThirdPartyHelp=Du kan bruke denne handlingen til å bruke e-postinnholdet til å finne og laste en eksisterende tredjepart i databasen din (søk vil bli gjort på den definerte egenskapen blant 'id','name','name_alias','email'). Den funne (eller opprettede) tredjeparten vil bli brukt til følgende handlinger som trenger det.
For eksempel, hvis du vil opprette en tredjepart med et navn hentet fra en streng ' Navn: navn å finne' til stede i brødteksten, bruk avsenderens e-post som e-post, du kan angi parameterfeltet slik:
'email=HEADER:^Fra:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Du kan bruke denne handlingen til å bruke epost-innholdet for å finne og laste en eksisterende tredjepart i databasen din (søket vil bli utført på den definerte egenskapen blant 'id','name','name_alias','epost'). Den funnet (eller opprettet) tredjeparten vil bli brukt til følgende handlinger som trenger det.
For eksempel, hvis du vil opprette en tredjepart med et navn hentet fra en streng ' Navn: navn å finne' til stede i brødteksten, bruk avsenderen epost som epost, du kan angi parameterfeltet slik :
'epost=EXTRACT:HEADER:^Fra:(.*);name=EXTRACT:BODY:Name:\\ s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Advarsel: mange e-postservere (som Gmail) utfører fullordsøk når de søker på en streng og vil ikke returnere et resultat hvis strengen bare finnes delvis i et ord. Også av denne grunn vil bruk av spesialtegn i et søkekriterie bli ignorert hvis de ikke er en del av eksisterende ord.
For å gjøre et ekskluderingssøk på et ord (retur e-post hvis ordet ikke blir funnet), kan du bruke ! tegn før ordet (fungerer kanskje ikke på enkelte e-postservere). EndPointFor=Sluttpunkt for %s: %s DeleteEmailCollector=Slett e-postsamler @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Tredjeparts navn – Tredjeparts alias ALIAS_THIRDPARTY=Tredjeparts alias – Tredjeparts navn PDFIn2Languages=Vis etiketter i PDF-en på 2 forskjellige språk (denne funksjonen fungerer kanskje ikke for noen få språk) 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=Generer PDF-dokumenter med formatet PDF/A i stedet for standardformatet PDF +PDF_USE_A=PDF-dokumenter format FafaIconSocialNetworksDesc=Skriv inn koden til et FontAwesome-ikon. Hvis du ikke vet hva som er FontAwesome, kan du bruke den generelle verdien fa-adresseboken. RssNote=Merk: Hver definisjon av RSS-feed gir en widget som du må aktivere for å ha den tilgjengelig i dashbordet JumpToBoxes=Gå til Setup -> Widgets @@ -2553,3 +2554,8 @@ MenuDict=Ordbok AddMoreParams=Legg til flere parametere for tilkobling (informasjonskapsler, token, ...)
Eksempel: token : tokenverdi ParamName=Navn på parameter ParamValue=Verdi på parameter +ConfirmDeleteParamOfSocialNetwork=Er du sikker på at du vil slette denne parameteren? +HelpMariaDBToGetPossibleValues=Du kan få en liste over mulige verdier ved å kjøre følgende SQL-kommando: %s +Captcha=Captcha +CaptchaDesc=Hvis du vil beskytte påloggingssiden din med en Captcha, kan du velge hvilken du skal bruke her +DolibarrStandardCaptcha=En captcha generert av Dolibarr diff --git a/htdocs/langs/nb_NO/commercial.lang b/htdocs/langs/nb_NO/commercial.lang index 9f7ba124049..42abcd25c9c 100644 --- a/htdocs/langs/nb_NO/commercial.lang +++ b/htdocs/langs/nb_NO/commercial.lang @@ -94,3 +94,9 @@ SignatureContractRef=Signatur på kontrakt %s SignatureFichinterRef=Signatur på intervensjon %s SignatureSociete_ribRef=Signatur av SEPA-mandat %s FeatureOnlineSignDisabled=Funksjon for online signering deaktivert eller dokument generert før funksjonen ble aktivert +NoSignature=Ikke signert +SignedSender=Signert internt +SignedReceiver=Signert av tredjepart +SignedReceiverOnline=Signert online av tredjepart +SignedAll=Signert av alle parter +SignStatus=Signaturstatus diff --git a/htdocs/langs/nb_NO/companies.lang b/htdocs/langs/nb_NO/companies.lang index 64de07f5a90..344c98f7f3c 100644 --- a/htdocs/langs/nb_NO/companies.lang +++ b/htdocs/langs/nb_NO/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr innlogging NoDolibarrAccess=Ingen tilgang til Dolibarr ExportDataset_company_1=Tredjeparter (Selskaper/organisasjoner/fysiske personer) og deres egenskaper ExportDataset_company_2=Kontakter og deres egenskaper +ExportDataset_company_3=Tredjeparts bankkontoer ImportDataset_company_1=Tredjeparter og deres egenskaper ImportDataset_company_2=Tredjeparts tilleggs-kontakter/adresser og attributter ImportDataset_company_3=Tredjeparts bankkontoer diff --git a/htdocs/langs/nb_NO/datapolicy.lang b/htdocs/langs/nb_NO/datapolicy.lang index cac85cf7005..fe00a709085 100644 --- a/htdocs/langs/nb_NO/datapolicy.lang +++ b/htdocs/langs/nb_NO/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,13 +15,10 @@ Module4100Name = Retningslinjer for personvern # Module description 'ModuledatapolicyDesc' Module4100Desc = Modul for å administrere personvern (samsvar med GDPR) - -# # Administration page -# datapolicySetup = Modul for oppsett av retningslinjer for personvern Deletion = Sletting av data -datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). +datapolicySetupPage = Avhengig av lovene i landene dine (eksempel Artikkel 5 i GDPR), må personopplysninger oppbevares i en periode som ikke overskrider varigheten dataene er nødvendige for formålet de ble samlet inn for, bortsett fra for arkivformål.
Slettingen vil gjøres automatisk etter en viss varighet uten hendelser (varigheten som du vil ha angitt nedenfor). NB_MONTHS = %s måneder ONE_YEAR = 1 år NB_YEARS = %s år @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Prospekt/kunde DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ikke prospekt/ikke kunde DATAPOLICY_CONTACT_FOURNISSEUR = Leverandør DATAPOLICY_ADHERENT = Medlem -DATAPOLICY_Tooltip_SETUP = Type kontakt - Angi dine valg for hver type. -DATAPOLICYMail = E-postoppsett -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Innholdet i e-posten -DATAPOLICYSUBSITUTION = Du kan bruke følgende variabler i e-posten din (LINKACCEPT lar deg lage en lenke som registrerer avtalen til personen, LINKREFUSED gjør det mulig å registrere avslaget til personen): -DATAPOLICYACCEPT = Melding etter avtale -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Definer tiden uten interaksjon til du vil at posten skal slettes automatisk. SendAgreementText = Du kan sende en GDPR-e-post til alle dine relevante kontakter (som ennå ikke har mottatt en e-post og som du ikke har registrert noe om deres GDPR-avtale). For å gjøre dette, bruk følgende knapp. SendAgreement = Send e-poster AllAgreementSend = Alle e-poster er sendt TXTLINKDATAPOLICYACCEPT = Tekst for lenken "avtale" -TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# +TXTLINKDATAPOLICYREFUSE = Tekst for lenken "uenighet" # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: Behandling av personopplysninger DATAPOLICY_consentement = Samtykke innhentet for behandling av personopplysninger -DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonymiser en tredjepart -DATAPOLICY_POPUP_ANONYME_TEXTE = Du kan ikke slette denne kontakten fra Dolibarr fordi det er relaterte elementer. I samsvar med GDPR vil du gjøre alle disse dataene anonyme for å respektere dine forpliktelser. Vil du fortsette? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Portabilitet GDPR -DATAPOLICY_PORTABILITE_TITLE = Eksport av personopplysninger -DATAPOLICY_PORTABILITE_CONFIRMATION = Du vil eksportere personopplysningene til denne kontakten. Er du sikker ? - -# +DATAPOLICY_opposition_traitement = Motsetter seg behandling av hens personopplysninger +DATAPOLICY_opposition_prospection = Motsetter seg behandling av hens personopplysninger i forbindelse med prospektering # Notes added during an anonymization -# -ANONYMISER_AT = Anonymisert %s - -DATAPOLICY_date = Date of agreement/disagreement GDPR -DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Send GDPR-e-post +DATAPOLICY_date = Dato for avtale/uenighet GDPR +DATAPOLICY_send = Dato avtaleepost sendt MailSent = E-post har blitt sendt - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion +NUMBER_MONTH_BEFORE_DELETION = Antall måneder før sletting diff --git a/htdocs/langs/nb_NO/dict.lang b/htdocs/langs/nb_NO/dict.lang index bf9c185fae2..9af1f58fe56 100644 --- a/htdocs/langs/nb_NO/dict.lang +++ b/htdocs/langs/nb_NO/dict.lang @@ -158,7 +158,7 @@ CountryMX=Mexico CountryFM=Mikronesia CountryMD=Moldova CountryMN=Mongolia -CountryMS=Monserrat +CountryMS=Montserrat CountryMZ=Mosambik CountryMM=Myanmar (Burma) CountryNA=Namibia @@ -295,8 +295,8 @@ CurrencyXPF=CFP franc CurrencySingXPF=CFP franc CurrencyCentEUR=cent CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=tusendel #### Input reasons ##### DemandReasonTypeSRC_INTE=Internett diff --git a/htdocs/langs/nb_NO/errors.lang b/htdocs/langs/nb_NO/errors.lang index 08936f33ef1..35aed9bdb94 100644 --- a/htdocs/langs/nb_NO/errors.lang +++ b/htdocs/langs/nb_NO/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Bruker må tilordnes til en oppgave for å være i st ErrorTaskAlreadyAssigned=Oppgaven er allerede tildelt bruker ErrorModuleFileSeemsToHaveAWrongFormat=Modulpakken ser ut til å ha feil format. ErrorModuleFileSeemsToHaveAWrongFormat2=Minst en obligatorisk katalog må finnes i modulens zip-fil: %s eller %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Navnet på modulpakken (%s) passer ikke forventet navn-syntaks: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Feil, duplikat utløsernavn %s. Allerede lastet fra %s. ErrorNoWarehouseDefined=Feil, ingen lagre definert. ErrorBadLinkSourceSetButBadValueForRef=Lenken du bruker er ikke gyldig. En 'kilde' for betaling er definert, men verdien for 'ref' er ikke gyldig. diff --git a/htdocs/langs/nb_NO/hrm.lang b/htdocs/langs/nb_NO/hrm.lang index 5d1b71abdbf..60057f4ffd7 100644 --- a/htdocs/langs/nb_NO/hrm.lang +++ b/htdocs/langs/nb_NO/hrm.lang @@ -72,6 +72,9 @@ AddSkill=Legg til ferdigheter i jobbprofilen RequiredSkills=Nødvendig kompetanse for denne jobbprofilen UserRank=Brukerrangering SkillList=Ferdighetsliste +SkillCreated=%s ferdigheter opprettet +SkillRank=Ferdighetsrangering +ShowSkillRank=Vis ferdighetsrangering SaveRank=Lagre rangering TypeKnowHow=Know-how TypeHowToBe=Hvordan være diff --git a/htdocs/langs/nb_NO/interventions.lang b/htdocs/langs/nb_NO/interventions.lang index ddfc0cdc3fb..357c764a0e4 100644 --- a/htdocs/langs/nb_NO/interventions.lang +++ b/htdocs/langs/nb_NO/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Lag kladd InterventionContact=Intervensjonskontakt DeleteIntervention=Slett intervensjon ValidateIntervention=Valider intervensjon +SignIntervention=Signer intervensjon +UnsignIntervention=Fjern signering av intervensjon ModifyIntervention=Endre intervensjon CloseIntervention=Lukk intervensjon DeleteInterventionLine=Slett intervensjonslinje ConfirmDeleteIntervention=Er du sikker på at du vil slette denne intervensjonen? ConfirmValidateIntervention=Er du sikker på at du vil validere intervensjonen %s? +ConfirmSignIntervention=Er du sikker på at du vil angi denne intervensjonen som signert? +ConfirmUnsignIntervention=Er du sikker på at du vil angi denne intervensjonen som ikke signert? ConfirmModifyIntervention=Er du sikker på at du vil endre denne intervensjonen? ConfirmCloseIntervention=Er du sikker på at du vil lukke denne intervensjonen? ConfirmDeleteInterventionLine=Er du sikker på at du vil slette denne intervensjonen? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Intervensjoner og intervensjonslinjer InterventionClassifyBilled=Merk "Fakturert" InterventionClassifyUnBilled=Merk "Ikke fakturert" InterventionClassifyDone=Klassifiser som "utført" +InterventionSign=Sett Signert +InterventionUnsign=Sett til ikke signert SendInterventionRef=Send intervensjon %s SendInterventionByMail=Send intervensjon via e-post InterventionCreatedInDolibarr=Intervensjon %s opprettet InterventionValidatedInDolibarr=Intervensjon %s validert +InterventionSignedInDolibarr=Intervensjon signert +InterventionSignedOnline=Intervensjon signert online +InterventionUnsignedInDolibarr=Signering av intervensjon fjernet InterventionModifiedInDolibarr=Intervensjon %s endret InterventionClassifiedBilledInDolibarr=Intervensjon %s satt til fakturert InterventionClassifiedUnbilledInDolibarr=Intervensjon %s satt til ufakturert diff --git a/htdocs/langs/nb_NO/mails.lang b/htdocs/langs/nb_NO/mails.lang index ed443d1e474..ba13102cfb6 100644 --- a/htdocs/langs/nb_NO/mails.lang +++ b/htdocs/langs/nb_NO/mails.lang @@ -32,8 +32,8 @@ NewMailing=Ny utsendelse NewSMSing=Ny sms EditMailing=Rediger utsendelse ResetMailing=Start utsendelse på nytt -ConfirmResetMailingTargetMassaction=Massemål Send igjen-bekreftelse -ResetMailingTargetMassaction=Send målet på nytt +ConfirmResetMailingTargetMassaction=Bekreftelse av tilbakestilling av målstatus +ResetMailingTargetMassaction=Tilbakestill målstatus DeleteMailing=Slett utsendelse PreviewMailing=Forhåndsvis utsendelse CreateMailing=Opprett utsendelse @@ -193,7 +193,7 @@ NoMoreRecipientToSendTo=Ingen flere mottaker å sende e-posten til EmailOptedOut=E-posteieren har bedt om å ikke kontakte ham med denne e-posten lenger EvenUnsubscribe=Inkluder opt-out eposter EvenUnsubscribeDesc=Inkluder opt-out-meldinger når du velger epost som mål. Nyttig for for eksempel obligatoriske service-eposter. -XEmailsDoneYActionsDone=%s-e-poster forhåndskvalifisert, %s-e-poster behandlet (for %s-poster/handlinger utført) +XEmailsDoneYActionsDone=%s e-poster forhåndskvalifisert, %s e-poster behandlet (for %s operasjoner ferdig) YouCanMakeSomeInstructionForEmail=Du kan lage noen instruksjoner for epost (Eksempel: generer bilde i epost mal...) ModelTemplate=epostmal YouCanChooseAModelForYouMailContent= Du kan velge en av malmodellene eller generere en med AI diff --git a/htdocs/langs/nb_NO/other.lang b/htdocs/langs/nb_NO/other.lang index 3b6b83f21cf..d1060a719a7 100644 --- a/htdocs/langs/nb_NO/other.lang +++ b/htdocs/langs/nb_NO/other.lang @@ -72,6 +72,7 @@ Notify_BILL_SUPPLIER_SENTBYMAIL=Leverandørfaktura sendt via post Notify_BILL_SUPPLIER_CANCELED=Leverandørfaktura kansellert Notify_CONTRACT_VALIDATE=Kontrakt validert Notify_FICHINTER_VALIDATE=Intervensjon validert +Notify_FICHINTER_MODIFY=Intervensjon endret Notify_FICHINTER_CLOSE=Intervensjon lukket Notify_FICHINTER_ADD_CONTACT=Kontakt lagt til intervensjon Notify_FICHINTER_SENTBYMAIL=Intervensjon sendt med post @@ -209,6 +210,7 @@ AmountIn=Beløp i %s NumberOfUnitsMos=Antall enheter som skal produseres i produksjonsordre EMailTextInterventionAddedContact=En ny intervensjon %s har blitt tildelt deg. EMailTextInterventionValidated=Intervensjonen %s har blitt validert. +EMailTextInterventionModified=Intervensjonen %s har blitt endret. %s EMailTextInterventionClosed=Intervensjonen %s er avsluttet. EMailTextInvoiceValidated=Faktura %s er validert. EMailTextInvoicePayed=Faktura %s er betalt. diff --git a/htdocs/langs/nb_NO/sendings.lang b/htdocs/langs/nb_NO/sendings.lang index 0d6d215caad..461f26592d0 100644 --- a/htdocs/langs/nb_NO/sendings.lang +++ b/htdocs/langs/nb_NO/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=Ingen varer som skal sendes i lager %s . K WeightVolShort=Vekt/volum ValidateOrderFirstBeforeShipment=Du må validere ordren før du kan utføre forsendelser NoLineGoOnTabToAddSome=Ingen linjer, gå til fanen "%s" for å legge til -CreateInvoiceForThisCustomerFromSendings=Fakturautsendelser +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=Hvis faktura valideringen er 'Nei', vil sendingen forbli til status 'Ufakturert' til faktura er validert. OptionToSetSendingBilledNotEnabled=Alternativ fra modul Workflow, for å sette sending til "Fakturert" automatisk når faktura er validert, er ikke aktivert, så du må sette statusen for sendinger til "Fakturert" manuelt etter faktura er generert. diff --git a/htdocs/langs/nb_NO/stripe.lang b/htdocs/langs/nb_NO/stripe.lang index a305930abe1..1b1a7d621f5 100644 --- a/htdocs/langs/nb_NO/stripe.lang +++ b/htdocs/langs/nb_NO/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL for å tilby en %s online betalin ToOfferALinkForOnlinePaymentOnFreeAmount=URL for å tilby en %s online betalingsside av ethvert beløp uten eksisterende objekt ToOfferALinkForOnlinePaymentOnMemberSubscription=URL for å tilby en %s online betalingsside for et medlemsabonnement ToOfferALinkForOnlinePaymentOnDonation=URL for å tilby en %s online betalingsside for betaling av en donasjon -YouCanAddTagOnUrl=Du kan også legge til url-parameter &tag=value til hvilken som helst av disse URL-ene (bare obligatorisk for betaling som ikke er koblet til et objekt) for å legge til ditt eget betalingskommentarmerke.
For nettadressen til betalinger uten eksisterende objekt, kan du også legge til parameteren &noidempotency=1 slik at den samme lenken med samme tag kan brukes flere ganger (noen betalingsmodus kan begrense betalingen til 1 for hver enkelt lenke uten denne parameteren) +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) YouCanEmbedOnWebsite=Hvis du ønsker å integrere betalingssiden i et Dolibarr-nettsted, kan du inkludere parameteren: &ws=website_ref.
I tillegg, to sider som heter paymentokogpaymentko må opprettes på nettstedet for å motta omdirigeringen på nettet etter en vellykket eller mislykket innbetaling. SetupStripeToHavePaymentCreatedAutomatically=Sett opp Stripe med url %s for å få betaling opprettet automatisk når den er validert av Stripe. AccountParameter=Kontoparametre diff --git a/htdocs/langs/nb_NO/website.lang b/htdocs/langs/nb_NO/website.lang index 6832ab4f968..1d1fe2dd885 100644 --- a/htdocs/langs/nb_NO/website.lang +++ b/htdocs/langs/nb_NO/website.lang @@ -62,7 +62,7 @@ NoPageYet=Ingen sider ennå YouCanCreatePageOrImportTemplate=Du kan opprette en ny side eller importere en full nettsidemal SyntaxHelp=Hjelp med spesifikke syntakstips YouCanEditHtmlSourceckeditor=Du kan redigere HTML kildekode ved hjelp av "Kilde" -knappen i redigeringsprogrammet. -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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
For å inkludere et bilde lagret i dokumentmappen, brukviewimage.php-wrapperen
Eksempel: For et bilde i dokumenter/medier (åpen katalog for offentlig tilgang), er syntaks:
78<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
YouCanEditHtmlSource2=For et bilde som deles med en delekobling (åpen tilgang ved hjelp av delings-hash-nøkkelen til filen), er syntaksen:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource3=For å få nettadressen til bildet av et PHP-objekt, bruk
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/nl_BE/commercial.lang b/htdocs/langs/nl_BE/commercial.lang index 45b2b66bd60..e970a07faab 100644 --- a/htdocs/langs/nl_BE/commercial.lang +++ b/htdocs/langs/nl_BE/commercial.lang @@ -10,6 +10,7 @@ ActionAC_REL=Stuur factuur per e-mail (herinnering) ActionAC_COM=Verzend verkooporder per mail ActionAC_SUP_ORD=Verzend bestelling per mail ActionAC_SUP_INV=Stuur leveranciersfactuur per mail +ActionAC_AUTO=Automatisch ingevoerde acties ActionAC_OTH_AUTOShort=Ander ToOfferALinkForOnlineSignature=Link voor online handtekening WelcomeOnOnlineSignaturePageProposal=Welkom op deze pagina om commerciële voorstellen van %s te accepteren diff --git a/htdocs/langs/nl_NL/admin.lang b/htdocs/langs/nl_NL/admin.lang index 93e5d55b2b7..959ce75b46b 100644 --- a/htdocs/langs/nl_NL/admin.lang +++ b/htdocs/langs/nl_NL/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Lijst met waarden moeten regels zijn met opmaaksleutel ExtrafieldParamHelpcheckbox=Lijst met waarden moeten regels zijn met opmaaksleutel, waarde (waar sleutel niet '0' kan zijn)

bijvoorbeeld:
1, waarde1
2, value2
3, waarde3
... ExtrafieldParamHelpradio=Lijst met waarden moeten regels zijn met opmaaksleutel, waarde (waar sleutel niet '0' kan zijn)

bijvoorbeeld:
1, waarde1
2, value2
3, waarde3
... ExtrafieldParamHelpsellist=Lijst met waarden komt uit een tabel
Syntaxis: tabelnaam:labelveld:id_veld::filtersql
Voorbeeld: c_typent:libelle:id::filtersql

- id_veld is noodzakelijkerwijs een primaire int-sleutel
- filtersql is een voorwaarde. Het moet de USF-syntaxis gebruiken. Voorbeeld: (active:=:1) om alleen de actieve waarde weer te geven
U kunt ook $ID$ gebruiken in het filter, wat de huidige id is van het huidige object
Als u wilt filteren op extravelden, gebruikt u de syntaxis extra.fieldcode=... (waarbij fieldcode de code is van het extraveld)

In Bestelling om de lijst afhankelijk te maken van een andere aanvullende kenmerklijst:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In Bestelling om de lijst afhankelijk te maken van een andere lijst:
c_typent:libelle:id:ouder_lijst_code|ouder_kolom:filter -ExtrafieldParamHelpchkbxlst=Lijst met waarden komt uit een tabel
Syntaxis: tabelnaam:labelveld:id_veld::filtersql
Voorbeeld: c_typent:libelle:id::filtersql

filter kan een eenvoudige test zijn (bijv. active=1 om alleen de actieve waarde weer te geven)
U kunt ook $ID$ gebruiken in filter, wat de huidige id is van het huidige object
Om een SELECT in een filter uit te voeren, gebruikt u $SEL$
als u wilt filteren op extravelden, gebruikt u de syntaxis extra.fieldcode=... (waarbij veldcode de code van het extraveld is)

In Bestelling om de lijst afhankelijk te maken van een andere aanvullende kenmerklijst:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In Bestelling om de lijst afhankelijk te maken van een andere lijst:
c_typent:libelle:id:parent_list_code|ouderkolom:filter ExtrafieldParamHelplink=Parameters moeten Objectnaam: Classpath
Syntax: ObjectName:Classpath ExtrafieldParamHelpSeparator=Blijf leeg voor een eenvoudig scheidingsteken
Stel dit in op 1 voor een samenvouwend scheidingsteken (standaard geopend voor nieuwe sessie, dan wordt de status behouden voor elke gebruikerssessie)
Stel dit in op 2 voor een samenvouwend scheidingsteken (standaard samengevouwen voor nieuwe sessie, dan wordt de status behouden voor elke gebruikerssessie) LibraryToBuildPDF=Gebruikte library voor generen PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s gevolgd door de ingekorte klantnaam door h ModuleCompanyCodeSupplierDigitaria=%s gevolgd door de ingekorte leveranciersnaam met het aantal tekens: %s voor de boekhoudcode van de leverancier. Use3StepsApproval=Bestellingen moeten standaard worden gemaakt en goedgekeurd door 2 verschillende gebruikers (één stap / gebruiker om te maken en één stap / gebruiker goed te keuren. Merk op dat als gebruiker zowel toestemming heeft om te maken en goed te keuren, één stap / gebruiker volstaat) . U kunt met deze optie vragen om een ​​derde stap / gebruikersgoedkeuring in te voeren, als het bedrag hoger is dan een speciale waarde (dus 3 stappen zijn nodig: 1 = validatie, 2 = eerste keer goedkeuren en 3 = tweede keer goedkeuren als het bedrag voldoende is).
Stel deze optie in op leeg als één goedkeuring (2 stappen) voldoende is, stel deze in op een zeer lage waarde (0,1) als een tweede goedkeuring (3 stappen) altijd vereist is. UseDoubleApproval=Gebruik een goedkeuring in 3 stappen als het bedrag (zonder belasting) hoger is dan ... -WarningPHPMail=WAARSCHUWING: De configuratie voor het verzenden van e-mails vanuit de applicatie maakt gebruik van de standaard generieke configuratie. Voor deze keuze is geen technische kennis vereist om de installatie te voltooien.
Het is echter vaak beter om uitgaande e-mails in te stellen om de e-mailserver van uw e-mailserviceprovider te gebruiken in plaats van de standaardinstellingen voor verschillende redenen: +WarningPHPMail=OPMERKING: De instelling om e-mails te verzenden vanuit de toepassing maakt gebruik van de standaard generieke instelling (genaamd "%s"). Voor deze keuze is geen technische kennis of specifieke instelling vereist.
Het is echter vaak beter om uitgaande e-mails in te stellen op de andere methode (genaamd "%s") om de e-mailserver van uw e-mailprovider te gebruiken in plaats van de standaardinstelling om verschillende redenen: WarningPHPMailA=- Het gebruik van de server van de e-mailserviceprovider verhoogt de betrouwbaarheid van uw e-mail, waardoor de bezorgbaarheid toeneemt zonder dat deze als SPAM wordt gemarkeerd -WarningPHPMailB=- Sommige e-mailproviders (zoals Yahoo) staan niet toe dat u een e-mail verzendt vanaf een andere server dan hun eigen server. Uw huidige installatie gebruikt de server van de applicatie om e-mail te verzenden en niet de server van uw e-mailprovider, dus sommige ontvangers (degene die compatibel zijn met het beperkende DMARC-protocol) zullen uw e-mailprovider vragen of zij uw e-mail kunnen accepteren en sommige e-mailproviders (zoals Yahoo) reageert mogelijk "nee" omdat de server niet van hen is, dus enkele van uw verzonden e-mails worden mogelijk niet geaccepteerd voor bezorging (let ook op de verzendquota van uw e-mailprovider). +WarningPHPMailB=- Als het domein van uw e-mail (het deel mymaildomain.com in myname@mymaildomain.com) wordt beschermd door een SPF + een DMARC-record, kan uw e-mail worden gemarkeerd als SPAM omdat uw DMARC-regel die is gedefinieerd in de DNS-zone van het domein van de afzender (mymaildomain.com) het verzenden als een generieke afzender niet toestaat. In een dergelijk geval moet u de DMARC voor het domein uitschakelen (of instellen op p=none zoals gedaan door @gmail.com) of, beter, als u de technische kennis hebt, de andere methode gebruiken om e-mails te verzenden met behulp van de SMTP-server van uw eigen e-mailprovider. WarningPHPMailC=- Het gebruik van de SMTP-server van uw eigen e-mailserviceprovider om e-mails te verzenden is ook interessant, dus alle e-mails die vanuit de toepassing worden verzonden, worden ook opgeslagen in uw "Verzonden" -map van uw mailbox. WarningPHPMailD=Het is daarom aan te raden om de verzendmethode van e-mails te wijzigen in de waarde "SMTP". WarningPHPMailDbis=Als u echt de standaard "PHP"-methode voor het verzenden van e-mails wilt behouden, negeert u deze waarschuwing of verwijdert u deze door %shier te klikken%s. 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 (voor e-mail %s): %s +WarningPHPMailSPF=Als de domeinnaam in uw afzender-e-mailadres wordt beschermd door een SPF-record (vraag dit na bij uw domeinnaamregistrar), moet u de volgende IP's of vermeldingen toevoegen aan het SPF-record van de DNS van uw domein: %s. +WarningPHPMailSPFDMARC=Als de domeinnaam in uw verzend-e-mailadres wordt beschermd door een DMARC-record dat anders is dan p=none (vraag dit na bij uw domeinnaamregistrar), moet u uw DMARC-record verwijderen of instellen op p=none (zoals do@gmail.com) of een andere verzendmethode gebruiken. +SPFAndDMARCInformation=SPF- en DMARC-DNS-record voor hoofd-e-mailadressen +ActualMailDNSRecordFound=Werkelijke %s-record gevonden (voor e-mail %s): %s ClickToShowDescription=Klik voor omschrijving DependsOn=Deze module heeft de module(s) nodig RequiredBy=Deze module is vereist bij module(s) @@ -867,7 +868,7 @@ Permission255=Wachtwoord andere gebruikers wijzigen Permission256=Andere gebruikers verwijderen of uitschakelen Permission262=Verleng de toegang tot alle derde partijen EN hun objecten (niet alleen derde partijen waarvoor de gebruiker als verkoopvertegenwoordiger is gekoppeld). Permission262b=Niet effectief voor externe gebruikers (altijd beperkt tot zichzelf voor voorstellen, bestellingen, Facturen, contracten, etc.). -Permission262c=Niet effectief voor projecten (alleen regels over projectrechten, zichtbaarheid en toewijzingszaken). +Permission262c=Niet effectief voor projecten (alleen regels over projectmachtigingen, zichtbaarheid en toewijzing van gebruikers zijn van belang). Permission263=Verleng de toegang tot alle derden ZONDER hun objecten (niet alleen derden waarvoor de gebruiker een verkoopvertegenwoordiger is).
Niet effectief voor externe gebruikers (altijd beperkt tot zichzelf voor voorstellen, bestellingen, facturen, contracten, enz.).
Niet effectief voor projecten (alleen regels voor projectmachtigingen, zichtbaarheid en toewijzingskwesties). Permission271=Lees CA Permission272=Facturen inzien @@ -944,7 +945,7 @@ Permission776=Betalen onkostennota's Permission777=Lees alle onkostennota's (zelfs die van ondergeschikten niet van gebruiker) Permission778=Aanmaken/wijzigen onkostendeclaraties van iedereen Permission779=Export onkostennota's -Permission1001=Bekijk voorraden +Permission1001=Lees Warenhuizen en aandelen Permission1002=Toevoegen/wijzigen van een magazijn Permission1003=Verwijder magazijnen Permission1004=Bekijk voorraad-verplaatsingen @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter om waarde op te schonen (COMPANY_DIGI DuplicateForbidden=Dupliceren verboden RemoveSpecialWords=Reinig bepaalde woorden bij het genereren van subaccounts voor klanten of leveranciers RemoveSpecialWordsHelp=Geef de woorden op die moeten worden opgeschoond voordat de klant- of leveranciersrekening wordt berekend. Gebruik een ";" tussen elk woord -GDPRContact=Functionaris voor gegevensbescherming (DPO, gegevensprivacy of GDPR-contact) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) 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 @@ -2218,7 +2219,7 @@ CreateCandidature=Maak een sollicitatie FormatZip=Zip MainMenuCode=Menu toegangscode (hoofdmenu) ECMAutoTree=Toon automatische ECM-structuur -OperationParamDesc=Definieer de regels die moeten worden gebruikt om waarden te extraheren of in te stellen.
Voorbeeld voor bewerkingen die een naam moeten extraheren uit het e-mailonderwerp:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Voorbeeld voor bewerkingen die objecten maken:
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=Definieer de regels die moeten worden gebruikt om bepaalde gegevens te extraheren of stel waarden in die moeten worden gebruikt voor de bewerking.

Voorbeeld om een tekenreeks uit de koptekst, het onderwerp of de hoofdtekst van een e-mail te extraheren naar een tijdelijke variabele:
tmp_var1=EXTRACT:HEADER:Mijn regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:Mijn refex ([^\n]*)
tmp_var3=EXTRACT:BODY:Mijn regex ([^\n]*)

Voorbeelden om de eigenschappen van een object in te stellen dat moet worden gemaakt:
objproperty1=SET:een hard gecodeerde waarde
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:een waarde (waarde wordt alleen ingesteld als de eigenschap nog niet is gedefinieerd)
objproperty4=EXTRACT:HEADER:X-Mijnheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mijn bedrijf naam is\\s([^\\s]*)

Gebruik een nieuwe regel om meerdere eigenschappen te extraheren of in te stellen. OpeningHours=Openingstijden OpeningHoursDesc=Voer hier de reguliere openingstijden van uw bedrijf in. ResourceSetup=Configuratie van bronmodule @@ -2264,7 +2265,7 @@ LargerThan=Groter dan IfTrackingIDFoundEventWillBeLinked=Houd er rekening mee dat als een tracking-ID van een object in een e-mail wordt gevonden, of als de e-mail een antwoord is op een e-mail die al is verzameld en aan een object is gekoppeld, de gemaakte gebeurtenis automatisch wordt gekoppeld aan het bekende gerelateerde object. WithGMailYouCanCreateADedicatedPassword=Als u met een Gmail-account de validatie in twee stappen heeft ingeschakeld, wordt het aanbevolen om een speciaal tweede wachtwoord voor de applicatie te maken in plaats van uw eigen accountwachtwoord van https://myaccount.google.com/ te gebruiken. EmailCollectorTargetDir=Het kan wenselijk zijn om de e-mail naar een andere Label/map te verplaatsen nadat deze met succes is verwerkt. Stel hier gewoon de naam van de map in om deze functie te gebruiken (gebruik GEEN speciale tekens in de naam). Houd er rekening mee dat u ook een lees-/schrijfaanmeldingsaccount moet gebruiken. -EmailCollectorLoadThirdPartyHelp=U kunt deze actie gebruiken om de e-mailinhoud te gebruiken om een bestaande derde partij in uw database te vinden en te laden (er wordt gezocht op de gedefinieerde eigenschap onder 'id', 'name', 'name_alias', 'email'). De gevonden (of aangemaakte) derde partij zal worden gebruikt voor de volgende acties waarvoor deze nodig is.
Als u bijvoorbeeld een derde partij wilt maken met een naam geëxtraheerd uit een string ' Naam: te vinden naam' aanwezig in de hoofdtekst, gebruik de e-mail van de afzender als e-mail, u kunt het parameterveld als volgt instellen:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Naam:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Met deze actie kunt u de e-mailinhoud gebruiken om een bestaande derde partij in uw database te vinden en te laden (er wordt gezocht op de gedefinieerde eigenschap 'id','name','name_alias','email'). De gevonden (of gemaakte) derde partij wordt gebruikt voor de volgende acties waarvoor deze nodig is.
Als u bijvoorbeeld een derde partij wilt maken met een naam die is geëxtraheerd uit een tekenreeks 'Naam: te vinden naam' in de hoofdtekst, gebruikt u het e-mailadres van de afzender als e-mail. U kunt het parameterveld als volgt instellen:
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Waarschuwing: veel e-mailservers (zoals Gmail) zoeken op volledige woorden wanneer ze zoeken op een tekenreeks en zullen geen resultaat retourneren als de tekenreeks slechts gedeeltelijk in een woord wordt gevonden. Ook om deze reden wordt het gebruik van speciale tekens in een zoekcriterium genegeerd als ze geen deel uitmaken van bestaande woorden.
Om een zoekopdracht uit te sluiten op een woord (retourneer een e-mail als het woord niet wordt gevonden), kunt u de ! teken voor het woord (werkt mogelijk niet op sommige mailservers). EndPointFor=Eindpunt voor %s: %s DeleteEmailCollector=E-mailverzamelaar verwijderen @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Naam van derden: alias van derden ALIAS_THIRDPARTY=Alias van derden: naam van derden PDFIn2Languages=Toon labels in de PDF in 2 verschillende talen (deze functie werkt mogelijk niet voor sommige talen) 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 het formaat PDF/A in plaats van het standaardformaat PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Voer hier de code van een FontAwesome-pictogram in. Als je niet weet wat FontAwesome is, kun je het generieke waarde fa-adresboek gebruiken. RssNote=Opmerking: elke RSS-feeddefinitie biedt een widget die u moet inschakelen om deze beschikbaar te hebben in het dashboard JumpToBoxes=Ga naar Setup -> Widgets @@ -2553,3 +2554,8 @@ MenuDict=Woordenboek AddMoreParams=Voeg meer parameters toe voor de verbinding (cookies, tokens, ...)
Voorbeeld: token : waarde token ParamName=Naam van parameter ParamValue=Waarde van parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=U kunt een lijst met mogelijke waarden verkrijgen door de volgende SQL-opdracht uit te voeren: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/nl_NL/commercial.lang b/htdocs/langs/nl_NL/commercial.lang index 03124ceeb1a..dd4f83871d8 100644 --- a/htdocs/langs/nl_NL/commercial.lang +++ b/htdocs/langs/nl_NL/commercial.lang @@ -94,3 +94,9 @@ SignatureContractRef=Ondertekening contract %s SignatureFichinterRef=Handtekening interventie %s SignatureSociete_ribRef=Ondertekening van SEPA-mandaat %s FeatureOnlineSignDisabled=Online tekenen niet mogelijkheid of document is aangemaakt voordat dit was aangezet +NoSignature=Niet ondertekend +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/nl_NL/companies.lang b/htdocs/langs/nl_NL/companies.lang index c836deb2ce1..410660b4e59 100644 --- a/htdocs/langs/nl_NL/companies.lang +++ b/htdocs/langs/nl_NL/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr login NoDolibarrAccess=Geen Dolibarr toegang ExportDataset_company_1=Derden (bedrijven / stichtingen / fysieke mensen) en hun eigenschappen ExportDataset_company_2=Contacten en hun eigenschappen +ExportDataset_company_3=Bankrekeningen van relaties ImportDataset_company_1=Relaties en hun eigenschappen ImportDataset_company_2=Bijkomende contacten / adressen en attributen van derden ImportDataset_company_3=Bankrekeningen van relaties diff --git a/htdocs/langs/nl_NL/datapolicy.lang b/htdocs/langs/nl_NL/datapolicy.lang index 84d1433920d..4443ce1d387 100644 --- a/htdocs/langs/nl_NL/datapolicy.lang +++ b/htdocs/langs/nl_NL/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,13 +15,10 @@ Module4100Name = Gegevensprivacybeleid # Module description 'ModuledatapolicyDesc' Module4100Desc = Module om gegevensprivacy te beheren (conformiteit met de AVG) - -# # Administration page -# datapolicySetup = Module Gegevensprivacybeleid instellen Deletion = Verwijderen van gegevens -datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). +datapolicySetupPage = Afhankelijk van de wetten van uw land (bijvoorbeeld Artikel 5 van de AVG), moeten persoonlijke gegevens gedurende een bepaalde periode worden bewaard. niet langer dan de duur dat de gegevens nodig zijn voor het doel waarvoor ze zijn verzameld, behalve voor archiveringsdoeleinden.
De verwijdering wordt automatisch uitgevoerd na een bepaalde duur zonder gebeurtenissen (de duur die u hieronder zult hebben aangegeven). NB_MONTHS = %s maanden ONE_YEAR = 1 jaar NB_YEARS = %s jaar @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Prospect/Klant DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Noch prospect/noch klant DATAPOLICY_CONTACT_FOURNISSEUR = Leverancier DATAPOLICY_ADHERENT = Lid -DATAPOLICY_Tooltip_SETUP = Type contact - Geef uw keuzes aan voor elk type. -DATAPOLICYMail = E-mail instellen -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Inhoud van de e-mail -DATAPOLICYSUBSITUTION = U kunt de volgende variabelen in uw e-mail gebruiken (LINKACCEPT maakt het mogelijk om een link te maken die de instemming van de persoon vastlegt, LINKREFUSED maakt het mogelijk om de weigering van de persoon vast te leggen): -DATAPOLICYACCEPT = Bericht na akkoord -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = U kunt een AVG-e-mail sturen naar al uw relevante contacten (die nog geen e-mail hebben ontvangen en waarvoor u niets hebt geregistreerd over hun AVG-overeenkomst). Gebruik hiervoor de volgende knop. SendAgreement = Stuur emails AllAgreementSend = Alle e-mails zijn verzonden TXTLINKDATAPOLICYACCEPT = Tekst voor de link "overeenkomst" -TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# +TXTLINKDATAPOLICYREFUSE = Tekst voor de link "onenigheid" # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = AVG: Verwerking van persoonsgegevens DATAPOLICY_consentement = Toestemming verkregen voor de verwerking van persoonsgegevens -DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonimiseer een derde partij -DATAPOLICY_POPUP_ANONYME_TEXTE = U kunt dit contact niet verwijderen uit Dolibarr omdat er gerelateerde items zijn. In overeenstemming met de AVG maakt u al deze gegevens anoniem om uw verplichtingen na te komen. Wil je verder gaan ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Overdraagbaarheid AVG -DATAPOLICY_PORTABILITE_TITLE = Exporteren van persoonsgegevens -DATAPOLICY_PORTABILITE_CONFIRMATION = U wilt de persoonsgegevens van dit contact exporteren. Weet je het zeker ? - -# +DATAPOLICY_opposition_traitement = Verzet zich tegen de verwerking van zijn persoonsgegevens +DATAPOLICY_opposition_prospection = Verzet zich tegen de verwerking van zijn persoonsgegevens met het oog op prospectie # Notes added during an anonymization -# -ANONYMISER_AT = De %s geanonimiseerd - -DATAPOLICY_date = Date of agreement/disagreement GDPR -DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Stuur AVG-e-mail +DATAPOLICY_date = Datum overeenkomst/onenigheid AVG +DATAPOLICY_send = Datum overeenkomst e-mail verzonden MailSent = De email is verzonden - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion +NUMBER_MONTH_BEFORE_DELETION = Aantal maanden vóór verwijdering diff --git a/htdocs/langs/nl_NL/dict.lang b/htdocs/langs/nl_NL/dict.lang index 748b0e0eef7..1d87e21aa8d 100644 --- a/htdocs/langs/nl_NL/dict.lang +++ b/htdocs/langs/nl_NL/dict.lang @@ -233,7 +233,7 @@ CountryUY=Uruguay CountryUZ=Oezbekistan CountryVU=Vanuatu CountryVE=Venezuela -CountryVN=VietNam +CountryVN=Vietnam CountryVG=Maagdeneilanden, Britse CountryVI=Maagdeneilanden, Amerikaanse CountryWF=Wallis en Futuna @@ -295,8 +295,8 @@ CurrencyXPF=Francs CFP CurrencySingXPF=Franc CFP CurrencyCentEUR=cent CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=duizend #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/nl_NL/errors.lang b/htdocs/langs/nl_NL/errors.lang index 6d3e5a31acb..1087cca699b 100644 --- a/htdocs/langs/nl_NL/errors.lang +++ b/htdocs/langs/nl_NL/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=De gebruiker moet een taak toegewezen krijgen om de t ErrorTaskAlreadyAssigned=Taak al toegewezen aan gebruiker ErrorModuleFileSeemsToHaveAWrongFormat=Het modulepakket lijkt een verkeerde indeling te hebben. ErrorModuleFileSeemsToHaveAWrongFormat2=Ten minste één verplichte map moet bestaan in de zip van de module: %s of %s -ErrorFilenameDosNotMatchDolibarrPackageRules=De naam van het modulepakket ( %s ) komt niet overeen met de verwachte syntaxis van de naam: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Fout, dubbele triggernaam %s. Al geladen van %s. ErrorNoWarehouseDefined=Fout, geen magazijnen gedefinieerd. ErrorBadLinkSourceSetButBadValueForRef=De link die u gebruikt is niet geldig. Een 'bron' voor betaling is gedefinieerd, maar de waarde voor 'ref' is niet geldig. diff --git a/htdocs/langs/nl_NL/mails.lang b/htdocs/langs/nl_NL/mails.lang index 36a647fcf4f..de77e91701a 100644 --- a/htdocs/langs/nl_NL/mails.lang +++ b/htdocs/langs/nl_NL/mails.lang @@ -32,8 +32,8 @@ NewMailing=Nieuwe E-Mailing NewSMSing=Nieuwe sms EditMailing=Bewerk E-Mailing ResetMailing=E-Mailing opnieuw verzenden -ConfirmResetMailingTargetMassaction=Confirmation of the reset status of targets -ResetMailingTargetMassaction=Reset target status +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Verwijder E-Mailing PreviewMailing=Voorbeeldweergave E-Mailing CreateMailing=Creëer E-Mailing @@ -193,7 +193,7 @@ NoMoreRecipientToSendTo=Geen ontvanger meer om de e-mail naar te sturen EmailOptedOut=E-maileigenaar heeft verzocht om geen contact meer met hem op te nemen via deze e-mail EvenUnsubscribe=Inclusief opt-out e-mails EvenUnsubscribeDesc=Neem opt-out-e-mails op wanneer u e-mails als doelwit selecteert. Handig voor bijvoorbeeld verplichte servicemails. -XEmailsDoneYActionsDone=%s e-mails vooraf gekwalificeerd, %s e-mails succesvol verwerkt (voor %s record/acties uitgevoerd) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=U kunt enkele instructies voor uw e-mail maken (bijvoorbeeld: genereer een afbeelding in een e-mailsjabloon...) ModelTemplate=Email sjabloon YouCanChooseAModelForYouMailContent= U kunt een van de sjabloonmodellen kiezen of er een genereren met AI diff --git a/htdocs/langs/nl_NL/sendings.lang b/htdocs/langs/nl_NL/sendings.lang index 77dbc52bdfc..ea1601f7f19 100644 --- a/htdocs/langs/nl_NL/sendings.lang +++ b/htdocs/langs/nl_NL/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=Geen product te verzenden in het magazijn %s < WeightVolShort=Gewicht / Vol. ValidateOrderFirstBeforeShipment=U moet eerst de bestelling valideren voordat u zendingen kunt maken. NoLineGoOnTabToAddSome=Geen regel. Ga naar tabblad "%s" om toe te voegen -CreateInvoiceForThisCustomerFromSendings=Factuurverzendingen +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=Als de Factuur-validatie 'Nee' is, blijft de verzending op de status 'Niet gefactureerd' totdat de Factuur is gevalideerd. OptionToSetSendingBilledNotEnabled=De optie uit de module Workflow, om het verzenden automatisch naar 'Gefactureerd' in te stellen wanneer Factuur is gevalideerd, is niet ingeschakeld, dus u zult de status van verzendingen daarna handmatig moeten instellen op 'Gefactureerd' de Factuur is gegenereerd. diff --git a/htdocs/langs/nl_NL/stripe.lang b/htdocs/langs/nl_NL/stripe.lang index 4aa9f78da4e..4d02c7a340e 100644 --- a/htdocs/langs/nl_NL/stripe.lang +++ b/htdocs/langs/nl_NL/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL om een %s online betalingspagina ToOfferALinkForOnlinePaymentOnFreeAmount=URL voor het aanbieden van een %s online betaalpagina van een willekeurig bedrag zonder bestaand object ToOfferALinkForOnlinePaymentOnMemberSubscription=URL voor het aanbieden van een %s online betalingspagina voor een lidabonnement ToOfferALinkForOnlinePaymentOnDonation=URL om een online betalingspagina voor %s aan te bieden voor de betaling van een donatie -YouCanAddTagOnUrl=U kunt ook een url-parameter &tag = waarde toevoegen aan een van die URL's (alleen verplicht voor betaling die niet is gekoppeld aan een object) om uw eigen tag voor betalingscommentaar toe te voegen.
Voor de URL van betalingen zonder bestaand object, kunt u ook de parameter &noidempotency = 1 toevoegen, zodat dezelfde link met dezelfde tag meerdere keren kan worden gebruikt (sommige betalingsmodus kan de betaling beperken tot 1 voor elke andere link zonder deze parameter) +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) YouCanEmbedOnWebsite=Als u de betalingspagina in een Dolibarr-website wilt integreren, kunt u de parameter opnemen: &ws=website_ref.
Daarnaast twee pagina's genaamd betalingok en betalingko moet op de website zijn aangemaakt om de omleiding te ontvangen na een succesvolle of mislukte online betaling. SetupStripeToHavePaymentCreatedAutomatically=Stel uw Stripe in met url %s zodat de betaling automatisch wordt aangemaakt wanneer deze door Stripe wordt gevalideerd. AccountParameter=Accountwaarden diff --git a/htdocs/langs/nl_NL/website.lang b/htdocs/langs/nl_NL/website.lang index f25d971eb0d..0b3f7616751 100644 --- a/htdocs/langs/nl_NL/website.lang +++ b/htdocs/langs/nl_NL/website.lang @@ -62,7 +62,7 @@ NoPageYet=Nog geen pagina's YouCanCreatePageOrImportTemplate=U kunt een nieuwe pagina maken of een volledige websitesjabloon importeren SyntaxHelp=Help bij specifieke syntax-tips YouCanEditHtmlSourceckeditor=U kunt HTML-broncode bewerken met de knop "Bron" in de 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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
Om een op te nemen afbeelding opgeslagen in de map documenten map , gebruik de wrapper viewimage.php wrapper.
Voorbeeld voor een afbeelding in documenten/media (open map voor publieke toegang), syntaxis is:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
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...">
YouCanEditHtmlSource3=To get the URL of the image of a PHP object, use
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/pl_PL/admin.lang b/htdocs/langs/pl_PL/admin.lang index 00ea6b1e9d5..c7601810e89 100644 --- a/htdocs/langs/pl_PL/admin.lang +++ b/htdocs/langs/pl_PL/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Lista wartości musi być liniami z kluczem formatu, w ExtrafieldParamHelpcheckbox=Lista wartości musi być liniami z kluczem formatu, wartością (gdzie klucz nie może mieć wartości '0')

na przykład:
1, wartość1
2, wartość2
3, wartość3 ... ExtrafieldParamHelpradio=Lista wartości musi być liniami z kluczem formatu, wartością (gdzie klucz nie może mieć wartości '0')

na przykład:
1, wartość1
2, wartość2
3, wartość3 ... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametry muszą być parametrami ObjectName: Classpath
Składnia: ObjectName: Classpath ExtrafieldParamHelpSeparator=Pozostaw puste dla prostego separatora
Ustaw na 1 dla zwijanego separatora (domyślnie otwarty dla nowej sesji, a następnie status jest zachowany dla każdej sesji użytkownika)
Ustaw na 2 dla zwijanego separatora (domyślnie zwinięty dla nowej sesji, a następnie status jest zachowywany przed każdą sesją użytkownika) LibraryToBuildPDF=Biblioteka używana do generowania plików PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, po którym następuje skrócona nazwa kli ModuleCompanyCodeSupplierDigitaria=%s, po którym następuje skrócona nazwa dostawcy o liczbę znaków: %s dla kodu księgowego dostawcy. Use3StepsApproval=Domyślnie zamówienia zakupu muszą być tworzone i zatwierdzane przez 2 różnych użytkowników (jeden krok/użytkownik do utworzenia i jeden krok/użytkownik do zatwierdzenia. Należy pamiętać, że jeśli użytkownik ma zarówno uprawnienia do tworzenia, jak i zatwierdzania, wystarczy jeden krok/użytkownik) . Za pomocą tej opcji możesz poprosić o wprowadzenie trzeciego kroku/zatwierdzenia użytkownika, jeśli kwota jest wyższa niż wartość dedykowana (więc konieczne będą 3 kroki: 1 = walidacja, 2 = pierwsze zatwierdzenie i 3 = drugie zatwierdzenie, jeśli kwota jest wystarczająca).
Ustaw tę opcję na pustą, jeśli wystarczy jedno zatwierdzenie (2 kroki), ustaw ją na bardzo niską wartość (0,1), jeśli zawsze wymagane jest drugie zatwierdzenie (3 kroki). UseDoubleApproval=Użyj 3-stopniowego zatwierdzenia, gdy kwota (bez podatku) jest wyższa niż ... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Niektórzy dostawcy usług e-mail (np. Yahoo) nie pozwalają na wysyłanie wiadomości e-mail z innego serwera niż ich własny serwer. Twoja obecna konfiguracja wykorzystuje serwer aplikacji do wysyłania wiadomości e-mail, a nie serwer dostawcy poczty e-mail, więc niektórzy odbiorcy (ten zgodny z restrykcyjnym protokołem DMARC) zapytają dostawcę poczty e-mail, czy mogą zaakceptować Twoją wiadomość e-mail i niektórzy dostawcy poczty e-mail (jak Yahoo) może odpowiedzieć „nie”, ponieważ serwer nie należy do nich, więc wiele z wysłanych przez Ciebie e-maili może nie zostać zaakceptowanych do dostarczenia (uważaj również na limit wysyłania dostawcy poczty e-mail). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Używanie serwera SMTP własnego dostawcy usług pocztowych do wysyłania e-maili jest również interesujące, ponieważ wszystkie e-maile wysyłane z aplikacji będą również zapisywane w katalogu „Wysłane” Twojej skrzynki pocztowej. WarningPHPMailD=Zaleca się zmianę sposobu wysyłania wiadomości e-mail na wartość „SMTP”. WarningPHPMailDbis=Jeśli naprawdę chcesz zachować domyślną metodę wysyłania e-maili „PHP”, po prostu zignoruj to ostrzeżenie lub usuń je %sklikając tutaj%s. 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=Jeśli nazwa domeny w adresie e-mail nadawcy jest chroniona rekordem SPF (zapytaj rejestratora nazwy domeny), musisz dodać następujące adresy IP w rekordzie SPF DNS swojej domeny: %s. -ActualMailSPFRecordFound=Znaleziono rekord SPF (dla adresu e-mail %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Kliknij aby zobaczyć opis DependsOn=Ten moduł wymaga modułu RequiredBy=Ten moduł wymagany jest przez moduł(y) @@ -867,7 +868,7 @@ Permission255=Modyfikacja haseł innych użytkowników Permission256=Usuń lub dezaktywuj innych użytkowników Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Rozszerz dostęp na wszystkie osoby trzecie BEZ ich przedmiotu (nie tylko osoby trzecie, dla których użytkownik jest przedstawicielem handlowym).
Nieefektywne dla użytkowników zewnętrznych (zawsze ograniczone do siebie samych w przypadku ofert, zamówień, faktur, umów itp.).
Nieefektywne dla projektów (tylko reguły dotyczące pozwoleń na projekty, widoczności i przydziałów mają znaczenie). Permission271=Czytaj CA Permission272=Czytaj faktury @@ -944,7 +945,7 @@ Permission776=Zapłać raporty wydatków Permission777=Przeczytaj wszystkie raporty wydatków (nawet te użytkowników, którzy nie są podwładnymi) Permission778=Twórz/modyfikuj raporty wydatków dla wszystkich Permission779=Eksport raportów kosztów -Permission1001=Zobacz zasoby +Permission1001=Read warehouses and stocks Permission1002=Tworzenie / modyfikacja magazynów Permission1003=Usuń magazyny Permission1004=Zobacz przemieszczanie zasobów @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtr Regex do czyszczenia wartości (COMPANY_DIGI DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Wyczyść określone słowa podczas generowania subkont dla klientów lub dostawców RemoveSpecialWordsHelp=Określ słowa, które mają zostać oczyszczone przed obliczeniem konta klienta lub dostawcy. Użyć ";" pomiędzy każdym słowem -GDPRContact=Inspektor ochrony danych osobowych (kontakt do spraw ochrony danych lub RODO) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Jeśli przechowujesz dane osobowe w swoim Systemie Informatycznym, możesz tutaj wskazać osobę kontaktową odpowiedzialną za Ogólne rozporządzenie o ochronie danych HelpOnTooltip=Tekst pomocy do wyświetlenia w podpowiedzi HelpOnTooltipDesc=Umieść tutaj tekst lub klucz do tłumaczenia, aby tekst był wyświetlany w etykiecie narzędzia, gdy to pole pojawi się w formularzu @@ -2218,7 +2219,7 @@ CreateCandidature=Utwórz podanie o pracę FormatZip=Paczka Zip MainMenuCode=Kod wejścia menu (menu główne) ECMAutoTree=Pokaż automatyczne drzewo ECM -OperationParamDesc=Zdefiniuj reguły, które będą używane do wyodrębniania niektórych danych lub ustawiania wartości do wykorzystania podczas operacji.

Przykład wyodrębniania nazwy firmy z temat wiadomości e-mail do zmiennej tymczasowej:
tmp_var=EXTRACT:SUBJECT:Wiadomość od firmy ([^\n]*)

Przykłady ustawiania właściwości obiektu do utworzenia:
objproperty1=SET:wartość zakodowana na stałe
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:wartość (wartość jest ustawiana tylko wtedy, gdy właściwość nie jest jeszcze zdefiniowana)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^&n]*)
object.objproperty5=EXTRACT:BODY:Nazwa mojej firmy to\\ s([^\\s]*)

Użyj nowej linii, aby wyodrębnić lub ustawić kilka właściwości. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Godziny otwarcia OpeningHoursDesc=Wpisz tutaj regularne godziny otwarcia swojej firmy. ResourceSetup=Konfiguracja modułu zasobów @@ -2264,7 +2265,7 @@ LargerThan=Większy niż IfTrackingIDFoundEventWillBeLinked=Pamiętaj, że jeśli w wiadomości e-mail zostanie znaleziony identyfikator śledzenia obiektu lub jeśli wiadomość e-mail jest odpowiedzią na wiadomość e-mail już zebraną i powiązaną z obiektem, utworzone wydarzenie zostanie automatycznie połączone ze znanym powiązanym obiektem. WithGMailYouCanCreateADedicatedPassword=W przypadku konta Gmail, jeśli włączyłeś weryfikację dwuetapową, zaleca się utworzenie dedykowanego drugiego hasła dla aplikacji zamiast korzystania z własnego hasła do konta z https://myaccount.google.com/. EmailCollectorTargetDir=Pożądanym zachowaniem może być przeniesienie wiadomości e-mail do innego tagu/katalogu po pomyślnym przetworzeniu. Aby skorzystać z tej funkcji, po prostu ustaw tutaj nazwę katalogu (NIE używaj znaków specjalnych w nazwie). Pamiętaj, że musisz także użyć konta logowania do odczytu/zapisu. -EmailCollectorLoadThirdPartyHelp=Możesz użyć tej akcji, aby użyć treści e-maila do znalezienia i załadowania istniejącej strony trzeciej w swojej bazie danych (wyszukiwanie zostanie wykonane według zdefiniowanej właściwości wśród „id”, „nazwa”, „alias_nazwy”, „e-mail”). Znaleziona (lub utworzona) osoba trzecia zostanie wykorzystana do następujących czynności, które tego wymagają.
Na przykład, jeśli chcesz utworzyć osobę trzecią z nazwą wyodrębnioną z ciągu znaków ' Nazwa: nazwa do znalezienia w treści, użyj adresu e-mail nadawcy jako adresu e-mail, możesz ustawić pole parametru w następujący sposób:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Ostrzeżenie: wiele serwerów poczty e-mail (takich jak Gmail) podczas wyszukiwania ciągu znaków wyszukuje pełne słowa i nie zwraca wyników, jeśli ciąg znaków zostanie znaleziony tylko częściowo w słowie. Z tego powodu znaki specjalne w kryteriach wyszukiwania zostaną zignorowane, jeśli nie są częścią istniejących słów.
Aby przeprowadzić wyszukiwanie wykluczające dla słowa (zwróć wiadomość e-mail, jeśli słowo nie został znaleziony), możesz użyć ! znak przed słowem (może nie działać na niektórych serwerach pocztowych). EndPointFor=Punkt końcowy dla %s: %s DeleteEmailCollector=Usuń moduł zbierający e-maile @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Nazwa strony trzeciej — alias strony trzeciej ALIAS_THIRDPARTY=Alias strony trzeciej — nazwa strony trzeciej PDFIn2Languages=Pokaż etykiety w pliku PDF w 2 różnych językach (ta funkcja może nie działać w przypadku niektórych języków) 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=Generuj dokumenty PDF w formacie PDF/A zamiast w domyślnym formacie PDF +PDF_USE_A=PDF documents format 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. RssNote=Uwaga: każda definicja źródła danych RSS zawiera widżet, który należy włączyć, aby był dostępny na pulpicie nawigacyjnym JumpToBoxes=Przejdź do Ustawienia -> Widżety @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/pl_PL/commercial.lang b/htdocs/langs/pl_PL/commercial.lang index 10b440d02f9..cb76d22290b 100644 --- a/htdocs/langs/pl_PL/commercial.lang +++ b/htdocs/langs/pl_PL/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Czy jesteś pewien, że chcesz usunąć to wydarzenie? CardAction=Karta zdarzenia ActionOnCompany=Powiązana firma ActionOnContact=Powiązany kontakt +ActionOnUser=Related user TaskRDVWith=Spotkanie z %s ShowTask=Pokaż zadanie ShowAction=Pokaż działania @@ -47,7 +48,6 @@ LastProspectToContact=Do skontaktowania LastProspectContactInProcess=W trakcie kontaktu LastProspectContactDone=Kontakt wykonany ActionAffectedTo=Zdarzenie przypisane do -ActionDoneBy=Działanie wykonywane przez ActionAC_TEL=Telefon ActionAC_FAX=Wyślij faks ActionAC_PROP=Wyślij propozycję pocztą @@ -78,16 +78,25 @@ WelcomeOnOnlineSignaturePageProposal=Witamy na stronie, na której można akcept WelcomeOnOnlineSignaturePageContract=Witamy na %s stronie podpisywania umowy w formacie PDF WelcomeOnOnlineSignaturePageFichinter=Witamy na %s stronie interwencyjnego podpisywania plików PDF WelcomeOnOnlineSignaturePageSociete_rib=Witamy na stronie %s mandatu SEPA na stronie podpisywania plików PDF +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=Na tym ekranie możesz zaakceptować i podpisać lub odrzucić wycenę/propozycję handlową ThisScreenAllowsYouToSignDocFromContract=Na tym ekranie możesz podpisać umowę w formacie PDF online. ThisScreenAllowsYouToSignDocFromFichinter=Na tym ekranie możesz podpisać interwencję w formacie PDF online. ThisScreenAllowsYouToSignDocFromSociete_rib=Na tym ekranie możesz podpisać mandat SEPA w formacie PDF online. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=To jest informacja na dokumencie do zaakceptowania lub odrzucenia ThisIsInformationOnDocumentToSignContract=To informacja na umowie do podpisania ThisIsInformationOnDocumentToSignFichinter=Jest to informacja dotycząca interwencji do podpisania ThisIsInformationOnDocumentToSignSociete_rib=To jest informacja dotycząca Mandatu SEPA do podpisania +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Podpis oferty / oferty handlowej %s SignatureContractRef=Podpis umowy %s SignatureFichinterRef=Podpis interwencji %s SignatureSociete_ribRef=Podpis upoważnienia SEPA %s FeatureOnlineSignDisabled=Funkcjonalność podpisu online wyłączona lub dokument wygenerowano przed włączeniem tej funkcji +NoSignature=Niepodpisany +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/pl_PL/companies.lang b/htdocs/langs/pl_PL/companies.lang index f9db3b46737..5618b5999b7 100644 --- a/htdocs/langs/pl_PL/companies.lang +++ b/htdocs/langs/pl_PL/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr login NoDolibarrAccess=Brak dostępu do Dolibarr ExportDataset_company_1=Kontrahenci (firmy/fundacje/osoby fizyczne) i ich własności ExportDataset_company_2=Kontakty i ich właściwości +ExportDataset_company_3=Rachunki bankowe kontrahentów ImportDataset_company_1=Kontrahenci i ich właściwości ImportDataset_company_2=Dodatkowe kontakty/adresy i atrybuty kontrahentów ImportDataset_company_3=Rachunki bankowe kontrahentów diff --git a/htdocs/langs/pl_PL/datapolicy.lang b/htdocs/langs/pl_PL/datapolicy.lang index b4372539b8f..d85aca916b6 100644 --- a/htdocs/langs/pl_PL/datapolicy.lang +++ b/htdocs/langs/pl_PL/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Polityka prywatności danych # Module description 'ModuledatapolicyDesc' Module4100Desc = Moduł do zarządzania Prywatnością Danych (Zgodność z RODO) - -# # Administration page -# datapolicySetup = Konfiguracja polityki prywatności danych modułu Deletion = Usuwanie danych datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Potencjalny klient/Klient DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ani Potencjalny klient, ani klient DATAPOLICY_CONTACT_FOURNISSEUR = Dostawca DATAPOLICY_ADHERENT = Członek -DATAPOLICY_Tooltip_SETUP = Typ kontaktu — wskaż swój wybór dla każdego rodzaju kontaktu. -DATAPOLICYMail = Konfiguracja e-maili -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Treść wiadomości e-mail -DATAPOLICYSUBSITUTION = W swoim e-mailu możesz wykorzystać następujące zmienne (LINKACCEPT pozwala na utworzenie linku rejestrującego zgodę danej osoby, LINKREFUSED pozwala na zarejestrowanie odmowy danej osoby): -DATAPOLICYACCEPT = Wiadomość po zaakceptowaniu umowy -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Możesz wysłać wiadomość e-mail dotyczącą RODO do wszystkich odpowiednich kontaktów (które nie otrzymały jeszcze wiadomości e-mail i dla których nie zarejestrowałeś niczego na temat ich umowy dotyczącej RODO). Aby to zrobić, użyj poniższego przycisku. SendAgreement = Wyślij wiadomość email AllAgreementSend = Wszystkie e-maile zostały wysłane TXTLINKDATAPOLICYACCEPT = Tekst linku „umowa” TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = RODO: Przetwarzanie danych osobowych DATAPOLICY_consentement = Uzyskana zgoda na przetwarzanie danych osobowych DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonimizuj osobę trzecią -DATAPOLICY_POPUP_ANONYME_TEXTE = Nie możesz usunąć tego kontaktu z Dolibarr, ponieważ istnieją powiązane elementy. Zgodnie z RODO, w celu wywiązania się ze swoich obowiązków, zanonimizujesz wszystkie te dane. Czy chciałbyś kontynuować ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Przenośność RODO -DATAPOLICY_PORTABILITE_TITLE = Eksport danych osobowych -DATAPOLICY_PORTABILITE_CONFIRMATION = Chcesz wyeksportować dane osobowe tego kontaktu. Jesteś pewny ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Zanonimizowano %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Wyślij e-mail dotyczący RODO MailSent = Email został wysłany - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/pl_PL/dict.lang b/htdocs/langs/pl_PL/dict.lang index 781fb5cc0a9..0933ea32b94 100644 --- a/htdocs/langs/pl_PL/dict.lang +++ b/htdocs/langs/pl_PL/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=Franków CFP CurrencySingXPF=Frank CFP CurrencyCentEUR=centy CurrencyCentSingEUR=cent -CurrencyCentINR=Paisa -CurrencyCentSingINR=Paise +CurrencyCentINR=Paise +CurrencyCentSingINR=Paisa CurrencyThousandthSingTND=tysięczny #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/pl_PL/errors.lang b/htdocs/langs/pl_PL/errors.lang index 3a8cd523239..1e9b03064c7 100644 --- a/htdocs/langs/pl_PL/errors.lang +++ b/htdocs/langs/pl_PL/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Użytkownik musi być przypisany do zadania, aby móc ErrorTaskAlreadyAssigned=Zadanie dopisane do użytkownika ErrorModuleFileSeemsToHaveAWrongFormat=Wygląda na to, że pakiet modułów ma nieprawidłowy format. ErrorModuleFileSeemsToHaveAWrongFormat2=Co najmniej jeden obowiązkowy katalog musi istnieć w pliku ZIP modułu: %s lub %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Nazwa pakietu modułu ( %s ) nie odpowiada oczekiwanej składni nazwy: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Błąd, zduplikowana nazwa wyzwalacza %s. Już załadowano z %s. ErrorNoWarehouseDefined=Błąd, nie zdefiniowano magazynów. ErrorBadLinkSourceSetButBadValueForRef=Link, którego używasz, jest nieprawidłowy. Zdefiniowano „źródło” płatności, ale wartość „ref” jest nieprawidłowa. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/pl_PL/mails.lang b/htdocs/langs/pl_PL/mails.lang index 1e9db880e56..05b023d3d4f 100644 --- a/htdocs/langs/pl_PL/mails.lang +++ b/htdocs/langs/pl_PL/mails.lang @@ -32,6 +32,8 @@ NewMailing=Nowy mailing NewSMSing=New smsing EditMailing=Edytuj mailing ResetMailing=Wyślij ponownie mailing +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Usuń mailing PreviewMailing=Podgląd mailingu CreateMailing=Tworzenie mailingu @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Odbiorca maila jest pusty WarningNoEMailsAdded=Brak nowych wiadomości mail, aby dodać adres do listy. ConfirmValidMailing=Czy na pewno chcesz zweryfikować tę wiadomość e-mail? ConfirmResetMailing=Uwaga, ponownie inicjując wysyłanie wiadomości e-mail %s , zezwolisz na ponowne wysłanie tej wiadomości e-mail w wysyłce zbiorczej. Czy na pewno chcesz to zrobić? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Czy na pewno chcesz usunąć tę wiadomość e-mail? NbOfUniqueEMails=Liczba unikalnych e-maili NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Nie ma już odbiorcy, do którego można wysłać wiadom EmailOptedOut=Właściciel adresu e-mail poprosił o zaprzestanie kontaktowania się z nim za pomocą tego e-maila EvenUnsubscribe=Dołącz e-maile dotyczące rezygnacji EvenUnsubscribeDesc=Uwzględnij e-maile z możliwością rezygnacji, gdy wybierasz e-maile jako cele. Przydatne na przykład w przypadku obowiązkowych e-maili serwisowych. -XEmailsDoneYActionsDone=%s e-maile wstępnie zakwalifikowane, %s e-maile pomyślnie przetworzone (dla rekordu %s /wykonane czynności) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/pl_PL/stripe.lang b/htdocs/langs/pl_PL/stripe.lang index 11c728c8bfb..b6ee50f4efc 100644 --- a/htdocs/langs/pl_PL/stripe.lang +++ b/htdocs/langs/pl_PL/stripe.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - stripe StripeSetup=Konfiguracja modułu Stripe -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=Zapłać przy użyciu karty lub Stripe +StripeDesc=Zaoferuj swoim klientom stronę płatności online dla płatności kartami kredytowymi/debetowymi za pośrednictwem Stripe. Można to wykorzystać, aby umożliwić Twoim klientom dokonywanie płatności ad hoc lub płatności związanych z konkretnym obiektem Dolibarr (faktura, zamówienie, ...) +StripeOrCBDoPayment=Zapłać przy użyciu karty lub Stripe FollowingUrlAreAvailableToMakePayments=Nastepujące adresy są dostępne dla klienta, by mógł dokonać płatności za faktury zamówienia PaymentForm=Formularz płatności WelcomeOnPaymentPage=Witaj w naszym serwisie płatności online @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=Adres URL oferujący stronę płatno ToOfferALinkForOnlinePaymentOnFreeAmount=Adres URL oferujący stronę płatności online %s o dowolnej kwocie bez istniejącego obiektu ToOfferALinkForOnlinePaymentOnMemberSubscription=Adres URL oferujący stronę płatności online %s za subskrypcję członka ToOfferALinkForOnlinePaymentOnDonation=Adres URL oferujący stronę płatności online %s do wpłaty darowizny -YouCanAddTagOnUrl=Możesz również dodać parametr adresu URL & tag = wartość do dowolnego z tych adresów URL (obowiązkowy tylko w przypadku płatności niepowiązanych z obiektem), aby dodać własny tag komentarza do płatności.
Dla adresu URL płatności bez istniejącego obiektu możesz również dodać parametr & noidempotency = 1 , aby ten sam link z tym samym tagiem mógł być używany kilka razy (niektóre tryby płatności mogą ograniczyć płatność do 1 za każdy link parametr) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Skonfiguruj swój Stripe z linkiem z %s do opłat stworzonych automatycznie, gdy są zatwierdzone przez Stripe. AccountParameter=Parametry konta UsageParameter=Parametry użytkownika @@ -41,8 +42,8 @@ STRIPE_LIVE_WEBHOOK_KEY=Aktywny klucz webhooka ONLINE_PAYMENT_WAREHOUSE=Zapasy do wykorzystania w celu zmniejszenia zapasów po dokonaniu płatności online
(DO ZROBIENIA Kiedy opcja zmniejszenia zapasów jest realizowana na podstawie faktury i płatność online generuje fakturę?) StripeLiveEnabled=Stripe na żywo włączony (w przeciwnym razie tryb testowy / piaskownicy) StripeImportPayment=Importuj płatności Stripe -ExampleOfTestCreditCard=Example of credit card for a test payment: %s => valid, %s => error CVC, %s => expired, %s => charge fails -ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s +ExampleOfTestCreditCard=Przykład karty kredytowej do płatności testowej: %s => ważna, %s => błąd CVC, %s => wygasł, %s => ładowanie nie powiodło się +ExampleOfTestBankAcountForSEPA=Przykład BAN konta bankowego do testu polecenia zapłaty: %s StripeGateways=Bramy Stripe OAUTH_STRIPE_TEST_ID=Identyfikator klienta Stripe Connect (ca _...) OAUTH_STRIPE_LIVE_ID=Identyfikator klienta Stripe Connect (ca _...) @@ -51,7 +52,7 @@ StripeAccount=Konto Stripe StripeChargeList=Lista opłat Stripe StripeTransactionList=Lista transakcji Stripe StripeCustomerId=Identyfikator klienta Stripe -StripePaymentId=Stripe payment id +StripePaymentId=Identyfikator płatności w paski StripePaymentModes=Tryby płatności Stripe LocalID=Lokalny identyfikator StripeID=Stripe ID @@ -63,7 +64,7 @@ DeleteACard=Usuń kartę ConfirmDeleteCard=Czy na pewno chcesz usunąć tę kartę kredytową lub debetową? CreateCustomerOnStripe=Utwórz klienta w Stripe CreateCardOnStripe=Utwórz kartę w Stripe -CreateBANOnStripe=Create bank on Stripe +CreateBANOnStripe=Utwórz bank na Stripe ShowInStripe=Pokaż w Stripe StripeUserAccountForActions=Konto użytkownika używane do powiadamiania e-mailem o niektórych wydarzeniach Stripe (wypłaty Stripe) StripePayoutList=Lista wypłat Stripe @@ -71,9 +72,19 @@ ToOfferALinkForTestWebhook=Łącze do konfiguracji Stripe WebHook w celu wywoła ToOfferALinkForLiveWebhook=Łącze do konfiguracji Stripe WebHook w celu wywołania IPN (tryb na żywo) PaymentWillBeRecordedForNextPeriod=Płatność zostanie zarejestrowana za następny okres. ClickHereToTryAgain= Kliknij tutaj, aby spróbować ponownie ... -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe back office. You can click here to switch on Stripe customer record: %s -STRIPE_CARD_PRESENT=Card Present for Stripe Terminals -TERMINAL_LOCATION=Location (address) for Stripe Terminals -RequestDirectDebitWithStripe=Request Direct Debit with Stripe -STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe -StripeConnect_Mode=Stripe Connect mode +CreationOfPaymentModeMustBeDoneFromStripeInterface=Ze względu na zasady Silnego Uwierzytelniania Klienta, utworzenie karty musi odbywać się z zaplecza Stripe. Możesz kliknąć tutaj, aby włączyć rekord klienta Stripe: %s +STRIPE_CARD_PRESENT=Karta obecna dla terminali Stripe +TERMINAL_LOCATION=Lokalizacja (adres) terminali Stripe +RequestDirectDebitWithStripe=Poproś o polecenie zapłaty za pomocą Stripe +RequesCreditTransferWithStripe=Request Credit Transfer with Stripe +STRIPE_SEPA_DIRECT_DEBIT=Włącz płatności poleceniem zapłaty za pośrednictwem Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT +StripeConnect_Mode=Tryb Stripe Connect +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang index f62d5b2aeb1..684952477cb 100644 --- a/htdocs/langs/pt_BR/admin.lang +++ b/htdocs/langs/pt_BR/admin.lang @@ -368,13 +368,10 @@ ModuleCompanyCodeCustomerDigitaria=%s seguido pelo nome do cliente truncado pelo 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 ... -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=É por tanto recomendado mudar o método de envio de e-mails para o valor "SMTP". WarningPHPMailDbis=Se você realmente deseja manter o padrão "PHP" para o envio de e-mails, ignore este aviso ou remova-o %sclicando aqui%s. 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=Registros SPF encontrados (para o email %s): %s ClickToShowDescription=Clique para exibir a descrição RequiredBy=Este módulo é exigido por módulo(s) PageUrlForDefaultValues=Você precisa entrar o caminho relativo da URL da página. Se você incluir parâmetros na URL, será mais otimizado se todos os parâmetros da URL estiverem definidos aqui. @@ -689,7 +686,6 @@ 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 diff --git a/htdocs/langs/pt_BR/commercial.lang b/htdocs/langs/pt_BR/commercial.lang index 6a24386f1c3..b161e0bae5e 100644 --- a/htdocs/langs/pt_BR/commercial.lang +++ b/htdocs/langs/pt_BR/commercial.lang @@ -50,12 +50,25 @@ ActionAC_SUP_ORD=Enviar pedido por correio ActionAC_SUP_INV=Enviar fatura do fornecedor por email ActionAC_OTH=Outros ActionAC_OTH_AUTO=Outro auto +ActionAC_MANUAL=Eventos inseridos manualmente (por um usuário) ActionAC_OTH_AUTOShort=Outros ActionAC_EVENTORGANIZATION=Eventos de organização dos eventos Stats=Estatísticas de vendas StatusProsp=Status de prospecto de cliente DraftPropals=Minutas de orçamentos ToOfferALinkForOnlineSignature=Link para assinatura on-line +WelcomeOnOnlineSignaturePageProposal=Bem-vindo à página para aceitar propostas comerciais de %s +WelcomeOnOnlineSignaturePageContract=Bem-vindo à %s página de assinatura do PDF do contrato +WelcomeOnOnlineSignaturePageFichinter=Bem-vindo à %s página de assinatura do PDF da intervenção ThisScreenAllowsYouToSignDocFromProposal=Esta tela permite que você aceite e assine ou recuse um orçamento / proposta comercial +ThisScreenAllowsYouToSignDocFromContract=Esta tela permite que você assine o contrato em formato PDF online. +ThisScreenAllowsYouToSignDocFromFichinter=Esta tela permite assinar on-line a intervenção em formato PDF. +ThisScreenAllowsYouToSignDocFromExpedition=Esta tela permite que você assine a remessa em formato PDF online. +ThisIsInformationOnDocumentToSignContract=Esta é a informação sobre o contrato para assinar +ThisIsInformationOnDocumentToSignFichinter=Esta é uma informação sobre intervenção para assinar +ThisIsInformationOnDocumentToSignExpedition=Esta é a informação sobre o envio para assinar SignatureProposalRef=Assinatura da cotação / proposta comercial %s +SignatureContractRef=Assinatura do contrato %s +SignatureFichinterRef=Assinatura da intervenção %s FeatureOnlineSignDisabled=Recurso para assinatura online desabilitado ou documento gerado antes que o recurso fosse ativado +NoSignature=Sem Assinar diff --git a/htdocs/langs/pt_BR/companies.lang b/htdocs/langs/pt_BR/companies.lang index 3c63328dba7..0faf5d3906d 100644 --- a/htdocs/langs/pt_BR/companies.lang +++ b/htdocs/langs/pt_BR/companies.lang @@ -94,9 +94,7 @@ 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) ProfId5CM=Id. prof. 5 (Outros) -ProfId2ShortCM=Nº de contribuinte ProfId2ES=Prof Id 2 (Número de seguro social) ProfId4ES=Prof Id 4 (Número do colegial) ProfId1FR=SIREN diff --git a/htdocs/langs/pt_BR/dict.lang b/htdocs/langs/pt_BR/dict.lang index c926a6e71d9..866a5c78064 100644 --- a/htdocs/langs/pt_BR/dict.lang +++ b/htdocs/langs/pt_BR/dict.lang @@ -68,7 +68,7 @@ CurrencyUAH=Grívnias CurrencySingUAH=Grívnia CurrencyXPF=Francos CFP CurrencyCentSingEUR=centavo -CurrencyCentINR=paise +CurrencyCentSingINR=paise DemandReasonTypeSRC_CAMP_MAIL=Campanha por correspondência DemandReasonTypeSRC_CAMP_EMAIL=Campanha por e-mail DemandReasonTypeSRC_CAMP_PHO=Campanha por telefone diff --git a/htdocs/langs/pt_BR/errors.lang b/htdocs/langs/pt_BR/errors.lang index a00901435a7..6b1b2cf93d9 100644 --- a/htdocs/langs/pt_BR/errors.lang +++ b/htdocs/langs/pt_BR/errors.lang @@ -1,7 +1,8 @@ # 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. +ErrorBadMXDomain=O e-mail %s parece estar incorreto (o domínio não tem um registro MX válido) +ErrorBadValueForParamNotAString=Valor inválido para o parâmetro. Isso geralmente ocorre quando não há 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 '. @@ -33,7 +34,6 @@ ErrorFoundBadEmailInFile=Encontrado uma sintaxe de e-mail incorreta para as linh 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) @@ -42,7 +42,6 @@ ErrorFunctionNotAvailableInPHP=A função %s é requisitada por esta func 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. 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) @@ -54,9 +53,7 @@ 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 @@ -65,7 +62,6 @@ ErrorFileIsInfectedWithAVirus=O antivírus não foi capaz de atestar o arquivo ( 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 ErrorCounterMustHaveMoreThan3Digits=Contador deve ter mais de 3 dígitos @@ -137,7 +133,6 @@ ErrorVariableKeyForContentMustBeSet=Erro, a constante com nome %s (com conteúdo 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. diff --git a/htdocs/langs/pt_BR/mails.lang b/htdocs/langs/pt_BR/mails.lang index 8a60e3ba6f8..ff20ae972e4 100644 --- a/htdocs/langs/pt_BR/mails.lang +++ b/htdocs/langs/pt_BR/mails.lang @@ -93,4 +93,3 @@ DefaultOutgoingEmailSetup=Mesma configuração que a configuração global de en Answered=Respondidos IsAnAnswer=Resposta de um e-mail inicial DefaultStatusEmptyMandatory=Vazio mas obrigatório -XEmailsDoneYActionsDone=%s e-mails pré-qualificados, %s e-mails processados ​​com sucesso (para %s registro/ações realizadas) diff --git a/htdocs/langs/pt_MZ/admin.lang b/htdocs/langs/pt_MZ/admin.lang index 547d1cf2c14..20610301d08 100644 --- a/htdocs/langs/pt_MZ/admin.lang +++ b/htdocs/langs/pt_MZ/admin.lang @@ -352,10 +352,8 @@ ModuleCompanyCodeCustomerDigitaria=%s seguido pelo nome do cliente truncado pelo 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 ... -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. 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) 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 @@ -650,7 +648,6 @@ 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 diff --git a/htdocs/langs/pt_MZ/dict.lang b/htdocs/langs/pt_MZ/dict.lang index 9f098d664eb..ceca400c505 100644 --- a/htdocs/langs/pt_MZ/dict.lang +++ b/htdocs/langs/pt_MZ/dict.lang @@ -69,7 +69,7 @@ CurrencyUAH=Grívnias CurrencySingUAH=Grívnia CurrencyXPF=Francos CFP CurrencyCentSingEUR=centavo -CurrencyCentINR=paise +CurrencyCentSingINR=paise DemandReasonTypeSRC_CAMP_MAIL=Campanha por correspondência DemandReasonTypeSRC_CAMP_EMAIL=Campanha por e-mail DemandReasonTypeSRC_CAMP_PHO=Campanha por telefone diff --git a/htdocs/langs/pt_MZ/mails.lang b/htdocs/langs/pt_MZ/mails.lang index bac2f4e8670..8f03e591dae 100644 --- a/htdocs/langs/pt_MZ/mails.lang +++ b/htdocs/langs/pt_MZ/mails.lang @@ -3,4 +3,3 @@ MailRecipient=Destinatário MailTo=Para MailingStatusDraft=Minuta MailingStatusValidated=Validada -XEmailsDoneYActionsDone=%s e-mails qualificados, %s e-mails processados com sucesso (para registro %s/ações executadas) diff --git a/htdocs/langs/pt_PT/admin.lang b/htdocs/langs/pt_PT/admin.lang index 5b24d812940..4058e9baf0c 100644 --- a/htdocs/langs/pt_PT/admin.lang +++ b/htdocs/langs/pt_PT/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Lista de valores devem ser linhas com chave de formato ExtrafieldParamHelpcheckbox=A lista de valores deve ser composta por linhas com chave de formato, valor (onde a chave não pode ser '0')

por exemplo:
1, valor1
2, valor2
19bz3, valor3 ExtrafieldParamHelpradio=A lista de valores deve ser composta por linhas com chave de formato, valor (onde a chave não pode ser '0')

por exemplo:
1, valor1
2, valor2
19bz3, valor3 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Os parâmetros devem ser ObjectName:Classpath
Sintaxe: ObjectName:Classpath ExtrafieldParamHelpSeparator=Mantenha vazio para um separador simples
Defina como 1 para um separador recolhível (abrir por padrão para uma nova sessão, então o status é mantido para cada sessão utilizador)
Defina como 2 para um separador recolhido (recolhido por padrão para uma nova sessão, então o status é mantido antes de cada sessão utilizador) LibraryToBuildPDF=Biblioteca utilizada para gerar PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s seguido pelo nome cliente truncado pelo n ModuleCompanyCodeSupplierDigitaria=%s seguido pelo nome do fornecedor truncado pelo número de caracteres: %s para o fornecedor Contabilista Código. Use3StepsApproval=Por padrão, as ordens de compra precisam ser criadas e aprovadas por 2 utilisadores diferentes (um passo / utilisador para criar e um passo / utilisador para aprovar. Note que, se o utilisador tiver permissão para criar e aprovar, um passo / utilisador será suficiente) . Você pode solicitar esta opção para introduzir uma terceira etapa / aprovação do utilisador, se o valor for superior a um valor dedicado (então serão necessárias 3 etapas: 1 = validação, 2 = primeira aprovação e 3 = segunda aprovação se a quantidade for suficiente). 1
Defina isto como vazio se uma aprovação (2 etapas) for suficiente, ajuste-o para um valor muito baixo (0,1) se uma segunda aprovação (3 etapas) for sempre necessária. UseDoubleApproval=Utilizar uma aprovação de 3 etapas quando o valor (sem impostos) for superior a... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Alguns provedores de serviços 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 servidor. Sua configuração atual usa o servidor do Aplicação para enviar e-mail e e não o servidor do seu provedor de e-mail, portanto, alguns destinatários (o compatível com o protocolo restritivo DMARC), perguntará ao seu provedor de e-mail se ele pode aceitar seu e-mail e alguns provedores de e-mail (como o Yahoo) podem responder "não" porque o servidor não é deles, portanto, alguns dos seus e-mails enviados podem não ser aceitos para entrega (tenha cuidado também com a cota de envio do seu provedor de e-mail). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Usar o servidor SMTP do seu próprio provedor de serviços de e-mail para enviar e-mails também é interessante, pois todos os e-mails enviados de Aplicação também serão salvos em sua pasta "Enviados" diretoria da sua caixa de correio. WarningPHPMailD=Recomenda-se portanto alterar o método de envio de e-mails para o valor “SMTP”. WarningPHPMailDbis=Se você realmente deseja manter o método "PHP" padrão para enviar e-mails, simplesmente ignore este aviso ou remova-o %sclicando aqui%s. 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=Se o nome de domínio no endereço de e-mail do remetente estiver protegido por um registro SPF (pergunte ao registro do seu 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 (para e-mail %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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) @@ -867,7 +868,7 @@ Permission255=Modificar a palavra-passe de outros utilizadores Permission256=Eliminar ou desativar outros utilizadores Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Estender o acesso a todos os terceiros SEM seus objetos (não apenas a terceiros para os quais utilizador é um representante de vendas).
Não eficaz para usuários externos (sempre limitados a eles próprios para orçamentos, pedidos, faturas, contratos etc.).
Não eficaz para projetos (somente regras sobre permissões de projeto, visibilidade e atribuição são importantes). Permission271=Consultar CA Permission272=Consultar faturas @@ -944,7 +945,7 @@ Permission776=Pagar relatórios de despesas Permission777=Leia todos os relatórios de despesas (mesmo aqueles de utilizador não subordinados) Permission778=Criar/modificar relatórios de despesas de todos Permission779=Exportar relatórios de despesas -Permission1001=Consultar stocks +Permission1001=Read warehouses and stocks Permission1002=Criar/modificar armazéns Permission1003=Eliminar armazéns Permission1004=Consultar movimentos de stock @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtro Regex para limpar valor (COMPANY_DIGITARIA_ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Limpe certas palavras ao gerar subcontas para clientes ou fornecedores RemoveSpecialWordsHelp=Especifique as palavras a serem limpas antes de calcular o cliente ou fornecedor conta. Use um ";" entre cada palavra -GDPRContact=Responsável pela proteção de dados (DPO, Privacidade de dados ou contato GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Caso guarde dados pessoais no seu Sistema de Informação, poderá indicar aqui o contacto responsável pelo Regulamento Geral de Proteção de Dados HelpOnTooltip=Texto de ajuda para mostrar na dica de ferramenta HelpOnTooltipDesc=Coloque aqui o texto ou uma chave de tradução para que o texto seja exibido em uma dica de ferramenta quando este campo aparecer em um formulário @@ -2218,7 +2219,7 @@ CreateCandidature=Criar tarefa Aplicação FormatZip=Código postal MainMenuCode=Entrada de menu Código (menu principal) ECMAutoTree=Mostrar árvore ECM automática -OperationParamDesc=Defina as regras a serem usadas para extrair alguns dados ou defina valores a serem usados na operação.

Exemplo para extrair uma empresa, companhia nome do assunto do e-mail em uma variável temporária:
tmp_var=EXTRACT:ASSUNTO:Mensagem de empresa, companhia ([^\n]*)

Exemplos para definir as propriedades de um objeto a ser criado:
objproperty1=SET:um valor codificado
objproperty2= SET:__tmp_var__
objproperty3=SETIFEMPTY:um valor (o valor é definido somente se a propriedade ainda não estiver definida)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:ASSUNTO:([^ \n]*)
object.objproperty5=EXTRACT:BODY:Meu nome empresa, companhia é\\s([^\\s]*)

Use uma nova linha para extrair ou definir diversas propriedades. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Horário de funcionamento OpeningHoursDesc=Insira aqui o horário normal de funcionamento do seu empresa, companhia. ResourceSetup=Configuração do recurso módulo @@ -2264,7 +2265,7 @@ LargerThan=Maior que IfTrackingIDFoundEventWillBeLinked=Observe que se um rastreamento Id. de um objeto for encontrado no e-mail, ou se o e-mail for uma resposta de um e-mail já coletado e vinculado a um objeto, o evento criado será automaticamente vinculado ao objeto relacionado conhecido. WithGMailYouCanCreateADedicatedPassword=Com um GMail conta, se você ativou as duas etapas validação, é recomendado criar uma segunda senha dedicada para o Aplicação em vez de usar sua própria senha conta de https://myaccount.google.com/. EmailCollectorTargetDir=Pode ser um comportamento desejado mover o e-mail para outra tag/diretoria quando ele for processado com sucesso. Basta definir o nome de diretoria aqui para usar este recurso (NÃO use caracteres especiais no nome). Observe que você também deve usar um login de leitura/gravação conta. -EmailCollectorLoadThirdPartyHelp=Você pode usar esta ação para usar o conteúdo do e-mail para encontrar e carregar um terceiro existente em seu banco de dados (a pesquisa será feita na propriedade definida entre 'Id.','nome','nome_alias','e-mail'). O terceiro encontrado (ou criado) será usado para seguir as ações que precisam dele.
Por exemplo, se você quiser criar um terceiro com um nome extraído de uma string ' Nome: nome a ser encontrado' presente no corpo, use o e-mail do remetente como e-mail, você pode definir o campo de parâmetro como este:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Nome:\\s( [^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Aviso: muitos servidores de e-mail (como o Gmail) fazem pesquisas de palavras completas quando a pesquisa em uma string e não retornará um resultado se a string for encontrada apenas parcialmente em uma palavra. Também por esse motivo, o uso de caracteres especiais em um critério de pesquisa será ignorado se eles não fizerem parte de palavras existentes.
Para fazer uma pesquisa de exclusão em uma palavra (retorne o e-mail se a palavra não foi encontrado), você pode usar o ! caractere antes da palavra (pode não funcionar em alguns servidores de e-mail). EndPointFor=Ponto final para %s : %s DeleteEmailCollector=eliminar, apagar coletor de e-mail @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Nome de terceiro – alias de terceiro ALIAS_THIRDPARTY=Alias de terceiros – Nome de terceiros PDFIn2Languages=Mostrar rótulos no PDF em 2 idiomas diferentes (esse recurso pode não funcionar em alguns idiomas) PDF_USE_ALSO_LANGUAGE_CODE=Se você deseja que alguns textos do seu PDF sejam duplicados em 2 idiomas diferentes no mesmo PDF gerado, você deve definir aqui este segundo idioma para que o PDF gerado contenha 2 idiomas diferentes na mesma página, aquele escolhido na geração do PDF e este (apenas alguns modelos de PDF suportam isso). Mantenha em branco para 1 idioma por PDF. -PDF_USE_A=Gere documentos PDF com formato PDF/A em vez do formato padrão PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Insira aqui o Código de um ícone FontAwesome. Se você não sabe o que é FontAwesome, pode usar o valor genérico fa-address-book. RssNote=Observação: cada definição de feed RSS fornece um Widget que você deve ativar para disponibilizá-lo em painel JumpToBoxes=Vá para Configuração -> Widgets @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/pt_PT/commercial.lang b/htdocs/langs/pt_PT/commercial.lang index 5431f17e47c..bd3fe57e662 100644 --- a/htdocs/langs/pt_PT/commercial.lang +++ b/htdocs/langs/pt_PT/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Tem a certeza que quer eliminar este evento? CardAction=Ficha do evento ActionOnCompany=Empresa relacionada ActionOnContact=Contacto relacionado +ActionOnUser=Related user TaskRDVWith=Reunião com %s ShowTask=Ver tarefa ShowAction=Ver acção @@ -47,7 +48,6 @@ LastProspectToContact=A contactar LastProspectContactInProcess=Contacto em curso LastProspectContactDone=Clientes potenciais contactados ActionAffectedTo=Acção assignada a -ActionDoneBy=Acção realizada por ActionAC_TEL=Chamada telefónica ActionAC_FAX=Enviar fax ActionAC_PROP=Envío de orçamento por correio @@ -78,16 +78,25 @@ WelcomeOnOnlineSignaturePageProposal=Bem-vindo à página para aceitar orçament WelcomeOnOnlineSignaturePageContract=Bem-vindo à %s Contrato página de assinatura de PDF WelcomeOnOnlineSignaturePageFichinter=Bem-vindo à %s intervensão página de assinatura de PDF WelcomeOnOnlineSignaturePageSociete_rib=Bem-vindo à %s página de assinatura de PDF do mandato SEPA +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=Esta página permite-lhe aceitar e assinar, ou recusar um orçamento/cotação ThisScreenAllowsYouToSignDocFromContract=Esta tela permite que você assine Contrato em formato PDF online. ThisScreenAllowsYouToSignDocFromFichinter=Esta tela permite que você assine intervensão em formato PDF online. ThisScreenAllowsYouToSignDocFromSociete_rib=Esta tela permite que você assine o Mandato SEPA em formato PDF online. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=Esta é a informação no documento para aceitar ou recusar ThisIsInformationOnDocumentToSignContract=Estas são informações sobre Contrato para assinar ThisIsInformationOnDocumentToSignFichinter=Estas são informações sobre intervensão para assinar ThisIsInformationOnDocumentToSignSociete_rib=Esta é a informação sobre o mandato da SEPA para assinar +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Assinatura da cotação/Orçamento %s SignatureContractRef=Assinatura de Contrato %s SignatureFichinterRef=Assinatura de intervensão %s SignatureSociete_ribRef=Assinatura do Mandato SEPA %s FeatureOnlineSignDisabled=Recurso para assinatura online desativado ou este documento foi criado antes que o recurso fosse ativado +NoSignature=Não assinado +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/pt_PT/datapolicy.lang b/htdocs/langs/pt_PT/datapolicy.lang index af896f88817..967684e9983 100644 --- a/htdocs/langs/pt_PT/datapolicy.lang +++ b/htdocs/langs/pt_PT/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Política de Privacidade de Dados # Module description 'ModuledatapolicyDesc' Module4100Desc = módulo para gerenciar a privacidade de dados (conformidade com o GDPR) - -# # Administration page -# datapolicySetup = módulo Configuração da política de privacidade de dados Deletion = Exclusão de dados datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Cliente potencial/cliente DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Nem cliente potencial/Nem cliente DATAPOLICY_CONTACT_FOURNISSEUR = Fornecedor DATAPOLICY_ADHERENT = Membro -DATAPOLICY_Tooltip_SETUP = Tipo de contato - Indique suas escolhas para cada tipo. -DATAPOLICYMail = Configuração de e-mails -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Conteúdo do e-mail -DATAPOLICYSUBSITUTION = Você pode usar as seguintes variáveis em seu e-mail (LINKACCEPT permite criar um hiperligação, conexão registrando a concordância da pessoa, LINKREFUSED possibilita registrar a recusa da pessoa): -DATAPOLICYACCEPT = Mensagem após acordo -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Você pode enviar um e-mail do GDPR para todos os seus contatos relevantes (que ainda não receberam um e-mail e para o qual você não registrou nada sobre o contrato do GDPR). Para fazer isso, use o botão a seguir. SendAgreement = Mande emails AllAgreementSend = Todos os e-mails foram enviados TXTLINKDATAPOLICYACCEPT = Texto para o hiperligação, conexão "acordo" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: Tratamento de dados pessoais DATAPOLICY_consentement = Consentimento obtido para o tratamento de dados pessoais DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonimizar um terceiro -DATAPOLICY_POPUP_ANONYME_TEXTE = Você não pode eliminar, apagar este contato de Dolibarr porque há itens relacionados. De acordo com o GDPR, você tornará todos esses dados anônimos para respeitar suas obrigações. Você gostaria de continuar ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Portabilidade GDPR -DATAPOLICY_PORTABILITE_TITLE = Exportação de dados pessoais -DATAPOLICY_PORTABILITE_CONFIRMATION = Você deseja exportar os dados pessoais deste contato. Tem certeza ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Anonimizou o %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Enviar e-mail do GDPR MailSent = O e-mail foi enviado - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/pt_PT/errors.lang b/htdocs/langs/pt_PT/errors.lang index 65d0c131b70..24896e8f22f 100644 --- a/htdocs/langs/pt_PT/errors.lang +++ b/htdocs/langs/pt_PT/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=O usuário deve ser atribuído à tarefa para poder i ErrorTaskAlreadyAssigned=Tarefa já atribuída ao usuário ErrorModuleFileSeemsToHaveAWrongFormat=O pacote de módulos parece ter um formato incorreto. ErrorModuleFileSeemsToHaveAWrongFormat2=Pelo menos um diretoria obrigatório deve existir no zip de módulo: %s ou %s -ErrorFilenameDosNotMatchDolibarrPackageRules=O nome do pacote do módulo ( %s ) não corresponde à sintaxe de nome esperada: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Erro, nome de disparo duplicado %s. Já carregado de %s. ErrorNoWarehouseDefined=Erro, nenhum armazém definido. ErrorBadLinkSourceSetButBadValueForRef=O link que você usa não é válido. Uma 'fonte' para pagamento é definida, mas o valor para 'ref' não é válido. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/pt_PT/mails.lang b/htdocs/langs/pt_PT/mails.lang index c087c6394e6..3ef10e78e27 100644 --- a/htdocs/langs/pt_PT/mails.lang +++ b/htdocs/langs/pt_PT/mails.lang @@ -32,6 +32,8 @@ NewMailing=Novo emailing NewSMSing=New smsing EditMailing=Editar Mailing ResetMailing=Reenviar e-mail +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Eliminar Mailing PreviewMailing=Previsualizar um Mailing CreateMailing=Criar E-Mailing @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=A direcção do destinatario está vazia WarningNoEMailsAdded=Nenhum e-mail novo para adicionar à lista destinatários. ConfirmValidMailing=Tem certeza de que deseja validar este e-mail? ConfirmResetMailing=Atenção, ao reinicializar o e-mail %s, você permitirá o reenvio deste e-mail em uma correspondência em massa. Tem a certeza que pretende para fazer isso? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Tem certeza de que deseja excluir este e-mail? NbOfUniqueEMails=Não de e-mails exclusivos NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Não há mais destinatário para enviar o e-mail EmailOptedOut=O proprietário do e-mail solicitou não entrar mais em contato com ele por meio deste e-mail EvenUnsubscribe=Incluir e-mails de cancelamento EvenUnsubscribeDesc=Inclua e-mails de cancelamento ao selecionar e-mails como alvos. Útil para e-mails de serviço obrigatórios, por exemplo. -XEmailsDoneYActionsDone=%s e-mails pré-qualificados, %s e-mails processados com sucesso (para registro %s /ações realizadas) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/pt_PT/stripe.lang b/htdocs/langs/pt_PT/stripe.lang index 9f75d90fb5f..e7dfa2882f0 100644 --- a/htdocs/langs/pt_PT/stripe.lang +++ b/htdocs/langs/pt_PT/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL para oferecer uma página de paga ToOfferALinkForOnlinePaymentOnFreeAmount=URL para oferecer uma página de pagamento on-line %s de qualquer valor sem nenhum objeto existente ToOfferALinkForOnlinePaymentOnMemberSubscription=URL para oferecer uma página de pagamento on-line %s para uma assinatura membro ToOfferALinkForOnlinePaymentOnDonation=URL para oferecer uma %s página de pagamento on-line para pagamento de uma doação -YouCanAddTagOnUrl=Você também pode adicionar o parâmetro de URL &tag=valor a qualquer um desses URLs (obrigatório apenas para pagamentos não vinculados a um objeto) para adicionar sua própria tag de comentário de pagamento.
Para o URL de pagamentos sem objeto existente, você também pode adicionar o parâmetro &noidempotency=1 para que o mesmo hiperligação, conexão com a mesma tag pode ser usado várias vezes (alguns modos de pagamento podem limitar o pagamento a 1 para cada hiperligação, conexão diferente sem este parâmetro) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Configure o seu Stripe através do URL %s para que tenha os pagamentos criados automaticamente quando estes forem validades pelo Stripe. AccountParameter=Conta parâmetros UsageParameter=Parâmetros de uso @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Localização (endereço) dos Terminais Stripe RequestDirectDebitWithStripe=Solicitação Débito direto com Stripe RequesCreditTransferWithStripe=Solicitar transferência de crédito com Stripe STRIPE_SEPA_DIRECT_DEBIT=Habilite os pagamentos Débito direto através do Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=Modo Stripe Connect +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/ro_RO/admin.lang b/htdocs/langs/ro_RO/admin.lang index 4b008df8aba..057e585336c 100644 --- a/htdocs/langs/ro_RO/admin.lang +++ b/htdocs/langs/ro_RO/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Lista de valori trebuie să fie linii cu formatul chei ExtrafieldParamHelpcheckbox=Lista de valori trebuie să fie linii cu formatul cheie,valoare (unde cheia nu poate fi "0")

de exemplu:
1,valoare1
2,valoare2
3,valoare3
... ExtrafieldParamHelpradio=Lista de valori trebuie să fie linii cu formatul cheie,valoare (unde cheia nu poate fi '0')

de exemplu:
1,valoare1
2,valoare2
3,valoare3
... ExtrafieldParamHelpsellist=Lista de valori provine dintr-un tabel
Sintaxă: table_name:label_field:id_field::filtersql
Exemplu: c_typent:libelle:id::filtersql

- id_field este neapărat o cheie int primară
- filtersql este o condiție. Trebuie să folosească sintaxa USF. Exemplu: (activ:=:1) pentru a afișa numai valoarea activă.
De asemenea, poți utiliza $ID$ în filtru, care este id-ul curent al obiectului.
Dacă vrei să filtrezi pe extracâmpuri, utilizează sintaxa extra.fieldcode=... (unde fieldcode este codul extracâmpului)

Pentru ca lista să depindă de un alt atribut listă:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

Pentru ca lista să depindă de altă listă:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Lista de valori provine dintr-o tabelă
Sintaxă: table_name:label_field:id_field::filtersql
Exemplu: c_typent:libelle:id::filtersql

filter poate fi un test simplu (de exemplu, activ=1 pentru a afișa numai valoarea activă)
De asemenea, poți utiliza $ID$ în filtru care este id-ul curent al obiectului curent
Pentru a face un SELECT în filtru, utilizează $SEL$
dacă vrei să filtrezi pe extracâmpuri, utilizează sintaxa extra.fieldcode=... (unde codul câmpului este codul extracâmpului)

Pentru a avea lista în funcție de pe o altă listă de atribute complementare:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

Pentru ca lista să depindă de altă listă:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametrii trebuie să fie ObjectName:Classpath
Sintaxă: ObjectName: Classpath ExtrafieldParamHelpSeparator=Păstrați liber pentru un separator simplu
Setați acest lucru la 1 pentru un separator care se prăbușește (deschis în mod implicit pentru o nouă sesiune, apoi starea este păstrată pentru fiecare sesiune de utilizator)
Setați acest lucru la 2 pentru un separator care se prăbușește (se prăbușește implicit pentru o nouă sesiune, apoi starea este păstrată pentru fiecare sesiune a utilizatorului) LibraryToBuildPDF=Bibliotecă utilizată pentru generarea PDF-urilor @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s urmat de numele clientului trunchiat la nu ModuleCompanyCodeSupplierDigitaria=%s urmată de numele furnizorului trunchiat la numărul de caractere: %s pentru codul contabil al furnizorului. Use3StepsApproval=În mod implicit, comenzile de achiziţie trebuie să fie create și aprobate de 2 utilizatori diferiți (un pas/utilizator de creat și un pas/utilizator de aprobat. Rețineți că, dacă utilizatorul are atât permisiunea de a crea și de a aproba, va fi suficient un pas/un utilizator). Puteți solicita această opțiune pentru a introduce un al treilea pas/aprobare pentru utilizatori, dacă suma este mai mare decât o valoare dedicată (astfel încât vor fi necesari 3 pași: 1 = validare, 2 = prima aprobare și 3 = o a doua aprobare dacă suma este suficientă).
Setați acest lucru la gol, dacă este suficientă o aprobare (2 pași), setați-o la o valoare foarte mică (0,1) dacă este întotdeauna necesară o a doua aprobare (3 pași). UseDoubleApproval=Utilizați o aprobare în 3 pași atunci când suma (fără taxă) este mai mare decât... -WarningPHPMail=ATENȚIE: Configurarea pentru a trimite email-uri din aplicație utilizează configurația generică implicită. Această alegere nu necesită cunoștințe tehnice pentru a finaliza configurarea.
Cu toate acestea, este adesea mai bine să configurezi email-urile trimise pentru a utiliza serverul de email al furnizorului tău de servicii de email în loc de configurarea implicită din mai multe motive: +WarningPHPMail=NOTĂ: Configurarea pentru a trimite email-uri din aplicație utilizează configurația generică implicită (numită "%s"). Această alegere nu necesită cunoștințe tehnice și nicio configurare specială.
Cu toate acestea, este adesea mai bine să configurezi email-urile trimise pentru a utiliza cealaltă metodă (numită "%s") pentru a utiliza server-ul de email al furnizorului tău, în loc de configurarea implicită, din mai multe motive. : WarningPHPMailA=- Utilizarea serverului Furnizorului de servicii de email crește încrederea în emailul tău, astfel încât crește capacitatea de livrare fără a fi semnalat ca SPAM -WarningPHPMailB=- Unii furnizori de servicii de email (cum ar fi Yahoo) nu vă permit să trimiteți un email de pe alt server decât propriul server. Configurarea dvs. actuală utilizează serverul aplicației pentru a trimite email-uri și nu serverul furnizorului dvs. de email, deci unii destinatari (cei compatibili cu protocolul restrictiv DMARC), vă vor întreba furnizorul de email dacă vă pot accepta emailul și unii furnizori de email (cum ar fi Yahoo) poate răspunde "nu" deoarece serverul nu este al lor, așa că puține emailuri trimise pot să nu fie acceptate pentru livrare (aveți grijă și la cota de trimitere a furnizorului dvs. de email). +WarningPHPMailB=- Dacă domeniul tău de email (partea mymaildomain.com în myname@mymaildomain.com) este protejat de un SPF + o înregistrare DMARC, email-ul tău poate fi marcat ca SPAM deoarece regula dvs. DMARC este definită în zona DNS a domeniului expeditor (mymaildomain.com) nu permite trimiterea ca expeditor generic. Într-un astfel de caz, trebuie să dezactivezi DMARC pentru domeniu (sau să îl setezi la p=none așa cum a făcut @gmail.com) sau, mai bine, dacă ai cunoștințe tehnice, utilizează cealaltă metodă pentru a trimite email-uri folosind server-ul SMTP propriu de la furnizor. WarningPHPMailC=- Utilizând serverul SMTP al furnizorului de servicii email pentru a trimite email-uri este, de asemenea, interesantă, astfel încât toate email-urile trimise din aplicație vor fi, de asemenea, salvate în directorul "Trimise" al cutiei poștale. WarningPHPMailD=Prin urmare, este recomandat să schimbi metoda de trimitere a email-urilor la valoarea "SMTP". WarningPHPMailDbis=Dacă vrei cu adevărat să păstrezi metoda implicită "PHP" pentru a trimite email-uri, ignoră acest avertisment sau elimină-l făcând %sclic aici%s. 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 reală găsită (pentru email-ul %s) : %s +WarningPHPMailSPF=Dacă numele de domeniu din adresa ta de email expeditorului este protejat de o înregistrare SPF (adresează-te registratorului numelui de domeniu), trebuie să adaugi următoarele IP-uri sau înregistrarea SPF DNS pentru tău. %s. +WarningPHPMailSPFDMARC=Dacă numele de domeniu din adresa ta de email de expeditor este protejat de o înregistrare DMARC diferită de p=none (întreabă-l pe registarul numelui de domeniu), trebuie să elimini înregistrarea DMARC sau să o setezi la p=none, cum ar fi @gmail.com) sau folosește trimiterea printr-o altă metodă. +SPFAndDMARCInformation=Înregistrare DNS SPF și DMARC pentru adresele de email principale +ActualMailDNSRecordFound=Înregistrarea SPF reală %s găsită (pentru email %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) @@ -867,7 +868,7 @@ Permission255=Creare/modificare propriile informaţii de utilizator Permission256=Modificare propria parolă Permission262=Extindere acces la toți terții ȘI la obiectele acestora (nu numai terți pentru care utilizatorul este asociat ca reprezentant de vânzări). Permission262b=Nu este eficient pentru utilizatorii externi (limitați întotdeauna la ei înșiși pentru oferte, comenzi, facturi, contracte etc.). -Permission262c=Nu este eficient pentru proiecte (doar regulile privind permisiunile de proiect, vizibilitatea și chestiunile de atribuire). +Permission262c=Nu se aplică pentru proiecte (doar regulile privind permisiunile de proiect, vizibilitatea și atribuirea utilizatorilor contează). Permission263=Extindeți accesul la toţi terții FĂRĂ obiectele lor (nu numai la terții pentru care utilizatorul este reprezentant de vânzări).
Nu este eficient pentru utilizatorii externi (întotdeauna limitat la ei înșiși pentru propuneri, comenzi, facturi, contracte etc.).
Nu este eficient pentru proiecte (numai reguli privind permisiunile proiectului, vizibilitate și probleme de atribuire). Permission271=Citeşte CA Permission272=Citeşte facturi @@ -944,7 +945,7 @@ Permission776=Plăteşte rapoartele de cheltuieli Permission777=Citeşte toate rapoartele de cheltuieli (chiar și cele ale utilizatorilor care nu îi sunt subordonați) Permission778=Creare/modificare rapoarte de cheltuieli pentru toţi Permission779=Export rapoarte de cheltuieli -Permission1001=Citeşte stocuri +Permission1001=Citește depozite și stocuri Permission1002=Creare/modificare depozite Permission1003=Șterge depozite Permission1004=Citeşte mişcările de stoc @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Flitru Regex pentru curăţarea valorii (COMPANY_D DuplicateForbidden=Duplicare interzisă RemoveSpecialWords=Curățare anumite cuvinte atunci când se generează sub-conturi pentru clienți sau furnizori RemoveSpecialWordsHelp=Specifică cuvintele de curățat înainte de a calcula contul de client sau furnizor. Folosește ";" între cuvinte -GDPRContact=Responsabilul cu protecția datelor (DPO, confidențialitatea datelor sau contact GDPR ) +GDPRContact=Responsabil cu protecția datelor (DPO, Data Privacy sau contact GDPR, ...)  GDPRContactDesc=Dacă stochezi date cu caracter personal în Sistemul tău informațional, poți specifica aici persoana de contact care este responsabilă pentru GDPR HelpOnTooltip=Text de ajutor care să apară pe butonul de sugestii HelpOnTooltipDesc=Puneți un text sau o cheie de traducere aici pentru ca textul să apară într-o sugestie atunci când acest câmp apare într-un formular @@ -2218,7 +2219,7 @@ CreateCandidature=Creare aplicare la job FormatZip=Zip MainMenuCode=Codul de intrare a meniului (meniu principal) ECMAutoTree=Afișați arborele ECM automat -OperationParamDesc=Definește regulile de utilizat pentru extragerea unor date sau setează valorile de utilizat pentru operare.

Exemplu pentru extragerea unui nume de companie din subiectul email-ului într-o variabilă temporară:
tmp_var=EXTRACT:SUBJECT:Mesaj de la companie ([^\n]*)

Exemple pentru a seta proprietățile unui obiect de creat:
objproperty1=SET:o valoare codată
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:o valoare (valoarea este setată numai dacă proprietatea nu este deja definită)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Numele companiei mele este \\s([^\\s]*)

Utilizează o linie nouă pentru a extrage sau pentru a seta proprietăți. +OperationParamDesc=Definește regulile de utilizat pentru a extrage unele date sau setează valori de utilizat pentru operare.

Exemplu pentru a extrage un șir din antetul, subiectul sau corpul e-mailului într-o variabilă temporară:
tmp_var1=EXTRACT:HEADER:Extractul meu regex ([^\n ]*)
tmp_var2=EXTRACT:SUBIECT:Reflexul meu ([^\n ]*)
tmp_var3=EXTRACT:BODY:Extractul meu regex ([^\n ]*)

Exemple pentru a seta proprietățile unui obiect pentru a crea:
objproperty1=SET:a valoare codificată
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:o valoare (valoarea este setată numai dacă proprietatea nu este deja definită)
objproperty4=EXTRACT:HEADER:X -Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Numele companiei mele este\\s([^\\s ]*)

Utilizează o nouă linie pentru a extrage sau a seta mai multe proprietăți. OpeningHours=Program de lucru OpeningHoursDesc=Introduceți aici programul de lucru normal ale companiei dvs. ResourceSetup=Configurarea modulului Resurse @@ -2264,7 +2265,7 @@ LargerThan=Mai mare decât IfTrackingIDFoundEventWillBeLinked=Reține că, dacă un ID de urmărire al unui obiect este găsit în email sau dacă email-ul este un răspuns la un email deja colectat și legat la un obiect, evenimentul creat va fi legat automat la obiectul asociat cunoscut. WithGMailYouCanCreateADedicatedPassword=Cu un cont GMail, dacă ai activat validarea în 2 pași, este recomandat să creezi o a doua parolă dedicată pentru aplicație în loc să folosești propria parolă a contului de pe https://myaccount.google.com/. EmailCollectorTargetDir=Poate fi un comportament dorit să muți email-ul într-o altă etichetă/director atunci când a fost procesat cu succes. Doar setează aici numele directorului pentru a utiliza această caracteristică (NU utiliza caractere speciale în nume). Reține că trebuie să utilizezi și un cont de autentificare pentru citire/scriere. -EmailCollectorLoadThirdPartyHelp=Poți folosi această acțiune pentru a utiliza conținutul emailul-ui pentru a găsi și încărca un terț existent în baza de date (căutarea se va face pe proprietățile definite 'id', 'name', 'name_alias', 'email'). Terțul găsit (sau creat) va fi folosit pentru următoarele acțiuni care au nevoie de el.
De exemplu, dacă vrei să creezi un terț cu un nume extras dintr-un text 'Nume: nume de găsit' prezent în corpul email-ului, utilizând email-ul expeditorului ca email, poți seta câmpul parametru astfel:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET: 2;'
+EmailCollectorLoadThirdPartyHelp=Poți folosi această acțiune pentru a utiliza conținutul e-mailului pentru a găsi și încărca un terț existent în baza de date (căutarea se va face pe proprietatea definită printre „id”, „name”, „name_alias”, „email”). Terțul găsit (sau creat) va fi folosit pentru următoarele acțiuni care au nevoie de ea.
De exemplu, dacă vrei să creezi un terț cu un nume extras dintr-un șir „Nume: nume de găsit” prezent în corp, utilizați e-mailul expeditorului ca e-mail, poți seta câmpul parametrului astfel:
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client= SET:2;'
FilterSearchImapHelp=Atenție: multe servere de email (cum ar fi Gmail) efectuează căutări complete de cuvinte atunci când caută pe un șir și nu vor returna un rezultat dacă șirul este găsit doar parțial într-un cuvânt. Din acest motiv, utilizează caractere speciale într-o căutare, criteriile vor fi ignorate dacă nu fac parte din cuvintele existente.
Pentru a efectua o căutare de excludere a unui cuvânt (returnează email-ul dacă cuvântul nu este găsit), poți utiliza caracterul ! înainte de cuvânt (poate să nu funcționeze pentru unele servere de email). EndPointFor=End point pentru %s:%s DeleteEmailCollector=Şterge colectorul de email-uri @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Denumire terț - Alias terț ALIAS_THIRDPARTY=Alias terț - Denumire terț PDFIn2Languages=Afișare etichete în PDF în 2 limbi diferite (este posibil ca această funcție să nu funcționeze pentru anumite limbi)  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=Generare documente PDF cu formatul PDF/A în loc de formatul implicit PDF +PDF_USE_A=Format documente PDF FafaIconSocialNetworksDesc=Introduceți aici codul unei pictograme FontAwesome. Dacă nu știți ce este FontAwesome, puteți utiliza valoarea generică fa-address-book. RssNote=Notă: Fiecare definiție de flux RSS oferă un widget pe care trebuie să îl activați pentru a-l avea disponibil în tabloul de bord JumpToBoxes=Mergi la Setări -> Widget-uri @@ -2553,3 +2554,8 @@ MenuDict=Dicționar AddMoreParams=Adăugare mai mulți parametri pentru conexiune (cookie-uri, jetoane, ...)
Exemplu: token : valoare token ParamName=Nume parametru ParamValue=Valoare parametru +ConfirmDeleteParamOfSocialNetwork=Ești sigur că vrei să ștergi acest parametru? +HelpMariaDBToGetPossibleValues=Poți obține o listă de valori posibile rulând următoarea comandă SQL: %s +Captcha=Captcha +CaptchaDesc=Dacă vrei să-ți protejezi pagina de autentificare cu un cod Captcha, poți alege pe cel care să-l utilizezi aici +DolibarrStandardCaptcha=Un captcha nativ generat de Dolibarr diff --git a/htdocs/langs/ro_RO/commercial.lang b/htdocs/langs/ro_RO/commercial.lang index 59d80907be6..dcd1faada21 100644 --- a/htdocs/langs/ro_RO/commercial.lang +++ b/htdocs/langs/ro_RO/commercial.lang @@ -94,3 +94,9 @@ SignatureContractRef=Semnarea contractului %s SignatureFichinterRef=Semnarea intervenției %s SignatureSociete_ribRef=Semnătură mandat SEPA %s FeatureOnlineSignDisabled=Funcţionalitatea pentru semnare online este dezactivată sau documentul a fost generat înainte activarea acestei funcţionalităţi +NoSignature=Nesemnată +SignedSender=Semnat intern +SignedReceiver=Semnat de terț +SignedReceiverOnline=Semnat de terț online +SignedAll=Semnat de toate părțile +SignStatus=Status semnătură diff --git a/htdocs/langs/ro_RO/companies.lang b/htdocs/langs/ro_RO/companies.lang index e62ab680b91..130f35dbaa7 100644 --- a/htdocs/langs/ro_RO/companies.lang +++ b/htdocs/langs/ro_RO/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Nume de autentificare NoDolibarrAccess=Utilizator fără acces în sistem ExportDataset_company_1=Terți (companii/fundații/persoane fizice) și proprietățile acestora ExportDataset_company_2=Persoane de contact și proprietățile acestora +ExportDataset_company_3=Conturi bancare Terți ImportDataset_company_1=Terți și proprietățile acestora ImportDataset_company_2=Contacte/adrese și atribute suplimentare pentru terţi ImportDataset_company_3=Conturi bancare Terți diff --git a/htdocs/langs/ro_RO/datapolicy.lang b/htdocs/langs/ro_RO/datapolicy.lang index f32019ae7f7..efc6dfe2912 100644 --- a/htdocs/langs/ro_RO/datapolicy.lang +++ b/htdocs/langs/ro_RO/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Politica de confidențialitate a datelor # Module description 'ModuledatapolicyDesc' Module4100Desc = Modul de gestionare a confidențialității datelor cu caracter personal (conformitate cu GDPR) - -# # Administration page -# datapolicySetup = Configurare modul Confidențialitatea datelor cu caracter personal Deletion = Ștergere date datapolicySetupPage = În funcție de legile din țara ta (Exemplu Articolul 5 din GDPR), datele cu caracter personal trebuie păstrate pentru o perioadă care nu depășește durata în care datele sunt necesare pentru scopul pentru care au fost colectate, cu excepția scopurilor de arhivare.
Ștergerea va fi se face automat după o anumită durată fără evenimente (durata pe care o vei indica mai jos). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Prospect/Client DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Nici prospect/Nici client DATAPOLICY_CONTACT_FOURNISSEUR = Furnizor DATAPOLICY_ADHERENT = Membru -DATAPOLICY_Tooltip_SETUP = Tip de contact - Indică opțiunile tale pentru fiecare tip.  -DATAPOLICYMail = Configurare email-uri -DATAPOLICYSUBJECTMAIL = Subiectul email-ului -DATAPOLICYCONTENTMAIL = Conținut email -DATAPOLICYSUBSITUTION = Poți utiliza următoarele variabile în email-ul tău. (LINKACCEPT permite crearea unui link care să înregistreze acordul persoanei, LINKREFUSED face posibilă înregistrarea refuzului persoanei): -DATAPOLICYACCEPT = Mesaj după acord -DATAPOLICYREFUSE = Mesaj după dezacord +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Poți trimite un email de acord GDPR tuturor persoanelor de contact relevante (care nu au primit încă un email și pentru care nu ai înregistrat nimic despre acordul lor GDPR). Pentru a face acest lucru, utilizează următorul buton. SendAgreement = Trimite email-uri AllAgreementSend = Toate email-urile au fost trimise TXTLINKDATAPOLICYACCEPT = Text pentru linkul "acord" TXTLINKDATAPOLICYREFUSE = Text pentru link "dezacord" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: Prelucrarea datelor cu caracter personal DATAPOLICY_consentement = Consimțământul obținut pentru prelucrarea datelor cu caracter personal DATAPOLICY_opposition_traitement = Se opune prelucrării datelor sale personale DATAPOLICY_opposition_prospection = Se opune prelucrării datelor sale personale în scopuri de prospectare - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonimizare terț -DATAPOLICY_POPUP_ANONYME_TEXTE = Nu poți șterge acest contact din sistem deoarece există articole legate. În conformitate cu GDPR, veți face toate aceste date anonime pentru a vă respecta obligațiile. Doriți să continuați? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Portabilitate GDPR -DATAPOLICY_PORTABILITE_TITLE = Export date personale -DATAPOLICY_PORTABILITE_CONFIRMATION = Dorești să exporți datele personale ale acestui contact. Ești sigur ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Anonimizare %s - DATAPOLICY_date = Dată acord/dezacord GDPR DATAPOLICY_send = Dată trimitere email acord -DATAPOLICY_SEND = Trimite email GDPR MailSent = Email-ul a fost trimis - -# ERROR -=Din cauza unei probleme tehnice, nu am putut înregistra opțiunea ta. Ne cerem scuze pentru asta. Contactează-ne pentru a ne anunța opțiunea ta. NUMBER_MONTH_BEFORE_DELETION = Număr de luni înainte de ștergere diff --git a/htdocs/langs/ro_RO/dict.lang b/htdocs/langs/ro_RO/dict.lang index 7e58761abb1..b4f1c38b9bd 100644 --- a/htdocs/langs/ro_RO/dict.lang +++ b/htdocs/langs/ro_RO/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=Franci CFP CurrencySingXPF=Franc CFP CurrencyCentEUR=cenţi CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=mii #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/ro_RO/errors.lang b/htdocs/langs/ro_RO/errors.lang index f813e020d92..e182a9bdb93 100644 --- a/htdocs/langs/ro_RO/errors.lang +++ b/htdocs/langs/ro_RO/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Utilizatorul trebuie să fie atribuit task-ului pentr ErrorTaskAlreadyAssigned=Task atribuit deja utilizatorului ErrorModuleFileSeemsToHaveAWrongFormat=Pachetul de modul pare să aibă un format greșit. ErrorModuleFileSeemsToHaveAWrongFormat2=Cel puțin un director trebuie să existe obligatoriu în arhiva zip a modulului: %s sau %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Numele pachetului de modul ( %s) nu se potrivește cu sintaxa de denumire așteptată: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=Numele de fișier al pachetului de modul (%s) nu se potrivește cu sintaxa de nume așteptată: %s ErrorDuplicateTrigger=Eroare, nume de trigger duplicat %s. Este deja încărcat de %s. ErrorNoWarehouseDefined=Eroare, nu au fost definite depozite. ErrorBadLinkSourceSetButBadValueForRef=Linkul pe care îl utilizați nu este valid. O "sursă" pentru plată este definită, dar valoarea pentru "ref" nu este validă. diff --git a/htdocs/langs/ro_RO/hrm.lang b/htdocs/langs/ro_RO/hrm.lang index 17cf217e07d..8f24e3b8499 100644 --- a/htdocs/langs/ro_RO/hrm.lang +++ b/htdocs/langs/ro_RO/hrm.lang @@ -1,6 +1,5 @@ # Dolibarr language file - en_US - hrm - # Admin HRM_EMAIL_EXTERNAL_SERVICE=Adresă email HRM serviciu externalizat Establishments=Sedii @@ -24,7 +23,7 @@ SkillsManagement=Management abilităţi HRM_MAXRANK=Numărul maxim de niveluri pentru a clasifica o abilitate HRM_DEFAULT_SKILL_DESCRIPTION=Descriere implicită a rangurilor la crearea de abilități deplacement=Schimb -DateEval=Dată evaluare +DateEval=Dată evaluare competență JobCard=Fişă job NewJobProfile=Profil job nou JobProfile=Profil job @@ -41,12 +40,12 @@ Skill=Aptitudine Skills=Aptitudini SkillCard=Fişă aptitudini EmployeeSkillsUpdated=Competențele angajaților au fost actualizate (vezi fila "Abilități" din fişa de angajat) -Eval=Evaluare -Evals=Evaluări -NewEval=Evaluare nouă -ValidateEvaluation=Validare evaluare -ConfirmValidateEvaluation=Ești sigur că vrei să validezi această evaluare cu referința %s? -EvaluationCard=Fişă evaluare +Eval=Evaluare competență +Evals=Evaluări competență +NewEval=Evaluare competență nouă +ValidateEvaluation=Validare evaluare competență +ConfirmValidateEvaluation=Sigur vrei să validezi evaluarea competențelor cu referința %s? +EvaluationCard=Evaluare competență RequiredRank=Clasament necesar pentru profil job RequiredRankShort=Rang necesar PositionsWithThisProfile=Posturi pentru aceste profile de job @@ -60,8 +59,8 @@ group2ToCompare=Grup de utilizatori secundar pentru comparare OrJobToCompare=Comparare cu abilitățile solicitate ale unui profil de job difference=Diferenţă CompetenceAcquiredByOneOrMore=Competență dobândită de unul sau mai mulți utilizatori, dar nesolicitată de comparatorul secundar -MaxlevelGreaterThan=Nivelul angajatului este mai mare decât nivelul așteptat -MaxLevelEqualTo=Nivelul angajatului este egal cu nivelul așteptat +MaxlevelGreaterThan=Nivelul angajatului este mai mare decât nivelul așteptat +MaxLevelEqualTo=Nivelul angajatului este egal cu nivelul așteptat MaxLevelLowerThan=Nivelul angajatului este mai scăzut decât nivelul așteptat MaxlevelGreaterThanShort=Nivel mai mare decât cel așteptat MaxLevelEqualToShort=Nivel egal cu cel așteptat @@ -73,6 +72,9 @@ AddSkill=Adăugare abilități la profilul postului RequiredSkills=Aptitudini necesare pentru acest profil de job UserRank=Rang utilizator SkillList=Listă aptitudini +SkillCreated=%s aptitudini create +SkillRank=Rang aptitudine +ShowSkillRank=Afișare rang aptitudine SaveRank=Salvare rang TypeKnowHow=Know-how TypeHowToBe=Cum să fie @@ -90,8 +92,9 @@ SaveAddSkill = Aptitudine(i) adăugat SaveLevelSkill = Nivel aptitudine(i) salvat DeleteSkill = Aptitudine ştearsă SkillsExtraFields=Atribute complementare (Aptitudini - skill-uri) -JobsExtraFields=Atribute complementare (Probil job) -EvaluationsExtraFields=Atribute complementare (Evaluări) +JobsExtraFields=Atribute suplimentare (Profiluri joburi) +EvaluationsExtraFields=Atribute suplimentare (Evaluări competențe) NeedBusinessTravels=Necesar călătorii de afaceri NoDescription=Nicio descriere TheJobProfileHasNoSkillsDefinedFixBefore=Profilul de post evaluat al acestui angajat nu are nicio aptitudine definită pe el. Adaugă aptitudin(i), apoi șterge și repornește evaluarea. +PDFStandardHrmEvaluation=Șablon standard generare document PDF pentru evaluarea competențelor  diff --git a/htdocs/langs/ro_RO/interventions.lang b/htdocs/langs/ro_RO/interventions.lang index ef65fb5ccaa..7bdeb56e2ed 100644 --- a/htdocs/langs/ro_RO/interventions.lang +++ b/htdocs/langs/ro_RO/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Creare schiţă InterventionContact=Contact Intervenţie DeleteIntervention=Şterge intervenţie ValidateIntervention=Validează intervenţie +SignIntervention=Semnare intervenție +UnsignIntervention=De-semnare intervenție ModifyIntervention=Modifică intervenţie CloseIntervention=Închidere intervenție DeleteInterventionLine=Şterge intervenţie ConfirmDeleteIntervention=Sigur doriți să ștergeți această intervenție? ConfirmValidateIntervention=Sigur doriți să validați această intervenție sub numele %s? +ConfirmSignIntervention=Are you sure you want to set this intervention as signed ? +ConfirmUnsignIntervention=Are you sure you want to set this intervention as unsigned ? ConfirmModifyIntervention=Sigur doriți să modificați această intervenție? ConfirmCloseIntervention=Ești sigur că vrei să închizi această intervenție? ConfirmDeleteInterventionLine=Sigur doriți să ștergeți această linie de intervenție? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Intervenţii şi linii ale intervenţiilor InterventionClassifyBilled=Clasează Facturat InterventionClassifyUnBilled=Clasează Nefacturat InterventionClassifyDone=Clasează "Finalizat" +InterventionSign=Setare ca semnată +InterventionUnsign=Setare ca nesemnată SendInterventionRef=Ref. intervenţie %s SendInterventionByMail=Trimite intervenția pe email InterventionCreatedInDolibarr=Intervenţia %s a fost creată InterventionValidatedInDolibarr=Intervenţia %s a fost validată +InterventionSignedInDolibarr=Intervenție semnată +InterventionSignedOnline=Intervenție semnată online +InterventionUnsignedInDolibarr=Intervenție nesemnată InterventionModifiedInDolibarr=Intervenţia %s a fost modificată InterventionClassifiedBilledInDolibarr=Intervenţia %s a fost setată ca facturată InterventionClassifiedUnbilledInDolibarr=Intervenţia %s a fost setată ca nefacturată diff --git a/htdocs/langs/ro_RO/mails.lang b/htdocs/langs/ro_RO/mails.lang index fb4a8747169..cfae7327660 100644 --- a/htdocs/langs/ro_RO/mails.lang +++ b/htdocs/langs/ro_RO/mails.lang @@ -32,8 +32,8 @@ NewMailing=Newsletter nou NewSMSing=Trimitere de SMS-uri nouă EditMailing=Editare newsletter ResetMailing=Retrimitere newsletter -ConfirmResetMailingTargetMassaction=Confirmare Retrimitere email-uri în masă -ResetMailingTargetMassaction=Retrimitere la destinatar +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Ştergere newsletter PreviewMailing=Previzualizare newsletter CreateMailing=Creare newsletter @@ -193,7 +193,7 @@ NoMoreRecipientToSendTo=Nu mai există destinatari cărora să le trimiți email EmailOptedOut=Deținătorul email-ului a solicitat să nu mai fie contactat pe acest email EvenUnsubscribe=Include email-uri de renunțare EvenUnsubscribeDesc=Include email-uri de dezabonare/renunțare atunci când selectezi email-uri pentru expeditori. Util pentru email-urile de serviciu obligatorii, de exemplu. -XEmailsDoneYActionsDone=%s email-uri precalificate, %s email-uri procesate cu succes (pentru %s înregistrări/acțiuni efectuate) +XEmailsDoneYActionsDone=%s email-uri pre-calificate, %s email-uri procesate cu succes (pentru %s operațiunile efectuate) YouCanMakeSomeInstructionForEmail=Poți face câteva instrucțiuni pentru emai (Exemplu: generare imagine în șablonul de email...) ModelTemplate=Șablon email YouCanChooseAModelForYouMailContent= Poți alege unul dintre modelele de șablon sau poți genera unul cu AI diff --git a/htdocs/langs/ro_RO/main.lang b/htdocs/langs/ro_RO/main.lang index 96c4680a711..01b296573f1 100644 --- a/htdocs/langs/ro_RO/main.lang +++ b/htdocs/langs/ro_RO/main.lang @@ -45,6 +45,7 @@ NoError=Nicio eroare Error=Eroare Errors=Erori ErrorFieldRequired=Câmpul " %s" este obligatoriu +CustomMandatoryFieldRule=Regulă personalizată "Câmp obligatoriu" ErrorFieldFormat=Câmpul " %s" are o valoare incorectă ErrorFileDoesNotExists=Fișierul % s nu există ErrorFailedToOpenFile=Nu se poate deschide fișierul % s diff --git a/htdocs/langs/ro_RO/oauth.lang b/htdocs/langs/ro_RO/oauth.lang index 222e01f3766..1317f03283e 100644 --- a/htdocs/langs/ro_RO/oauth.lang +++ b/htdocs/langs/ro_RO/oauth.lang @@ -40,7 +40,7 @@ URLOfOAuthServiceEndpointsExample=https://mastodon.example.com URLOfServiceForAuthorization=Adresa URL furnizată de serviciul OAuth pentru autentificare Scopes=Permisiuni (Domenii) ScopeUndefined=Permisiuni (domenii) nedefinite (vezi fila anterioară) -ScopesDesc=Examplu: citire,scriere cu Mastodom +ScopesDesc=Exemplu: read,write cu Mastodon TokenRawValue=Token complet (obiect) AccessToken=Token de acces TokenExpired=Expirat diff --git a/htdocs/langs/ro_RO/other.lang b/htdocs/langs/ro_RO/other.lang index ffd63689bac..524f45280b8 100644 --- a/htdocs/langs/ro_RO/other.lang +++ b/htdocs/langs/ro_RO/other.lang @@ -72,6 +72,7 @@ Notify_BILL_SUPPLIER_SENTBYMAIL=Factura furnizor a fost trimisă prin poștă Notify_BILL_SUPPLIER_CANCELED=Factură furnizor anulată Notify_CONTRACT_VALIDATE=Contractul a fost validat Notify_FICHINTER_VALIDATE=Intervenţia a fost validată +Notify_FICHINTER_MODIFY=Intervenție modificată Notify_FICHINTER_CLOSE=Intervenția a fost închisă Notify_FICHINTER_ADD_CONTACT=Adăugare contact la intervenţie Notify_FICHINTER_SENTBYMAIL=Intervenţie trimisă prin poştă @@ -209,6 +210,7 @@ AmountIn=Cantitate în %s NumberOfUnitsMos=Număr unităţi de fabricat din comenzile de producţie EMailTextInterventionAddedContact=Ţi-a fost atribuită o nouă intervenție %s. EMailTextInterventionValidated=Intervenţia %s a fost validată +EMailTextInterventionModified=Intervenția %s a fost modifcată. %s EMailTextInterventionClosed=Intervenția %s a fost închisă. EMailTextInvoiceValidated=Factura %s a fost validată. EMailTextInvoicePayed=Factura %s a fost achitată. diff --git a/htdocs/langs/ro_RO/sendings.lang b/htdocs/langs/ro_RO/sendings.lang index a3c2ac29b0f..eedb8830e29 100644 --- a/htdocs/langs/ro_RO/sendings.lang +++ b/htdocs/langs/ro_RO/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=Nu există niciun produs de livrat în depozitul < WeightVolShort=Greutate/Volum. ValidateOrderFirstBeforeShipment=Mai întâi trebuie să validezi comanda de vânzare înainte de a putea face livrări. NoLineGoOnTabToAddSome=Nicio linie/articol, mergi în fila "%s" pentru adăugare -CreateInvoiceForThisCustomerFromSendings=Facturare expediții +CreateInvoiceForThisCustomerFromSendings=Creare Facturi IfValidateInvoiceIsNoSendingStayUnbilled=Dacă validarea facturii este 'Nu', expedierea/livrarea va rămâne în starea 'Nefacturată' până când factura este validată. OptionToSetSendingBilledNotEnabled= Opțiunea din modulul Flux de lucru, pentru a seta automat trimiterea la 'Facturat' atunci când factura este validată, nu este activată, așa că va trebui să setezi manual starea trimiterilor la 'Facturat' după generarea facturii. diff --git a/htdocs/langs/ro_RO/stripe.lang b/htdocs/langs/ro_RO/stripe.lang index a2fc3950927..4b56837d048 100644 --- a/htdocs/langs/ro_RO/stripe.lang +++ b/htdocs/langs/ro_RO/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine= URL oferit pentru %s plată online p ToOfferALinkForOnlinePaymentOnFreeAmount=URL oferit pentru %s plată online pentru orice sumă fără un produs/serviciu existent ToOfferALinkForOnlinePaymentOnMemberSubscription= URL oferit pentru %s plată online pentru o cotizaţie de membru ToOfferALinkForOnlinePaymentOnDonation= URL oferit pentru %s plată online pentru o achitare sau donaţie -YouCanAddTagOnUrl=Puteți adăuga, de asemenea, parametrul url &tag = valoare la oricare dintre respectivele URL (obligatoriu numai pentru plata care nu este legată de un obiect) pentru a adăuga motivul efectuării.
Pentru adresa URL a plăților fără obiect existent, puteți adăuga și parametrul &noidempotency= 1 pentru ca aceeași legătură cu aceeași etichetă să poată fi folosită de mai multe ori (anumite moduri de plată pot plafona plata la 1 pentru fiecare link diferit fără acest parametru) +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) YouCanEmbedOnWebsite=Dacă vrei să integrezi pagina de plată într-un site web Dolibarr, poți include parametrul: &ws=website_ref.
În plus, două pagini denumite paymentok și paymentko trebuie să fie create pe site pentru a primi redirecționarea după o plată online cu succes sau eșuată. SetupStripeToHavePaymentCreatedAutomatically=Configurare Stripe cu URL %s pentru a avea o plată creată automat când este validată de Stripe. AccountParameter=Parametri cont diff --git a/htdocs/langs/ro_RO/website.lang b/htdocs/langs/ro_RO/website.lang index 93c5159b95b..b12ccb44081 100644 --- a/htdocs/langs/ro_RO/website.lang +++ b/htdocs/langs/ro_RO/website.lang @@ -62,7 +62,7 @@ NoPageYet=Nicio pagină încă YouCanCreatePageOrImportTemplate=Puteți să creați o pagină nouă sau să importați un șablon de site complet SyntaxHelp=Ajutor şi sfaturi pentru sintaxa specifică YouCanEditHtmlSourceckeditor=Puteți edita codul sursă HTML folosind butonul "Sursă" din editor. -YouCanEditHtmlSource=
Poți include cod PHP în această sursă folosind etichetele <?php ?>. Sunt disponibile următoarele variabile globale: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

De asemenea, poți include conținutul unei alte pagini/container cu următoarea sintaxă:
<?php includeContainer('alias_of_container_to_include'); ?>

Poți face o redirecționare către o altă pagină/container cu următoarea sintaxă (Notă: nu afișa niciun conținut înainte de redirecționare):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>
De asemenea, poți face o redirecționare cu parametrii GET:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

Pentru a adăuga un link către o altă pagină, utilizează 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 de documente, utilizează document.php wrapper:
Exemplu, pentru un fișier în documente/ecm (trebuie să fie autentificat), sintaxa este:
<a href="/document.php ?modulepart=ecm&file=[relative_dir/]filename.ext">
Pentru un fișier în documente/media (director deschis pentru acces public), sintaxa este:
<a href="/document.php?modulepart=medias&file=[relative_dir /]filename.ext">
Pentru un fișier partajat cu un link de partajare (acces deschis folosind cheia hash de partajare a fișierului), sintaxa este:
<a href="/document.php?hashp=publicsharekeyoffile">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
Pentru a include o imagine stocată în directorul de documente, utilizează wrapper-ul viewimage.php.
De 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=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...">
YouCanEditHtmlSource3=Pentru a obține adresa URL a imaginii unui obiect PHP, utilizează
<img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/ru_RU/admin.lang b/htdocs/langs/ru_RU/admin.lang index 3d249c089d0..3d9bd9d8e2e 100644 --- a/htdocs/langs/ru_RU/admin.lang +++ b/htdocs/langs/ru_RU/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Список значений должен быть с ExtrafieldParamHelpcheckbox=Список значений должен быть строками с форматом: ключ, значение (где ключ не может быть равен 0)

например:
1, значение1
2, значение2
3, значение3
... ExtrafieldParamHelpradio=Список значений должен быть строками с форматом: ключ, значение (где ключ не может быть равен 0)

например:
1, значение1
2, значение2
3, значение3
... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Параметры должны быть ObjectName:Classpath
Синтаксис: ObjectName:Classpath ExtrafieldParamHelpSeparator=Оставить пустым для простого разделителя
Установите для этого разделителя значение 1 (по умолчанию открыто для нового сеанса, затем статус сохраняется для каждого сеанса пользователя)
Установите значение 2 для сжимающегося разделителя (по умолчанию свернуто для нового сеанса, затем статус сохраняется для каждой пользовательской сессии) LibraryToBuildPDF=Библиотека используемая для создания PDF-файлов @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, за которым следует усе ModuleCompanyCodeSupplierDigitaria=%s, за которым следует усеченное имя поставщика с указанием количества символов: %s для бухгалтерского кода поставщика. Use3StepsApproval=По умолчанию заказы на поставку должны быть созданы и одобрены двумя разными пользователями (один шаг/пользователь для создания и один шаг/пользователь для одобрения. Обратите внимание, что если у пользователя есть как разрешение на создание и утверждение, достаточно одного шага/пользователя) , Вы можете задать эту опцию, чтобы ввести утверждение третьего шага/пользователя, если сумма превышает выделенное значение (так что потребуется 3 шага: 1 = валидация, 2 = первое утверждение и 3 = второе одобрение, если суммы достаточно).
Установите это для пустого, если достаточно одного утверждения (2 шага), установите его на очень низкое значение (0,1), если требуется второе утверждение (3 шага). UseDoubleApproval=Используйте одобрение на 3 шага, когда сумма (без налога) выше ... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Некоторые поставщики услуг электронной почты (например, Yahoo) не позволяют отправлять электронную почту с другого сервера, кроме их собственного. Ваша текущая настройка использует сервер приложения для отправки электронной почты, а не сервер вашего провайдера электронной почты, поэтому некоторые получатели (тот, который совместим с ограничительным протоколом DMARC) будут спрашивать вашего провайдера электронной почты, могут ли они принять вашу электронную почту, и некоторые поставщики электронной почты. (например, Yahoo) могут ответить «нет», потому что сервер им не принадлежит, поэтому некоторые из отправленных вами электронных писем могут быть не приняты для доставки (будьте осторожны также с квотой отправки вашего почтового провайдера). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Использование SMTP-сервера вашего собственного поставщика услуг электронной почты для отправки электронных писем также интересно, поэтому все электронные письма, отправленные из приложения, также будут сохранены в вашем каталоге «Отправленные» вашего почтового ящика. WarningPHPMailD=Поэтому рекомендуется изменить метод отправки электронной почты на значение «SMTP». WarningPHPMailDbis=Если вы действительно хотите сохранить метод по умолчанию "PHP" для отправки электронных писем, просто проигнорируйте это предупреждение или удалите его с помощью %s нажмите здесь%s. WarningPHPMail2=Если вашему SMTP-провайдеру электронной почты необходимо ограничить почтовый клиент некоторыми IP-адресами (это очень редко), это IP-адрес почтового пользователя (MUA) для вашего приложения ERP CRM: %s. -WarningPHPMailSPF=Если доменное имя в вашем адресе электронной почты отправителя защищено записью SPF (спросите у регистратора доменного имени), вы должны добавить следующие IP-адреса в запись SPF DNS вашего домена: %s . -ActualMailSPFRecordFound=Найдена актуальная запись SPF (для электронной почты %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Нажмите, чтобы посмотреть описание DependsOn=Этот модуль нуждается в модуле (модулях) RequiredBy=Этот модуль требуется для модуля (модулей) @@ -867,7 +868,7 @@ Permission255=Изменить пароли других пользовател Permission256=Удалить или отключить других пользователей Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Расширить доступ для всех третьих лиц БЕЗ их объектов (не только третьим лицам, для которых пользователь является торговым представителем).
Не действует для внешних пользователей (всегда ограничивается только ими самими для предложений, заказов, счетов-фактур, контрактов и т.д.).
Не действует для проектов (имеют значение только правила, касающиеся разрешений, видимости и назначения проектов). Permission271=Читать CA Permission272=Читать счета @@ -944,7 +945,7 @@ Permission776=Оплата отчётов о затратах Permission777=Читать все отчеты о расходах (даже отчеты пользователя, не подчиненного) Permission778=Создавать/изменять отчеты о расходах для всех Permission779=Экспорт отчётов о затратах -Permission1001=Просмотр запасов +Permission1001=Read warehouses and stocks Permission1002=Создать/изменить склады Permission1003=Удалить склады Permission1004=Просмотр перемещений по складу @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Фильтр регулярных выражени DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Удалите определенные слова при создании субаккаунтов для клиенты или Поставщики RemoveSpecialWordsHelp=Укажите слова, которые необходимо очистить перед расчетом учетной записи клиент или поставщик. Использовать ";" между каждым словом -GDPRContact=Сотрудник по защите данных (контактное лицо DPO, Data Privacy или GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Если вы храните личные данные в своей информационной системе, здесь вы можете указать контактное лицо, ответственное за Общее положение о защите данных. HelpOnTooltip=Текст справки для отображения во всплывающей подсказке HelpOnTooltipDesc=Поместите здесь текст или ключ перевода, чтобы текст отображался во всплывающей подсказке, когда это поле появляется в форме @@ -2218,7 +2219,7 @@ CreateCandidature=Создать заявление о приеме на раб FormatZip=Индекс MainMenuCode=Код входа в меню (главное меню) ECMAutoTree=Показать автоматическое дерево ECM -OperationParamDesc=Определите правила, которые будут использоваться для извлечения некоторых данных или установки значений для использования в операции.

Пример для извлечения компания имя из темы электронного письма во временную переменную:
tmp_var=EXTRACT:SUBJECT:Сообщение от компания ([^\n]*)

Примеры установки свойств объекта в создать:
objproperty1=SET:жестко запрограммированное значение
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:значение (значение устанавливается, только если свойство еще не определено)
objproperty4=EXTRACT:HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Мое компания имя\\s([^\\s]*)

Используйте новый линия для извлечения или установки нескольких свойств. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Часы работы OpeningHoursDesc=Введите здесь обычные часы работы вашей компании. ResourceSetup=Конфигурация модуля Ресурсов @@ -2264,7 +2265,7 @@ LargerThan=Больше, чем IfTrackingIDFoundEventWillBeLinked=Обратите внимание: если в электронной почте обнаружено отслеживание ID объекта или если электронное письмо является ответом на уже полученное электронное письмо, и связано с объектом, созданное событие будет автоматически связанным с известным объектом Связанный. WithGMailYouCanCreateADedicatedPassword=При использовании учетной записи GMail, если вы включили 2 шага подтверждение, вместо этого рекомендуется создать использовать выделенный второй пароль для приложения. использования пароля вашей учетной записи с https://myaccount.google.com/. EmailCollectorTargetDir=Возможно, желательно переместить электронное письмо в другой ярлык/каталог, когда оно было обработано успешно. Просто укажите здесь имя каталог, чтобы использовать этот особенность (НЕ используйте специальные символы в имени). Обратите внимание, что вам также необходимо использовать учетную запись для входа в читать/write. -EmailCollectorLoadThirdPartyHelp=Вы можете использовать это действие, чтобы использовать содержимое электронной почты для поиска и загрузки существующей третьей стороны в свой база данных (поиск будет выполнен в определенном свойстве среди 'ID','name','name_alias','email'). Найденная (или созданная) третья сторона будет использоваться для действий следующий, которым она необходима.
Для Пример, если вы хотите создать третьему лицу с именем, извлеченным из строки 'Имя: имя для поиска', присутствующей в теле, используйте отправителя электронная почта как электронная почта, вы можете установить поле параметра следующим образом:
'email=HEADER:^From:(.*) ;name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Предупреждение: партия серверов электронной почты (например, Gmail) выполняют поиск по полному слову при поиске по строке и не возвращает результат, если строка найдена в слове только частично. По этой же причине использование специальных символов в критериях поиска будет игнорироваться, если они не являются частью существующих слов.
Чтобы исключить поиск по слову (вернуть электронное письмо, если слово не найден), вы можете использовать ! символ перед словом (может не работать на некоторых почтовых серверах). EndPointFor=Конечная точка для %s: %s DeleteEmailCollector=Удалить сборщик электронной почты @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Стороннее имя – сторонний псевдо ALIAS_THIRDPARTY=Сторонний псевдоним – стороннее имя. PDFIn2Languages=Метки Показать в PDF-файле на двух разных языках (этот особенность может не работать для некоторых языков) PDF_USE_ALSO_LANGUAGE_CODE=Если вы хотите, чтобы некоторые тексты в вашем PDF-файле были продублированы на 2 разных языках в одном сгенерированном PDF-файле, вы должны установить здесь этот второй язык, чтобы сгенерированный PDF-файл содержал 2 разных языка на одной странице: один, выбранный при создании PDF, и этот ( только несколько шаблонов PDF поддерживают это). Оставьте пустым для 1 языка в PDF-файле. -PDF_USE_A=Создавайте PDF-документы в формате PDF/A вместо по умолчанию формата PDF. +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Введите здесь код значка FontAwesome. Если вы не знаете, что такое FontAwesome, вы можете использовать общее значение fa-address-book. RssNote=Примечание. Каждое определение RSS-канала предоставляет виджет, который необходимо включить, чтобы он был доступен на панели управления. JumpToBoxes=Перейти к настройке -> Виджеты @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ru_RU/commercial.lang b/htdocs/langs/ru_RU/commercial.lang index 2f4ac327e52..767d5f6acbd 100644 --- a/htdocs/langs/ru_RU/commercial.lang +++ b/htdocs/langs/ru_RU/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Вы уверены, что хотите удалить эт CardAction=Карточка события ActionOnCompany=Связанная компания ActionOnContact=Связанный контакт +ActionOnUser=Related user TaskRDVWith=Встреча с %s ShowTask=Показать задачу ShowAction=Показать действий @@ -47,7 +48,6 @@ LastProspectToContact=Для контакта LastProspectContactInProcess=Контакт в процессе LastProspectContactDone=Контакт завершен ActionAffectedTo=Событие связано с -ActionDoneBy=Событие завершено ActionAC_TEL=Телефонный звонок ActionAC_FAX=Отправить факс ActionAC_PROP=Отправить предложение по Email @@ -74,16 +74,29 @@ StatusProsp=Статус проспекта DraftPropals=Проект коммерческих предложений NoLimit=Нет ограничений ToOfferALinkForOnlineSignature=Ссылка для онлайн-подписи -WelcomeOnOnlineSignaturePageProposal=Welcome to the page to accept commercial proposals from %s -WelcomeOnOnlineSignaturePageContract=Welcome to %s Contract PDF Signing Page -WelcomeOnOnlineSignaturePageFichinter=Welcome to %s Intervention PDF Signing Page +WelcomeOnOnlineSignaturePageProposal=Добро пожаловать на страницу принятия коммерческих предложений предложения от %s +WelcomeOnOnlineSignaturePageContract=Добро пожаловать на %s страницу подписания PDF-контракта +WelcomeOnOnlineSignaturePageFichinter=Добро пожаловать на %s вмешательство страницу подписи PDF-файлов +WelcomeOnOnlineSignaturePageSociete_rib=Добро пожаловать на %s страницу подписания PDF-файла с мандатом SEPA +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=Этот экран позволяет вам принять и подписать или отклонить предложение или коммерческое предложение -ThisScreenAllowsYouToSignDocFromContract=This screen allow you to sign contract on PDF format online. -ThisScreenAllowsYouToSignDocFromFichinter=This screen allow you to sign intervention on PDF format online. -ThisIsInformationOnDocumentToSignProposal=This is information on document to accept or refuse -ThisIsInformationOnDocumentToSignContract=This is information on contract to sign -ThisIsInformationOnDocumentToSignFichinter=This is information on intervention to sign +ThisScreenAllowsYouToSignDocFromContract=Этот экран позволяет вам подписать контракт в формате PDF онлайн. +ThisScreenAllowsYouToSignDocFromFichinter=На этом экране вы можете подписать вмешательство в формате PDF онлайн. +ThisScreenAllowsYouToSignDocFromSociete_rib=Этот экран позволяет вам подписать мандат SEPA в формате PDF онлайн. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. +ThisIsInformationOnDocumentToSignProposal=Это информация о документ, которую можно принять или отклонить. +ThisIsInformationOnDocumentToSignContract=Это информация о контракте для подписания +ThisIsInformationOnDocumentToSignFichinter=Это информация о вмешательство для подписи. +ThisIsInformationOnDocumentToSignSociete_rib=Это информация о мандате SEPA на подписание. +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Подпись цитаты / коммерческого предложения %s -SignatureContractRef=Signature of contract %s -SignatureFichinterRef=Signature of intervention %s +SignatureContractRef=Подписание контракта %s +SignatureFichinterRef=Подпись вмешательство %s +SignatureSociete_ribRef=Подписание мандата SEPA %s FeatureOnlineSignDisabled=Функция онлайн-подписи отключена или документ был создан до ее включения +NoSignature=Не подписано +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/ru_RU/companies.lang b/htdocs/langs/ru_RU/companies.lang index 2c59679db34..eb5de2b337e 100644 --- a/htdocs/langs/ru_RU/companies.lang +++ b/htdocs/langs/ru_RU/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Имя пользователя Dolibarr NoDolibarrAccess=Нет доступа к Dolibarr ExportDataset_company_1=Контрагенты (компании/фонды/физические лица) и их свойства ExportDataset_company_2=Контакты и их свойства +ExportDataset_company_3=Банковские счета контрагентов ImportDataset_company_1=Контрагенты и их свойства ImportDataset_company_2=Дополнительные контакты/адреса и атрибуты контрагентов ImportDataset_company_3=Банковские счета контрагентов diff --git a/htdocs/langs/ru_RU/datapolicy.lang b/htdocs/langs/ru_RU/datapolicy.lang index f4b89f86304..bbbd95f0946 100644 --- a/htdocs/langs/ru_RU/datapolicy.lang +++ b/htdocs/langs/ru_RU/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Политика конфиденциальности данных # Module description 'ModuledatapolicyDesc' Module4100Desc = модуль для управления конфиденциальностью данных (соответствие GDPR) - -# # Administration page -# datapolicySetup = модуль Политика конфиденциальности данных настройка Deletion = Удаление данных datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = перспектива/клиент DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ни перспектива/Нор клиент DATAPOLICY_CONTACT_FOURNISSEUR = Поставщик DATAPOLICY_ADHERENT = Участник -DATAPOLICY_Tooltip_SETUP = Тип контакта. Укажите варианты для каждого типа. -DATAPOLICYMail = Электронная почта настройка -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Содержание электронного письма -DATAPOLICYSUBSITUTION = Вы можете использовать переменные следующий в своей электронной почте (LINKACCEPT позволяет создать a ссылкафиксируя согласие человека, LINKREFUSED дает возможность зафиксировать отказ человека): -DATAPOLICYACCEPT = Сообщение после соглашения -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Вы можете отправить электронное письмо о GDPR всем своим контактам (которые еще не получили электронное письмо и, для которого вы не зарегистрировали ничего об их соглашении GDPR). Для этого используйте кнопку следующий. SendAgreement = Отправить письма AllAgreementSend = Все письма отправлены TXTLINKDATAPOLICYACCEPT = Текст ссылка «соглашения» TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: обработка Личныйданных DATAPOLICY_consentement = Получено согласие на обработку Личныйданных. DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Анонимизировать третье лицо -DATAPOLICY_POPUP_ANONYME_TEXTE = Вы не можете удалить этот контакт из Dolibarr, поскольку там есть элементы Связанный. В соответствии с GDPR вы сделаете все эти данные анонимными для соблюдения своих обязательств. Желаете ли вы продолжить ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Портативность GDPR -DATAPOLICY_PORTABILITE_TITLE = Экспорт данных Личный -DATAPOLICY_PORTABILITE_CONFIRMATION = Вы хотите экспортировать Личныйданные этого контакта. Вы уверены ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Анонимизирован %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Отправить письмо по GDPR MailSent = Письмо было отправлено - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/ru_RU/dict.lang b/htdocs/langs/ru_RU/dict.lang index c450f5435b2..5f790eb1e56 100644 --- a/htdocs/langs/ru_RU/dict.lang +++ b/htdocs/langs/ru_RU/dict.lang @@ -137,7 +137,7 @@ CountryLV=Латвия CountryLB=Ливан CountryLS=Лесото CountryLR=Либерия -CountryLY=Libya +CountryLY=Ливия CountryLI=Лихтенштейн CountryLT=Литва CountryLU=Люксембург @@ -247,7 +247,7 @@ CountryJE=Джерси CountryME=Черногория CountryBL=Сен-Бартельми CountryMF=Сен-Мартен -CountryXK=Kosovo +CountryXK=Косово ##### Civilities ##### CivilityMME=Г-жа @@ -295,8 +295,8 @@ CurrencyXPF=Тихоокеанские франки CurrencySingXPF=Тихоокеанский франк CurrencyCentEUR=центы CurrencyCentSingEUR=цент -CurrencyCentINR=пайсы -CurrencyCentSingINR=пайса +CurrencyCentINR=пайса +CurrencyCentSingINR=пайсы CurrencyThousandthSingTND=тысячный #### Input reasons ##### DemandReasonTypeSRC_INTE=Интернет diff --git a/htdocs/langs/ru_RU/errors.lang b/htdocs/langs/ru_RU/errors.lang index 629d0d39ed8..8f0bcf16cd3 100644 --- a/htdocs/langs/ru_RU/errors.lang +++ b/htdocs/langs/ru_RU/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Пользователь должен быть наз ErrorTaskAlreadyAssigned=Задача уже назначена пользователю ErrorModuleFileSeemsToHaveAWrongFormat=Пакет модуля имеет неправильный формат. ErrorModuleFileSeemsToHaveAWrongFormat2=В zip-архиве модуля должен быть хотя бы один обязательный каталог: %s или %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Имя пакета модуля (%s) не соответствует ожидаемому синтаксису имени: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Ошибка, повторяющееся имя триггера %s. Уже загружен с %s. ErrorNoWarehouseDefined=Ошибка, склады не определены. ErrorBadLinkSourceSetButBadValueForRef=Ссылка, которую вы используете, недействительна. «Источник» платежа определен, но значение «ref» недействительно. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/ru_RU/mails.lang b/htdocs/langs/ru_RU/mails.lang index 1aea9485c80..2b0bc8a52e1 100644 --- a/htdocs/langs/ru_RU/mails.lang +++ b/htdocs/langs/ru_RU/mails.lang @@ -32,6 +32,8 @@ NewMailing=Новая рассылка NewSMSing=New smsing EditMailing=Изменить рассылку ResetMailing=Повторная рассылка +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Удалить рассылку PreviewMailing=Предварительный электронной почте CreateMailing=Создание электронной почте @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Адрес получателя электронной WarningNoEMailsAdded=Нет нового адреса электронной почты для добавления в список получателей. ConfirmValidMailing=Вы уверены, что хотите подтвердить эту рассылку? ConfirmResetMailing=Внимание! Повторно инициализировав рассылку %s, вы разрешите повторную отправку этого электронного письма в массовой рассылке. Вы уверены, что хотите это сделать? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Вы уверены, что хотите удалить эту рассылку? NbOfUniqueEMails=Кол-во уникальных адресов электронной почты NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Больше нет получателя, котором EmailOptedOut=Владелец электронной почты попросил больше не связываться с ним по этому адресу. EvenUnsubscribe=Включить электронные письма для отказа EvenUnsubscribeDesc=Включите электронные письма об отказе от рассылки, когда вы выбираете электронные письма в качестве целевых. Полезно для обязательных электронных писем услуга для Пример. -XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/ru_RU/stripe.lang b/htdocs/langs/ru_RU/stripe.lang index 65c4cbc8e0f..89e521e1cd4 100644 --- a/htdocs/langs/ru_RU/stripe.lang +++ b/htdocs/langs/ru_RU/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL для предложения с ToOfferALinkForOnlinePaymentOnFreeAmount=URL для предложения страницы онлайн-платежей %s на любую сумму без существующего объекта ToOfferALinkForOnlinePaymentOnMemberSubscription=URL-адрес страницы онлайн-оплаты %s для подписки на членство ToOfferALinkForOnlinePaymentOnDonation=URL-адрес страницы онлайн-платежа %s для оплаты пожертвования -YouCanAddTagOnUrl=Вы также можете добавить параметр URL & tag = , значение к любому из этих URL (обязательно только для платежа, не связанного с объектом), чтобы добавить свой собственный тег комментария к платежу.
Для URL-адреса платежей без существующего объекта вы также можете добавить параметр & noidempotency = 1 , чтобы одну и ту же ссылку с одним и тем же тегом можно было использовать несколько раз (в некоторых режимах оплаты может быть ограничен платеж до 1 для каждой ссылки без этого параметр) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Настройте Stripe с URL-адресом %s , чтобы платеж создавался автоматически при подтверждении Stripe. AccountParameter=Счет параметры UsageParameter=Использование параметров @@ -42,7 +43,7 @@ ONLINE_PAYMENT_WAREHOUSE=Запасы, используемые для умен StripeLiveEnabled=Полоса в реальном времени включена (в противном случае тестовый режим / режим песочницы) StripeImportPayment=Платежи Import Stripe ExampleOfTestCreditCard=Пример кредитной карты для тестового платежа: %s => действителен, %s => ошибка CVC, %s => срок действия истек, %s => списание не выполнено -ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s +ExampleOfTestBankAcountForSEPA=Пример из банковский счёт БАН за Прямой дебет тест: %s StripeGateways=Stripe-шлюзы OAUTH_STRIPE_TEST_ID=Идентификатор клиента Stripe Connect (ca _...) OAUTH_STRIPE_LIVE_ID=Идентификатор клиента Stripe Connect (ca _...) @@ -51,6 +52,7 @@ StripeAccount=Stripe аккаунт StripeChargeList=Список начислений Stripe StripeTransactionList=Список транзакций Stripe StripeCustomerId=Идентификатор клиента Stripe +StripePaymentId=Полоса платеж ID StripePaymentModes=Режимы оплаты Stripe LocalID=Локальный идентификатор StripeID=Идентификатор полосы @@ -62,7 +64,7 @@ DeleteACard=Удалить карту ConfirmDeleteCard=Вы действительно хотите удалить эту кредитную или дебетовую карту? CreateCustomerOnStripe=Создать клиента на Stripe CreateCardOnStripe=Создать карту на Stripe -CreateBANOnStripe=Create bank on Stripe +CreateBANOnStripe=создать банк на Stripe ShowInStripe=Показать в полосе StripeUserAccountForActions=Учетная запись пользователя, используемая для уведомления по электронной почте о некоторых событиях Stripe (выплаты Stripe) StripePayoutList=Список выплат Stripe @@ -70,9 +72,19 @@ ToOfferALinkForTestWebhook=Ссылка на настройку Stripe WebHook ToOfferALinkForLiveWebhook=Ссылка на настройку Stripe WebHook для вызова IPN (режим реального времени) PaymentWillBeRecordedForNextPeriod=Выплата будет записана за следующий период. ClickHereToTryAgain= Нажмите здесь, чтобы попробовать еще раз ... -CreationOfPaymentModeMustBeDoneFromStripeInterface=Из-за правил строгой аутентификации клиентов создание карты должно производиться из бэк-офиса Stripe. Вы можете щелкнуть здесь, чтобы включить запись клиента Stripe: %s -STRIPE_CARD_PRESENT=Card Present for Stripe Terminals -TERMINAL_LOCATION=Location (address) for Stripe Terminals -RequestDirectDebitWithStripe=Request Direct Debit with Stripe -STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe - +CreationOfPaymentModeMustBeDoneFromStripeInterface=В соответствии с строгими правилами клиент Аутентификация создание карты должно выполняться из бэк-офиса Stripe. Вы можете нажать здесь, чтобы включить запись Stripe клиент: %s +STRIPE_CARD_PRESENT=Наличие карты для терминалов Stripe +TERMINAL_LOCATION=Расположение (адрес) терминалов Stripe +RequestDirectDebitWithStripe=Запрос Прямой дебет с помощью Stripe +RequesCreditTransferWithStripe=Request Credit Transfer with Stripe +STRIPE_SEPA_DIRECT_DEBIT=Включите платежи Прямой дебет через Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT +StripeConnect_Mode=Режим полосового подключения +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/sk_SK/admin.lang b/htdocs/langs/sk_SK/admin.lang index 827e9aba0c0..5dc606e01b9 100644 --- a/htdocs/langs/sk_SK/admin.lang +++ b/htdocs/langs/sk_SK/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametre musia byť ObjectName:Classpath
Syntax: ObjectName:Classpath ExtrafieldParamHelpSeparator=Ponechajte prázdne pre jednoduchý oddeľovač
Nastavte toto na 1 pre zbalený oddeľovač (predvolene otvorený pre novú reláciu, potom sa stav zachová pre každú reláciu používateľa)
Nastavte toto na 2 pre zbalený oddeľovač (predvolene zbalený pre novú reláciu, potom sa stav zachová pre každú reláciu používateľa) LibraryToBuildPDF=Knižnica používaná pre generovanie PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, za ktorým nasleduje skrátené meno zák ModuleCompanyCodeSupplierDigitaria=%s, za ktorým nasleduje skrátený názov dodávateľa s počtom znakov: %s pre účtovný kód dodávateľa. Use3StepsApproval=V predvolenom nastavení musia byť objednávky vytvorené a schválené 2 rôznymi používateľmi (jeden krok/používateľ na vytvorenie a jeden krok/používateľ na schválenie. Upozorňujeme, že ak má používateľ oprávnenie na vytváranie aj schvaľovanie, bude stačiť jeden krok/používateľ) . Pomocou tejto možnosti môžete požiadať o zavedenie tretieho kroku/schválenia používateľa, ak je suma vyššia ako vyhradená hodnota (takže budú potrebné 3 kroky: 1=overenie, 2=prvé schválenie a 3=druhé schválenie, ak je množstvo dostatočné).
Ak stačí jedno schválenie (2 kroky), nastavte ho na prázdne. Ak sa vždy vyžaduje druhé schválenie (3 kroky), nastavte ho na veľmi nízku hodnotu (0,1). UseDoubleApproval=Použiť 3 krokové povolenie ked cena ( bez DPH ) je väčšia ako... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Niektorí poskytovatelia e-mailových služieb (napríklad Yahoo) vám neumožňujú odosielať e-maily z iného servera, než je ich vlastný server. Vaše aktuálne nastavenie používa na odosielanie e-mailov server aplikácie a nie server vášho poskytovateľa e-mailu, takže niektorí príjemcovia (ten, ktorý je kompatibilný s reštriktívnym protokolom DMARC), požiadajú vášho poskytovateľa e-mailu, či môžu prijať váš e-mail a niektorí poskytovatelia e-mailu (ako Yahoo) môže odpovedať „nie“, pretože server nie je ich, takže málo z vašich odoslaných e-mailov nemusí byť prijatých na doručenie (pozor aj na kvótu odosielania vášho poskytovateľa e-mailov). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Použitie SMTP servera vášho vlastného poskytovateľa e-mailových služieb na odosielanie e-mailov je tiež zaujímavé, takže všetky e-maily odoslané z aplikácie sa tiež uložia do vášho adresára "Odoslané" vašej poštovej schránky. WarningPHPMailD=Preto sa odporúča zmeniť spôsob odosielania e-mailov na hodnotu „SMTP“. WarningPHPMailDbis=Ak naozaj chcete ponechať predvolenú metódu „PHP“ na odosielanie e-mailov, jednoducho toto upozornenie ignorujte alebo ho odstráňte %skliknutím sem%s. WarningPHPMail2=Ak váš poskytovateľ e-mailového SMTP potrebuje obmedziť e-mailového klienta na niektoré IP adresy (veľmi zriedkavé), toto je IP adresa poštového používateľského agenta (MUA) pre vašu aplikáciu ERP CRM: %s. -WarningPHPMailSPF=Ak je názov domény vo vašej e-mailovej adrese odosielateľa chránený záznamom SPF (opýtajte sa svojho registrátora názvu domény), musíte do záznamu SPF DNS vašej domény pridať nasledujúce adresy IP: %s. -ActualMailSPFRecordFound=Našiel sa skutočný záznam SPF (pre e-mail %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Kliknutím zobrazíte popis DependsOn=Tento modul potrebuje modul(y) RequiredBy=Tento modul vyžadujú moduly @@ -867,7 +868,7 @@ Permission255=Upraviť ostatným používateľom heslo Permission256=Odstrániť alebo zakázať ostatným užívateľom Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Rozšírte prístup všetkým tretím stranám BEZ ich objektov (nielen tretím stranám, pre ktoré je používateľ obchodným zástupcom).
Neúčinné pre externých používateľov (v prípade návrhov vždy obmedzené na seba, objednávky, faktúry, zmluvy atď.).
Neúčinné pre projekty (len pravidlá týkajúce sa povolení projektu, viditeľnosti a priradenia). Permission271=Prečítajte CA Permission272=Prečítajte si faktúry @@ -944,7 +945,7 @@ Permission776=Platiť prehľady výdavkov Permission777=Prečítajte si všetky správy o výdavkoch (aj od používateľov, ktorí nie sú podriadení) Permission778=Vytvárajte/upravujte správy o výdavkoch každého Permission779=Exportujte správy o výdavkoch -Permission1001=Prečítajte si zásoby +Permission1001=Read warehouses and stocks Permission1002=Vytvoriť / upraviť sklady Permission1003=Odstrániť sklady Permission1004=Prečítajte skladové pohyby @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filter regulárneho výrazu na vyčistenie hodnoty DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Pri vytváraní podúčtov pre zákazníkov alebo dodávateľov očistite určité slová RemoveSpecialWordsHelp=Pred výpočtom účtu zákazníka alebo dodávateľa zadajte slová, ktoré sa majú vyčistiť. Použite znak ";" medzi každým slovom -GDPRContact=Poverenec pre ochranu údajov (DPO, kontakt na ochranu osobných údajov alebo GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ak vo svojom Informačnom systéme uchovávate osobné údaje, môžete tu uviesť kontakt, ktorý je zodpovedný za všeobecné nariadenie o ochrane údajov HelpOnTooltip=Text pomocníka, ktorý sa zobrazí v popise HelpOnTooltipDesc=Sem vložte text alebo kľúč prekladu, aby sa text zobrazil v popise, keď sa toto pole objaví vo formulári @@ -2218,7 +2219,7 @@ CreateCandidature=Vytvorte žiadosť o prácu FormatZip=Zips MainMenuCode=Vstupný kód menu (hlavné menu) ECMAutoTree=Zobraziť automatický strom ECM -OperationParamDesc=Definujte pravidlá, ktoré sa majú použiť na extrahovanie niektorých údajov, alebo nastavte hodnoty, ktoré sa majú použiť na prevádzku.

Príklad na extrahovanie názvu spoločnosti z predmet e-mailu do dočasnej premennej:
tmp_var=EXTRACT:SUBJECT:Správa od spoločnosti ([^\n]*)

Príklady nastavenia vlastností objektu na vytvorenie:
objproperty1=SET:pevne zakódovaná hodnota
objproperty2=SET:__tmp_var__
objpropertya value3: je nastavené iba vtedy, ak vlastnosť ešte nie je definovaná)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Názov mojej spoločnosti je\\BODY: s([^\\s]*)

Na extrahovanie alebo nastavenie niekoľkých vlastností použite nový riadok. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=OTVÁRACIE HODINY OpeningHoursDesc=Tu zadajte bežné otváracie hodiny vašej spoločnosti. ResourceSetup=Konfigurácia modulu zdrojov @@ -2264,7 +2265,7 @@ LargerThan=Väčšie ako IfTrackingIDFoundEventWillBeLinked=Upozorňujeme, že ak sa v e-maile nájde ID sledovania objektu alebo ak je e-mail odpoveďou na e-mail, ktorý už bol zhromaždený a prepojený s objektom, vytvorená udalosť sa automaticky prepojí so známym súvisiacim objektom. WithGMailYouCanCreateADedicatedPassword=Ak ste v prípade účtu GMail povolili overenie v dvoch krokoch, odporúča sa namiesto použitia vlastného hesla účtu z adresy https://myaccount.google.com/ vytvoriť vyhradené druhé heslo pre aplikáciu. EmailCollectorTargetDir=Môže byť želaným správaním presunúť e-mail do inej značky/adresára, keď bol úspešne spracovaný. Pre použitie tejto funkcie stačí nastaviť názov adresára (NEPOUŽÍVAJTE špeciálne znaky v názve). Upozorňujeme, že musíte použiť aj prihlasovací účet na čítanie/zápis. -EmailCollectorLoadThirdPartyHelp=Túto akciu môžete použiť na použitie obsahu e-mailu na nájdenie a načítanie existujúcej tretej strany vo vašej databáze (hľadanie sa vykoná na definovanej vlastnosti medzi 'id', 'name', 'name_alias', 'email'). Nájdená (alebo vytvorená) tretia strana sa použije na nasledujúce akcie, ktoré ju potrebujú.
Ak napríklad chcete vytvoriť tretiu stranu s názvom extrahovaným z reťazca ' Name: name to find' prítomné do tela, použite e-mail odosielateľa ako e-mail, pole parametra môžete nastaviť takto:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Upozornenie: Mnoho e-mailových serverov (napríklad Gmail) vyhľadáva pri vyhľadávaní v reťazci celé slovo a nevráti výsledok, ak sa reťazec nachádza len čiastočne v slove. Aj z tohto dôvodu bude použitie špeciálnych znakov vo vyhľadávacích kritériách ignorované, ak nie sú súčasťou existujúcich slov.
Ak chcete vykonať vylúčenie vyhľadávania pre slovo (vráťte e-mail, ak slovo sa nenájde), môžete použiť ! znak pred slovom (nemusí fungovať na niektorých poštových serveroch). EndPointFor=Koncový bod pre %s : %s DeleteEmailCollector=Odstrániť zberač e-mailov @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Názov tretej strany – Alias tretej strany ALIAS_THIRDPARTY=Alias tretej strany – názov tretej strany PDFIn2Languages=Zobraziť štítky v PDF v 2 rôznych jazykoch (táto funkcia nemusí fungovať v niektorých jazykoch) PDF_USE_ALSO_LANGUAGE_CODE=Ak chcete, aby boli niektoré texty vo vašom PDF duplikované v 2 rôznych jazykoch v rovnakom vygenerovanom PDF, musíte tu nastaviť tento druhý jazyk, aby vygenerovaný PDF obsahoval 2 rôzne jazyky na tej istej stránke, jeden zvolený pri generovaní PDF a tento ( podporuje to iba niekoľko šablón PDF). Ponechajte prázdne pre 1 jazyk na PDF. -PDF_USE_A=Generujte dokumenty PDF vo formáte PDF/A namiesto predvoleného formátu PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Tu zadajte kód ikony FontAwesome. Ak neviete, čo je FontAwesome, môžete použiť generickú hodnotu fa-address-book. RssNote=Poznámka: Každá definícia informačného kanála RSS obsahuje miniaplikáciu, ktorú musíte povoliť, aby bola dostupná na informačnom paneli JumpToBoxes=Prejdite na Nastavenie -> Widgety @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/sk_SK/commercial.lang b/htdocs/langs/sk_SK/commercial.lang index 32907c08beb..63aa7294557 100644 --- a/htdocs/langs/sk_SK/commercial.lang +++ b/htdocs/langs/sk_SK/commercial.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - commercial -Commercial=Commerce -CommercialArea=Commerce area +Commercial=obchod +CommercialArea=Obchodná oblasť Customer=Zákazník Customers=Zákazníci Prospect=Vyhliadka @@ -10,16 +10,17 @@ NewAction=Nová udalosť AddAction=Vytvoriť udalosť AddAnAction=Vytvoriť udalosť AddActionRendezVous=Vytvoriť Rendez-vous udalosť -ConfirmDeleteAction=Are you sure you want to delete this event? +ConfirmDeleteAction=Naozaj chcete odstrániť túto udalosť? CardAction=Udalosť karty ActionOnCompany=Podobná spoločnosť ActionOnContact=Podobný kontakt +ActionOnUser=Related user TaskRDVWith=Stretnutie s %s ShowTask=Zobraziť úloha ShowAction=Zobraziť akcie ActionsReport=Udalosti správu -ThirdPartiesOfSaleRepresentative=Third parties with sales representative -SaleRepresentativesOfThirdParty=Sales representatives of third party +ThirdPartiesOfSaleRepresentative=Tretie strany s obchodným zástupcom +SaleRepresentativesOfThirdParty=Obchodní zástupcovia tretej strany SalesRepresentative=Obchodný zástupca SalesRepresentatives=Obchodní zástupcovia SalesRepresentativeFollowUp=Obchodný zástupca (pokračovanie) @@ -29,13 +30,13 @@ ShowCustomer=Zobraziť zákazníkovi ShowProspect=Zobraziť vyhliadky ListOfProspects=Zoznam vyhliadky ListOfCustomers=Zoznam zákazníkov -LastDoneTasks=Latest %s completed actions +LastDoneTasks=Posledné %s dokončené akcie LastActionsToDo=Najstaršie %s nedokončené úlohy DoneAndToDoActions=Dokončené a Ak chcete udalosti DoneActions=Dokončenej akcie ToDoActions=Neúplné udalosti SendPropalRef=Posielanie obchodného návrhu %s -SendOrderRef=Posielanie objednávky %s +SendOrderRef=Posielanie objednávky %s StatusNotApplicable=Nevzťahuje sa StatusActionToDo=Ak chcete StatusActionDone=Dokončiť @@ -47,43 +48,55 @@ LastProspectToContact=Ak chcete kontaktovať LastProspectContactInProcess=Kontakt v procese LastProspectContactDone=Spojiť sa vykonáva ActionAffectedTo=Udalosť priradená -ActionDoneBy=Udalosť vykonáva ActionAC_TEL=Telefónny hovor ActionAC_FAX=Odoslať fax ActionAC_PROP=Poslať e-mailom návrh ActionAC_EMAIL=Odoslať e-mail -ActionAC_EMAIL_IN=Reception of Email +ActionAC_EMAIL_IN=Príjem e-mailu ActionAC_RDV=Schôdza ActionAC_INT=Zásah na stránke ActionAC_FAC=Poslať zákazníka faktúru poštou ActionAC_REL=Poslať zákazníka faktúru poštou (pripomienka) ActionAC_CLO=Zavrieť ActionAC_EMAILING=Poslať hromadný email -ActionAC_COM=Send sales order by mail +ActionAC_COM=Pošlite predajnú objednávku poštou ActionAC_SHIP=Poslať prepravu poštou -ActionAC_SUP_ORD=Send purchase order by mail -ActionAC_SUP_INV=Send vendor invoice by mail +ActionAC_SUP_ORD=Pošlite objednávku poštou +ActionAC_SUP_INV=Pošlite faktúru dodávateľovi poštou ActionAC_OTH=Ostatné -ActionAC_OTH_AUTO=Other auto -ActionAC_MANUAL=Events inserted manually (by a user) -ActionAC_AUTO=Events inserted automatically +ActionAC_OTH_AUTO=Iné auto +ActionAC_MANUAL=Udalosti vložené manuálne (používateľom) +ActionAC_AUTO=Udalosti vložené automaticky ActionAC_OTH_AUTOShort=Ostatné -ActionAC_EVENTORGANIZATION=Event organization events +ActionAC_EVENTORGANIZATION=Organizovanie podujatí Stats=Predajné štatistiky StatusProsp=Prospect stav DraftPropals=Navrhnúť obchodné návrhy NoLimit=Bez limitu -ToOfferALinkForOnlineSignature=Link for online signature -WelcomeOnOnlineSignaturePageProposal=Welcome to the page to accept commercial proposals from %s -WelcomeOnOnlineSignaturePageContract=Welcome to %s Contract PDF Signing Page -WelcomeOnOnlineSignaturePageFichinter=Welcome to %s Intervention PDF Signing Page -ThisScreenAllowsYouToSignDocFromProposal=This screen allow you to accept and sign, or refuse, a quote/commercial proposal -ThisScreenAllowsYouToSignDocFromContract=This screen allow you to sign contract on PDF format online. -ThisScreenAllowsYouToSignDocFromFichinter=This screen allow you to sign intervention on PDF format online. -ThisIsInformationOnDocumentToSignProposal=This is information on document to accept or refuse -ThisIsInformationOnDocumentToSignContract=This is information on contract to sign -ThisIsInformationOnDocumentToSignFichinter=This is information on intervention to sign -SignatureProposalRef=Signature of quote/commercial proposal %s -SignatureContractRef=Signature of contract %s -SignatureFichinterRef=Signature of intervention %s -FeatureOnlineSignDisabled=Feature for online signing disabled or document generated before the feature was enabled +ToOfferALinkForOnlineSignature=Odkaz na online podpis +WelcomeOnOnlineSignaturePageProposal=Vitajte na stránke na prijímanie komerčných ponúk od %s +WelcomeOnOnlineSignaturePageContract=Vitajte na %s stránke na podpis zmluvy vo formáte PDF +WelcomeOnOnlineSignaturePageFichinter=Vitajte na stránke %s Intervention PDF Signing Page +WelcomeOnOnlineSignaturePageSociete_rib=Vitajte na %s stránke podpisovania PDF s mandátom SEPA +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page +ThisScreenAllowsYouToSignDocFromProposal=Táto obrazovka vám umožňuje prijať a podpísať alebo odmietnuť cenovú ponuku/komerčnú ponuku +ThisScreenAllowsYouToSignDocFromContract=Táto obrazovka vám umožňuje podpísať zmluvu vo formáte PDF online. +ThisScreenAllowsYouToSignDocFromFichinter=Táto obrazovka vám umožňuje podpísať zásah vo formáte PDF online. +ThisScreenAllowsYouToSignDocFromSociete_rib=Táto obrazovka vám umožňuje podpísať mandát SEPA vo formáte PDF online. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. +ThisIsInformationOnDocumentToSignProposal=Toto sú informácie o dokumente, ktorý treba prijať alebo odmietnuť +ThisIsInformationOnDocumentToSignContract=Toto sú informácie o zmluve, ktorú treba podpísať +ThisIsInformationOnDocumentToSignFichinter=Toto je informácia o zásahu, ktorú treba podpísať +ThisIsInformationOnDocumentToSignSociete_rib=Toto sú informácie o SEPA mandáte na podpis +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign +SignatureProposalRef=Podpis cenovej ponuky/komerčnej ponuky %s +SignatureContractRef=Podpis zmluvy %s +SignatureFichinterRef=Podpis zásahu %s +SignatureSociete_ribRef=Podpis mandátu SEPA %s +FeatureOnlineSignDisabled=Funkcia online podpisovania je zakázaná alebo dokument vygenerovaný predtým, ako bola táto funkcia povolená +NoSignature=Nie ste prihlásený +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/sk_SK/datapolicy.lang b/htdocs/langs/sk_SK/datapolicy.lang index ffb745be541..a6a6432f2ab 100644 --- a/htdocs/langs/sk_SK/datapolicy.lang +++ b/htdocs/langs/sk_SK/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,13 +15,10 @@ Module4100Name = Zásady ochrany osobných údajov # Module description 'ModuledatapolicyDesc' Module4100Desc = Modul na správu ochrany osobných údajov (v súlade s GDPR) - -# # Administration page -# datapolicySetup = Nastavenie zásad ochrany osobných údajov modulu Deletion = Vymazanie údajov -datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). +datapolicySetupPage = V závislosti od zákonov vašich krajín (príklad článok 5 GDPR) musia byť osobné údaje uchovávané po dobu nepresahuje dobu, po ktorú sú údaje potrebné na účel, na ktorý boli zhromaždené, s výnimkou archívnych účelov.
Vymazanie sa vykoná automaticky po určitom čase bez udalostí (trvanie ktoré uvediete nižšie). NB_MONTHS = %s mesiacov ONE_YEAR = 1 rok NB_YEARS = %s rokov @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Záujemca/zákazník DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ani potenciálny zákazník/ani zákazník DATAPOLICY_CONTACT_FOURNISSEUR = Dodávateľ DATAPOLICY_ADHERENT = Člen -DATAPOLICY_Tooltip_SETUP = Typ kontaktu – uveďte svoje možnosti pre každý typ. -DATAPOLICYMail = Nastavenie e-mailov -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Obsah e-mailu -DATAPOLICYSUBSITUTION = Vo svojom e-maile môžete použiť nasledujúce premenné (LINKACCEPT umožňuje vytvoriť odkaz zaznamenávajúci súhlas osoby, LINKREFUSED umožňuje zaznamenať odmietnutie osoby): -DATAPOLICYACCEPT = Správa po dohode -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Všetkým svojim relevantným kontaktom (ktorým ešte e-mail neprišiel a u ktorých ste nezaregistrovali nič o ich dohode s GDPR) môžete poslať GDPR email. Ak to chcete urobiť, použite nasledujúce tlačidlo. SendAgreement = Pošli e-maily AllAgreementSend = Všetky e-maily boli odoslané TXTLINKDATAPOLICYACCEPT = Text pre odkaz "dohoda" -TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# +TXTLINKDATAPOLICYREFUSE = Text pre odkaz "nesúhlas" # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR : Spracúvanie osobných údajov DATAPOLICY_consentement = Získaný súhlas so spracovaním osobných údajov -DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonymizovať tretiu stranu -DATAPOLICY_POPUP_ANONYME_TEXTE = Tento kontakt nemôžete odstrániť z Dolibarr, pretože existujú súvisiace položky. V súlade s GDPR urobíte všetky tieto údaje anonymnými, aby ste rešpektovali svoje povinnosti. Chcete pokračovať? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Prenosnosť GDPR -DATAPOLICY_PORTABILITE_TITLE = Export osobných údajov -DATAPOLICY_PORTABILITE_CONFIRMATION = Chcete exportovať osobné údaje tohto kontaktu. Si si istý ? - -# +DATAPOLICY_opposition_traitement = Namieta proti spracovaniu svojich osobných údajov +DATAPOLICY_opposition_prospection = Namieta proti spracovaniu svojich osobných údajov na účely vyhľadávania # Notes added during an anonymization -# -ANONYMISER_AT = Anonymizované %s - -DATAPOLICY_date = Date of agreement/disagreement GDPR -DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Odoslať e-mail GDPR +DATAPOLICY_date = Dátum súhlasu/nesúhlasu GDPR +DATAPOLICY_send = Dátum odoslania e-mailu so zmluvou MailSent = E-mail bol odoslaný - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion +NUMBER_MONTH_BEFORE_DELETION = Počet mesiacov pred odstránením diff --git a/htdocs/langs/sk_SK/dict.lang b/htdocs/langs/sk_SK/dict.lang index 2dad2b7b41a..15901d1cb7b 100644 --- a/htdocs/langs/sk_SK/dict.lang +++ b/htdocs/langs/sk_SK/dict.lang @@ -21,7 +21,7 @@ CountryNL=Holandsko CountryHU=Maďarsko CountryRU=Rusko CountrySE=Švédsko -CountryCI=Ivory Coast +CountryCI=Pobrežie Slonoviny CountrySN=Senegal CountryAR=Argentína CountryCM=Kamerun @@ -116,7 +116,7 @@ CountryHM=Heardov ostrov a McDonaldove CountryVA=Svätá stolica (Vatikánsky mestský štát) CountryHN=Honduras CountryHK=Hongkong -CountryIS=Iceland +CountryIS=Island CountryIN=India CountryID=Indonézia CountryIR=Irán @@ -131,13 +131,13 @@ CountryKI=Kiribati CountryKP=Severná Kórea CountryKR=Južná Kórea CountryKW=Kuvajt -CountryKG=Kyrgyzstan +CountryKG=Kirgizsko CountryLA=Lao CountryLV=Lotyšsko CountryLB=Libanon CountryLS=Lesotho CountryLR=Libéria -CountryLY=Libya +CountryLY=Líbya CountryLI=Lichtenštajnsko CountryLT=Litva CountryLU=Luxembursko @@ -158,9 +158,9 @@ CountryMX=Mexiko CountryFM=Mikronézia CountryMD=Moldavsko CountryMN=Mongolsko -CountryMS=Monserrat +CountryMS=Montserrat CountryMZ=Mozambik -CountryMM=Myanmar (Burma) +CountryMM=Mjanmarsko (Barma) CountryNA=Namíbia CountryNR=Nauru CountryNP=Nepál @@ -223,7 +223,7 @@ CountryTO=Tonga CountryTT=Trinidad a Tobago CountryTR=Turecko CountryTM=Turkménsko -CountryTC=Turks and Caicos Islands +CountryTC=Ostrovy Turks a Caicos CountryTV=Tuvalu CountryUG=Uganda CountryUA=Ukrajina @@ -233,7 +233,7 @@ CountryUY=Uruguaj CountryUZ=Uzbekistan CountryVU=Vanuatu CountryVE=Venezuela -CountryVN=Viet Nam +CountryVN=Vietnam CountryVG=Britské Panenské ostrovy CountryVI=Panenské ostrovy, USA CountryWF=Wallis a Futuna @@ -280,7 +280,7 @@ CurrencySingMGA=Ariary CurrencyMUR=Maurícius rupia CurrencySingMUR=Maurícius rupia CurrencyNOK=Nórske Krones -CurrencySingNOK=Norwegian kronas +CurrencySingNOK=nórskych korún CurrencyTND=Tuniských dinárov CurrencySingTND=Tuniský dinár CurrencyUSD=Americké doláre @@ -293,10 +293,10 @@ CurrencyXOF=CFA frank BCEAO CurrencySingXOF=CFA frank BCEAO CurrencyXPF=CFP frank CurrencySingXPF=Frank CFP -CurrencyCentEUR=cents +CurrencyCentEUR=centov CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=tisícina #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet @@ -310,7 +310,7 @@ DemandReasonTypeSRC_WOM=Word of mouth DemandReasonTypeSRC_PARTNER=Partner DemandReasonTypeSRC_EMPLOYEE=Zamestnanec DemandReasonTypeSRC_SPONSORING=Sponzoring -DemandReasonTypeSRC_SRC_CUSTOMER=Incoming contact of a customer +DemandReasonTypeSRC_SRC_CUSTOMER=Prichádzajúci kontakt so zákazníkom #### Paper formats #### PaperFormatEU4A0=Formát 4A0 PaperFormatEU2A0=Formát 2A0 @@ -332,31 +332,31 @@ PaperFormatCAP4=Formát P4 Kanada PaperFormatCAP5=Formát P5 Kanada PaperFormatCAP6=Formát P6 Kanada #### Expense report categories #### -ExpAutoCat=Car +ExpAutoCat=Auto ExpCycloCat=Moped -ExpMotoCat=Motorbike +ExpMotoCat=Motorka ExpAuto3CV=3 CV ExpAuto4CV=4 CV ExpAuto5CV=5 CV ExpAuto6CV=6 CV -ExpAuto7CV=7 CV +ExpAuto7CV=7 životopis ExpAuto8CV=8 CV ExpAuto9CV=9 CV ExpAuto10CV=10 CV -ExpAuto11CV=11 CV +ExpAuto11CV=11 životopis 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 +ExpAuto3PCV=3 CV a viac +ExpAuto4PCV=4 CV a viac +ExpAuto5PCV=5 CV a viac +ExpAuto6PCV=6 CV a viac +ExpAuto7PCV=7 CV a viac +ExpAuto8PCV=8 CV a viac +ExpAuto9PCV=9 CV a viac +ExpAuto10PCV=10 CV a viac +ExpAuto11PCV=11 CV a viac +ExpAuto12PCV=12 CV a viac +ExpAuto13PCV=13 CV a viac +ExpCyclo=Kapacita nižšia do 50 cm3 +ExpMoto12CV=Motorka 1 alebo 2 CV +ExpMoto345CV=Motorka 3, 4 alebo 5 CV +ExpMoto5PCV=Motorka 5 CV a viac diff --git a/htdocs/langs/sk_SK/errors.lang b/htdocs/langs/sk_SK/errors.lang index 2f64a469650..028a9c8b4f1 100644 --- a/htdocs/langs/sk_SK/errors.lang +++ b/htdocs/langs/sk_SK/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Používateľ musí byť priradený k úlohe, aby moh ErrorTaskAlreadyAssigned=Úloha je už priradená používateľovi ErrorModuleFileSeemsToHaveAWrongFormat=Zdá sa, že balík modulov má nesprávny formát. ErrorModuleFileSeemsToHaveAWrongFormat2=At least one mandatory directory must exists into zip of module: %s or %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Názov balíka modulu (%s) sa nezhoduje očakávaná syntax názvu: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Chyba, duplicitný názov spúšťača %s. Už načítané z %s. ErrorNoWarehouseDefined=Chyba, nie sú definované žiadne sklady. ErrorBadLinkSourceSetButBadValueForRef=Odkaz, ktorý používate, nie je platný. Je definovaný 'zdroj' pre platbu, ale hodnota 'ref' nie je platná. @@ -422,3 +422,4 @@ OperNotDefined=Spôsob platby nie je definovaný ErrorThisContactXIsAlreadyDefinedAsThisType=%s je už definovaný ako kontakt pre tento typ. ErrorThisGroupIsAlreadyDefinedAsThisType=Kontakty s touto skupinou sú už definované ako kontakt pre tento typ. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/sk_SK/mails.lang b/htdocs/langs/sk_SK/mails.lang index 4c68b1676ac..5f9622e0017 100644 --- a/htdocs/langs/sk_SK/mails.lang +++ b/htdocs/langs/sk_SK/mails.lang @@ -32,6 +32,8 @@ NewMailing=Nové posielanie e-mailov NewSMSing=Nová sms EditMailing=Upraviť e-mailom ResetMailing=Znova e-mailom +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Odstránenie e-mailom PreviewMailing=Náhľad posielanie e-mailov CreateMailing=Vytvorenie e-mailom @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Príjemca e-mailu je prázdny WarningNoEMailsAdded=Žiadne nové Email pridať do zoznamu príjemcov. ConfirmValidMailing=Naozaj chcete overiť tento e-mail? ConfirmResetMailing=Upozornenie, opätovnou inicializáciou odosielania e-mailov %s povolíte opätovné odoslanie tohto e-mailu hromadnou poštou. Naozaj to chcete urobiť? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Naozaj chcete odstrániť tento e-mail? NbOfUniqueEMails=Počet jedinečných e-mailov NbOfUniquePhones=Počet jedinečných telefónov @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Už žiadny príjemca, ktorému by som mohol poslať e-m EmailOptedOut=Vlastník e-mailu požiadal, aby ho už s týmto e-mailom nekontaktoval EvenUnsubscribe=Zahrňte e-maily na odhlásenie EvenUnsubscribeDesc=Pri výbere e-mailov ako cieľov zahrňte e-maily na odhlásenie. Užitočné napríklad pre povinné servisné e-maily. -XEmailsDoneYActionsDone=%s e-maily vopred kvalifikované, %s e-maily úspešne spracované (pre záznam %s /vykonané akcie) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Môžete urobiť niekoľko pokynov pre svoj e-mail (Príklad: vygenerujte obrázok v šablóne e-mailu...) ModelTemplate=Šablóna e-mailu YouCanChooseAModelForYouMailContent= Môžete si vybrať jeden z modelov šablón alebo vygenerovať model pomocou AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/sk_SK/stripe.lang b/htdocs/langs/sk_SK/stripe.lang index dbdb73050b4..c01f083a539 100644 --- a/htdocs/langs/sk_SK/stripe.lang +++ b/htdocs/langs/sk_SK/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=Adresa URL, ktorá ponúka %s stránk ToOfferALinkForOnlinePaymentOnFreeAmount=Adresa URL, ktorá ponúka %s stránku online platieb v ľubovoľnej výške bez existujúceho objektu ToOfferALinkForOnlinePaymentOnMemberSubscription=Adresa URL, ktorá ponúka %s online platobnú stránku pre členské predplatné ToOfferALinkForOnlinePaymentOnDonation=Adresa URL, ktorá ponúka %s stránku online platieb na platbu daru -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) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Nastavte svoj Stripe pomocou adresy URL %s, kedy sa platba vytvorí automaticky potvrdené spoločnosťou Stripe. AccountParameter=Parametre účtu UsageParameter=Používanie parametrov @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Miesto (adresa) pre Stripe Terminals RequestDirectDebitWithStripe=Požiadajte o inkaso s Stripe RequesCreditTransferWithStripe=Požiadajte o prevod kreditu pomocou služby Stripe STRIPE_SEPA_DIRECT_DEBIT=Povoľte platby inkasom cez Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=Režim Stripe Connect +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/sl_SI/admin.lang b/htdocs/langs/sl_SI/admin.lang index 321713c26d2..61dc3b2a397 100644 --- a/htdocs/langs/sl_SI/admin.lang +++ b/htdocs/langs/sl_SI/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=Seznam vrednosti mora biti vrstic z obliko ključ,vrednost (kjer ključ ne sme biti '0')

na primer:
1,vrednost1
2,vrednost2
3,vrednost3 a0342fccfda19b ExtrafieldParamHelpradio=Seznam vrednosti mora biti vrstic z obliko ključ,vrednost (kjer ključ ne sme biti '0')

na primer:
1,vrednost1
2,vrednost2
3,vrednost3 a0342fccfda19b 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametri morajo biti ObjectName:Classpath
Sintaksa: ObjectName:Classpath ExtrafieldParamHelpSeparator=Naj ostane prazno za preprosto ločilo
Nastavite to na 1 za strnjeno ločilo (privzeto odprto za novo sejo, nato se status ohrani za vsako uporabniško sejo)
Nastavite to na 2 za strnjeno ločilo (privzeto strnjeno za novo sejo, nato status se hrani za vsako uporabniško sejo) LibraryToBuildPDF=Knjižnica, ki se uporablja za ustvarjanje PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, ki mu sledi skrajšano ime stranke s šte ModuleCompanyCodeSupplierDigitaria=%s, ki mu sledi okrnjeno ime dobavitelja s številom znakov: %s za računovodsko kodo dobavitelja. Use3StepsApproval=Privzeto morata naročila ustvariti in odobriti 2 različna uporabnika (en korak/uporabnik za ustvarjanje in en korak/uporabnik za odobritev. Upoštevajte, da če ima uporabnik tako dovoljenje za ustvarjanje kot odobritev, bo en korak/uporabnik dovolj) . S to možnostjo lahko zahtevate uvedbo tretjega koraka/odobritve uporabnika, če je znesek višji od namenske vrednosti (torej bodo potrebni 3 koraki: 1=potrditev, 2=prva odobritev in 3=druga odobritev, če je znesek zadosten).
To nastavite na prazno, če zadostuje ena odobritev (2 koraka), nastavite na zelo nizko vrednost (0,1), če je vedno potrebna druga odobritev (3 koraki). UseDoubleApproval=Uporabite odobritev v treh korakih, ko je znesek (brez davka) višji od... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Nekateri ponudniki e-poštnih storitev (kot je Yahoo) vam ne dovoljujejo pošiljanja e-pošte z drugega strežnika kot z njihovega lastnega strežnika. Vaša trenutna nastavitev za pošiljanje e-pošte uporablja strežnik aplikacije in ne strežnika vašega ponudnika e-pošte, zato bodo nekateri prejemniki (tisti, ki je združljiv z omejevalnim protokolom DMARC) vprašali vašega ponudnika e-pošte, ali lahko sprejmejo vašo e-pošto, in nekateri ponudniki e-pošte (kot je Yahoo) lahko odgovorijo z "ne", ker strežnik ni njihov, zato nekaj vaših poslanih e-poštnih sporočil morda ne bo sprejetih za dostavo (bodite pozorni tudi na kvoto pošiljanja vašega e-poštnega ponudnika). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Zanimiva je tudi uporaba strežnika SMTP vašega ponudnika e-poštnih storitev za pošiljanje e-pošte, tako da bodo vsa e-poštna sporočila, poslana iz aplikacije, shranjena tudi v vaš imenik »Poslano« v vašem nabiralniku. WarningPHPMailD=Priporočljiv protokol za pošiljanje sporočil je "SMTP". WarningPHPMailDbis=Če res želite ohraniti privzeto metodo »PHP« za pošiljanje e-pošte, preprosto prezrite to opozorilo ali pa jo odstranite tako, da %skliknete tukaj%s. WarningPHPMail2=Če mora vaš ponudnik e-pošte SMTP omejiti e-poštnega odjemalca na nekatere naslove IP (zelo redko), je to naslov IP poštnega uporabniškega agenta (MUA) za vašo aplikacijo ERP CRM: %s . -WarningPHPMailSPF=Če je ime domene v vašem e-poštnem naslovu pošiljatelja zaščiteno z zapisom SPF (vprašajte svoj register imena domene), morate v zapis SPF DNS vaše domene dodati naslednje IP-je: %s . -ActualMailSPFRecordFound=Najden dejanski zapis SPF (za e-pošto %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Kliknite za prikaz opisa DependsOn=Ta modul potrebuje modul(e) RequiredBy=Ta modul zahtevajo moduli @@ -867,7 +868,7 @@ Permission255=Kreiranje/spreminjanje lastnih uporabniških informacij Permission256=Spreminjanje lastnega gesla Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Razširite dostop do vseh tretjih oseb BREZ njihovih predmetov (ne le tretjih oseb, za katere je uporabnik prodajni zastopnik).
Ne velja za zunanje uporabnike (vedno omejeni nanje za predloge, naročila, račune, pogodbe itd.).
Ne velja za projekte (samo pravila o projektnih dovoljenjih, vidnosti in dodelitvah). Permission271=Branje CA Permission272=Branje računov @@ -944,7 +945,7 @@ Permission776=Plačilo stroškovnih poročil Permission777=Preberite vsa poročila o stroških (tudi tistih uporabnikov in ne podrejenih) Permission778=Ustvarite/spremenite poročila o stroških za vse Permission779=Izvoz stroškovnih poročil -Permission1001=Branje zalog +Permission1001=Read warehouses and stocks Permission1002=Kreiranje/spreminjanje skladišč Permission1003=Brisanje skladišč Permission1004=Branje gibanja zalog @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filter regularnih izrazov za čiščenje vrednosti DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Očistite določene besede pri ustvarjanju podračunov za stranke ali dobavitelje RemoveSpecialWordsHelp=Določite besede, ki jih je treba očistiti, preden izračunate račun stranke ali dobavitelja. Uporabi ";" med vsako besedo -GDPRContact=Pooblaščenec za varstvo podatkov (DPO, kontakt za zasebnost podatkov ali GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Če v svojem Informacijskem sistemu shranjujete osebne podatke, lahko tukaj navedete kontakt, ki je odgovoren za Splošno uredbo o varstvu podatkov HelpOnTooltip=Besedilo pomoči za prikaz v opisu orodja HelpOnTooltipDesc=Tukaj vnesite besedilo ali ključ za prevod, da se besedilo prikaže v opisu orodja, ko se to polje prikaže v obrazcu @@ -2218,7 +2219,7 @@ CreateCandidature=Ustvari prošnjo za delo FormatZip=Zip MainMenuCode=Koda za vnos menija (glavni meni) ECMAutoTree=Pokaži samodejno drevo ECM -OperationParamDesc=Določite pravila za ekstrahiranje nekaterih podatkov ali nastavite vrednosti za uporabo pri delovanju.

Primer za ekstrahiranje imena podjetja iz zadevo e-pošte v začasno spremenljivko:
tmp_var=EXTRACT:SUBJECT:Sporočilo podjetja ([^\n]*)

Primeri za nastavitev lastnosti predmeta za ustvarjanje:
objproperty1=SET:trdo kodirana vrednost
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:vrednost (vrednost je nastavljen samo, če lastnost še ni definirana)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Ime mojega podjetja je\\ s([^\\s]*)

Uporabite novo vrstico za ekstrahiranje ali nastavitev več lastnosti. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Odpiralni čas OpeningHoursDesc=Tukaj vnesite redni delovni čas vašega podjetja. ResourceSetup=Konfiguracija modula Resource @@ -2264,7 +2265,7 @@ LargerThan=Večje kot IfTrackingIDFoundEventWillBeLinked=Upoštevajte, da če je ID sledenja predmeta najden v e-pošti ali če je e-pošta odgovor na e-pošto, ki je že zbrana in povezana z objektom, bo ustvarjeni dogodek samodejno povezan z znanim sorodnim objektom. WithGMailYouCanCreateADedicatedPassword=Če ste pri računu GMail omogočili preverjanje veljavnosti v dveh korakih, je priporočljivo ustvariti namensko drugo geslo za aplikacijo namesto uporabe lastnega gesla za račun na https://myaccount.google.com/. EmailCollectorTargetDir=Morda je želeno vedenje premakniti e-pošto v drugo oznako/imenik, ko je bila uspešno obdelana. Samo nastavite ime imenika tukaj, da uporabite to funkcijo (NE uporabljajte posebnih znakov v imenu). Upoštevajte, da morate uporabiti tudi prijavni račun za branje/pisanje. -EmailCollectorLoadThirdPartyHelp=To dejanje lahko uporabite za uporabo vsebine e-pošte za iskanje in nalaganje obstoječe tretje osebe v vaši bazi podatkov (iskanje bo izvedeno po definirani lastnosti med 'id','name','name_alias','email'). Najdena (ali ustvarjena) tretja oseba bo uporabljena za naslednja dejanja, ki jo potrebujejo.
Če želite na primer ustvariti tretjo osebo z imenom, ekstrahiranim iz niza ' Ime: ime za iskanje' prisotno v telesu, e-poštni naslov pošiljatelja uporabite kot e-poštni naslov, polje parametrov lahko nastavite takole:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Opozorilo: veliko e-poštnih strežnikov (kot je Gmail) pri iskanju po nizu izvaja iskanje po celi besedi in ne bo vrnilo rezultata, če je niz najden le delno v besedi. Tudi zaradi tega razloga bo uporaba posebnih znakov v iskalnih kriterijih prezrta, če niso del obstoječih besed.
Če želite izključiti iskanje po besedi (vrnite e-pošto, če je beseda ni najden), lahko uporabite ! pred besedo (morda ne deluje na nekaterih poštnih strežnikih). EndPointFor=Končna točka za %s : %s DeleteEmailCollector=Izbriši zbiralnik e-pošte @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Ime tretje osebe - vzdevek tretje osebe ALIAS_THIRDPARTY=Vzdevek tretje osebe – ime tretje osebe PDFIn2Languages=Pokaži oznake v PDF-ju v dveh različnih jezikih (ta funkcija morda ne bo delovala v nekaterih jezikih) PDF_USE_ALSO_LANGUAGE_CODE=Če želite imeti nekatera besedila v vašem PDF-ju podvojena v 2 različnih jezikih v istem ustvarjenem PDF-ju, morate tukaj nastaviti ta drugi jezik, tako da bo ustvarjeni PDF vseboval 2 različna jezika na isti strani, tistega, izbranega pri ustvarjanju PDF-ja, in tega ( to podpira le nekaj predlog PDF). Pustite prazno za 1 jezik na PDF. -PDF_USE_A=Ustvarite dokumente PDF s formatom PDF/A namesto s privzetim formatom PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Tukaj vnesite kodo ikone FontAwesome. Če ne veste, kaj je FontAwesome, lahko uporabite generično vrednost fa-adress-book. RssNote=Opomba: vsaka definicija vira RSS ponuja gradnik, ki ga morate omogočiti, da bo na voljo na nadzorni plošči JumpToBoxes=Pojdite na Nastavitve -> Pripomočki @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/sl_SI/commercial.lang b/htdocs/langs/sl_SI/commercial.lang index 13c167e8a6b..7283ebf7b81 100644 --- a/htdocs/langs/sl_SI/commercial.lang +++ b/htdocs/langs/sl_SI/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Ali zares želite izbrisati ta dogodek ? CardAction=Kartica aktivnosti ActionOnCompany=Povezano podjetje ActionOnContact=Povezan stik +ActionOnUser=Related user TaskRDVWith=Sestanek z %s ShowTask=Prikaži naloge ShowAction=Prikaži aktivnosti @@ -47,7 +48,6 @@ LastProspectToContact=Kontaktirati LastProspectContactInProcess=Kontakt v teku LastProspectContactDone=Kontakt izveden ActionAffectedTo=Dogodek je dodeljen -ActionDoneBy=Aktivnost izvedel ActionAC_TEL=Telefonski klic ActionAC_FAX=Poslati faks ActionAC_PROP=Poslati ponudbo @@ -65,8 +65,8 @@ ActionAC_SUP_ORD=Pošlji nabavno naročilo po e-pošti ActionAC_SUP_INV=Prejeti račun se pošlje po pošti ActionAC_OTH=Ostalo ActionAC_OTH_AUTO=Drugi avto -ActionAC_MANUAL=Events inserted manually (by a user) -ActionAC_AUTO=Events inserted automatically +ActionAC_MANUAL=Ročno vstavljeni dogodki (uporabnik) +ActionAC_AUTO=Dogodki so samodejno vstavljeni ActionAC_OTH_AUTOShort=Ostalo ActionAC_EVENTORGANIZATION=Organizacija dogodkov dogodki Stats=Statistika prodaje @@ -77,13 +77,26 @@ ToOfferALinkForOnlineSignature=Povezava do online podpisa WelcomeOnOnlineSignaturePageProposal=Dobrodošli na strani za prejem ponudb od %s WelcomeOnOnlineSignaturePageContract=Dobrodošli na strani za podpis PDF pogodbe %s WelcomeOnOnlineSignaturePageFichinter=Dobrodošli na %s Intervention PDF strani za podpisovanje +WelcomeOnOnlineSignaturePageSociete_rib=Dobrodošli na %s strani za podpisovanje PDF s pooblastilom SEPA +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=Na tem ekranu lahko sprejemate, podpisujete ali zavračate ponudbe ThisScreenAllowsYouToSignDocFromContract=Ta zaslon vam omogoča podpis pogodbe v formatu PDF na spletu. ThisScreenAllowsYouToSignDocFromFichinter=Ta zaslon vam omogoča spletno podpisovanje intervencije v formatu PDF. +ThisScreenAllowsYouToSignDocFromSociete_rib=Ta zaslon vam omogoča, da na spletu podpišete mandat SEPA v formatu PDF. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=Informacije na dokumentu, ki jih je potrebno potrditi ali zavrniti ThisIsInformationOnDocumentToSignContract=To so informacije o pogodbi za podpis ThisIsInformationOnDocumentToSignFichinter=To je informacija o intervenciji v podpis +ThisIsInformationOnDocumentToSignSociete_rib=To so informacije o mandatu SEPA za podpis +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Podpis ponudbe %s SignatureContractRef=Podpis pogodbe %s SignatureFichinterRef=Podpis intervencije %s +SignatureSociete_ribRef=Podpis mandata SEPA %s FeatureOnlineSignDisabled=Funkcionalnost elektronskega podpisovanja je onemogočena, oziroma je dokument nastal, preden je bilo omogočeno elektronsko podpisovanje +NoSignature=Nepodpisana +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/sl_SI/companies.lang b/htdocs/langs/sl_SI/companies.lang index cf8e5c4cac7..5bf6aab35b6 100644 --- a/htdocs/langs/sl_SI/companies.lang +++ b/htdocs/langs/sl_SI/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Uporabniško ime NoDolibarrAccess=Nima dostopa ExportDataset_company_1=Partnerji (podjetja/fundacije/fizične osebe) in njihova lastnina ExportDataset_company_2=Stiki in njihove lastnosti +ExportDataset_company_3=Bančni računi partnerjev ImportDataset_company_1=Partnerji in njihove lastnosti ImportDataset_company_2=Dodatni stiki/naslovi in atributi partnerjev ImportDataset_company_3=Bančni računi partnerjev diff --git a/htdocs/langs/sl_SI/datapolicy.lang b/htdocs/langs/sl_SI/datapolicy.lang index 0bf05ffbe6c..34b6f8ffe36 100644 --- a/htdocs/langs/sl_SI/datapolicy.lang +++ b/htdocs/langs/sl_SI/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Politika zasebnosti podatkov # Module description 'ModuledatapolicyDesc' Module4100Desc = Modul za upravljanje zasebnosti podatkov (skladnost z GDPR) - -# # Administration page -# datapolicySetup = Nastavitev pravilnika o zasebnosti podatkov modula Deletion = Izbris podatkov datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Potencialni kupec/kupec DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Niti potencialna stranka/niti stranka DATAPOLICY_CONTACT_FOURNISSEUR = Dobavitelj DATAPOLICY_ADHERENT = Član -DATAPOLICY_Tooltip_SETUP = Vrsta stika – navedite svoje izbire za vsako vrsto. -DATAPOLICYMail = Nastavitev e-pošte -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Vsebina e-pošte -DATAPOLICYSUBSITUTION = V svoji e-pošti lahko uporabite naslednje spremenljivke (LINKACCEPT omogoča ustvarjanje povezave, ki beleži strinjanje osebe, LINKREFUSED omogoča beleženje zavrnitve osebe): -DATAPOLICYACCEPT = Sporočilo po dogovoru -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = E-pošto GDPR lahko pošljete vsem svojim relevantnim kontaktom (ki še niso prejeli e-pošte in za katere niste registrirali ničesar o njihovi pogodbi GDPR). Če želite to narediti, uporabite naslednji gumb. SendAgreement = Pošlji e-pošto AllAgreementSend = Vsa e-poštna sporočila so bila poslana TXTLINKDATAPOLICYACCEPT = Besedilo za povezavo "pogodba" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR : Obdelava osebnih podatkov DATAPOLICY_consentement = Pridobljena privolitev za obdelavo osebnih podatkov DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonimizirajte tretjo osebo -DATAPOLICY_POPUP_ANONYME_TEXTE = Tega stika ne morete izbrisati iz Dolibarra, ker so povezani elementi. V skladu z GDPR boste zaradi izpolnjevanja svojih obveznosti vse te podatke naredili anonimne. Bi radi nadaljevali? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Prenosljivost GDPR -DATAPOLICY_PORTABILITE_TITLE = Iznos osebnih podatkov -DATAPOLICY_PORTABILITE_CONFIRMATION = Želite izvoziti osebne podatke tega stika. Ali si prepričan ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Anonimiziral %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Pošlji e-pošto GDPR MailSent = Email je bil poslan - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/sl_SI/dict.lang b/htdocs/langs/sl_SI/dict.lang index 7c1b1194d72..cb18776d339 100644 --- a/htdocs/langs/sl_SI/dict.lang +++ b/htdocs/langs/sl_SI/dict.lang @@ -137,7 +137,7 @@ CountryLV=Latvija CountryLB=Libanon CountryLS=Lesoto CountryLR=Liberija -CountryLY=Libya +CountryLY=Libija CountryLI=Lihtenštajn CountryLT=Litva CountryLU=Luksemburg @@ -158,7 +158,7 @@ CountryMX=Mehika CountryFM=Mikronezija CountryMD=Moldavija CountryMN=Mongolija -CountryMS=Monserat +CountryMS=Montserrat CountryMZ=Mozambik CountryMM=Mjanmar (Burma) CountryNA=Namibija @@ -295,8 +295,8 @@ CurrencyXPF=CFP Francs CurrencySingXPF=CFP Franc CurrencyCentEUR=centov CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=pais +CurrencyCentINR=pais +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=tisočina #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/sl_SI/errors.lang b/htdocs/langs/sl_SI/errors.lang index bfb3390360b..c43ab3f7af7 100644 --- a/htdocs/langs/sl_SI/errors.lang +++ b/htdocs/langs/sl_SI/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Uporabnik mora biti dodeljen nalogi, da lahko vnese p ErrorTaskAlreadyAssigned=Naloga je že dodeljena uporabniku ErrorModuleFileSeemsToHaveAWrongFormat=Zdi se, da ima paket modula napačno obliko. ErrorModuleFileSeemsToHaveAWrongFormat2=V zip modula mora obstajati vsaj en obvezni imenik: %s ali %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Ime paketa modula ( %s ) se ne ujema s pričakovano sintakso imena: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Napaka, podvojeno ime sprožilca %s. Že naloženo iz %s. ErrorNoWarehouseDefined=Napaka, ni določenih skladišč. ErrorBadLinkSourceSetButBadValueForRef=Povezava, ki jo uporabljate, ni veljavna. 'Vir' za plačilo je določen, vendar vrednost za 'ref' ni veljavna. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/sl_SI/interventions.lang b/htdocs/langs/sl_SI/interventions.lang index 162921354cf..cf878a71d80 100644 --- a/htdocs/langs/sl_SI/interventions.lang +++ b/htdocs/langs/sl_SI/interventions.lang @@ -13,11 +13,17 @@ CreateDraftIntervention=Kreiraj osnutek InterventionContact=Kontakt za intervencijo DeleteIntervention=Izbriši intervencijo ValidateIntervention=Potrdi intervencijo +SignIntervention=Podpišite intervencijo +UnsignIntervention=Unsign intervention ModifyIntervention=Spremeni intervencijo +CloseIntervention=Bližnja intervencija DeleteInterventionLine=Izbriši vrstico intervencije ConfirmDeleteIntervention=Ali ste prepričani, da želite izbrisati ta poseg? ConfirmValidateIntervention=Ali ste prepričani, da želite potrditi ta poseg pod imenom %s ? +ConfirmSignIntervention=Are you sure you want to set this intervention as signed ? +ConfirmUnsignIntervention=Are you sure you want to set this intervention as unsigned ? ConfirmModifyIntervention=Ali ste prepričani, da želite spremeniti ta poseg? +ConfirmCloseIntervention=Ste prepričani, da želite zapreti to intervencijo? ConfirmDeleteInterventionLine=Ali ste prepričani, da želite izbrisati to intervencijsko linijo? ConfirmCloneIntervention=Ali ste prepričani, da želite klonirati ta poseg? NameAndSignatureOfInternalContact=Ime in podpis intervenienta: @@ -27,21 +33,25 @@ InterventionCardsAndInterventionLines=Intervencije in vrstice na intervenciji InterventionClassifyBilled=Označi kot "Zaračunano" InterventionClassifyUnBilled=Označi kot "Nezaračunano" InterventionClassifyDone=Razvrsti "Končano" -StatusInterInvoiced=Zaračunano +InterventionSign=Set Signed +InterventionUnsign=Set Unsigned SendInterventionRef=Oddana intervencija %s SendInterventionByMail=Pošljite intervencijo po elektronski pošti InterventionCreatedInDolibarr=Intervencija %s je ustvarjena InterventionValidatedInDolibarr=Intervencija %s je potrjena +InterventionSignedInDolibarr=Intervencija podpisana +InterventionSignedOnline=Intervention signed online +InterventionUnsignedInDolibarr=Intervention unsigned InterventionModifiedInDolibarr=Intervencija %s je spremenjena InterventionClassifiedBilledInDolibarr=Intervencijo %s označi kot "zaračunana" InterventionClassifiedUnbilledInDolibarr=Intervencijo %s označi kot "nezaračunana" InterventionSentByEMail=Intervencija %s poslana po elektronski pošti +InterventionClosedInDolibarr= Intervencija %s zaprta InterventionDeletedInDolibarr=Intervencija %s je izbrisana InterventionsArea=Območje intervencij DraftFichinter=Osnutki posegov LastModifiedInterventions=Zadnje %s spremenjene intervencije FichinterToProcess=Intervencije za obdelavo -TypeContact_fichinter_external_CUSTOMER=Kontakt za nadaljnjo obravnavo pri kupcu PrintProductsOnFichinter=Na intervencijsko kartico natisnite tudi vrstice tipa "izdelek" (ne le storitve). PrintProductsOnFichinterDetails=intervencije na osnovi naročil UseServicesDurationOnFichinter=Uporabite trajanje storitev za intervencije, generirane iz naročil @@ -50,7 +60,7 @@ UseDateWithoutHourOnFichinter=Skrije ure in minute izven datumskega polja za zap InterventionStatistics=Statistika intervencij NbOfinterventions=Št. intervencijskih kart NumberOfInterventionsByMonth=Število intervencijskih kartic po mesecih (datum validacije) -AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). You can use PROJECT_ELEMENTS_FOR_ADD_MARGIN and PROJECT_ELEMENTS_FOR_MINUS_MARGIN option into home-setup-other to complete list of element included into profit. +AmountOfInteventionNotIncludedByDefault=Znesek intervencije privzeto ni vključen v dobiček (v večini primerov se za štetje porabljenega časa uporabljajo časovnice). Uporabite lahko možnosti PROJECT_ELEMENTS_FOR_ADD_MARGIN in PROJECT_ELEMENTS_FOR_MINUS_MARGIN v home-setup-other, da dokončate seznam elementov, vključenih v profit. InterId=ID intervencije InterRef=Ref. intervencije InterDateCreation=Intervencija ustvarjanja datuma @@ -69,4 +79,9 @@ GenerateInter=Ustvarite intervencijo FichinterNoContractLinked=Intervencija %s je bila ustvarjena brez povezane pogodbe. ErrorFicheinterCompanyDoesNotExist=Podjetje ne obstaja. Intervencija ni bila ustvarjena. NextDateToIntervention=Datum za naslednjo intervencijsko generacijo -NoIntervention=No intervention +NoIntervention=Brez posredovanja +TypeContact_fichinter_internal_INTERREPFOLL=Responsible for intervention follow-up +TypeContact_fichinter_internal_INTERVENING=Intervenant +TypeContact_fichinter_external_BILLING=Customer contact of intervention billing +TypeContact_fichinter_external_CUSTOMER=Customer contact of intervention follow-up +NotARecurringInterventionalTemplate=Not a recurring intervention template diff --git a/htdocs/langs/sl_SI/mails.lang b/htdocs/langs/sl_SI/mails.lang index d49c8759ad5..574ddbec172 100644 --- a/htdocs/langs/sl_SI/mails.lang +++ b/htdocs/langs/sl_SI/mails.lang @@ -32,6 +32,8 @@ NewMailing=Novo e-sporočilo NewSMSing=New smsing EditMailing=Urejanje e-pošte ResetMailing=Ponovno pošiljanje e-pošte +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Brisanje e-pošte PreviewMailing=Predogled e-pošte CreateMailing=Kreiraj e-pošto @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Prejemnik ni določen WarningNoEMailsAdded=Nobenega novega e-sporočila ni za dodajanje na prejemnikov seznam. ConfirmValidMailing=Ali ste prepričani, da želite potrditi to e-poštno sporočilo? ConfirmResetMailing=Opozorilo, s ponovno inicializacijo e-poštnega pošiljanja %s boste omogočili ponovno pošiljanje tega e-poštnega sporočila v množičnem pošiljanju. Ste prepričani, da želite to narediti? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Ali ste prepričani, da želite izbrisati to e-poštno sporočilo? NbOfUniqueEMails=Št. edinstvenih e-poštnih sporočil NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Ni več prejemnika za pošiljanje e-pošte EmailOptedOut=Lastnik e-pošte je zahteval, da ga ne kontaktirate več s to e-pošto EvenUnsubscribe=Vključite e-poštna sporočila za zavrnitev EvenUnsubscribeDesc=Vključite e-poštna sporočila za zavrnitev, ko izberete e-poštna sporočila kot cilje. Uporabno na primer za obvezna servisna e-poštna sporočila. -XEmailsDoneYActionsDone=%s e-pošta predhodno kvalificirana, %s e-pošta uspešno obdelana (za %s zapis/opravljena dejanja) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/sl_SI/stripe.lang b/htdocs/langs/sl_SI/stripe.lang index a466078985c..10339a7dec0 100644 --- a/htdocs/langs/sl_SI/stripe.lang +++ b/htdocs/langs/sl_SI/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL za ponudbo %s spletne plačilne s ToOfferALinkForOnlinePaymentOnFreeAmount=URL za ponudbo %s strani za spletno plačilo poljubnega zneska brez obstoječega predmeta ToOfferALinkForOnlinePaymentOnMemberSubscription=URL za ponudbo %s strani za spletno plačilo za člansko naročnino ToOfferALinkForOnlinePaymentOnDonation=URL za ponudbo %s spletne plačilne strani za plačilo donacije -YouCanAddTagOnUrl=Parameter URL-ja &tag= vrednost lahko dodate tudi kateremu koli od teh URL-jev (obvezno samo za plačilo, ki ni povezano s predmetom), da dodate lastno oznako komentarja o plačilu.
Za URL plačil brez obstoječega predmeta lahko dodate tudi parameter &noidempotency=1 , tako da je mogoče isto povezavo z isto oznako uporabiti večkrat (nekateri načini plačila lahko omejijo plačilo na 1 za vsako različno povezavo brez tega parameter) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Nastavite svoj Stripe z url %s , da se plačilo samodejno ustvari, ko ga potrdi Stripe. AccountParameter=Parametri računa UsageParameter=Parametri uporabe @@ -41,8 +42,8 @@ STRIPE_LIVE_WEBHOOK_KEY=Ključ v živo Webhook ONLINE_PAYMENT_WAREHOUSE=Zaloga, ki se uporabi za zmanjšanje zaloge, ko je opravljeno spletno plačilo
(TODO Ko se izvede možnost zmanjšanja zaloge za dejanje na računu in spletno plačilo samo ustvari račun?) StripeLiveEnabled=Stripe v živo omogočen (sicer preskusni/peskovniški način) StripeImportPayment=Uvozite plačila Stripe -ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails -ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s +ExampleOfTestCreditCard=Primer kreditne kartice za testno plačilo: %s => veljavna, %s => napaka CVC, %s => potekel, %s => polnjenje ni uspelo +ExampleOfTestBankAcountForSEPA=Primer BAN bančnega računa za preizkus neposredne bremenitve: %s StripeGateways=Stripe prehodi OAUTH_STRIPE_TEST_ID=ID odjemalca Stripe Connect (ca_...) OAUTH_STRIPE_LIVE_ID=ID odjemalca Stripe Connect (ca_...) @@ -51,6 +52,7 @@ StripeAccount=Stripe račun StripeChargeList=Seznam stroškov Stripe StripeTransactionList=Seznam transakcij Stripe StripeCustomerId=ID stranke Stripe +StripePaymentId=Stripe ID plačila StripePaymentModes=Načini plačila Stripe LocalID=Lokalni ID StripeID=Stripe ID @@ -70,9 +72,19 @@ ToOfferALinkForTestWebhook=Povezava do nastavitve Stripe WebHook za klic IPN (te ToOfferALinkForLiveWebhook=Povezava za nastavitev Stripe WebHook za klic IPN (način v živo) PaymentWillBeRecordedForNextPeriod=Plačilo bo evidentirano za naslednje obdobje. ClickHereToTryAgain= Kliknite tukaj, če želite poskusiti znova ... -CreationOfPaymentModeMustBeDoneFromStripeInterface=Zaradi pravil stroge avtentikacije strank je treba kartico ustvariti v zaledni pisarni Stripe. Tukaj lahko kliknete, da vklopite evidenco strank Stripe: %s -STRIPE_CARD_PRESENT=Card Present for Stripe Terminals -TERMINAL_LOCATION=Location (address) for Stripe Terminals +CreationOfPaymentModeMustBeDoneFromStripeInterface=Zaradi pravil stroge avtentikacije strank je treba kartico ustvariti v zaledni pisarni Stripe. Za vklop evidence strank Stripe lahko kliknete tukaj: %s +STRIPE_CARD_PRESENT=Prisotna kartica za terminale Stripe +TERMINAL_LOCATION=Lokacija (naslov) za terminale Stripe RequestDirectDebitWithStripe=Zahtevajte direktno bremenitev s Stripe -STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe - +RequesCreditTransferWithStripe=Request Credit Transfer with Stripe +STRIPE_SEPA_DIRECT_DEBIT=Omogočite plačila z direktno obremenitvijo prek Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT +StripeConnect_Mode=Način Stripe Connect +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/sq_AL/admin.lang b/htdocs/langs/sq_AL/admin.lang index 972a66a4aa2..3973a8884f1 100644 --- a/htdocs/langs/sq_AL/admin.lang +++ b/htdocs/langs/sq_AL/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametrat duhet të jenë ObjectName:Classpath
Sintaksa: ObjectName:Classpath ExtrafieldParamHelpSeparator=Mbajeni bosh për një ndarës të thjeshtë
Vendoseni këtë në 1 për një ndarës në kolaps (i hapur si parazgjedhje për sesionin e ri, më pas statusi mbahet për çdo sesion përdoruesi)
Cakto këtë në 2 për një ndarës në kolaps (i palosur si parazgjedhje për sesionin e ri, më pas statusi mbahet për çdo sesion përdoruesi) LibraryToBuildPDF=Biblioteka e përdorur për gjenerimin e PDF-ve @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s e ndjekur nga emri i cunguar i klientit ng ModuleCompanyCodeSupplierDigitaria=%s e ndjekur nga emri i prerë i furnizuesit sipas numrit të karaktereve: %s për kodin e kontabilitetit të furnizuesit. Use3StepsApproval=Si parazgjedhje, Urdhërat e Blerjes duhet të krijohen dhe miratohen nga 2 përdorues të ndryshëm (një hap/përdorues për të krijuar dhe një hap/përdorues për ta miratuar. Ki parasysh se nëse përdoruesi ka të dyja lejet për të krijuar dhe për të miratuar, një hap/përdorues do të jetë i mjaftueshëm) . Ju mund të kërkoni me këtë opsion të prezantoni një hap të tretë/miratim përdoruesi, nëse shuma është më e lartë se një vlerë e dedikuar (kështu që do të nevojiten 3 hapa: 1=vlefshmëria, 2=miratimi i parë dhe 3=miratimi i dytë nëse shuma është e mjaftueshme).
Caktojeni këtë të zbrazet nëse mjafton një miratim (2 hapa), vendoseni në një vlerë shumë të ulët (0.1) nëse kërkohet gjithmonë një miratim i dytë (3 hapa). UseDoubleApproval=Përdorni një miratim me 3 hapa kur shuma (pa taksa) është më e lartë se... -WarningPHPMail=PARALAJMËRIM: Konfigurimi për të dërguar email nga aplikacioni po përdor konfigurimin e përgjithshëm të paracaktuar. Kjo zgjedhje nuk ka nevojë për njohuri teknike për të përfunduar konfigurimin.
Megjithatë, shpesh është më mirë të konfiguroni emailet dalëse për të përdorur serverin e postës elektronike të Ofruesit tuaj të Shërbimit të Email-it në vend të konfigurimit të paracaktuar për disa arsye: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: WarningPHPMailA=- Përdorimi i serverit të Ofruesit të Shërbimit të Email-it rrit besueshmërinë e emailit tuaj, kështu që rrit ofrueshmërinë pa u shënuar si SPAM -WarningPHPMailB=- Disa ofrues të shërbimeve të postës elektronike (si Yahoo) nuk ju lejojnë të dërgoni një email nga një server tjetër nga serveri i tyre. Konfigurimi juaj aktual përdor serverin e aplikacionit për të dërguar email dhe jo serverin e ofruesit tuaj të postës elektronike, kështu që disa marrës (ai që është në përputhje me protokollin kufizues DMARC), do të pyesin ofruesin tuaj të postës elektronike nëse mund ta pranojnë emailin tuaj dhe disa ofrues të postës elektronike (si Yahoo) mund të përgjigjet "jo" sepse serveri nuk është i tyre, kështu që disa nga emailet tuaja të dërguara mund të mos pranohen për dorëzim (kini kujdes edhe për kuotën e dërgimit të ofruesit tuaj të emailit). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Përdorimi i serverit SMTP të Ofruesit tuaj të Shërbimit të Email-it për të dërguar email është gjithashtu interesant, kështu që të gjitha emailet e dërguara nga aplikacioni do të ruhen gjithashtu në drejtorinë tuaj "Dërguar" të kutisë tuaj postare. WarningPHPMailD=Prandaj rekomandohet ndryshimi i mënyrës së dërgimit të e-maileve në vlerën "SMTP". WarningPHPMailDbis=Nëse vërtet dëshironi të mbani metodën e paracaktuar "PHP" për të dërguar email, thjesht shpërfilleni këtë paralajmërim ose hiqeni atë duke %sduke klikuar këtu%s. WarningPHPMail2=Nëse ofruesi juaj i emailit SMTP duhet të kufizojë klientin e emailit në disa adresa IP (shumë e rrallë), kjo është adresa IP e agjentit të përdoruesit të postës (MUA) për aplikacionin tuaj ERP CRM: %s. -WarningPHPMailSPF=Nëse emri i domenit në adresën tuaj të postës elektronike të dërguesit mbrohet nga një rekord SPF (pyetni regjistruesin e emrit tuaj të domenit), duhet të shtoni IP-të e mëposhtme në regjistrimin SPF të DNS-së së domenit tuaj: %s. -ActualMailSPFRecordFound=U gjet rekord aktual SPF (për emailin %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Klikoni për të shfaqur përshkrimin DependsOn=Ky modul ka nevojë për modulin(et) RequiredBy=Ky modul kërkohet nga moduli(et) @@ -867,7 +868,7 @@ Permission255=Ndryshoni fjalëkalimin e përdoruesve të tjerë Permission256=Fshini ose çaktivizoni përdoruesit e tjerë Permission262=Zgjeroni aksesin për të gjitha palët e treta DHE objektet e tyre (jo vetëm palët e treta për të cilat përdoruesi është i lidhur si përfaqësues i shitjes). Permission262b=Jo efektive për përdoruesit e jashtëm (gjithmonë të kufizuar në vetvete për propozime, porosi, fatura, kontrata, etj.). -Permission262c=Jo efektive për projektet (vetëm rregullat për lejet e projektit, dukshmërinë dhe çështjet e caktimit). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Zgjero aksesin te të gjitha palët e treta PA objektet e tyre (jo vetëm palët e treta për të cilat përdoruesi është përfaqësues i shitjes).
Jo efektive për përdoruesit e jashtëm (gjithmonë i kufizuar për propozime, porositë, faturat, kontratat, etj.).
Jo efektive për projektet (vetëm rregullat për lejet e projektit, dukshmërinë dhe çështjet e caktimit). Permission271=Lexoni CA Permission272=Lexoni faturat @@ -944,7 +945,7 @@ Permission776=Raportet e shpenzimeve të pagesës Permission777=Lexoni të gjitha raportet e shpenzimeve (madje edhe ato të përdoruesve jo të vartësve) Permission778=Krijoni / modifikoni raportet e shpenzimeve të të gjithëve Permission779=Raportet e shpenzimeve të eksportit -Permission1001=Lexoni aksionet +Permission1001=Read warehouses and stocks Permission1002=Krijoni / modifikoni depo Permission1003=Fshi magazinat Permission1004=Lexoni lëvizjet e aksioneve @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtri Regex në vlerë të pastër (COMPANY_DIGIT DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Pastroni fjalë të caktuara kur krijoni nën-llogari për klientët ose furnitorët RemoveSpecialWordsHelp=Specifikoni fjalët që duhen pastruar përpara se të llogaritni llogarinë e klientit ose furnizuesit. Perdor nje ";" mes çdo fjale -GDPRContact=Oficeri i Mbrojtjes së të Dhënave (DPO, Privatësia e të Dhënave ose kontakti GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Nëse ruani të dhëna personale në Sistemin tuaj të Informacionit, mund të emërtoni kontaktin që është përgjegjës për Rregulloren e Përgjithshme të Mbrojtjes së të Dhënave këtu HelpOnTooltip=Teksti i ndihmës për t'u shfaqur në këshillën e veglave HelpOnTooltipDesc=Vendosni tekstin ose një çelës përkthimi këtu që teksti të shfaqet në një këshillë mjeti kur kjo fushë shfaqet në një formë @@ -2218,7 +2219,7 @@ CreateCandidature=Krijo aplikim për punë FormatZip=Zip MainMenuCode=Kodi i hyrjes në meny (menyja kryesore) ECMAutoTree=Shfaq pemën automatike ECM -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Orari i hapjes OpeningHoursDesc=Shkruani këtu orarin e rregullt të hapjes së kompanisë suaj. ResourceSetup=Konfigurimi i modulit të Burimeve @@ -2264,7 +2265,7 @@ LargerThan=Më i madh se IfTrackingIDFoundEventWillBeLinked=Vini re se nëse një ID gjurmuese e një objekti gjendet në email, ose nëse emaili është një përgjigje e një emaili të mbledhur tashmë dhe të lidhur me një objekt, ngjarja e krijuar do të lidhet automatikisht me objektin e njohur të lidhur. WithGMailYouCanCreateADedicatedPassword=Me një llogari GMail, nëse keni aktivizuar vërtetimin me 2 hapa, rekomandohet të krijoni një fjalëkalim të dytë të dedikuar për aplikacionin në vend që të përdorni fjalëkalimin e llogarisë tuaj nga https://myaccount.google.com/. EmailCollectorTargetDir=Mund të jetë një sjellje e dëshiruar për ta zhvendosur emailin në një etiketë/direktori tjetër kur është përpunuar me sukses. Thjesht vendosni emrin e drejtorisë këtu për të përdorur këtë veçori (MOS përdorni karaktere të veçanta në emër). Vini re se duhet të përdorni gjithashtu një llogari hyrjeje për lexim/shkrim. -EmailCollectorLoadThirdPartyHelp=Ju mund ta përdorni këtë veprim për të përdorur përmbajtjen e emailit për të gjetur dhe ngarkuar një palë të tretë ekzistuese në bazën tuaj të të dhënave (kërkimi do të bëhet në pronën e përcaktuar midis 'id', 'emri', 'name_alias', 'email'). Pala e tretë e gjetur (ose e krijuar) do të përdoret për veprimet e mëposhtme që kanë nevojë për të.
Për shembull, nëse doni të krijoni një palë të tretë me një emër të nxjerrë nga një varg ' Emri: emri për të gjetur' i pranishëm në trup, përdorni emailin e dërguesit si email, mund ta vendosni fushën e parametrave si kjo:
'email=HEADER:^Nga:(. *);name=EXTRACT:BODY:Emri:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Paralajmërim: shumë serverë të postës elektronike (si Gmail) po bëjnë kërkime të plota me fjalë kur kërkojnë në një varg dhe nuk do të japin rezultat nëse vargu gjendet vetëm pjesërisht në një fjalë. Për këtë arsye gjithashtu, përdorimi i karaktereve speciale në një kriter kërkimi do të shpërfillet nëse nuk janë pjesë e fjalëve ekzistuese.
Për të bërë një kërkim të përjashtuar në një fjalë (kthejeni emailin nëse fjala nuk është gjetur), ju mund të përdorni ! karakter para fjalës (mund të mos funksionojë në disa serverë poste). EndPointFor=Pika e fundit për %s : %s DeleteEmailCollector=Fshi koleksionistin e postës elektronike @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Emri i palës së tretë - pseudonimi i palës së tretë ALIAS_THIRDPARTY=Pseudonimi i palës së tretë - Emri i palës së tretë PDFIn2Languages=Shfaq etiketat në PDF në 2 gjuhë të ndryshme (ky funksion mund të mos funksionojë për disa gjuhë) PDF_USE_ALSO_LANGUAGE_CODE=Nëse dëshironi që disa tekste në PDF-në tuaj të dublikuara në 2 gjuhë të ndryshme në të njëjtin PDF të gjeneruar, duhet të vendosni këtu këtë gjuhë të dytë të krijuar në këtë mënyrë PDF-ja do të përmbajë 2 gjuhë të ndryshme në të njëjtën faqe, atë të zgjedhur gjatë krijimit të PDF-së dhe këtë ( vetëm disa shabllone PDF e mbështesin këtë). Mbajeni bosh për 1 gjuhë për PDF. -PDF_USE_A=Gjeneroni dokumente PDF me formatin PDF/A në vend të formatit të paracaktuar PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Futni këtu kodin e një ikone FontAwesome. Nëse nuk e dini se çfarë është FontAwesome, mund të përdorni vlerën e përgjithshme fa-address-book. RssNote=Shënim: Çdo përkufizim i furnizimit RSS ofron një miniaplikacion që duhet ta aktivizoni për ta pasur të disponueshëm në panelin e kontrollit JumpToBoxes=Shko te Konfigurimi -> Widgets @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/sq_AL/datapolicy.lang b/htdocs/langs/sq_AL/datapolicy.lang index ed02836708a..a5413521b45 100644 --- a/htdocs/langs/sq_AL/datapolicy.lang +++ b/htdocs/langs/sq_AL/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Politika e privatësisë së të dhënave # Module description 'ModuledatapolicyDesc' Module4100Desc = Moduli për menaxhimin e privatësisë së të dhënave (përputhje me GDPR) - -# # Administration page -# datapolicySetup = Konfigurimi i politikës së privatësisë së të dhënave të modulit Deletion = Fshirja e të dhënave datapolicySetupPage = Në varësi të ligjeve të vendeve tuaja (Shembull Neni 5 i GDPR), të dhënat personale duhet të mbahen për një periudhë duke mos e tejkaluar kohëzgjatjen, të dhënat nevojiten për qëllimin për të cilin janë mbledhur, përveç për qëllime arkivore.
Fshirja do të bëhet automatikisht pas një kohëzgjatjeje të caktuar pa ngjarje (kohëzgjatja të cilat do t'i keni treguar më poshtë). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Perspektiva/Klient DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = As perspektivë/As klient DATAPOLICY_CONTACT_FOURNISSEUR = Furnizuesi DATAPOLICY_ADHERENT = Anëtar -DATAPOLICY_Tooltip_SETUP = Lloji i kontaktit - Tregoni zgjedhjet tuaja për secilin lloj. -DATAPOLICYMail = Konfigurimi i emaileve -DATAPOLICYSUBJECTMAIL = Subjekti i emailit -DATAPOLICYCONTENTMAIL = Përmbajtja e emailit -DATAPOLICYSUBSITUTION = Ju mund të përdorni variablat e mëposhtëm në emailin tuaj (LINKACCEPT lejon krijimin e një lidhjeje që regjistron marrëveshjen e personit, LINKREFUSED bën të mundur regjistrimin e refuzimit të personit): -DATAPOLICYACCEPT = Mesazh pas marrëveshjeje -DATAPOLICYREFUSE = Mesazh pas mosmarrëveshjes +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Ju mund t'u dërgoni një email GDPR të gjithë kontakteve tuaja përkatëse (të cilët nuk kanë marrë ende një email dhe për të cilët nuk keni regjistruar asgjë në lidhje me marrëveshjen e tyre GDPR). Për ta bërë këtë, përdorni butonin e mëposhtëm. SendAgreement = Dërgo email AllAgreementSend = Të gjitha emailet janë dërguar TXTLINKDATAPOLICYACCEPT = Teksti për lidhjen "marrëveshje" TXTLINKDATAPOLICYREFUSE = Teksti për lidhjen "mosmarrëveshje" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: Përpunimi i të dhënave personale DATAPOLICY_consentement = Pëlqimi i marrë për përpunimin e të dhënave personale DATAPOLICY_opposition_traitement = Kundërshton përpunimin e të dhënave të tij personale DATAPOLICY_opposition_prospection = Kundërshton përpunimin e të dhënave të tij personale për qëllime kërkimi - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonimizoni një palë të tretë -DATAPOLICY_POPUP_ANONYME_TEXTE = Nuk mund ta fshish këtë kontakt nga Dolibarr sepse ka artikuj të lidhur. Në përputhje me GDPR, ju do t'i bëni të gjitha këto të dhëna anonime për të respektuar detyrimet tuaja. Dëshironi të vazhdoni? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Transportueshmëri GDPR -DATAPOLICY_PORTABILITE_TITLE = Eksporti i të dhënave personale -DATAPOLICY_PORTABILITE_CONFIRMATION = Ju dëshironi të eksportoni të dhënat personale të këtij kontakti. A je i sigurt ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Anonimoi %s - DATAPOLICY_date = Data e marrëveshjes/mosmarrëveshjes GDPR DATAPOLICY_send = Data e dërgimit të email-it të marrëveshjes -DATAPOLICY_SEND = Dërgo email GDPR MailSent = Email është dërguar - -# ERROR -=Për shkak të një problemi teknik, ne nuk mundëm të regjistronim zgjedhjen tuaj. Kërkojmë falje për këtë. Na kontaktoni për të na njoftuar zgjedhjen tuaj. NUMBER_MONTH_BEFORE_DELETION = Numri i muajve para fshirjes diff --git a/htdocs/langs/sq_AL/dict.lang b/htdocs/langs/sq_AL/dict.lang index 0d07de3a9c3..340d543b7f8 100644 --- a/htdocs/langs/sq_AL/dict.lang +++ b/htdocs/langs/sq_AL/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=Franga CFP CurrencySingXPF=Franga CFP CurrencyCentEUR=cent CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=e mijëta #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/sq_AL/errors.lang b/htdocs/langs/sq_AL/errors.lang index e6eff790220..e2967fc3790 100644 --- a/htdocs/langs/sq_AL/errors.lang +++ b/htdocs/langs/sq_AL/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Përdoruesi duhet të caktohet në detyrë që të je ErrorTaskAlreadyAssigned=Detyra i është caktuar tashmë përdoruesit ErrorModuleFileSeemsToHaveAWrongFormat=Paketa e modulit duket se ka një format të gabuar. ErrorModuleFileSeemsToHaveAWrongFormat2=At least one mandatory directory must exists into zip of module: %s or %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Emri i paketës së modulit (%s nuk përputhet) sintaksa e pritshme e emrit: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Gabim, emri i kopjimit të kopjimit %s. I ngarkuar tashmë nga %s. ErrorNoWarehouseDefined=Gabim, nuk janë përcaktuar magazina. ErrorBadLinkSourceSetButBadValueForRef=Lidhja që përdorni nuk është e vlefshme. Një 'burim' për pagesë është përcaktuar, por vlera për 'ref' nuk është e vlefshme. @@ -422,3 +422,4 @@ OperNotDefined=Mënyra e pagesës nuk është përcaktuar ErrorThisContactXIsAlreadyDefinedAsThisType=%s është përcaktuar tashmë si kontakt për këtë lloj. ErrorThisGroupIsAlreadyDefinedAsThisType=Kontaktet me këtë grup janë përcaktuar tashmë si kontakt për këtë lloj. EmptyMessageNotAllowedError=Mesazhi bosh nuk lejohet +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/sq_AL/mails.lang b/htdocs/langs/sq_AL/mails.lang index 0894840d9fe..cb3921ad196 100644 --- a/htdocs/langs/sq_AL/mails.lang +++ b/htdocs/langs/sq_AL/mails.lang @@ -32,6 +32,8 @@ NewMailing=E-mail i ri NewSMSing=SMS i ri EditMailing=Redakto dërgimin me email ResetMailing=Ridërgo email +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Fshi email-in PreviewMailing=Shiko paraprakisht dërgimin me email CreateMailing=Krijo email @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Marrësi i emailit është bosh WarningNoEMailsAdded=Nuk ka email të ri për t'u shtuar në listën e marrësve. ConfirmValidMailing=Jeni i sigurt që dëshironi ta vërtetoni këtë dërgim me email? 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? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Jeni i sigurt që dëshironi ta fshini këtë email? NbOfUniqueEMails=Numri i emaileve unike NbOfUniquePhones=Numri i telefonave unikë @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Nuk ka më marrës për të dërguar email EmailOptedOut=Pronari i email-it ka kërkuar që të mos e kontaktojë më me këtë email EvenUnsubscribe=Përfshi email-et e tërheqjes EvenUnsubscribeDesc=Përfshini emailet e tërheqjes kur zgjidhni emailet si objektiva. E dobishme për emailet e shërbimit të detyrueshëm për shembull. -XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Ju mund të bëni disa udhëzime për emailin tuaj (Shembull: gjeneroni imazh në shabllonin e emailit...) ModelTemplate=Modeli i postës elektronike YouCanChooseAModelForYouMailContent= Ju mund të zgjidhni një nga modelet shabllone ose të krijoni një me AI TitleOfMailHolder=Titulli i e-mail-it shkon këtu ContentOfMailHolder=Përmbajtja e emailit shkon këtu... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/sq_AL/stripe.lang b/htdocs/langs/sq_AL/stripe.lang index 98f3145c2be..582cf196f9b 100644 --- a/htdocs/langs/sq_AL/stripe.lang +++ b/htdocs/langs/sq_AL/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL për të ofruar një faqe pagese ToOfferALinkForOnlinePaymentOnFreeAmount=URL për të ofruar një %s faqe pagese në internet të çdo shume pa objekt ekzistues ToOfferALinkForOnlinePaymentOnMemberSubscription=URL për të ofruar një faqe pagese në internet %s për një abonim të anëtarëve ToOfferALinkForOnlinePaymentOnDonation=URL për të ofruar një faqe pagese në internet %s për pagesën e një donacioni -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) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Setup your Stripe with url %s to have payment created automatically when validated by Stripe. AccountParameter=Parametrat e llogarisё UsageParameter=Parametrat e përdorimit @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Vendndodhja (adresa) për Terminalet Stripe RequestDirectDebitWithStripe=Kërko Debitim Direkt me Stripe RequesCreditTransferWithStripe=Kërko Transfer Kredie me Stripe STRIPE_SEPA_DIRECT_DEBIT=Aktivizo pagesat e Debitimit Direkt përmes Stripe +STRIPE_KLARNA=Aktivizo pagesat duke përdorur Klarna +STRIPE_BANCONTACT=Aktivizo pagesat duke përdorur BANCONTACT +STRIPE_IDEAL=Aktivizo pagesat duke përdorur IDEAL +STRIPE_GIROPAY=Aktivizo pagesat duke përdorur GIROPAY +STRIPE_SOFORT=Aktivizo pagesat duke përdorur SOFORT StripeConnect_Mode=Modaliteti i lidhjes me shirita +ExampleOnlyForBECustomers=Vetëm për klientët belgjikë +ExampleOnlyForDECustomers=Vetëm për klientët gjermanë +ExampleOnlyForNLCustomers=Vetëm për klientët holandez +ExampleOnlyForATBEDEITNLESCustomers=Vetëm për klientët nga Austria, Belgjika, Gjermania, Italia, Holanda, Spanja diff --git a/htdocs/langs/sr_RS/admin.lang b/htdocs/langs/sr_RS/admin.lang index 1aad5df3361..8726cb0c671 100644 --- a/htdocs/langs/sr_RS/admin.lang +++ b/htdocs/langs/sr_RS/admin.lang @@ -514,15 +514,17 @@ ModuleCompanyCodeCustomerDigitaria=%s followed by the truncated customer name by 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. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability 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). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. 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=It is therefore recommended to change the sending method of e-mails to the value "SMTP". WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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 (for email %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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) @@ -867,7 +869,7 @@ 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 linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). 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 @@ -944,7 +946,7 @@ 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 +Permission1001=Read warehouses and stocks Permission1002=Create/modify warehouses Permission1003=Delete warehouses Permission1004=Read stock movements @@ -2218,7 +2220,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 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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Opening hours OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module @@ -2264,7 +2266,7 @@ 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 already 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 recommended to create a dedicated second password for the application instead of using your own account password from https://myaccount.google.com/. EmailCollectorTargetDir=It may be a desired behavior 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 third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Warning: a lot of email servers (like Gmail) are doing full word searches when searching on a string and will not return a result if the string is only found partially into a word. For this reason too, use special characters into a search criteria will be ignored are they are not part of existing words.
To make an exclude search on a word (return email if word is not found), you can use the ! character before the word (may not work on some mail servers). EndPointFor=End point for %s : %s DeleteEmailCollector=Delete email collector diff --git a/htdocs/langs/sr_RS/commercial.lang b/htdocs/langs/sr_RS/commercial.lang index 2f6e4da03dc..fde78ee024e 100644 --- a/htdocs/langs/sr_RS/commercial.lang +++ b/htdocs/langs/sr_RS/commercial.lang @@ -1,93 +1,102 @@ # 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 +Customer=Klijent +Customers=Klijenti +Prospect=Prospekt +Prospects=Prospekti +DeleteAction=Obriši događaj +NewAction=Novi događaj +AddAction=Kreiraj događaj +AddAnAction=Kreiraj događaj +AddActionRendezVous=Kreiraj sastanak +ConfirmDeleteAction=Da li ste sigurni da želite da obrišete ovaj dogadjaj? +CardAction=Kartica događaja +ActionOnCompany=Povezana kompanija +ActionOnContact=Povezani kontakt +ActionOnUser=Related user +TaskRDVWith=Sastanak sa %s +ShowTask=Prikaži zadatak +ShowAction=Prikaži događaj +ActionsReport=Izveštaj događaja +ThirdPartiesOfSaleRepresentative=Treća lica sa predstavnikom prodaje +SaleRepresentativesOfThirdParty=Predstavnici prodaje trećih lica +SalesRepresentative=Predstavnik prodaje +SalesRepresentatives=Predstavnici prodaje +SalesRepresentativeFollowUp=Predstavnik prodaja (kratak opis) +SalesRepresentativeSignature=Predstavnik prodaje (potpis) +NoSalesRepresentativeAffected=Nijedan određeni predstavnik prodaje nije dodeljen +ShowCustomer=Prikaži klijenta +ShowProspect=Prikaži prospekta +ListOfProspects=Lista prospekta +ListOfCustomers=Lista klijenata +LastDoneTasks=Najnovije %s završene aktivnosti +LastActionsToDo=Najstarije %s nezavršene aktivnosti +DoneAndToDoActions=Završeni i događaji na čekanju +DoneActions=Završeni događaji +ToDoActions=Nezavršeni događaji +SendPropalRef=Prijem komercijalne ponude %s +SendOrderRef=Prijem narudžbine %s +StatusNotApplicable=Nije primenjivo +StatusActionToDo=Na čekanju +StatusActionDone=Završeno +StatusActionInProcess=U toku +TasksHistoryForThisContact=Događaji za ovaj kontakt +LastProspectDoNotContact=Ne kontaktiraj +LastProspectNeverContacted=Nikad kontaktiran +LastProspectToContact=Za kontaktiranje +LastProspectContactInProcess=Kontakt u toku +LastProspectContactDone=Kontakt završen +ActionAffectedTo=Događaj dodeljen +ActionAC_TEL=Telefonski poziv +ActionAC_FAX=Posalji faksom +ActionAC_PROP=Pošalji ponudu mejlom +ActionAC_EMAIL=Pošalji mejl 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_RDV=Sastanci +ActionAC_INT=Intervencija na lokaciji +ActionAC_FAC=Pošalji fakturu klijentu na mejl +ActionAC_REL=Pošalji fakturu klijentu na mejl (podsetnik) +ActionAC_CLO=Zatvori +ActionAC_EMAILING=Pošalji grupni mejl ActionAC_COM=Send sales order by mail -ActionAC_SHIP=Send shipping by mail +ActionAC_SHIP=Pošalji isporuku mejlom ActionAC_SUP_ORD=Send purchase order by mail ActionAC_SUP_INV=Send vendor invoice by mail -ActionAC_OTH=Other +ActionAC_OTH=Drugo ActionAC_OTH_AUTO=Other auto ActionAC_MANUAL=Events inserted manually (by a user) ActionAC_AUTO=Events inserted automatically -ActionAC_OTH_AUTOShort=Other +ActionAC_OTH_AUTOShort=Drugo ActionAC_EVENTORGANIZATION=Event organization events -Stats=Sales statistics -StatusProsp=Prospect status -DraftPropals=Draft commercial proposals -NoLimit=No limit +Stats=Statistika prodaje +StatusProsp=Status prospekta +DraftPropals=Nacrt komercijalne ponude +NoLimit=Bez limita ToOfferALinkForOnlineSignature=Link for online signature WelcomeOnOnlineSignaturePageProposal=Welcome to the page to accept commercial proposals from %s WelcomeOnOnlineSignaturePageContract=Welcome to %s Contract PDF Signing Page WelcomeOnOnlineSignaturePageFichinter=Welcome to %s Intervention PDF Signing Page WelcomeOnOnlineSignaturePageSociete_rib=Welcome to %s SEPA mandate PDF Signing Page +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=This screen allow you to accept and sign, or refuse, a quote/commercial proposal ThisScreenAllowsYouToSignDocFromContract=This screen allow you to sign contract on PDF format online. ThisScreenAllowsYouToSignDocFromFichinter=This screen allow you to sign intervention on PDF format online. ThisScreenAllowsYouToSignDocFromSociete_rib=This screen allow you to sign SEPA Mandate on PDF format online. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=This is information on document to accept or refuse ThisIsInformationOnDocumentToSignContract=This is information on contract to sign ThisIsInformationOnDocumentToSignFichinter=This is information on intervention to sign ThisIsInformationOnDocumentToSignSociete_rib=This is information on SEPA Mandate to sign +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Signature of quote/commercial proposal %s SignatureContractRef=Signature of contract %s SignatureFichinterRef=Signature of intervention %s SignatureSociete_ribRef=Signature of SEPA Mandate %s FeatureOnlineSignDisabled=Feature for online signing disabled or document generated before the feature was enabled +NoSignature=Nepotpisana +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/sr_RS/dict.lang b/htdocs/langs/sr_RS/dict.lang index 4cd89a76348..996ac41c1d7 100644 --- a/htdocs/langs/sr_RS/dict.lang +++ b/htdocs/langs/sr_RS/dict.lang @@ -1,68 +1,68 @@ # Dolibarr language file - Source file is en_US - dict -CountryFR=France -CountryBE=Belgium -CountryIT=Italy -CountryES=Spain -CountryDE=Germany -CountryCH=Switzerland +CountryFR=Francuska +CountryBE=Belgija +CountryIT=Italija +CountryES=Španija +CountryDE=Nemačka +CountryCH=Švajcarska # 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 +CountryIE=Irska +CountryCN=Kina +CountryTN=Tunis +CountryUS=SAD +CountryMA=Maroko +CountryDZ=Alžir +CountryCA=Kanada CountryTG=Togo CountryGA=Gabon -CountryNL=Netherlands -CountryHU=Hungary -CountryRU=Russia -CountrySE=Sweden +CountryNL=Holandija +CountryHU=Mađarska +CountryRU=sija +CountrySE=Švedska CountryCI=Ivory Coast CountrySN=Senegal CountryAR=Argentina -CountryCM=Cameroon -CountryPT=Portugal -CountrySA=Saudi Arabia -CountryMC=Monaco -CountryAU=Australia -CountrySG=Singapore -CountryAF=Afghanistan +CountryCM=Kamerun +CountryPT=Portugalija +CountrySA=Saudijska Arabija +CountryMC=Monako +CountryAU=Australija +CountrySG=Singapur +CountryAF=Avganistan CountryAX=Åland Islands -CountryAL=Albania -CountryAS=American Samoa -CountryAD=Andorra +CountryAL=Albanija +CountryAS=Američka Samoa +CountryAD=Andora CountryAO=Angola CountryAI=Anguilla CountryAQ=Antarctica CountryAG=Antigua and Barbuda -CountryAM=Armenia +CountryAM=Jermenija CountryAW=Aruba -CountryAT=Austria -CountryAZ=Azerbaijan +CountryAT=Austrija +CountryAZ=Azerbejdžan CountryBS=Bahamas CountryBH=Bahrain CountryBD=Bangladesh CountryBB=Barbados -CountryBY=Belarus +CountryBY=Belorusija CountryBZ=Belize CountryBJ=Benin CountryBM=Bermuda CountryBT=Bhutan CountryBO=Bolivia -CountryBA=Bosnia and Herzegovina +CountryBA=Bosna i Hercegovina CountryBW=Botswana CountryBV=Bouvet Island CountryBR=Brazil CountryIO=British Indian Ocean Territory CountryBN=Brunei Darussalam -CountryBG=Bulgaria +CountryBG=Bugarska CountryBF=Burkina Faso CountryBI=Burundi -CountryKH=Cambodia +CountryKH=Kambodža CountryCV=Cape Verde CountryKY=Cayman Islands CountryCF=Central African Republic @@ -73,27 +73,27 @@ CountryCC=Cocos (Keeling) Islands CountryCO=Colombia CountryKM=Comoros CountryCG=Congo -CountryCD=Congo, The Democratic Republic of the +CountryCD=Kongo 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 +CountryHR=Hrvatska +CountryCU=Kuba +CountryCY=Kipar +CountryCZ=Češka Republika +CountryDK=Danska +CountryDJ=Džibuti +CountryDM=Dominika +CountryDO=Dominikanska Republika +CountryEC=Ekvador +CountryEG=Egipat CountrySV=El Salvador -CountryGQ=Equatorial Guinea -CountryER=Eritrea -CountryEE=Estonia -CountryET=Ethiopia -CountryFK=Falkland Islands -CountryFO=Faroe Islands -CountryFJ=Fiji Islands +CountryGQ=Ekvatorijalna Gvineja +CountryER=Eritreja +CountryEE=Estonija +CountryET=Etiopija +CountryFK=Foklandska ostrva +CountryFO=Farska ostrva +CountryFJ=Fidži CountryFI=Finland CountryGF=French Guiana CountryPF=French Polynesia @@ -102,13 +102,13 @@ CountryGM=Gambia CountryGE=Georgia CountryGH=Ghana CountryGI=Gibraltar -CountryGR=Greece -CountryGL=Greenland +CountryGR=Grčka +CountryGL=Grenland CountryGD=Grenada -CountryGP=Guadeloupe +CountryGP=Gvadalupe CountryGU=Guam -CountryGT=Guatemala -CountryGN=Guinea +CountryGT=Gvatemala +CountryGN=Gvineja CountryGW=Guinea-Bissau CountryGY=Guyana CountryHT=Haïti @@ -142,7 +142,7 @@ CountryLI=Liechtenstein CountryLT=Lithuania CountryLU=Luxembourg CountryMO=Macao -CountryMK=Macedonia, the former Yugoslav of +CountryMK=Makedonija CountryMG=Madagascar CountryMW=Malawi CountryMY=Malaysia @@ -156,7 +156,7 @@ CountryMU=Mauritius CountryYT=Mayotte CountryMX=Mexico CountryFM=Micronesia -CountryMD=Moldova +CountryMD=Moldavija CountryMN=Mongolia CountryMS=Montserrat CountryMZ=Mozambique @@ -173,7 +173,7 @@ CountryNG=Nigeria CountryNU=Niue CountryNF=Norfolk Island CountryMP=Northern Mariana Islands -CountryNO=Norway +CountryNO=Norveška CountryOM=Oman CountryPK=Pakistan CountryPW=Palau @@ -184,11 +184,11 @@ CountryPY=Paraguay CountryPE=Peru CountryPH=Philippines CountryPN=Pitcairn Islands -CountryPL=Poland +CountryPL=Poljska CountryPR=Puerto Rico CountryQA=Qatar CountryRE=Reunion -CountryRO=Romania +CountryRO=Rumunija CountryRW=Rwanda CountrySH=Saint Helena CountryKN=Saint Kitts and Nevis @@ -198,11 +198,11 @@ CountryVC=Saint Vincent and Grenadines CountryWS=Samoa CountrySM=San Marino CountryST=Sao Tome and Principe -CountryRS=Serbia +CountryRS=Srbija CountrySC=Seychelles CountrySL=Sierra Leone -CountrySK=Slovakia -CountrySI=Slovenia +CountrySK=Slovačka +CountrySI=Slovenija CountrySB=Solomon Islands CountrySO=Somalia CountryZA=South Africa @@ -221,13 +221,13 @@ CountryTL=Timor-Leste CountryTK=Tokelau CountryTO=Tonga CountryTT=Trinidad and Tobago -CountryTR=Turkey +CountryTR=Turska CountryTM=Turkmenistan CountryTC=Turks and Caicos Islands CountryTV=Tuvalu CountryUG=Uganda -CountryUA=Ukraine -CountryAE=United Arab Emirates +CountryUA=Ukraina +CountryAE=Ujedinjeni Arapski Emirati CountryUM=United States Minor Outlying Islands CountryUY=Uruguay CountryUZ=Uzbekistan @@ -244,37 +244,37 @@ CountryZW=Zimbabwe CountryGG=Guernsey CountryIM=Isle of Man CountryJE=Jersey -CountryME=Montenegro +CountryME=Crna Gora CountryBL=Saint Barthelemy CountryMF=Saint Martin CountryXK=Kosovo ##### Civilities ##### -CivilityMME=Mrs. -CivilityMMEShort=Mrs. -CivilityMR=Mr. -CivilityMRShort=Mr. -CivilityMLE=Ms. -CivilityMTRE=Master -CivilityDR=Doctor +CivilityMME=Gđa. +CivilityMMEShort=Gđa. +CivilityMR=Gdin. +CivilityMRShort=Gdin. +CivilityMLE=Gđica. +CivilityMTRE=MR +CivilityDR=DR ##### 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 +Currencyeuros=Evri +CurrencyAUD=AU Dolari +CurrencySingAUD=AU Dolar +CurrencyCAD=CAN Dolari +CurrencySingCAD=CAN Dolar +CurrencyCHF=CHE Franci +CurrencySingCHF=CHE Frank +CurrencyEUR=Evri +CurrencySingEUR=Evro +CurrencyFRF=FR Franci +CurrencySingFRF=FR Franak +CurrencyGBP=Funte +CurrencySingGBP=Funta +CurrencyINR=Rupiji +CurrencySingINR=Rupi +CurrencyMAD=Dirami +CurrencySingMAD=Diram CurrencyMGA=Ariary CurrencySingMGA=Ariary CurrencyMUR=Mauritius rupees @@ -283,8 +283,8 @@ CurrencyNOK=Norwegian krones CurrencySingNOK=Norwegian kronas CurrencyTND=Tunisian dinars CurrencySingTND=Tunisian dinar -CurrencyUSD=US Dollars -CurrencySingUSD=US Dollar +CurrencyUSD=US Dolari +CurrencySingUSD=US Dolar CurrencyUAH=Hryvnia CurrencySingUAH=Hryvnia CurrencyXAF=CFA Francs BEAC @@ -294,22 +294,22 @@ CurrencySingXOF=CFA Franc BCEAO CurrencyXPF=CFP Francs CurrencySingXPF=CFP Franc CurrencyCentEUR=cents -CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise -CurrencyThousandthSingTND=thousandth +CurrencyCentSingEUR=stoti +CurrencyCentINR=paise +CurrencyCentSingINR=paisa +CurrencyThousandthSingTND=hiljaditi #### 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_CAMP_MAIL=Poštanska kampanja +DemandReasonTypeSRC_CAMP_EMAIL=Mail kampanja +DemandReasonTypeSRC_CAMP_PHO=Telefonska kampanja +DemandReasonTypeSRC_CAMP_FAX=Fax kampanja +DemandReasonTypeSRC_COMM=Kontakt komercijalista +DemandReasonTypeSRC_SHOP=Kontakt radnja +DemandReasonTypeSRC_WOM=Od ova do uva DemandReasonTypeSRC_PARTNER=Partner -DemandReasonTypeSRC_EMPLOYEE=Employee -DemandReasonTypeSRC_SPONSORING=Sponsorship +DemandReasonTypeSRC_EMPLOYEE=Zaposleni +DemandReasonTypeSRC_SPONSORING=Sponzorstvo DemandReasonTypeSRC_SRC_CUSTOMER=Incoming contact of a customer #### Paper formats #### PaperFormatEU4A0=Format 4A0 @@ -332,7 +332,7 @@ PaperFormatCAP4=Format P4 Canada PaperFormatCAP5=Format P5 Canada PaperFormatCAP6=Format P6 Canada #### Expense report categories #### -ExpAutoCat=Car +ExpAutoCat=Automobil ExpCycloCat=Moped ExpMotoCat=Motorbike ExpAuto3CV=3 CV diff --git a/htdocs/langs/sv_SE/admin.lang b/htdocs/langs/sv_SE/admin.lang index 0e7a4224f50..de6373e2f42 100644 --- a/htdocs/langs/sv_SE/admin.lang +++ b/htdocs/langs/sv_SE/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Lista över värden måste vara rader med formatet nyc ExtrafieldParamHelpcheckbox=Lista över värden måste vara rader med formatet nyckel,värde (där nyckel inte kan vara '0')

till exempel:
1,värde1
2,värde2
3,värde3
... ExtrafieldParamHelpradio=Lista över värden måste vara rader med formatet nyckel,värde (där nyckel inte kan vara '0')

till exempel:
1,värde1
2,värde2
3,värde3
... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametrar måste vara ObjectName:Classpath
Syntax: ObjectName:Classpath ExtrafieldParamHelpSeparator=Håll tomt för en enkel separator
Ange detta till 1 för en kollapsande separator (öppnas som standard för en ny session, sedan behålls status för varje användarsession)
Ange detta till 2 för en kollapsande separator (kollapsad som standard för ny session, sedan status hålls för varje användarsession) LibraryToBuildPDF=Bibliotek som används för PDF-generering @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s följt av det trunkerade kundnamnet med an ModuleCompanyCodeSupplierDigitaria=%s följt av det trunkerade leverantörsnamnet med antalet tecken: %s för leverantörsspecifik bokföringskod. Use3StepsApproval=Som standard måste inköpsorder skapas och godkännas av 2 olika användare (ett steg/användare att skapa och ett steg/användare att godkänna. Observera att om användaren har båda tillstånd att skapa och godkänna, är ett steg/användaren tillräckligt). Du kan genom detta alternativ fråga om att införa ett tredje steg/användare för godkännande, om beloppet är högre än ett angivet värde (så 3 steg kommer att behövas: 1=godkännande, 2=första godkännande och 3=andra godkännande om beloppet är tillräckligt högt).
Låt detta fält vara tomt om ett godkännande (2 steg) räcker. Ange ett mycket lågt värde (0.1) om ett andra godkännande (3 steg) alltid krävs. UseDoubleApproval=Använd ett 3-stegs godkännande när beloppet (utan moms) är högre än ... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Vissa leverantörer (exempelvis Yahoo) tillåter inte att du skickar e-post från en annan server än sin egen server. Din nuvarande inställning använder programmets server för att skicka e-post och inte din leverantörs server, så vissa mottagare (den som är kompatibel med det begränsande DMARC-protokollet) frågar din leverantör om de kan acceptera din e-post och vissa leverantörer (som Yahoo) kan svara "nej" eftersom servern inte tillhör dem, så några av dina skickade meddelanden kanske inte accepteras för leverans (se också upp med din leverantörs sändningskvot). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Att använda din egen leverantörs SMTP-server för att skicka e-post gör också att alla meddelanden som skickas också sparas i din skickat-mapp. WarningPHPMailD=Det rekommenderas därför att ändra sändningsmetoden för e-post till värdet "SMTP". WarningPHPMailDbis=Om du verkligen vill behålla standardmetoden "PHP" för att skicka e-post, ignorera bara denna varning eller ta bort den genom att %sklicka här%s. WarningPHPMail2=Om din leverantör behöver begränsa epostklienten till vissa IP-adresser (mycket sällsynt), är detta IP-adressen för ditt ERP/CRM: %s. -WarningPHPMailSPF=Om domännamnet du skickar från är skyddat av SPF (fråga din domännamns registrar), måste du lägga till följande IP-adress i SPF för din domän: %s -ActualMailSPFRecordFound=SPF hittat (för e-post %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Klicka för att visa beskrivning DependsOn=Denna modul är beroende av modul(erna) RequiredBy=Denna modul krävs enligt modul(er) @@ -867,7 +868,7 @@ Permission255=Ändra andra användares lösenord Permission256=Radera eller inaktivera andra användare Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Utöka åtkomst till alla tredjeparter UTAN deras objekt (inte bara tredjeparter för vilka användaren är representant).
Gäller inte externa användare (alltid begränsade till sig själva för offerter, order, fakturor, kontrakt etc.).
Gäller inte heller projekt (endast regler om projektbehörigheter, synlighet och uppdragsfrågor). Permission271=Se CA Permission272=Se fakturor @@ -944,7 +945,7 @@ Permission776=Betala utgiftsrapporter Permission777=Se alla utläggsrapporter (även för användare som inte är dina underordnade) Permission778=Skapa/ändra utgiftsrapporter för alla Permission779=Exportera utgiftsrapporter -Permission1001=Se lager +Permission1001=Read warehouses and stocks Permission1002=Skapa/ändra lager Permission1003=Radera lager Permission1004=Se lagerrörelser @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter för att rensa värdet (COMPANY_DIGIT DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Ta bort vissa ord när du skapar underkonton för kunder eller leverantörer RemoveSpecialWordsHelp=Ange orden som ska tas bort innan du beräknar kund- eller leverantörskontot. Använd ett ; mellan varje ord -GDPRContact=Dataskyddsansvarig (DPO, Data Privacy eller GDPR-kontakt) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Om du lagrar personuppgifter i ditt informationssystem kan du här nämna den kontakt som är ansvarig för den allmänna dataskyddsförordningen HelpOnTooltip=Hjälptext att visa i verktygstips HelpOnTooltipDesc=Lägg text eller en översättning här för att texten ska visas i ett verktygstips när detta fält visas i ett formulär @@ -2218,7 +2219,7 @@ CreateCandidature=Skapa jobbansökan FormatZip=Zip MainMenuCode=Menyinmatningskod (huvudmeny) ECMAutoTree=Visa automatiskt ECM-träd -OperationParamDesc=Definiera reglerna som ska användas för att extrahera vissa data eller ange värden som ska användas för drift.

Exempel att extrahera ett företagsnamn från e-postämne till en temporär variabel:
tmp_var=EXTRACT:SUBJECT:Meddelande från företaget ([^\n]*)

Exempel för att ställa in egenskaperna för ett objekt som ska skapas:
objproperty1=SET:ett hårdkodat värde
objproperty2=SET:__tmp_var__
objproperty3=aSETIFEMPTY (värde anges endast om egenskapen inte redan är definierad)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mitt företagsnamn är\\ s([^\\s]*)

Använd en ny rad för att extrahera eller ställa in flera egenskaper. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Öppettider OpeningHoursDesc=Ange här företagets vanliga öppettider. ResourceSetup=Konfiguration av resursmodulen @@ -2264,7 +2265,7 @@ LargerThan=Större än IfTrackingIDFoundEventWillBeLinked=Observera att om ett spårnings-ID för ett objekt hittas i e-post, eller om e-postmeddelandet är ett svar på ett e-postmeddelande som redan samlats in och länkats till ett objekt, kommer den skapade händelsen automatiskt att länkas till det kända relaterade objektet. WithGMailYouCanCreateADedicatedPassword=Med ett Gmail-konto, om du aktiverade 2-stegsvalideringen, rekommenderas det att skapa ett dedikerat andra lösenord för applikationen istället för att använda ditt eget kontolösenord från https://myaccount.google.com/. EmailCollectorTargetDir=Det kan vara ett önskat beteende att flytta e-postmeddelandet till en annan tagg/katalog när det bearbetades framgångsrikt. Ange bara namnet på katalogen här för att använda den här funktionen (Använd INTE specialtecken i namnet). Observera att du också måste använda ett läs-/skrivinloggningskonto. -EmailCollectorLoadThirdPartyHelp=Du kan använda den här åtgärden för att använda e-postinnehållet för att hitta och ladda en befintlig tredje part i din databas (sökning kommer att göras på den definierade egenskapen bland 'id','name','name_alias','email'). Den hittade (eller skapade) tredje parten kommer att användas för följande åtgärder som behöver det.
Till exempel, om du vill skapa en tredje part med ett namn extraherat från en sträng ' Namn: namn att hitta' finns i brödtexten, använd avsändarens e-postmeddelande som e-post, du kan ställa in parameterfältet så här:
'email=HEADER:^Från:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Varning: många e-postservrar (som Gmail) gör helordssökningar när de söker på en sträng och kommer inte att returnera ett resultat om strängen bara hittas delvis i ett ord. Av denna anledning kommer användning av specialtecken i ett sökkriterium att ignoreras om de inte är en del av befintliga ord.
För att göra en exkluderingssökning på ett ord (retur e-post om ord inte hittas), kan du använda ! tecken före ordet (fungerar kanske inte på vissa e-postservrar). EndPointFor=Slutpunkt för %s: %s DeleteEmailCollector=Ta bort e-postsamlare @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Tredjepartsnamn - Tredjepartsalias ALIAS_THIRDPARTY=Tredje parts alias - Tredje parts namn PDFIn2Languages=Visa etiketter i PDF-filen på 2 olika språk (den här funktionen kanske inte fungerar för ett par språk) 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=Generera PDF-dokument med formatet PDF/A istället för standardformatet PDF +PDF_USE_A=PDF documents format 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. RssNote=Obs! Varje RSS-feeddefinition ger en widget som du måste aktivera för att ha den tillgänglig i instrumentpanelen JumpToBoxes=Hoppa till Setup -> Widgets @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/sv_SE/commercial.lang b/htdocs/langs/sv_SE/commercial.lang index e84dfe7c359..0b2b0a4ba83 100644 --- a/htdocs/langs/sv_SE/commercial.lang +++ b/htdocs/langs/sv_SE/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Är du säker på att du vill radera denna åtgärd? CardAction=Åtgärdskort ActionOnCompany=Relaterat företag ActionOnContact=Relaterad kontakt +ActionOnUser=Related user TaskRDVWith=Möte med %s ShowTask=Visa uppgift ShowAction=Visa uppgifter @@ -93,3 +94,9 @@ SignatureContractRef=Underskrift av kontrakt %s SignatureFichinterRef=Underskrift av intervention %s SignatureSociete_ribRef=Underskrift av SEPA-mandat %s FeatureOnlineSignDisabled=Funktion för onlinesignering inaktiverad eller så blev dokumentet genererat innan funktionen aktiverades +NoSignature=Inte undertecknat +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/sv_SE/companies.lang b/htdocs/langs/sv_SE/companies.lang index 66a9edcb52e..726c8e39ff4 100644 --- a/htdocs/langs/sv_SE/companies.lang +++ b/htdocs/langs/sv_SE/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr inloggning NoDolibarrAccess=Dolibarr ej nåbar ExportDataset_company_1=Tredjeparter (företag/stiftelser/fysiska personer) och deras egenskaper ExportDataset_company_2=Kontakter och deras egenskaper +ExportDataset_company_3=Tredjeparts bankkonton ImportDataset_company_1=Tredjeparter och deras egenskaper ImportDataset_company_2=Tredjepartens ytterligare kontakter/adresser och attribut ImportDataset_company_3=Tredjeparts bankkonton diff --git a/htdocs/langs/sv_SE/datapolicy.lang b/htdocs/langs/sv_SE/datapolicy.lang index 424023bdf9e..80f31d84029 100644 --- a/htdocs/langs/sv_SE/datapolicy.lang +++ b/htdocs/langs/sv_SE/datapolicy.lang @@ -33,7 +33,7 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Prospekt/kund DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Inte prospekt eller kund DATAPOLICY_CONTACT_FOURNISSEUR = Leverantör DATAPOLICY_ADHERENT = Medlem -DATAPOLICY_Tooltip_SETUP = Typ av kontakt - ange dina val för varje typ. +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Du kan skicka e-post angående GDPR till alla dina relevanta kontakter (som ännu inte har fått ett mejl och som du inte har registrerat något för om deras GDPR-avtal). För att göra detta, använd följande knapp. SendAgreement = Skicka e-post AllAgreementSend = All e-post har skickats diff --git a/htdocs/langs/sv_SE/dict.lang b/htdocs/langs/sv_SE/dict.lang index ef24662acfc..b934c171688 100644 --- a/htdocs/langs/sv_SE/dict.lang +++ b/htdocs/langs/sv_SE/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=Fiskeripolitiken franc CurrencySingXPF=CFP-franc CurrencyCentEUR=cent CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=tusendel #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/sv_SE/errors.lang b/htdocs/langs/sv_SE/errors.lang index df024d6137b..b27a05bf592 100644 --- a/htdocs/langs/sv_SE/errors.lang +++ b/htdocs/langs/sv_SE/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Användaren måste tilldelas uppgiften för att kunna ErrorTaskAlreadyAssigned=Uppgift som redan tilldelats användaren ErrorModuleFileSeemsToHaveAWrongFormat=Modulpaketet verkar ha fel format. ErrorModuleFileSeemsToHaveAWrongFormat2=Minst en obligatorisk katalog måste finnas i modulens zip: %s eller %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Namnet på modulpaketet ( %s ) matchar inte förväntat namnsyntax: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Fel, duplicera utlösarens namn %s. Redan laddad från %s. ErrorNoWarehouseDefined=Fel, inga lager definierade. ErrorBadLinkSourceSetButBadValueForRef=Länken du använder är inte giltig. En "källa" för betalning definieras, men värdet för "ref" är inte giltigt. @@ -422,3 +422,4 @@ OperNotDefined=Betalningsmetod inte definierad ErrorThisContactXIsAlreadyDefinedAsThisType=%s är redan definierad som kontakt för den här typen. ErrorThisGroupIsAlreadyDefinedAsThisType=Kontakterna med den här gruppen är redan definierade som kontakt för den här typen. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/sv_SE/interventions.lang b/htdocs/langs/sv_SE/interventions.lang index c4864fa04e1..92a30eddd8b 100644 --- a/htdocs/langs/sv_SE/interventions.lang +++ b/htdocs/langs/sv_SE/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Skapa utkast InterventionContact=Kontakt för intervention DeleteIntervention=Ta bort intervention ValidateIntervention=Bekräfta intervention +SignIntervention=Signera intervention +UnsignIntervention=Unsign intervention ModifyIntervention=Ändra intervention CloseIntervention=Nära ingripande DeleteInterventionLine=Ta bort rad ConfirmDeleteIntervention=Är du säker på att du vill radera denna intervention? ConfirmValidateIntervention=Är du säker på att du vill bekräfta denna intervention under namnet %s? +ConfirmSignIntervention=Are you sure you want to set this intervention as signed ? +ConfirmUnsignIntervention=Are you sure you want to set this intervention as unsigned ? ConfirmModifyIntervention=Är du säker på att du vill ändra denna intervention? ConfirmCloseIntervention=Är du säker på att du vill stänga denna intervention? ConfirmDeleteInterventionLine=Är du säker på att du vill ta bort denna interventionsrad? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Interventioner och rader med interventione InterventionClassifyBilled=Markera som fakturerad InterventionClassifyUnBilled=Markera som ofakturerad InterventionClassifyDone=Markera som klar +InterventionSign=Set Signed +InterventionUnsign=Set Unsigned SendInterventionRef=Inlämning av intervention %s SendInterventionByMail=Skicka intervention via e-post InterventionCreatedInDolibarr=Intervention %s skapad InterventionValidatedInDolibarr=Intervention %s bekräftad +InterventionSignedInDolibarr=Intervention undertecknad +InterventionSignedOnline=Intervention signed online +InterventionUnsignedInDolibarr=Intervention unsigned InterventionModifiedInDolibarr=Intervention %s ändrad InterventionClassifiedBilledInDolibarr=Intervention %s angiven som fakturerad InterventionClassifiedUnbilledInDolibarr=Intervention %s angiven som ofakturerad diff --git a/htdocs/langs/sv_SE/mails.lang b/htdocs/langs/sv_SE/mails.lang index 6c0849eab18..afd8d244584 100644 --- a/htdocs/langs/sv_SE/mails.lang +++ b/htdocs/langs/sv_SE/mails.lang @@ -32,6 +32,8 @@ NewMailing=Ny e-post NewSMSing=Nytt sms EditMailing=Redigera e-post ResetMailing=Skicka om e-post +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Radera e-post PreviewMailing=Förhandsgranska e-post CreateMailing=Skapa e-post @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=E-postmottagare är tom WarningNoEMailsAdded=Inga nya E-posta lägga till mottagarens lista. ConfirmValidMailing=Är du säker på att du vill bekräfta den här e-posten? ConfirmResetMailing=Varning, genom att återinitiera e-post %s , tillåter du att sända det här mejlet i en bulkutskick. Är du säker på att du vill göra det här? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Är du säker på att du vill radera den här e-posten? NbOfUniqueEMails=Antal unika e-postmeddelanden NbOfUniquePhones=Antal unika telefoner @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Inga fler mottagare att skicka e-postmeddelandet till EmailOptedOut=E-postägaren har begärt att inte kontakta honom med detta e-postmeddelande längre EvenUnsubscribe=Inkludera opt-out e-postmeddelanden EvenUnsubscribeDesc=Inkludera e-postmeddelanden när du väljer e-postmeddelanden som mål. Användbar för t.ex. obligatoriska service-e-postmeddelanden. -XEmailsDoneYActionsDone=%s e-postmeddelanden förkvalificerade, %s e-postmeddelanden behandlade framgångsrikt (för %s post/åtgärder gjorda) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Du kan göra några instruktioner för din e-post (Exempel: generera bild i e-postmall...) ModelTemplate=E-postmall YouCanChooseAModelForYouMailContent= Du kan välja en av mallmodellerna eller generera en med AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/sv_SE/stripe.lang b/htdocs/langs/sv_SE/stripe.lang index 6eeb98fea11..1d3cf99d440 100644 --- a/htdocs/langs/sv_SE/stripe.lang +++ b/htdocs/langs/sv_SE/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL för att erbjuda en online-betaln ToOfferALinkForOnlinePaymentOnFreeAmount=URL för att erbjuda en %s onlinebetalningssida av vilket belopp som helst utan något befintligt objekt ToOfferALinkForOnlinePaymentOnMemberSubscription=URL för att erbjuda en %s onlinebetalningssida för ett medlemsabonnemang ToOfferALinkForOnlinePaymentOnDonation=URL för att erbjuda en %s onlinebetalningssida för betalning av en donation -YouCanAddTagOnUrl=Du kan också lägga till url-parametern & tag = värde till någon av dessa URL (obligatorisk endast för betalning som inte är länkad till ett objekt) för att lägga till din egen betalningskommentar-tagg.
För webbadressen till betalningar utan befintligt objekt kan du också lägga till parametern & noidempotency = 1 så att samma länk med samma tagg kan användas flera gånger (vissa betalningslägen kan begränsa betalningen till 1 för varje olika länk utan denna parameter) +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) YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Ställ in din Stripe med url %s för att få betalning skapad automatiskt när bekräftat av Stripe. AccountParameter=Tagen parametrar diff --git a/htdocs/langs/sw_SW/admin.lang b/htdocs/langs/sw_SW/admin.lang index eb78056ea50..2c41f1f6f80 100644 --- a/htdocs/langs/sw_SW/admin.lang +++ b/htdocs/langs/sw_SW/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Orodha ya thamani lazima iwe mistari yenye ufunguo wa ExtrafieldParamHelpcheckbox=Orodha ya thamani lazima iwe mistari yenye ufunguo wa umbizo, thamani (ambapo ufunguo hauwezi kuwa '0')

kwa mfano:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=Orodha ya thamani lazima iwe mistari yenye ufunguo wa umbizo, thamani (ambapo ufunguo hauwezi kuwa '0')

kwa mfano:
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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Vigezo lazima ziwe ObjectName:Classpath
Sintaksia: Jina la Kitu: Njia ya darasa ExtrafieldParamHelpSeparator=Weka tupu kwa kitenganishi rahisi
Weka hii iwe 1 kwa kitenganishi kinachokunjwa (hufunguliwa kwa chaguomsingi kwa kipindi kipya, kisha hali huwekwa kwa kila kipindi cha mtumiaji)
Weka hii kuwa 2 kwa kitenganishi kinachoporomoka (kilichoporomoka kwa chaguo-msingi kwa kipindi kipya, kisha hali inawekwa mbele ya kila kipindi cha mtumiaji) LibraryToBuildPDF=Maktaba inayotumika kutengeneza PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s ikifuatiwa na jina la mteja lililopunguzwa ModuleCompanyCodeSupplierDigitaria=%s ikifuatiwa na jina la msambazaji lililopunguzwa kwa idadi ya vibambo: %s kwa nambari ya hesabu ya msambazaji. Use3StepsApproval=Kwa chaguomsingi, Maagizo ya Ununuzi yanahitaji kuundwa na kuidhinishwa na watumiaji 2 tofauti (hatua moja/mtumiaji kuunda na hatua moja/mtumiaji kuidhinisha. Kumbuka kwamba ikiwa mtumiaji ana ruhusa ya kuunda na kuidhinisha, hatua moja/mtumiaji itatosha). Unaweza kuuliza ukitumia chaguo hili kutambulisha hatua ya tatu/idhini ya mtumiaji, ikiwa kiasi ni kikubwa kuliko thamani maalum (kwa hivyo hatua 3 zitahitajika: 1=uthibitishaji, 2=idhini ya kwanza na 3=idhini ya pili ikiwa kiasi kinatosha).
Weka hii iwe tupu ikiwa idhini moja (hatua 2) inatosha, iweke kwa thamani ya chini sana (0.1) ikiwa idhini ya pili (hatua 3) inahitajika kila wakati. UseDoubleApproval=Tumia idhini ya hatua 3 wakati kiasi (bila ushuru) ni kikubwa kuliko... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Baadhi ya Watoa Huduma za Barua Pepe (kama Yahoo) hawakuruhusu kutuma barua pepe kutoka kwa seva nyingine isipokuwa seva yao wenyewe. Mipangilio yako ya sasa hutumia seva ya programu kutuma barua pepe na si seva ya mtoa huduma wako wa barua pepe, kwa hivyo baadhi ya wapokeaji (ile inayotumika na itifaki yenye vikwazo vya DMARC), watauliza mtoa huduma wako wa barua pepe ikiwa wanaweza kukubali barua pepe yako na baadhi ya watoa huduma za barua pepe (kama Yahoo) wanaweza kujibu "hapana" kwa sababu seva si yao, kwa hivyo Barua pepe chache ulizotuma huenda zisikubaliwe kutuma barua pepe zako (kuwa mwangalifu kutuma barua pepe zako). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Kutumia seva ya SMTP ya Mtoa Huduma yako ya Barua pepe kutuma barua pepe pia inavutia kwa hivyo barua pepe zote zinazotumwa kutoka kwa programu pia zitahifadhiwa kwenye saraka yako ya "Iliyotumwa" ya kisanduku chako cha barua. WarningPHPMailD=Kwa hiyo inashauriwa kubadili njia ya kutuma barua pepe kwa thamani "SMTP". WarningPHPMailDbis=Ikiwa unataka kabisa kuweka mbinu chaguomsingi ya "PHP" ya kutuma barua pepe, puuza tu onyo hili, au uliondoe kwa %skubofya hapa%s. WarningPHPMail2=Iwapo mtoa huduma wako wa barua pepe wa SMTP anahitaji kuzuia mteja wa barua pepe kwa baadhi ya anwani za IP (nadra sana), hii ni anwani ya IP ya wakala wa barua pepe (MUA) ya programu yako ya ERP CRM: %s . -WarningPHPMailSPF=Ikiwa jina la kikoa katika anwani yako ya barua pepe ya mtumaji linalindwa na rekodi ya SPF (uliza msajili wa jina la kikoa chako), lazima uongeze IP zifuatazo katika rekodi ya SPF ya DNS ya kikoa chako: %s . -ActualMailSPFRecordFound=Rekodi halisi ya SPF imepatikana (kwa barua pepe %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Bofya ili kuonyesha maelezo DependsOn=Moduli hii inahitaji moduli RequiredBy=Moduli hii inahitajika na moduli @@ -867,7 +868,7 @@ Permission255=Badilisha nenosiri la watumiaji wengine Permission256=Futa au uzime watumiaji wengine Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Ongeza ufikiaji kwa wahusika wengine wote BILA vitu vyao (sio wahusika wengine tu ambao mtumiaji ni mwakilishi wa mauzo).
Haifai kwa watumiaji wa nje (daima ni wao wenyewe kwa mapendekezo, maagizo, ankara, mikataba, n.k.).
Haifai kwa miradi (sheria za ruhusa za mradi pekee, mwonekano na masuala ya mgawo). Permission271=Soma CA Permission272=Soma ankara @@ -944,7 +945,7 @@ Permission776=Ripoti za gharama Permission777=Soma ripoti zote za gharama (hata zile za watumiaji sio wasaidizi) Permission778=Unda/rekebisha ripoti za gharama za kila mtu Permission779=Ripoti za gharama za kuuza nje -Permission1001=Soma hisa +Permission1001=Read warehouses and stocks Permission1002=Unda/rekebisha maghala Permission1003=Futa maghala Permission1004=Soma mienendo ya hisa @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Kichujio cha Regex ili kusafisha thamani (COMPANY_ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Safisha maneno fulani unapotengeneza akaunti ndogo za wateja au wasambazaji RemoveSpecialWordsHelp=Bainisha maneno yatakayosafishwa kabla ya kukokotoa akaunti ya mteja au mgavi. Tumia ";" kati ya kila neno -GDPRContact=Afisa wa Ulinzi wa Data (DPO, Faragha ya Data au mawasiliano ya GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ukihifadhi data ya kibinafsi katika Mfumo wako wa Taarifa, unaweza kumtaja mwasiliani ambaye anawajibika kwa Udhibiti wa Jumla wa Ulinzi wa Data hapa HelpOnTooltip=Nakala ya usaidizi ionekane kwenye kidokezo HelpOnTooltipDesc=Weka maandishi au ufunguo wa kutafsiri hapa ili maandishi yaonekane kwenye kidokezo cha zana wakati sehemu hii inaonekana katika fomu @@ -2218,7 +2219,7 @@ CreateCandidature=Tengeneza maombi ya kazi FormatZip=Zip MainMenuCode=Msimbo wa ingizo la menyu (menu kuu) ECMAutoTree=Onyesha mti wa ECM otomatiki -OperationParamDesc=Bainisha sheria za kutumia kutoa baadhi ya data au kuweka thamani za kutumia kwa uendeshaji.

Mfano wa kutoa jina la kampuni kutoka kwa mada ya barua pepe hadi kwa kigezo cha muda:
tmp_var=EXTRACT:SUBJECT:Ujumbe kutoka kwa kampuni ([^\n]*)

Mifano ya kuweka sifa za kitu cha kuunda:
objproperty1=SET:thamani yenye msimbo ngumu
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:thamani (thamani imewekwa tu ikiwa sifa haijafafanuliwa)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Jina la kampuni yangu ni\\s([^\\s]*)

Tumia laini mpya kutoa au kuweka sifa kadhaa. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Saa za ufunguzi OpeningHoursDesc=Ingiza hapa saa za kawaida za ufunguzi wa kampuni yako. ResourceSetup=Usanidi wa moduli ya Rasilimali @@ -2264,7 +2265,7 @@ LargerThan=Kubwa kuliko IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into email, or if the email is an answer of an email already 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 recommended to create a dedicated second password for the application instead of using your own account password from https://myaccount.google.com/. EmailCollectorTargetDir=It may be a desired behavior 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 third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Onyo: seva nyingi za barua pepe (kama vile Gmail) zinatafuta maneno kamili wakati wa kutafuta kwenye mfuatano na hazitarudisha tokeo ikiwa mfuatano huo utapatikana tu kwa kiasi katika neno. Kwa sababu hii pia, tumia herufi maalum katika vigezo vya utafutaji vitapuuzwa ikiwa sio sehemu ya maneno yaliyopo.
Kufanya utafutaji wa kuwatenga kwenye neno (rejesha barua pepe ikiwa neno halipatikani), unaweza kutumia ! herufi kabla ya neno (inaweza isifanye kazi kwenye seva zingine za barua). EndPointFor=Sehemu ya mwisho ya %s : %s DeleteEmailCollector=Futa kikusanya barua pepe @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Third-party name - Third-party alias ALIAS_THIRDPARTY=Third-party alias - Third-party name PDFIn2Languages=Onyesha lebo katika PDF katika lugha 2 tofauti (kipengele hiki kinaweza kisifanye kazi kwa baadhi ya lugha kadhaa) PDF_USE_ALSO_LANGUAGE_CODE=Iwapo ungependa kuwa na baadhi ya maandishi katika PDF yako yaliyonakiliwa katika lugha 2 tofauti katika PDF iliyozalishwa sawa, lazima uweke hapa lugha hii ya pili ili PDF itakayozalishwa iwe na lugha 2 tofauti katika ukurasa mmoja, ile iliyochaguliwa wakati wa kutengeneza PDF na hii (violezo vichache tu vya PDF vinavyounga mkono hili). Weka tupu kwa lugha 1 kwa kila PDF. -PDF_USE_A=Generate PDF documents with format PDF/A instead of default format PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Ingiza hapa msimbo wa ikoni ya FontAwesome. Ikiwa hujui ni nini FontAwesome, unaweza kutumia fa-address-book ya thamani ya jumla. RssNote=Kumbuka: Kila ufafanuzi wa mipasho ya RSS hutoa wijeti ambayo ni lazima uwashe ili ipatikane kwenye dashibodi JumpToBoxes=Rukia kwa Kuweka -> Wijeti @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/sw_SW/datapolicy.lang b/htdocs/langs/sw_SW/datapolicy.lang index 2144f381b00..68583537fcb 100644 --- a/htdocs/langs/sw_SW/datapolicy.lang +++ b/htdocs/langs/sw_SW/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = Sera ya Faragha ya Data # Module description 'ModuledatapolicyDesc' Module4100Desc = Moduli ya kudhibiti Faragha ya Data (Kulingana na GDPR) - -# # Administration page -# datapolicySetup = Usanidi wa Sera ya Faragha ya Data ya Moduli Deletion = Ufutaji wa data datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Mtarajiwa/Mteja DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Wala mtarajiwa/Wala mteja DATAPOLICY_CONTACT_FOURNISSEUR = Msambazaji DATAPOLICY_ADHERENT = Mwanachama -DATAPOLICY_Tooltip_SETUP = Aina ya mwasiliani - Onyesha chaguo zako kwa kila aina. -DATAPOLICYMail = Usanidi wa Barua pepe -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Maudhui ya barua pepe -DATAPOLICYSUBSITUTION = Unaweza kutumia vigeu vifuatavyo katika barua pepe yako (LINKKUBALI huruhusu kuunda kiungo kinachorekodi makubaliano ya mtu huyo, LINKREFUSED huwezesha kurekodi kukataa kwa mtu huyo): -DATAPOLICYACCEPT = Ujumbe baada ya makubaliano -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Unaweza kutuma barua pepe ya GDPR kwa watu unaowasiliana nao wote husika (ambao bado hawajapokea barua pepe na ambao haujasajili chochote kuhusu makubaliano yao ya GDPR). Ili kufanya hivyo, tumia kifungo kifuatacho. SendAgreement = Tuma barua pepe AllAgreementSend = Barua pepe zote zimetumwa TXTLINKDATAPOLICYACCEPT = Maandishi ya kiungo "makubaliano" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR : Usindikaji wa data ya kibinafsi DATAPOLICY_consentement = Idhini iliyopatikana kwa usindikaji wa data ya kibinafsi DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonymize a third party -DATAPOLICY_POPUP_ANONYME_TEXTE = Huwezi kufuta anwani hii kutoka kwa Dolibarr kwa sababu kuna vipengee vinavyohusiana. Kwa mujibu wa GDPR, utafanya data hii yote isijulikane ili kuheshimu wajibu wako. Je, ungependa kuendelea? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = GDPR ya Kubebeka -DATAPOLICY_PORTABILITE_TITLE = Usafirishaji wa data ya kibinafsi -DATAPOLICY_PORTABILITE_CONFIRMATION = Unataka kuhamisha data ya kibinafsi ya mwasiliani huyu. Una uhakika ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = Bila jina %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Tuma barua pepe ya GDPR MailSent = Barua pepe imetumwa - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/sw_SW/dict.lang b/htdocs/langs/sw_SW/dict.lang index f0504354183..5e013f5268e 100644 --- a/htdocs/langs/sw_SW/dict.lang +++ b/htdocs/langs/sw_SW/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=Faranga za CFP CurrencySingXPF=Faranga za CFP CurrencyCentEUR=senti CurrencyCentSingEUR=senti -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=elfu #### Input reasons ##### DemandReasonTypeSRC_INTE=Mtandao diff --git a/htdocs/langs/sw_SW/errors.lang b/htdocs/langs/sw_SW/errors.lang index 664e952d237..c04d1137177 100644 --- a/htdocs/langs/sw_SW/errors.lang +++ b/htdocs/langs/sw_SW/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Mtumiaji lazima apewe jukumu ili aweze kuingiza muda ErrorTaskAlreadyAssigned=Jukumu ambalo tayari limekabidhiwa kwa mtumiaji ErrorModuleFileSeemsToHaveAWrongFormat=Kifurushi cha moduli kinaonekana kuwa na umbizo lisilo sahihi. ErrorModuleFileSeemsToHaveAWrongFormat2=Angalau saraka moja ya lazima lazima iwepo katika zip ya moduli: %s au %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Jina la kifurushi cha sehemu ( %s ) hailingani na sintaksia ya jina inayotarajiwa: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Hitilafu, nakala ya jina la kianzisha %s. Tayari imepakiwa kutoka %s. ErrorNoWarehouseDefined=Hitilafu, hakuna ghala zilizofafanuliwa. ErrorBadLinkSourceSetButBadValueForRef=Kiungo unachotumia si sahihi. 'Chanzo' cha malipo kimefafanuliwa, lakini thamani ya 'rejelea' si halali. @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/sw_SW/mails.lang b/htdocs/langs/sw_SW/mails.lang index a120fd33d51..87fb01e75a7 100644 --- a/htdocs/langs/sw_SW/mails.lang +++ b/htdocs/langs/sw_SW/mails.lang @@ -32,6 +32,8 @@ NewMailing=Utumaji barua pepe mpya NewSMSing=New smsing EditMailing=Badilisha utumaji barua pepe ResetMailing=Tuma barua pepe tena +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Futa barua pepe PreviewMailing=Hakiki utumaji barua pepe CreateMailing=Unda barua pepe @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Mpokeaji barua pepe ni tupu WarningNoEMailsAdded=Hakuna Barua pepe mpya ya kuongeza kwenye orodha ya wapokeaji. ConfirmValidMailing=Je, una uhakika unataka kuthibitisha utumaji barua pepe huu? ConfirmResetMailing=Onyo, kwa kuanzisha upya barua pepe %s , utaruhusu kutuma tena barua pepe hii katika barua nyingi. Je, una uhakika unataka kufanya hivi? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Je, una uhakika unataka kufuta barua pepe hii? NbOfUniqueEMails=Idadi ya barua pepe za kipekee NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Hakuna mpokeaji zaidi wa kutuma barua pepe kwake EmailOptedOut=Mmiliki wa barua pepe ameomba kutowasiliana naye kwa barua pepe hii tena EvenUnsubscribe=Jumuisha barua pepe za kuondoka EvenUnsubscribeDesc=Include opt-out emails when you select emails as targets. Useful for mandatory service emails for example. -XEmailsDoneYActionsDone=%s barua pepe zilizohitimu awali, %s barua pepe zimechakatwa (kwa %s rekodi/hatua zilizofanywa) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/sw_SW/stripe.lang b/htdocs/langs/sw_SW/stripe.lang index b11f58d104d..b10aa060942 100644 --- a/htdocs/langs/sw_SW/stripe.lang +++ b/htdocs/langs/sw_SW/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL ya kutoa %s ukurasa wa malipo mta ToOfferALinkForOnlinePaymentOnFreeAmount=URL ya kutoa %s ukurasa wa malipo mtandaoni wa kiasi chochote bila kitu kilichopo ToOfferALinkForOnlinePaymentOnMemberSubscription=URL ya kutoa %s ukurasa wa malipo mtandaoni kwa usajili wa wanachama ToOfferALinkForOnlinePaymentOnDonation=URL ya kutoa %s ukurasa wa malipo mtandaoni kwa malipo ya mchango -YouCanAddTagOnUrl=Unaweza pia kuongeza kigezo cha url &tag= thamani kwa URL yoyote kati ya hizo (lazima tu kwa malipo ambayo hayajaunganishwa na kitu) ili kuongeza lebo yako ya maoni ya malipo.
Kwa URL ya malipo bila kifaa kilichopo, unaweza pia kuongeza kigezo &noidempotency=1 kwa hivyo kiungo sawa kilicho na lebo sawa kinaweza kutumika mara kadhaa (baadhi ya njia ya malipo inaweza kupunguza malipo hadi 1 kwa kila kiungo tofauti bila kigezo hiki) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Sanidi Stripe yako kwa url %s kufanya malipo kuundwa kiotomatiki yanapothibitishwa na Stripe. AccountParameter=Vigezo vya akaunti UsageParameter=Vigezo vya matumizi @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Mahali (anwani) ya Vituo vya Stripe RequestDirectDebitWithStripe=Omba Debit ya Moja kwa moja na Stripe RequesCreditTransferWithStripe=Request Credit Transfer with Stripe STRIPE_SEPA_DIRECT_DEBIT=Washa malipo ya Debit ya Moja kwa Moja kupitia Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=Stripe Connect mode +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/ta_IN/admin.lang b/htdocs/langs/ta_IN/admin.lang index 131882bcdbe..8647715b238 100644 --- a/htdocs/langs/ta_IN/admin.lang +++ b/htdocs/langs/ta_IN/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=மதிப்புகள் பட்டியல ExtrafieldParamHelpcheckbox=மதிப்புகளின் பட்டியல் வடிவமைப்பு விசை, மதிப்பு (விசை '0' ஆக இருக்க முடியாது) கொண்ட கோடுகளாக இருக்க வேண்டும். ExtrafieldParamHelpradio=மதிப்புகளின் பட்டியல் வடிவமைப்பு விசை, மதிப்பு (விசை '0' ஆக இருக்க முடியாது) கொண்ட கோடுகளாக இருக்க வேண்டும். 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=அளவுருக்கள் கண்டிப்பாக ObjectName:Classpath
தொடரியல்: ObjectName:Classpath ExtrafieldParamHelpSeparator=ஒரு எளிய பிரிப்பானுக்காக காலியாக இருங்கள்
சரிந்து வரும் பிரிப்பானுக்கு இதை 1 ஆக அமைக்கவும் (புதிய அமர்வுக்கு இயல்புநிலையாகத் திறக்கவும், பின்னர் ஒவ்வொரு பயனர் அமர்வுக்கும் நிலை வைக்கப்படும்)
ஒரு சரியும் பிரிப்பானுக்கு இதை 2 ஆக அமைக்கவும் (புதிய அமர்வுக்கு இயல்புநிலையாகச் சுருக்கப்பட்டது. ஒவ்வொரு பயனர் அமர்வுக்கும் நிலை வைக்கப்படும்) LibraryToBuildPDF=நூலகம் PDF உருவாக்கப் பயன்படுகிறது @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s ஐத் தொடர்ந்து த ModuleCompanyCodeSupplierDigitaria=%s ஐத் தொடர்ந்து துண்டிக்கப்பட்ட சப்ளையர் பெயரை எழுத்துகளின் எண்ணிக்கையால்: %s சப்ளையர் கணக்கியல் குறியீட்டிற்கு. Use3StepsApproval=இயல்பாக, பர்ச்சேஸ் ஆர்டர்களை 2 வெவ்வேறு பயனர்கள் உருவாக்கி அங்கீகரிக்க வேண்டும் (ஒரு படி/பயனர் உருவாக்க மற்றும் ஒரு படி/பயனர் அங்கீகரிக்க வேண்டும். பயனர் உருவாக்க மற்றும் அங்கீகரிக்க இரண்டு அனுமதியும் இருந்தால், ஒரு படி/பயனர் போதுமானது என்பதை நினைவில் கொள்ளவும்) . பிரத்யேக மதிப்பை விட தொகை அதிகமாக இருந்தால், மூன்றாவது படி/பயனர் ஒப்புதலை அறிமுகப்படுத்த இந்த விருப்பத்தின் மூலம் நீங்கள் கேட்கலாம் (எனவே 3 படிகள் தேவைப்படும்: 1=சரிபார்ப்பு, 2=முதல் ஒப்புதல் மற்றும் 3=தொகை போதுமானதாக இருந்தால் இரண்டாவது ஒப்புதல்).
ஒரு ஒப்புதல் (2 படிகள்) போதுமானதாக இருந்தால், இதை காலியாக அமைக்கவும், இரண்டாவது ஒப்புதல் (3 படிகள்) எப்போதும் தேவைப்பட்டால் மிகக் குறைந்த மதிப்பாக (0.1) அமைக்கவும். UseDoubleApproval=தொகை (வரி இல்லாமல்) அதிகமாக இருக்கும் போது 3 படிகள் அனுமதியைப் பயன்படுத்தவும்... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- சில மின்னஞ்சல் சேவை வழங்குநர்கள் (Yahoo போன்றவை) தங்கள் சொந்த சேவையகத்தை விட வேறொரு சேவையகத்திலிருந்து மின்னஞ்சல் அனுப்ப உங்களை அனுமதிப்பதில்லை. உங்கள் தற்போதைய அமைப்பு மின்னஞ்சலை அனுப்ப பயன்பாட்டின் சேவையகத்தைப் பயன்படுத்துகிறது, உங்கள் மின்னஞ்சல் வழங்குநரின் சேவையகத்தை அல்ல, எனவே சில பெறுநர்கள் (கட்டுப்படுத்தப்பட்ட DMARC நெறிமுறையுடன் இணக்கமானது), உங்கள் மின்னஞ்சலையும் சில மின்னஞ்சல் வழங்குநர்களையும் ஏற்க முடியுமா என்று உங்கள் மின்னஞ்சல் வழங்குநரிடம் கேட்பார்கள். (Yahoo போன்றது) "இல்லை" என்று பதிலளிக்கலாம், ஏனெனில் சேவையகம் அவர்களுடையது அல்ல, எனவே நீங்கள் அனுப்பிய சில மின்னஞ்சல்கள் டெலிவரிக்கு ஏற்றுக்கொள்ளப்படாமல் போகலாம் (உங்கள் மின்னஞ்சல் வழங்குநரின் அனுப்பும் ஒதுக்கீட்டிலும் கவனமாக இருக்கவும்). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- மின்னஞ்சல்களை அனுப்ப உங்கள் சொந்த மின்னஞ்சல் சேவை வழங்குநரின் SMTP சேவையகத்தைப் பயன்படுத்துவதும் சுவாரஸ்யமானது, எனவே பயன்பாட்டிலிருந்து அனுப்பப்படும் அனைத்து மின்னஞ்சல்களும் உங்கள் அஞ்சல் பெட்டியின் "அனுப்பப்பட்ட" கோப்பகத்தில் சேமிக்கப்படும். WarningPHPMailD=It is therefore recommended to change the sending method of e-mails to the value "SMTP". WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. WarningPHPMail2=உங்கள் மின்னஞ்சல் SMTP வழங்குநர் மின்னஞ்சல் கிளையண்ட்டை சில IP முகவரிகளுக்கு (மிகவும் அரிதான) கட்டுப்படுத்த வேண்டும் என்றால், இது உங்கள் ERP CRM பயன்பாட்டிற்கான அஞ்சல் பயனர் முகவரின் (MUA) ஐபி முகவரி: %s a0a65d071f6f6f6fc9 -WarningPHPMailSPF=உங்கள் அனுப்புநரின் மின்னஞ்சல் முகவரியில் உள்ள டொமைன் பெயர் SPF பதிவினால் பாதுகாக்கப்பட்டிருந்தால் (உங்கள் டொமைன் பெயர் பதிவேட்டைக் கேளுங்கள்), உங்கள் டொமைனின் DNS இன் SPF பதிவில் பின்வரும் IPகளை நீங்கள் சேர்க்க வேண்டும்: %s a0a65d071f. -ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=விளக்கத்தைக் காட்ட கிளிக் செய்யவும் DependsOn=இந்த தொகுதிக்கு தொகுதி(கள்) தேவை RequiredBy=இந்த தொகுதிக்கு தொகுதி(கள்) தேவை @@ -867,7 +868,7 @@ Permission255=பிற பயனர்களின் கடவுச்சொ Permission256=பிற பயனர்களை நீக்கவும் அல்லது முடக்கவும் Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=அனைத்து மூன்றாம் தரப்பினருக்கும் அவர்களின் பொருள்கள் இல்லாமல் அணுகலை நீட்டிக்கவும் (பயனர் விற்பனை பிரதிநிதியாக இருக்கும் மூன்றாம் தரப்பினருக்கு மட்டும் அல்ல).
வெளிப்புற பயனர்களுக்கு பயனுள்ளதாக இல்லை (எப்போதும் முன்மொழிவுகள், ஆர்டர்கள், விலைப்பட்டியல்கள், ஒப்பந்தங்கள் போன்றவற்றுக்குத் தங்களுக்கு மட்டுமே வரையறுக்கப்பட்டுள்ளது).
திட்டங்களுக்கு பயனுள்ளதாக இல்லை (திட்ட அனுமதிகள், தெரிவுநிலை மற்றும் ஒதுக்கீட்டு விஷயங்களில் விதிகள் மட்டும்). Permission271=CA படிக்கவும் Permission272=இன்வாய்ஸ்களைப் படிக்கவும் @@ -944,7 +945,7 @@ Permission776=செலவு அறிக்கைகளை செலுத் Permission777=Read all expense reports (even those of user not subordinates) Permission778=ஒவ்வொருவரின் செலவு அறிக்கைகளை உருவாக்கவும்/மாற்றவும் Permission779=ஏற்றுமதி செலவு அறிக்கைகள் -Permission1001=பங்குகளைப் படிக்கவும் +Permission1001=Read warehouses and stocks Permission1002=கிடங்குகளை உருவாக்கவும்/மாற்றவும் Permission1003=கிடங்குகளை நீக்கவும் Permission1004=பங்கு இயக்கங்களைப் படிக்கவும் @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=ரீஜெக்ஸ் ஃபில்டர் DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word -GDPRContact=தரவு பாதுகாப்பு அதிகாரி (DPO, தரவு தனியுரிமை அல்லது GDPR தொடர்பு) +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=உதவிக்குறிப்பில் உரையைக் காட்ட உதவும் HelpOnTooltipDesc=இந்தப் புலம் படிவத்தில் தோன்றும் போது, டூல்டிப்பில் உரையைக் காட்ட, உரை அல்லது மொழிபெயர்ப்பு விசையை இங்கே வைக்கவும் @@ -2218,7 +2219,7 @@ CreateCandidature=வேலை விண்ணப்பத்தை உருவ FormatZip=ஜிப் MainMenuCode=மெனு நுழைவு குறியீடு (முதன்மை மெனு) ECMAutoTree=தானியங்கி ECM மரத்தைக் காட்டு -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=தொடக்க நேரம் OpeningHoursDesc=உங்கள் நிறுவனத்தின் வழக்கமான திறந்திருக்கும் நேரத்தை இங்கே உள்ளிடவும். ResourceSetup=வள தொகுதியின் கட்டமைப்பு @@ -2264,7 +2265,7 @@ LargerThan=விட பெரிய IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into email, or if the email is an answer of an email already 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 recommended to create a dedicated second password for the application instead of using your own account password from https://myaccount.google.com/. EmailCollectorTargetDir=It may be a desired behavior 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 third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Warning: a lot of email servers (like Gmail) are doing full word searches when searching on a string and will not return a result if the string is only found partially into a word. For this reason too, use special characters into a search criteria will be ignored are they are not part of existing words.
To make an exclude search on a word (return email if word is not found), you can use the ! character before the word (may not work on some mail servers). EndPointFor=%s க்கான முடிவுப் புள்ளி : %s DeleteEmailCollector=மின்னஞ்சல் சேகரிப்பாளரை நீக்கு @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Third-party name - Third-party alias ALIAS_THIRDPARTY=Third-party alias - Third-party name PDFIn2Languages=Show labels in the PDF in 2 different languages (this feature may not work for some couple of languages) PDF_USE_ALSO_LANGUAGE_CODE=உங்கள் PDF இல் உள்ள சில உரைகளை ஒரே மாதிரியான PDF இல் 2 வெவ்வேறு மொழிகளில் நகல் எடுக்க விரும்பினால், நீங்கள் இந்த இரண்டாவது மொழியை இங்கே அமைக்க வேண்டும், எனவே உருவாக்கப்பட்ட PDF ஆனது ஒரே பக்கத்தில் 2 வெவ்வேறு மொழிகளைக் கொண்டிருக்கும், PDF ஐ உருவாக்கும் போது தேர்ந்தெடுக்கப்பட்ட மொழி மற்றும் இது ( சில PDF வார்ப்புருக்கள் மட்டுமே இதை ஆதரிக்கின்றன). ஒரு PDFக்கு 1 மொழிக்கு காலியாக இருங்கள். -PDF_USE_A=Generate PDF documents with format PDF/A instead of default format PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=FontAwesome ஐகானின் குறியீட்டை இங்கே உள்ளிடவும். FontAwesome என்றால் என்னவென்று உங்களுக்குத் தெரியாவிட்டால், FA-address-book என்ற பொதுவான மதிப்பைப் பயன்படுத்தலாம். RssNote=குறிப்பு: ஒவ்வொரு RSS ஊட்ட வரையறையும் ஒரு விட்ஜெட்டை வழங்குகிறது, அதை நீங்கள் டாஷ்போர்டில் கிடைக்கச் செய்ய வேண்டும் JumpToBoxes=அமைவு -> விட்ஜெட்டுகளுக்கு செல்லவும் @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ta_IN/dict.lang b/htdocs/langs/ta_IN/dict.lang index 20d16492e14..9f6338e51f5 100644 --- a/htdocs/langs/ta_IN/dict.lang +++ b/htdocs/langs/ta_IN/dict.lang @@ -158,7 +158,7 @@ CountryMX=மெக்சிகோ CountryFM=மைக்ரோனேசியா CountryMD=மால்டோவா CountryMN=மங்கோலியா -CountryMS=மான்செராட் +CountryMS=Montserrat CountryMZ=மொசாம்பிக் CountryMM=மியான்மர் (பர்மா) CountryNA=நமீபியா @@ -233,7 +233,7 @@ CountryUY=உருகுவே CountryUZ=உஸ்பெகிஸ்தான் CountryVU=வனுவாடு CountryVE=வெனிசுலா -CountryVN=வியட்நாம் +CountryVN=Vietnam CountryVG=விர்ஜின் தீவுகள், பிரிட்டிஷ் CountryVI=விர்ஜின் தீவுகள், யு.எஸ். CountryWF=வாலிஸ் மற்றும் ஃபுடுனா @@ -295,8 +295,8 @@ CurrencyXPF=CFP பிராங்க்ஸ் CurrencySingXPF=CFP பிராங்க் CurrencyCentEUR=சென்ட் CurrencyCentSingEUR=சதம் -CurrencyCentINR=பைசா -CurrencyCentSingINR=பைசா +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=ஆயிரமாவது #### Input reasons ##### DemandReasonTypeSRC_INTE=இணையதளம் diff --git a/htdocs/langs/ta_IN/errors.lang b/htdocs/langs/ta_IN/errors.lang index 0f8111e0e06..0eee8d3f996 100644 --- a/htdocs/langs/ta_IN/errors.lang +++ b/htdocs/langs/ta_IN/errors.lang @@ -55,6 +55,8 @@ ErrorFoundBadEmailInFile=கோப்பில் %s வரிகளுக்க ErrorUserCannotBeDelete=பயனரை நீக்க முடியாது. ஒருவேளை இது Dolibarr நிறுவனங்களுடன் தொடர்புடையதாக இருக்கலாம். ErrorFieldsRequired=தேவையான சில புலங்கள் காலியாக விடப்பட்டுள்ளன. ErrorSubjectIsRequired=மின்னஞ்சல் பொருள் தேவை +ErrorInAddAttachmentsImageBaseOnMedia=Error in creating image files into media directory for attachment +ErrorInAddAttachmentsImageBaseIsSrcData=Error in creating image files (found as data:) into temp directory for attachment ErrorFailedToCreateDir=கோப்பகத்தை உருவாக்குவதில் தோல்வி. Dolibarr ஆவணங்கள் கோப்பகத்தில் எழுத இணைய சேவையக பயனருக்கு அனுமதி உள்ளதா என சரிபார்க்கவும். இந்த PHP இல் அளவுரு safe_mode இயக்கப்பட்டிருந்தால், Dolibarr php கோப்புகள் இணைய சேவையக பயனருக்கு (அல்லது குழுவிற்கு) சொந்தமானதா என சரிபார்க்கவும். ErrorNoMailDefinedForThisUser=இந்தப் பயனருக்கு அஞ்சல் எதுவும் வரையறுக்கப்படவில்லை ErrorSetupOfEmailsNotComplete=மின்னஞ்சல்களின் அமைவு முழுமையடையவில்லை @@ -220,7 +222,7 @@ ErrorUserNotAssignedToTask=செலவழித்த நேரத்தை உ ErrorTaskAlreadyAssigned=பணி ஏற்கனவே பயனருக்கு ஒதுக்கப்பட்டுள்ளது ErrorModuleFileSeemsToHaveAWrongFormat=தொகுதி தொகுப்பு தவறான வடிவமைப்பில் உள்ளது போல் தெரிகிறது. ErrorModuleFileSeemsToHaveAWrongFormat2=தொகுதியின் ஜிப்பில் குறைந்தது ஒரு கட்டாய கோப்பகமாவது இருக்க வேண்டும்: %s அல்லது a0ecb2ec87f4a695dc019 -ErrorFilenameDosNotMatchDolibarrPackageRules=தொகுதி தொகுப்பின் பெயர் ( %s ) எதிர்பார்க்கப்படும் பெயரின் தொடரியல் உடன் பொருந்தவில்லை: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=பிழை, நகல் தூண்டுதல் பெயர் %s. %s இலிருந்து ஏற்கனவே ஏற்றப்பட்டது. ErrorNoWarehouseDefined=பிழை, கிடங்குகள் வரையறுக்கப்படவில்லை. ErrorBadLinkSourceSetButBadValueForRef=நீங்கள் பயன்படுத்தும் இணைப்பு தவறானது. பணம் செலுத்துவதற்கான 'ஆதாரம்' வரையறுக்கப்பட்டுள்ளது, ஆனால் 'ref'க்கான மதிப்பு செல்லுபடியாகாது. @@ -263,7 +265,7 @@ ErrorReplaceStringEmpty=பிழை, மாற்ற வேண்டிய ச ErrorProductNeedBatchNumber=பிழை, தயாரிப்பு ' %s ' நிறைய/வரிசை எண் தேவை ErrorProductDoesNotNeedBatchNumber=பிழை, தயாரிப்பு ' %s ' நிறைய/வரிசை எண்ணை ஏற்கவில்லை ErrorFailedToReadObject=பிழை, %s வகைப் பொருளைப் படிக்க முடியவில்லை -ErrorParameterMustBeEnabledToAllwoThisFeature=Error, parameter %s must be enabled into conf/conf.php<> to allow use of Command Line Interface by the internal job scheduler +ErrorParameterMustBeEnabledToAllwoThisFeature=Error, parameter %s must be enabled into conf/conf.php to allow use of Command Line Interface by the internal job scheduler ErrorLoginDateValidity=பிழை, இந்த உள்நுழைவு செல்லுபடியாகும் தேதி வரம்பிற்கு வெளியே உள்ளது ErrorValueLength=புலத்தின் நீளம் ' %s ' ' %s a09a4b7390 'ஐ விட அதிகமாக இருக்க வேண்டும் ErrorReservedKeyword=' %s ' என்ற சொல் ஒதுக்கப்பட்ட முக்கிய சொல்லாகும் @@ -301,7 +303,8 @@ ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is man ErrorFailedToWriteInTempDirectory=Failed to write in temp directory ErrorQuantityIsLimitedTo=Quantity is limited to %s ErrorFailedToLoadThirdParty=Failed to find/load third party from id=%s, email=%s, name=%s -ErrorThisPaymentModeIsNotSepa=This payment mode is not a bank account +ErrorThisPaymentModeIsNotDirectDebit=The payment mode is not direct debit +ErrorThisPaymentModeIsNotCreditTransfer=The payment mode is not credit transfer ErrorStripeCustomerNotFoundCreateFirst=Stripe customer is not set for this third party (or set to a value deleted on Stripe side). Create (or re-attach) it first. ErrorCharPlusNotSupportedByImapForSearch=IMAP search is not able to search into sender or recipient for a string containing the character + ErrorTableNotFound=Table %s not found @@ -322,16 +325,21 @@ ErrorFixThisHere=Fix this here ErrorTheUrlOfYourDolInstanceDoesNotMatchURLIntoOAuthSetup=Error: The URL of you current instance (%s) does not match the URL defined into your OAuth2 login setup (%s). Doing OAuth2 login in such a configuration is not allowed. ErrorMenuExistValue=A Menu already exist with this Title or URL ErrorSVGFilesNotAllowedAsLinksWithout=SVG files are not allowed as external links without the option %s -ErrorTypeMenu=Impossible to add another menu for the same module on the navbar, not handle yet +ErrorTypeMenu=Impossible to add another menu for the same module on the navbar, not handled yet +ErrorGeneratingBarcode=Error while generating the barcode (probably invalid code shape) ErrorObjectNotFound = The object %s is not found, please check your url ErrorCountryCodeMustBe2Char=Country code must be a 2 character string ErrorABatchShouldNotContainsSpaces=A lot or serial number should not contains spaces - ErrorTableExist=Table %s already exist ErrorDictionaryNotFound=Dictionary %s not found ErrorFailedToCreateSymLinkToMedias=Failed to create the symbolic link %s to point to %s ErrorCheckTheCommandInsideTheAdvancedOptions=Check the command used for the export into the Advanced options of the export - +ErrorEndTimeMustBeGreaterThanStartTime=End time must be greater than start time +ErrorIncoherentDates=Start date must be earlier than end date +ErrorEndHourIsNull=End date field cannot be empty +ErrorStartHourIsNull=Start date field cannot be empty +ErrorTooManyLinesToProcessPleaseUseAMoreSelectiveFilter=Too many lines to process. Please use a more selective filter. +ErrorEmptyValueForQty=Quantity cannot be zero. # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=உங்கள் PHP அளவுரு upload_max_filesize (%s) PHP அளவுரு post_max_size (%s) ஐ விட அதிகமாக உள்ளது. இது ஒரு நிலையான அமைப்பு அல்ல. WarningPasswordSetWithNoAccount=இந்த உறுப்பினருக்கு கடவுச்சொல் அமைக்கப்பட்டது. இருப்பினும், பயனர் கணக்கு எதுவும் உருவாக்கப்படவில்லை. எனவே இந்த கடவுச்சொல் சேமிக்கப்பட்டுள்ளது ஆனால் Dolibarr இல் உள்நுழைய பயன்படுத்த முடியாது. இது ஒரு வெளிப்புற தொகுதி/இடைமுகத்தால் பயன்படுத்தப்படலாம், ஆனால் ஒரு உறுப்பினருக்கான உள்நுழைவு அல்லது கடவுச்சொல்லை நீங்கள் வரையறுக்கத் தேவையில்லை என்றால், உறுப்பினர் தொகுதி அமைப்பிலிருந்து "ஒவ்வொரு உறுப்பினருக்கும் ஒரு உள்நுழைவை நிர்வகி" விருப்பத்தை நீங்கள் முடக்கலாம். நீங்கள் உள்நுழைவை நிர்வகிக்க வேண்டும் ஆனால் கடவுச்சொல் எதுவும் தேவையில்லை என்றால், இந்த எச்சரிக்கையைத் தவிர்க்க இந்தப் புலத்தை காலியாக வைத்திருக்கலாம். குறிப்பு: உறுப்பினர் ஒரு பயனருடன் இணைக்கப்பட்டிருந்தால், மின்னஞ்சலை உள்நுழைவாகவும் பயன்படுத்தலாம். @@ -344,6 +352,7 @@ WarningConfFileMustBeReadOnly=எச்சரிக்கை, உங்கள் WarningsOnXLines= %s மூலப் பதிவு(கள்) பற்றிய எச்சரிக்கைகள் WarningNoDocumentModelActivated=ஆவண உருவாக்கத்திற்கான எந்த மாதிரியும் செயல்படுத்தப்படவில்லை. உங்கள் தொகுதி அமைப்பைச் சரிபார்க்கும் வரை, ஒரு மாதிரி இயல்பாகத் தேர்ந்தெடுக்கப்படும். WarningLockFileDoesNotExists=எச்சரிக்கை, அமைவு முடிந்ததும், install.lock என்ற கோப்பகத்தை %s a099a4b7083365837fz0 கோப்பைச் சேர்ப்பதன் மூலம் நிறுவல்/இடம்பெயர்வு கருவிகளை முடக்க வேண்டும். இந்தக் கோப்பை உருவாக்குவதைத் தவிர்ப்பது மிகப்பெரிய பாதுகாப்பு அபாயமாகும். +WarningUpgradeHasBeenUnlocked=Warning, upgrade process has been unlocked for everybody WarningUntilDirRemoved=This security warning will remain active as long as the vulnerability is present. WarningCloseAlways=மூல மற்றும் இலக்கு கூறுகளுக்கு இடையே அளவு வேறுபட்டாலும், எச்சரிக்கை, மூடல் செய்யப்படுகிறது. இந்த அம்சத்தை எச்சரிக்கையுடன் இயக்கவும். WarningUsingThisBoxSlowDown=எச்சரிக்கை, இந்தப் பெட்டியைப் பயன்படுத்தி, பெட்டியைக் காட்டும் அனைத்துப் பக்கங்களையும் மெதுவாகக் குறைக்கவும். @@ -373,16 +382,18 @@ WarningModuleNeedRefresh = Module %s has been disabled. Don't forget to e WarningPermissionAlreadyExist=Existing permissions for this object WarningGoOnAccountancySetupToAddAccounts=If this list is empty, go into menu %s - %s - %s to load or create accounts for your chart of account. WarningCorrectedInvoiceNotFound=Corrected invoice not found -WarningCommentNotFound=Please check placement of start and end comments for %s section in file %s before submitting your action +WarningCommentNotFound=Warning: Can't find the start and/or end comments for the section %s into the file %s WarningAlreadyReverse=Stock movement already reversed - +WarningParentIDDoesNotExistAnymore=This parent ID does not exists anymore +WarningReadBankAlsoAllowedIfUserHasPermission=Warning, reading bank account is also allowed with the permission to Manage chart of account +WarningNoDataTransferedInAccountancyYet=Please note, there is no data in the accounting table. Please transfer your data recorded in the application to the accounting section or change the calculation mode to analyze the data recorded outside of accounting. +WarningChangingThisMayBreakStopTaskScheduler=Warning, changing this value may disable the scheduler SwissQrOnlyVIR = SwissQR invoice can only be added on invoices set to be paid with credit transfer payments. SwissQrCreditorAddressInvalid = Creditor address is invalid (are ZIP and city set? (%s) SwissQrCreditorInformationInvalid = Creditor information is invalid for IBAN (%s): %s SwissQrIbanNotImplementedYet = QR-IBAN not implemented yet SwissQrPaymentInformationInvalid = Payment information was invalid for total %s : %s SwissQrDebitorAddressInvalid = Debitor information was invalid (%s) - # Validate RequireValidValue = மதிப்பு செல்லாது RequireAtLeastXString = குறைந்தது %s எழுத்து(கள்) தேவை @@ -404,10 +415,11 @@ BadSetupOfFieldClassNotFoundForValidation = புலத்தின் தவ BadSetupOfFieldFileNotFound = புலத்தின் தவறான அமைப்பில் பிழை: சேர்ப்பதற்கு கோப்பு கிடைக்கவில்லை BadSetupOfFieldFetchNotCallable = புலத்தின் தவறான அமைப்பில் பிழை: வகுப்பில் அழைக்க முடியாது ErrorTooManyAttempts= Too many attempts, please try again later - TotalAmountEmpty=Total Amount Empty FailedToFoundTheConversionRateForInvoice=Failed to found the conversion rate for invoice ThisIdNotDefined=Id not defined OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. +EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/ta_IN/stripe.lang b/htdocs/langs/ta_IN/stripe.lang index 4b61ec6f46c..20ee4552c39 100644 --- a/htdocs/langs/ta_IN/stripe.lang +++ b/htdocs/langs/ta_IN/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=ஒப்பந்த வரிக் ToOfferALinkForOnlinePaymentOnFreeAmount=எந்தவொரு பொருளும் இல்லாத எந்தத் தொகைக்கும் %s ஆன்லைன் கட்டணப் பக்கத்தை வழங்குவதற்கான URL ToOfferALinkForOnlinePaymentOnMemberSubscription=உறுப்பினர் சந்தாவிற்கு %s ஆன்லைன் கட்டணப் பக்கத்தை வழங்குவதற்கான URL ToOfferALinkForOnlinePaymentOnDonation=நன்கொடை செலுத்துவதற்கு %s ஆன்லைன் கட்டணப் பக்கத்தை வழங்குவதற்கான URL -YouCanAddTagOnUrl=நீங்கள் url அளவுரு &tag= மதிப்பு ஐ அந்த URL இல் சேர்க்கலாம் (உங்கள் சொந்தக் கட்டணக் குறிச்சொல்லைச் சேர்க்க கட்டணம் செலுத்துவதற்கு மட்டும் கட்டாயம்).
எந்த பொருளும் இல்லாத பேமெண்ட்டுகளின் URLக்கு, &noidempotency=1 என்ற அளவுருவையும் நீங்கள் சேர்க்கலாம். எனவே ஒரே டேக் கொண்ட ஒரே இணைப்பைப் பல முறை பயன்படுத்தலாம் (சில இணைப்பு முறை இல்லாமல் ஒவ்வொரு கட்டண முறைக்கும் கட்டணம் செலுத்துவதை கட்டுப்படுத்தலாம். அளவுரு) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=ஸ்ட்ரைப் மூலம் சரிபார்க்கப்படும் போது தானாகவே பணம் உருவாக்கப்படும் வகையில் உங்கள் ஸ்ட்ரைப்பை url %s உடன் அமைக்கவும். AccountParameter=கணக்கு அளவுருக்கள் UsageParameter=பயன்பாட்டு அளவுருக்கள் @@ -41,7 +42,7 @@ STRIPE_LIVE_WEBHOOK_KEY=Webhook நேரலை விசை ONLINE_PAYMENT_WAREHOUSE=ஆன்லைனில் பணம் செலுத்தும் போது பங்கு குறைவதற்குப் பயன்படுத்த வேண்டிய பங்கு
(TODO பங்குகளைக் குறைப்பதற்கான விருப்பம் விலைப்பட்டியல் மீது செய்யப்படும் மற்றும் ஆன்லைன் கட்டணம் தானே விலைப்பட்டியல் உருவாக்கப்படும்?) StripeLiveEnabled=ஸ்ட்ரைப் லைவ் இயக்கப்பட்டது (இல்லையெனில் சோதனை/சாண்ட்பாக்ஸ் பயன்முறை) StripeImportPayment=வரி செலுத்துதல்களை இறக்குமதி செய்யவும் -ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails +ExampleOfTestCreditCard=Example of credit card for a test payment: %s => valid, %s => error CVC, %s => expired, %s => charge fails ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s StripeGateways=கோடு நுழைவாயில்கள் OAUTH_STRIPE_TEST_ID=ஸ்ட்ரைப் கனெக்ட் கிளையண்ட் ஐடி (ca_...) @@ -51,6 +52,7 @@ StripeAccount=கோடு கணக்கு StripeChargeList=ஸ்ட்ரைப் கட்டணங்களின் பட்டியல் StripeTransactionList=ஸ்ட்ரைப் பரிவர்த்தனைகளின் பட்டியல் StripeCustomerId=ஸ்ட்ரைப் வாடிக்கையாளர் ஐடி +StripePaymentId=Stripe payment id StripePaymentModes=வரி செலுத்தும் முறைகள் LocalID=உள்ளூர் ஐடி StripeID=கோடு ஐடி @@ -70,9 +72,19 @@ ToOfferALinkForTestWebhook=ஐபிஎன் (சோதனை முறை) ஐ ToOfferALinkForLiveWebhook=IPN (நேரடி பயன்முறை) ஐ அழைக்க, ஸ்ட்ரைப் வெப்ஹூக்கை அமைப்பதற்கான இணைப்பு PaymentWillBeRecordedForNextPeriod=கட்டணம் அடுத்த காலத்திற்கு பதிவு செய்யப்படும். ClickHereToTryAgain= மீண்டும் முயற்சிக்க இங்கே கிளிக் செய்யவும்... -CreationOfPaymentModeMustBeDoneFromStripeInterface=வலுவான வாடிக்கையாளர் அங்கீகார விதிகளின் காரணமாக, ஸ்ட்ரைப் பேக் ஆபீஸில் இருந்து கார்டை உருவாக்க வேண்டும். ஸ்ட்ரைப் வாடிக்கையாளர் பதிவை இயக்க நீங்கள் இங்கே கிளிக் செய்யலாம்: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe back office. You can click here to switch on Stripe customer record: %s STRIPE_CARD_PRESENT=Card Present for Stripe Terminals TERMINAL_LOCATION=Location (address) for Stripe Terminals RequestDirectDebitWithStripe=Request Direct Debit with Stripe +RequesCreditTransferWithStripe=Request Credit Transfer with Stripe STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe - +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT +StripeConnect_Mode=Stripe Connect mode +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/tg_TJ/admin.lang b/htdocs/langs/tg_TJ/admin.lang index 1ebd6b2db15..79453eb810f 100644 --- a/htdocs/langs/tg_TJ/admin.lang +++ b/htdocs/langs/tg_TJ/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Рӯйхати арзишҳо бояд сатрҳо б ExtrafieldParamHelpcheckbox=Рӯйхати арзишҳо бояд сатрҳо бо калиди формат бошад, ки арзиш (дар он калид '0' буда наметавонад)

масалан:
1, value1
2, value2 a0342fccfda3b33 ExtrafieldParamHelpradio=Рӯйхати арзишҳо бояд сатрҳо бо калиди формат бошад, ки арзиш (дар он калид '0' буда наметавонад)

масалан:
1, value1
2, value2 a0342fccfda3b33 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Параметрҳо бояд ObjectName бошанд: Classpath
Синтаксис: ObjectName: Classpath ExtrafieldParamHelpSeparator=Барои ҷудосози оддӣ холӣ нигоҳ доред
Инро барои ҷудосози фурӯпошанда ба 1 таъин кунед (бо нобаёнӣ барои сессияи нав кушода мешавад, пас мақом барои ҳар як сеанси корбар нигоҳ дошта мешавад)
Инро барои ҷудосози фурӯпошанда ба 2 муқаррар кунед (бо нобаёнӣ барои ҷаласаи нав, мақом пеш аз ҳар як ҷаласаи корбар нигоҳ дошта мешавад) LibraryToBuildPDF=Китобхона барои насли PDF истифода мешавад @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s ва пас аз он номи мушта ModuleCompanyCodeSupplierDigitaria=%s ва пас аз он номи таъминкунандаи буридашуда аз рӯи шумораи аломатҳо: %s барои рамзи баҳисобгирии таъминкунандагон. Use3StepsApproval=Бо нобаёнӣ, Фармоишҳои Харид бояд аз ҷониби 2 корбари гуногун таҳия ва тасдиқ карда шаванд (як қадам/корбар барои эҷод ва як қадам/корбар барои тасдиқ. Дар хотир доред, ки агар корбар ҳам иҷозати эҷод ва ҳам тасдиқ кардан дошта бошад, як қадам/корбар кофӣ хоҳад буд) . Шумо метавонед бо ин интихоб дархост кунед, ки қадами сеюм/тасдиқи корбарро ворид кунед, агар маблағи он аз арзиши махсус зиёд бошад (аз ин рӯ 3 қадам лозим мешавад: 1 = тасдиқ, 2 = тасдиқи аввал ва 3 = тасдиқи дуюм, агар маблағи кофӣ бошад).
Инро холӣ гузоред, агар як тасдиқ (2 қадам) кифоя бошад, онро ба арзиши хеле паст (0.1) гузоред, агар тасдиқи дуюм (3 қадам) ҳамеша лозим бошад. UseDoubleApproval=Ҳангоме ки маблағи (бе андоз) аз ... зиёд аст, тасдиқи 3 қадамро истифода баред -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Баъзе провайдерҳои хидматрасони почтаи электронӣ (ба монанди Yahoo) ба шумо имкон намедиҳанд, ки аз сервери дигар аз сервери худ паёми электронӣ фиристед. Танзимоти кунунии шумо сервери барномаро барои фиристодани почтаи электронӣ истифода мебарад, на сервери провайдери почтаи электронии шумо, аз ин рӯ баъзе гирандагон (оне, ки бо протоколи маҳдудкунандаи DMARC мувофиқ аст) аз провайдери почтаи электронии шумо мепурсанд, ки оё онҳо метавонанд почтаи электронии шуморо қабул кунанд ва баъзе провайдерҳои почтаи электронӣ (мисли Yahoo) метавонад "не" посух диҳад, зеро сервер аз они онҳо нест, аз ин рӯ шумораи ками мактубҳои фиристодаи шумо барои интиқол қабул карда намешаванд (инчунин аз квотаи ирсоли провайдери почтаи электронии худ эҳтиёт шавед). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Истифодаи сервери SMTP -и провайдери хидматрасони почтаи электронии худ барои фиристодани мактубҳо низ ҷолиб аст, аз ин рӯ ҳамаи мактубҳои аз барнома фиристодашуда низ дар феҳристи "Ирсолшуда" -и қуттии почтаи шумо сабт карда мешаванд. WarningPHPMailD=Аз ин рӯ, тавсия дода мешавад, ки усули фиристодани паёмҳои электронӣ ба арзиши "SMTP" иваз карда шавад. WarningPHPMailDbis=Агар шумо дар ҳақиқат хоҳед, ки усули пешфарзии "PHP"-ро барои ирсоли паёмҳо нигоҳ доред, танҳо ин огоҳиро сарфи назар кунед ё онро бо %s клик кардани ин ҷо%s. WarningPHPMail2=Агар провайдери SMTP -и почтаи электронии шумо бояд муштарии почтаи электрониро бо баъзе суроғаҳои IP маҳдуд кунад (хеле кам), ин суроғаи IP -и агенти корбари почта (MUA) барои барномаи ERP CRM -и шумост: %s . -WarningPHPMailSPF=Агар номи домен дар суроғаи почтаи электронии ирсолкунандаи шумо бо сабти SPF ҳифз шуда бошад (аз бақайдгирии номи домени худ пурсед), шумо бояд IP-ҳои зеринро ба сабти SPF-и DNS-и домени худ илова кунед: %s. -ActualMailSPFRecordFound=Сабти воқеии SPF ёфт шуд (барои почтаи электронии %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Барои нишон додани тавсиф пахш кунед DependsOn=Ин модул ба модулҳо ниёз дорад RequiredBy=Ин модул аз ҷониби модулҳо талаб карда мешавад @@ -867,7 +868,7 @@ Permission255=Пароли дигар корбаронро тағир диҳед Permission256=Истифодабарандагони дигарро нест кунед ё хомӯш кунед Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Дастрасӣ ба ҳама шахсони сеюмро бе объектҳои худ васеъ кунед (на танҳо шахсони сеюм, ки корбар намояндаи фурӯш аст).
Барои корбарони беруна таъсирбахш нест (ҳамеша бо пешниҳодҳо, фармоишҳо, ҳисобномаҳо, шартномаҳо ва ғайра маҳдуд мешаванд).
Барои лоиҳаҳо муассир нест (танҳо қоидаҳо дар бораи иҷозатномаҳои лоиҳа, масъалаҳои намоёнӣ ва супориш). Permission271=CA хонед Permission272=Ҳисобварақҳоро хонед @@ -944,7 +945,7 @@ Permission776=Ҳисоботи хароҷотро пардохт кунед Permission777=Ҳама ҳисоботи хароҷотро хонед (ҳатто ҳисоботи корбароне, ки тобеъ нестанд) Permission778=Ҳисоботи хароҷоти ҳамаро эҷод/тағир диҳед Permission779=Ҳисоботи хароҷоти содирот -Permission1001=Захираҳоро хонед +Permission1001=Read warehouses and stocks Permission1002=Эҷод/тағир додани анборҳо Permission1003=Анборҳоро нест кунед Permission1004=Ҳаракати саҳмияҳоро хонед @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Филтри Regex ба арзиши тоза (COM DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Ҳангоми тавлиди зерҳисобҳо барои муштариён ё таъминкунандагон калимаҳои муайянро тоза кунед RemoveSpecialWordsHelp=Пеш аз ҳисоб кардани ҳисоби муштарӣ ё молрасон калимаҳоеро, ки бояд тоза карда шаванд, муайян кунед. Истифодаи ";" байни ҳар як калима -GDPRContact=Корманди ҳифзи маълумот (DPO, Privacy Data or GDPR тамос) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Агар шумо маълумоти шахсиро дар Системаи иттилоотии худ нигоҳ доред, шумо метавонед дар ин ҷо алоқаеро номбар кунед, ки барои Қоидаҳои умумии ҳифзи маълумот масъул аст HelpOnTooltip=Матни кӯмак барои нишон додан дар лавҳаи асбобҳо HelpOnTooltipDesc=Матн ё калиди тарҷумаро дар ин ҷо гузоред, то матн дар лавҳаи асбобҳо нишон дода шавад, вақте ки ин майдон дар шакл пайдо мешавад @@ -2218,7 +2219,7 @@ CreateCandidature=Эҷоди аризаи корӣ FormatZip=Zip MainMenuCode=Рамзи вуруд ба меню (менюи асосӣ) ECMAutoTree=Нишон додани дарахти автоматии ECM -OperationParamDesc=Қоидаҳоеро, ки барои истихроҷи баъзе додаҳо истифода мешаванд ё муқаррар кардани арзишҳо барои амалиёт муайян кунед.

Мисол барои истихроҷи номи ширкат аз Мавзӯи почтаи электронӣ ба як тағирёбандаи муваққатӣ:
tmp_var=EXTRACT:SUBJECT:Паём аз ширкат ([^\n]*)

Намунаҳои муқаррар кардани хосиятҳои объект барои эҷод:
objproperty1=SET: арзиши рамзгузории сахт
objproperty2=SET:__tmp_var__
objproperty: valueSETIvalty: танҳо дар сурате муқаррар карда мешавад, ки моликият аллакай муайян карда нашуда бошад)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:Номи ширкат: BODY:\\y s([^\\s]*)

Барои истихроҷ ё насб кардани якчанд хосият хати навро истифода баред. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Соатҳои корӣ OpeningHoursDesc=Дар ин ҷо соатҳои кории муқаррарии ширкати худро ворид кунед. ResourceSetup=Танзимоти модули захираҳо @@ -2264,7 +2265,7 @@ LargerThan=Калонтар аз IfTrackingIDFoundEventWillBeLinked=Дар хотир доред, ки агар ID-и пайгирии объект дар почтаи электронӣ пайдо шавад, ё агар почтаи электронӣ ҷавоби почтаи электронӣ бошад, ки аллакай ҷамъоварӣ шудааст ва ба объект пайваст шудааст, ҳодисаи сохташуда ба таври худкор ба объекти алоқаманди маълум пайваст карда мешавад. WithGMailYouCanCreateADedicatedPassword=Бо ҳисоби GMail, агар шумо тасдиқи 2 қадамро фаъол карда бошед, тавсия дода мешавад, ки ба ҷои истифодаи пароли ҳисоби худ аз https://myaccount.google.com/ пароли дуюми махсус барои барнома эҷод кунед. EmailCollectorTargetDir=Ҳангоми коркарди бомуваффақияти он метавонад як рафтори дилхоҳ барои интиқоли почтаи электронӣ ба теги/директорияи дигар бошад. Барои истифодаи ин хусусият танҳо номи директорияро дар ин ҷо таъин кунед (дар ном аломатҳои махсусро истифода набаред). Дар хотир доред, ки шумо инчунин бояд ҳисоби хондан/навиштанро истифода баред. -EmailCollectorLoadThirdPartyHelp=Шумо метавонед ин амалро барои истифода бурдани мундариҷаи почтаи электронӣ барои дарёфт ва бор кардани шахси сеюми мавҷуда дар базаи худ истифода баред (ҷустуҷӯ дар амволи муайяншуда дар байни 'id','name','name_alias','email' анҷом дода мешавад). Шахси сеюми ёфтшуда (ё сохташуда) барои амалҳои зерин истифода мешавад, ки ба он ниёз доранд.
Масалан, агар шумо хоҳед, ки шахси сеюмро бо номи аз сатр истихроҷшуда эҷод кунед ' Ном: ном барои пайдо кардан' дар бадан мавҷуд аст, почтаи ирсолкунандаро ҳамчун почтаи электронӣ истифода баред, шумо метавонед майдони параметрро чунин танзим кунед:
'email=HEADER:^Аз:(. *);name=EXTRACT:BODY:Ном:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Огоҳӣ: бисёр серверҳои почтаи электронӣ (ба монанди Gmail) ҳангоми ҷустуҷӯ дар сатр ҷустуҷӯи пурраи калимаҳоро анҷом медиҳанд ва агар сатр танҳо қисман дар як калима пайдо шавад, натиҷа намедиҳад. Аз ин сабаб низ, истифодаи аломатҳои махсус дар меъёрҳои ҷустуҷӯ нодида гирифта мешавад, агар онҳо ҷузъи калимаҳои мавҷуда набошанд.
Барои истисно кардани ҷустуҷӯ дар як калима (баргардонидани почтаи электронӣ дар сурати калима). ёфт нашуд), шумо метавонед ! аломати пеш аз калима (метавонад дар баъзе серверҳои почта кор накунад). EndPointFor=Нуқтаи ниҳоӣ барои %s: %s DeleteEmailCollector=Коллекторҳои почтаи электрониро нест кунед @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Номи тарафи сеюм - тахаллуси тараф ALIAS_THIRDPARTY=Номи шахси сеюм - Номи тарафи сеюм PDFIn2Languages=Нишон додани тамғакоғазҳо дар PDF бо 2 забони гуногун (ин хусусият метавонад барои баъзе забонҳо кор накунад) PDF_USE_ALSO_LANGUAGE_CODE=Агар шумо хоҳед, ки баъзе матнҳо дар PDF -и худ бо 2 забони гуногун дар як PDF -и тавлидшуда такрор карда шаванд, шумо бояд ин забони дуввумро муқаррар кунед, то PDF -и тавлидшуда дар як саҳифа 2 забони гуногунро дар бар гирад, ки ҳангоми тавлиди PDF интихоб шудааст ва ин ( Танҳо чанд қолаби PDF инро дастгирӣ мекунанд). Барои 1 забон барои як PDF холӣ бошед. -PDF_USE_A=Ҳуҷҷатҳои PDF-ро бо формати PDF/A ба ҷои формати пешфарз PDF эҷод кунед +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Дар ин ҷо рамзи тасвири FontAwesomeро ворид кунед. Агар шумо намедонед, ки FontAwesome чист, шумо метавонед арзиши умумии fa-address-book -ро истифода баред. RssNote=Эзоҳ: Ҳар як таърифи хати RSS виҷетеро пешкаш мекунад, ки шумо бояд онро дар панели идоракунӣ дастрас кунед JumpToBoxes=Гузаштан ба Танзимот -> Виджетҳо @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/tg_TJ/datapolicy.lang b/htdocs/langs/tg_TJ/datapolicy.lang index aad90c75e2f..e53df132dce 100644 --- a/htdocs/langs/tg_TJ/datapolicy.lang +++ b/htdocs/langs/tg_TJ/datapolicy.lang @@ -4,89 +4,48 @@ # 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 . # Module label 'ModuledatapolicyName' -Module4100Name = Data Privacy Policy +Module4100Name = Сиёсати махфияти маълумот # Module description 'ModuledatapolicyDesc' -Module4100Desc = Module to manage Data Privacy (Conformity with the GDPR) - -# +Module4100Desc = Модули идоракунии махфияти маълумот (Мутобиқат бо GDPR) # Administration page -# -datapolicySetup = Module Data Privacy Policy Setup -Deletion = Deletion of data -datapolicySetupPage = Depending of laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding that necessary for the purposes for which they were collected, except for archival purposes.
The deletion will be done automatically after a certain duration without event (the duration which you will have indicated below). -NB_MONTHS = %s months -ONE_YEAR = 1 year -NB_YEARS = %s years -DATAPOLICY_TIERS_CLIENT = Customer -DATAPOLICY_TIERS_PROSPECT = Prospect -DATAPOLICY_TIERS_PROSPECT_CLIENT = Prospect/Customer -DATAPOLICY_TIERS_NIPROSPECT_NICLIENT = Nor prospect/Nor customer -DATAPOLICY_TIERS_FOURNISSEUR = Supplier -DATAPOLICY_CONTACT_CLIENT = Customer -DATAPOLICY_CONTACT_PROSPECT = Prospect -DATAPOLICY_CONTACT_PROSPECT_CLIENT = Prospect/Customer -DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Nor prospect/Nor customer -DATAPOLICY_CONTACT_FOURNISSEUR = Supplier -DATAPOLICY_ADHERENT = Member -DATAPOLICY_Tooltip_SETUP = Type of contact - Indicate your choices for each type. -DATAPOLICYMail = Emails Setup -DATAPOLICYSUBJECTMAIL = Subject of email -DATAPOLICYCONTENTMAIL = Content of the email -DATAPOLICYSUBSITUTION = You can use the following variables in your email (LINKACCEPT allows to create a link recording the agreement of the person, LINKREFUSED makes it possible to record the refusal of the person): -DATAPOLICYACCEPT = Message after agreement -DATAPOLICYREFUSE = Message after desagreement -SendAgreementText = You can send a GDPR email to all your relevant contacts (who have not yet received an email and for which you have not registered anything about their GDPR agreement). To do this, use the following button. -SendAgreement = Send emails -AllAgreementSend = All emails have been sent -TXTLINKDATAPOLICYACCEPT = Text for the link "agreement" -TXTLINKDATAPOLICYREFUSE = Text for the link "desagreement" - - -# +datapolicySetup = Танзими сиёсати махфияти модули маълумот +Deletion = Нест кардани маълумот +datapolicySetupPage = Вобаста ба қонунҳои кишварҳои шумо (Мисол Моддаи 5-и GDPR), маълумоти шахсӣ бояд барои муддате нигоҳ дошта шавад. на бештар аз мўњлате, ки маълумот барои маќсади љамъоварии он зарур аст, ба истиснои маќсадњои бойгонї.
Нест кардан ба таври худкор пас аз як муддати муайян бидуни њодисањо (давомнокї) сурат мегирад. ки шумо дар зер нишон медихед). +NB_MONTHS = %s моҳ +ONE_YEAR = 1 сол +NB_YEARS = %s сол +DATAPOLICY_TIERS_CLIENT = Муштарӣ +DATAPOLICY_TIERS_PROSPECT = дурнамо +DATAPOLICY_TIERS_PROSPECT_CLIENT = Имконият / муштарӣ +DATAPOLICY_TIERS_NIPROSPECT_NICLIENT = На перспектива / на муштарӣ +DATAPOLICY_TIERS_FOURNISSEUR = Таъминкунанда +DATAPOLICY_CONTACT_CLIENT = Муштарӣ +DATAPOLICY_CONTACT_PROSPECT = дурнамо +DATAPOLICY_CONTACT_PROSPECT_CLIENT = Имконият / муштарӣ +DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = На перспектива / на муштарӣ +DATAPOLICY_CONTACT_FOURNISSEUR = Таъминкунанда +DATAPOLICY_ADHERENT = аъзо +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. +SendAgreementText = Шумо метавонед почтаи электронии GDPR-ро ба ҳамаи тамосҳои дахлдори худ фиристед (онҳо то ҳол почтаи электронӣ нагирифтаанд ва шумо дар бораи созишномаи GDPR-и онҳо чизе сабт накардаед). Барои ин, тугмаи зеринро истифода баред. +SendAgreement = Ирсоли почтаи электронӣ +AllAgreementSend = Ҳама мактубҳо фиристода шуданд +TXTLINKDATAPOLICYACCEPT = Матн барои истиноди "созишнома" +TXTLINKDATAPOLICYREFUSE = Матн барои истинод "ихтилоф" # Extrafields -# -DATAPOLICY_BLOCKCHECKBOX = GDPR : Processing of personal data -DATAPOLICY_consentement = Consent obtained for the processing of personal data -DATAPOLICY_opposition_traitement = Opposes the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Anonymize a thirdparty -DATAPOLICY_POPUP_ANONYME_TEXTE = You can not delete this contact from Dolibarr because there are related items. In accordance with the GDPR, you will make all this data anonymous to respect your obligations. Would you like to continue ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Portability GDPR -DATAPOLICY_PORTABILITE_TITLE = Export of personal data -DATAPOLICY_PORTABILITE_CONFIRMATION = You want to export the personal data of this contact. Are you sure ? - -# +DATAPOLICY_BLOCKCHECKBOX = GDPR: Коркарди маълумоти шахсӣ +DATAPOLICY_consentement = Ризоият барои коркарди маълумоти шахсӣ гирифта шудааст +DATAPOLICY_opposition_traitement = Ба коркарди маълумоти шахсии ӯ мухолиф аст +DATAPOLICY_opposition_prospection = Ба коркарди маълумоти шахсии ӯ бо мақсади ҷустуҷӯ мухолиф аст # Notes added during an anonymization -# -ANONYMISER_AT = Anonymised the %s - -# V2 -DATAPOLICYReturn = GDPR Validation -DATAPOLICY_date = Date of agreement/desagreement GDPR -DATAPOLICY_send = Date sending agreement email -DATAPOLICYReturn = GDPR Validation -DATAPOLICY_SEND = Send GDPR email -MailSent = Email has been sent - -# ERROR -ErrorSubjectIsRequired = Error : The subject of email is required. Indicate it in the module setup -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to send us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of month before deletion +DATAPOLICY_date = Санаи созишнома/ихтилоф GDPR +DATAPOLICY_send = Санаи созишномаи почтаи электронӣ фиристода шуд +MailSent = Почтаи электронӣ фиристода шуд +NUMBER_MONTH_BEFORE_DELETION = Шумораи моҳҳо пеш аз нест кардан diff --git a/htdocs/langs/tg_TJ/dict.lang b/htdocs/langs/tg_TJ/dict.lang index f595ee4dd23..f856daf2448 100644 --- a/htdocs/langs/tg_TJ/dict.lang +++ b/htdocs/langs/tg_TJ/dict.lang @@ -137,7 +137,7 @@ CountryLV=Латвия CountryLB=Лубнон CountryLS=Лесото CountryLR=Либерия -CountryLY=Libya +CountryLY=Либия CountryLI=Лихтенштейн CountryLT=Литва CountryLU=Люксембург @@ -247,13 +247,13 @@ CountryJE=Ҷерсӣ CountryME=Черногория CountryBL=Сент Бартелеми CountryMF=Сент Мартин -CountryXK=Kosovo +CountryXK=Косово ##### Civilities ##### CivilityMME=Бону. -CivilityMMEShort=Mrs. +CivilityMMEShort=Бону. CivilityMR=Ҷаноб. -CivilityMRShort=Mr. +CivilityMRShort=Ҷаноб. CivilityMLE=Бону. CivilityMTRE=Устод CivilityDR=Духтур @@ -295,8 +295,8 @@ CurrencyXPF=Франки CFP CurrencySingXPF=CFP Франк CurrencyCentEUR=сент CurrencyCentSingEUR=сент -CurrencyCentINR=пайса -CurrencyCentSingINR=таваққуф +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=ҳазорум #### Input reasons ##### DemandReasonTypeSRC_INTE=интернет diff --git a/htdocs/langs/tg_TJ/errors.lang b/htdocs/langs/tg_TJ/errors.lang index fc7604aaa55..249788c6620 100644 --- a/htdocs/langs/tg_TJ/errors.lang +++ b/htdocs/langs/tg_TJ/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Истифодабаранда бояд ба вази ErrorTaskAlreadyAssigned=Вазифа аллакай ба корбар дода шудааст ErrorModuleFileSeemsToHaveAWrongFormat=Чунин ба назар мерасад, ки бастаи модул формати нодуруст дорад. ErrorModuleFileSeemsToHaveAWrongFormat2=Ҳадди ақал як феҳристи ҳатмӣ бояд дар почтаи модул мавҷуд бошад: %s ё %s a0a65d071 -ErrorFilenameDosNotMatchDolibarrPackageRules=Номи бастаи модул ( %s ) ба синтаксиси номи интизоршуда мувофиқат намекунад: %s a0a65d071 +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Хато, такрори номи триггер %s. Аллакай аз %s бор карда шудааст. ErrorNoWarehouseDefined=Хато, ягон анбор муайян карда нашудааст. ErrorBadLinkSourceSetButBadValueForRef=Истиноде, ки шумо истифода мебаред, эътибор надорад. Манбаи 'пардохт муайян карда шудааст, аммо арзиши' ref 'эътибор надорад. @@ -422,3 +422,4 @@ OperNotDefined=Усули пардохт муайян нашудааст ErrorThisContactXIsAlreadyDefinedAsThisType=%s аллакай ҳамчун тамос барои ин намуд муайян шудааст. ErrorThisGroupIsAlreadyDefinedAsThisType=Алоқаҳо бо ин гурӯҳ аллакай ҳамчун алоқа барои ин намуд муайян шудаанд. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/tg_TJ/mails.lang b/htdocs/langs/tg_TJ/mails.lang index 2de3d1dbe0f..55a1162e4ca 100644 --- a/htdocs/langs/tg_TJ/mails.lang +++ b/htdocs/langs/tg_TJ/mails.lang @@ -32,6 +32,8 @@ NewMailing=Паёми нави электронӣ NewSMSing=SMS-и нав EditMailing=Таҳрири почтаи электронӣ ResetMailing=Почтаи электрониро дубора фиристед +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Почтаи электрониро нест кунед PreviewMailing=Пешнамоиши почтаи электронӣ CreateMailing=Эҷоди почтаи электронӣ @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Қабули почтаи электронӣ холӣ WarningNoEMailsAdded=Ягон почтаи электронӣ барои илова кардан ба рӯйхати гирандагон нест. ConfirmValidMailing=Шумо мутмаин ҳастед, ки мехоҳед ин почтаи электрониро тасдиқ кунед? ConfirmResetMailing=Огоҳӣ, бо дубора оғоз кардани почтаи электронии %s , шумо иҷозат медиҳед, ки ин почтаи электронӣ дар як паём ба таври дубора фиристода шавад. Шумо мутмаин ҳастед, ки ин корро кардан мехоҳед? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Шумо мутмаин ҳастед, ки ин почтаи электрониро нест кардан мехоҳед? NbOfUniqueEMails=Шумораи мактубҳои беназир NbOfUniquePhones=Шумораи телефонҳои беназир @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Дигар қабулкунандае нест, ки п EmailOptedOut=Соҳиби почтаи электронӣ дархост кардааст, ки дигар бо ин почтаи электронӣ бо ӯ тамос нагирад EvenUnsubscribe=Дохил кардани почтаи электронӣ EvenUnsubscribeDesc=Ҳангоми интихоби почтаи электронӣ ҳамчун ҳадаф, паёмҳои радкуниро дохил кунед. Масалан, барои почтаи электронӣ хидматрасонии ҳатмӣ муфид аст. -XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Шумо метавонед барои почтаи электронии худ баъзе дастурҳо созед (Масалан: дар қолаби почтаи электронӣ тасвир эҷод кунед...) ModelTemplate=Шаблони почтаи электронӣ YouCanChooseAModelForYouMailContent= Шумо метавонед яке аз моделҳои қолабиро интихоб кунед ё якеро бо AI тавлид кунед TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/tg_TJ/stripe.lang b/htdocs/langs/tg_TJ/stripe.lang index 4bb52b86399..ddd34ea0f45 100644 --- a/htdocs/langs/tg_TJ/stripe.lang +++ b/htdocs/langs/tg_TJ/stripe.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - stripe StripeSetup=Танзими модули Stripe -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, ...) +StripeDesc=Мизоҷони худ саҳифаи пардохти онлайнро барои пардохтҳо бо кортҳои кредитӣ/дебетӣ тавассути Stripe пешниҳод кунед. Ин метавонад истифода шавад, то ба мизоҷони шумо имкон диҳад, ки пардохтҳои муваққатӣ ё пардохтҳои марбут ба объекти мушаххаси Dolibarr (инвойс, фармоиш, ...) StripeOrCBDoPayment=Бо корти кредитӣ ё Stripe пардохт кунед FollowingUrlAreAvailableToMakePayments=URL -ҳои зерин барои пешниҳоди саҳифа ба муштарӣ барои пардохт дар объектҳои Dolibarr дастрасанд PaymentForm=Шакли пардохт @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL барои пешниҳоди я ToOfferALinkForOnlinePaymentOnFreeAmount=URL барои пешниҳоди %s саҳифаи пардохти онлайнии ҳама гуна миқдорро, ки объекти мавҷуд надорад ToOfferALinkForOnlinePaymentOnMemberSubscription=URL барои пешниҳоди як саҳифаи пардохти онлайнии %s барои обунаи аъзо ToOfferALinkForOnlinePaymentOnDonation=URL барои пешниҳоди %s саҳифаи пардохти онлайн барои пардохти хайрия -YouCanAddTagOnUrl=Шумо инчунин метавонед параметри url & tag = арзиши -ро ба ҳар кадоме аз ин URLҳо илова кунед (танҳо барои пардохти ҳатмӣ ба ашёе, ки ба объект вобаста нест) барои илова кардани барчаспҳои тафсири пардохти шумо.
Барои URL -и пардохтҳое, ки объекти мавҷудбуда надоранд, шумо инчунин метавонед параметри & noidempotency = 1 илова кунед, аз ин рӯ ҳамон истинод бо як барчаро чанд маротиба истифода бурдан мумкин аст (баъзе режими пардохт метавонад пардохтро барои ҳар як истиноди гуногун маҳдуд кунад) параметр) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Stripe худро бо url %s танзим кунед, то пардохт ҳангоми тасдиқи Stripe ба таври худкор эҷод карда шавад. AccountParameter=Параметрҳои ҳисоб UsageParameter=Параметрҳои истифода @@ -41,8 +42,8 @@ STRIPE_LIVE_WEBHOOK_KEY=Калиди зинда дар Webhook ONLINE_PAYMENT_WAREHOUSE=Ҳангоме ки пардохти онлайн анҷом дода мешавад, саҳмияҳо барои коҳиш додани саҳмия истифода мешаванд
(TODO Вақте ки имкони коҳиш додани саҳмия дар асоси амали суратҳисоб сурат мегирад ва пардохти онлайн ҳисобнома -фактураро тавлид мекунад?) StripeLiveEnabled=Stripe live фаъол аст (дар акси ҳол ҳолати санҷиш/қуттии қуттиҳо) StripeImportPayment=Пардохтҳои Stripe воридотӣ -ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails -ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s +ExampleOfTestCreditCard=Намунаи корти кредитӣ барои пардохти санҷиш: %s => дуруст, %s => хатои CVC, %s => гузаштааст, %s => пардохт иҷро намешавад +ExampleOfTestBankAcountForSEPA=Намунаи BAN суратҳисоби бонкӣ барои санҷиши дебетии мустақим: %s StripeGateways=Дарвозаҳои рахӣ OAUTH_STRIPE_TEST_ID=ID муштарии Stripe Connect (тақрибан _...) OAUTH_STRIPE_LIVE_ID=ID муштарии Stripe Connect (тақрибан _...) @@ -51,6 +52,7 @@ StripeAccount=Ҳисоби Stripe StripeChargeList=Рӯйхати пардохтҳои Stripe StripeTransactionList=Рӯйхати амалиётҳои Stripe StripeCustomerId=Шиносаи муштарии Stripe +StripePaymentId=Рақами пардохти Stripe StripePaymentModes=Усулҳои пардохти Stripe LocalID=ID маҳаллӣ StripeID=ID Stripe @@ -62,7 +64,7 @@ DeleteACard=Кортро нест кунед ConfirmDeleteCard=Шумо мутмаин ҳастед, ки ин корти кредитӣ ё дебетиро нест кардан мехоҳед? CreateCustomerOnStripe=Дар Stripe муштарӣ эҷод кунед CreateCardOnStripe=Дар Stripe корт эҷод кунед -CreateBANOnStripe=Create bank on Stripe +CreateBANOnStripe=Дар Stripe бонк эҷод кунед ShowInStripe=Дар Stripe нишон диҳед StripeUserAccountForActions=Ҳисоби корбаре, ки барои почтаи электронӣ дар бораи баъзе чорабиниҳои Stripe истифода мешавад (пардохтҳои Stripe) StripePayoutList=Рӯйхати пардохтҳои Stripe @@ -70,9 +72,19 @@ ToOfferALinkForTestWebhook=Истинод барои насб кардани Str ToOfferALinkForLiveWebhook=Истинод барои насб кардани Stripe WebHook барои занг задан ба IPN (ҳолати зинда) PaymentWillBeRecordedForNextPeriod=Пардохт барои давраи оянда сабт карда мешавад. ClickHereToTryAgain= Барои дубора кӯшиш кардан ин ҷо клик кунед ... -CreationOfPaymentModeMustBeDoneFromStripeInterface=Бо назардошти қоидаҳои қавии аутентификатсияи муштариён, сохтани корт бояд аз backoffice Stripe анҷом дода шавад. Шумо метавонед ин ҷо клик кунед, то сабти муштариёни Stripe -ро фаъол созед: %s -STRIPE_CARD_PRESENT=Card Present for Stripe Terminals -TERMINAL_LOCATION=Location (address) for Stripe Terminals -RequestDirectDebitWithStripe=Request Direct Debit with Stripe -STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe - +CreationOfPaymentModeMustBeDoneFromStripeInterface=Бинобар қоидаҳои пурқуввати аутентификатсияи муштарӣ, эҷоди корт бояд аз офиси пушти Stripe анҷом дода шавад. Шумо метавонед ин ҷоро клик кунед, то сабти муштариёни Stripe-ро фаъол созед: %s +STRIPE_CARD_PRESENT=Корт тақдим барои терминалҳои Stripe +TERMINAL_LOCATION=Ҷойгиршавӣ (суроға) барои терминалҳои Stripe +RequestDirectDebitWithStripe=Дебети мустақимро бо Stripe дархост кунед +RequesCreditTransferWithStripe=Бо Stripe интиқоли қарзро дархост кунед +STRIPE_SEPA_DIRECT_DEBIT=Пардохтҳои дебетии мустақимро тавассути Stripe фаъол созед +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT +StripeConnect_Mode=Ҳолати пайвасти Stripe +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/th_TH/admin.lang b/htdocs/langs/th_TH/admin.lang index 96325432602..1ae2f55e46f 100644 --- a/htdocs/langs/th_TH/admin.lang +++ b/htdocs/langs/th_TH/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=รายการค่าต้องเป็นบ ExtrafieldParamHelpcheckbox=รายการค่าต้องเป็นบรรทัดที่มีรูปแบบคีย์ ค่า (โดยที่คีย์ไม่สามารถเป็น '0')

เป็นต้น :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=รายการค่าต้องเป็นบรรทัดที่มีรูปแบบคีย์ ค่า (โดยที่คีย์ไม่สามารถเป็น '0')

เป็นต้น :
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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=พารามิเตอร์ต้องเป็น ObjectName:Classpath
ไวยากรณ์: ObjectName:Classpath ExtrafieldParamHelpSeparator=เว้นว่างไว้สำหรับตัวคั่นแบบง่าย
ตั้งค่านี้เป็น 1 สำหรับตัวคั่นแบบยุบ (เปิดโดยค่าเริ่มต้นสำหรับเซสชันใหม่ จากนั้นสถานะจะถูกเก็บไว้สำหรับเซสชันผู้ใช้แต่ละเซสชัน)
ตั้งค่านี้เป็น 2 สำหรับตัวแยกการยุบ (ยุบโดยค่าเริ่มต้นสำหรับเซสชันใหม่ จากนั้นสถานะจะถูกเก็บไว้ก่อนแต่ละเซสชันของผู้ใช้) LibraryToBuildPDF=ไลบรารีที่ใช้สำหรับการสร้าง PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s ตามด้วยชื่อลูก ModuleCompanyCodeSupplierDigitaria=%s ตามด้วยชื่อซัพพลายเออร์ที่ถูกตัดทอนด้วยจำนวนอักขระ: %s สำหรับรหัสการบัญชีของซัพพลายเออร์ Use3StepsApproval=ตามค่าเริ่มต้น ใบสั่งซื้อจะต้องถูกสร้างและอนุมัติโดยผู้ใช้ 2 คนที่แตกต่างกัน (หนึ่งขั้นตอน/ผู้ใช้ที่จะสร้าง และหนึ่งขั้นตอน/ผู้ใช้ที่จะอนุมัติ โปรดทราบว่าหากผู้ใช้มีทั้งสิทธิ์ในการสร้างและอนุมัติ หนึ่งขั้นตอน/ผู้ใช้ก็เพียงพอแล้ว) . คุณสามารถขอด้วยตัวเลือกนี้เพื่อแนะนำขั้นตอนที่สาม/การอนุมัติผู้ใช้ หากจำนวนเงินสูงกว่าค่าที่กำหนด (ดังนั้นจึงจำเป็นต้องมี 3 ขั้นตอน: 1=การตรวจสอบความถูกต้อง 2=การอนุมัติครั้งแรก และ 3=การอนุมัติครั้งที่สอง หากจำนวนเงินเพียงพอ)
ตั้งค่านี้เป็นว่างหากการอนุมัติเพียงครั้งเดียว (2 ขั้นตอน) เพียงพอ ให้ตั้งค่าเป็นค่าที่ต่ำมาก (0.1) หากจำเป็นต้องมีการอนุมัติครั้งที่สอง (3 ขั้นตอน) เสมอ UseDoubleApproval=ใช้การอนุมัติ 3 ขั้นตอน เมื่อยอด (ไม่รวมภาษี) สูงกว่า... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- ผู้ให้บริการอีเมลบางราย (เช่น Yahoo) ไม่อนุญาตให้คุณส่งอีเมลจากเซิร์ฟเวอร์อื่นที่ไม่ใช่เซิร์ฟเวอร์ของตนเอง การตั้งค่าปัจจุบันของคุณใช้เซิร์ฟเวอร์ของแอปพลิเคชันในการส่งอีเมล ไม่ใช่เซิร์ฟเวอร์ของผู้ให้บริการอีเมลของคุณ ดังนั้นผู้รับบางราย (ที่เข้ากันได้กับโปรโตคอล DMARC ที่มีข้อจำกัด) จะถามผู้ให้บริการอีเมลของคุณว่าสามารถรับอีเมลของคุณและผู้ให้บริการอีเมลบางรายได้หรือไม่ (เช่น Yahoo) อาจตอบว่า "ไม่" เนื่องจากเซิร์ฟเวอร์ไม่ใช่ของพวกเขา ดังนั้นอีเมลที่คุณส่งบางส่วนอาจไม่ได้รับการยอมรับสำหรับการจัดส่ง (โปรดระวังโควต้าการส่งของผู้ให้บริการอีเมลของคุณด้วย) +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- การใช้เซิร์ฟเวอร์ SMTP ของผู้ให้บริการอีเมลของคุณเองในการส่งอีเมลก็น่าสนใจเช่นกัน ดังนั้นอีเมลทั้งหมดที่ส่งจากแอปพลิเคชันจะถูกบันทึกลงในไดเร็กทอรี "ส่ง" ของกล่องจดหมายของคุณด้วย WarningPHPMailD=ดังนั้นจึงแนะนำให้เปลี่ยนวิธีการส่งอีเมลเป็นค่า "SMTP" WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. WarningPHPMail2=หากผู้ให้บริการอีเมล SMTP ของคุณจำเป็นต้องจำกัดโปรแกรมรับส่งอีเมลไว้เฉพาะที่อยู่ IP บางส่วน (ซึ่งพบได้ยากมาก) นี่คือที่อยู่ IP ของตัวแทนผู้ใช้อีเมล (MUA) สำหรับแอปพลิเคชัน ERP CRM ของคุณ: %s -WarningPHPMailSPF=หากชื่อโดเมนในที่อยู่อีเมลของผู้ส่งของคุณได้รับการปกป้องโดยบันทึก SPF (สอบถามผู้รับจดทะเบียนชื่อโดเมนของคุณ) คุณต้องเพิ่ม IP ต่อไปนี้ในบันทึก SPF ของ DNS ของโดเมนของคุณ: %s -ActualMailSPFRecordFound=พบบันทึก SPF จริง (สำหรับอีเมล %s) : %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=คลิกเพื่อแสดงคำอธิบาย DependsOn=โมดูลนี้ต้องการโมดูล RequiredBy=โมดูลนี้จำเป็นสำหรับโมดูล @@ -867,7 +868,7 @@ Permission255=แก้ไขรหัสผ่านผู้ใช้อื่ Permission256=ลบหรือปิดการใช้งานผู้ใช้อื่น ๆ Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=ขยายการเข้าถึงไปยังบุคคลที่สามทั้งหมดโดยไม่ต้องมีวัตถุของพวกเขา (ไม่ใช่เฉพาะบุคคลที่สามที่ผู้ใช้เป็นตัวแทนการขาย)
ไม่มีผลกับผู้ใช้ภายนอก (จำกัดเฉพาะตัวเองสำหรับข้อเสนอเสมอ คำสั่งซื้อ ใบแจ้งหนี้ สัญญา ฯลฯ)
ไม่มีผลกับโครงการ (เฉพาะกฎเกี่ยวกับการอนุญาตโครงการ การเปิดเผย และการมอบหมาย) Permission271=อ่าน CA Permission272=ดูใบแจ้งหนี้ @@ -944,7 +945,7 @@ Permission776=จ่ายรายงานค่าใช้จ่าย Permission777=อ่านรายงานค่าใช้จ่ายทั้งหมด (แม้แต่ผู้ใช้ที่ไม่ใช่ผู้ใต้บังคับบัญชา) Permission778=สร้าง/แก้ไขรายงานค่าใช้จ่ายของทุกคน Permission779=รายงานค่าใช้จ่ายส่งออก -Permission1001=อ่านหุ้น +Permission1001=Read warehouses and stocks Permission1002=สร้าง / แก้ไขคลังสินค้า Permission1003=ลบคลังสินค้า Permission1004=อ่านการเคลื่อนไหวของหุ้น @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=ตัวกรอง Regex เพื่อล้ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=ทำความสะอาดคำบางคำเมื่อสร้างบัญชีย่อยสำหรับลูกค้าหรือซัพพลายเออร์ RemoveSpecialWordsHelp=ระบุคำที่ต้องการล้างก่อนคำนวณบัญชีลูกค้าหรือซัพพลายเออร์ ใช้ ";" ระหว่างแต่ละคำ -GDPRContact=เจ้าหน้าที่คุ้มครองข้อมูล (DPO, ความเป็นส่วนตัวของข้อมูล หรือการติดต่อ GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=หากคุณจัดเก็บข้อมูลส่วนบุคคลไว้ในระบบข้อมูลของคุณ คุณสามารถตั้งชื่อผู้ติดต่อที่รับผิดชอบตามกฎการคุ้มครองข้อมูลทั่วไปได้ที่นี่ HelpOnTooltip=ข้อความช่วยเหลือที่จะแสดงบนคำแนะนำเครื่องมือ HelpOnTooltipDesc=ใส่ข้อความหรือคีย์การแปลที่นี่เพื่อให้ข้อความแสดงในคำแนะนำเครื่องมือเมื่อฟิลด์นี้ปรากฏในแบบฟอร์ม @@ -2218,7 +2219,7 @@ CreateCandidature=สร้างการสมัครงาน FormatZip=รหัสไปรษณีย์ MainMenuCode=รหัสรายการเมนู (เมนูหลัก) ECMAutoTree=แสดงแผนผัง ECM อัตโนมัติ -OperationParamDesc=กำหนดกฎเพื่อใช้แยกข้อมูลบางส่วนหรือตั้งค่าเพื่อใช้สำหรับการดำเนินการ

ตัวอย่างในการแยกชื่อบริษัทจาก หัวเรื่องอีเมลเป็นตัวแปรชั่วคราว:
tmp_var=EXTRACT:SUBJECT:ข้อความจากบริษัท ([^\n]*)

ตัวอย่างการตั้งค่าคุณสมบัติของออบเจ็กต์ที่จะสร้าง:
objproperty1=SET:ค่าฮาร์ดโค้ด
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (ค่า ถูกตั้งค่าเฉพาะเมื่อคุณสมบัติไม่ได้ถูกกำหนดไว้แล้ว)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:ชื่อบริษัทของฉันคือ\\ s([^\\s]*)

ใช้บรรทัดใหม่เพื่อแยกหรือตั้งค่าคุณสมบัติหลายรายการ +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=เวลาเปิดทำการ OpeningHoursDesc=ป้อนเวลาทำการปกติของบริษัทของคุณที่นี่ ResourceSetup=การกำหนดค่าโมดูลทรัพยากร @@ -2264,7 +2265,7 @@ LargerThan=ใหญ่กว่า IfTrackingIDFoundEventWillBeLinked=โปรดทราบว่าหากพบ ID ติดตามของออบเจ็กต์ในอีเมล หรือหากอีเมลเป็นคำตอบของอีเมลที่รวบรวมและเชื่อมโยงกับออบเจ็กต์แล้ว เหตุการณ์ที่สร้างขึ้นจะเชื่อมโยงกับออบเจ็กต์ที่เกี่ยวข้องที่ทราบโดยอัตโนมัติ WithGMailYouCanCreateADedicatedPassword=ด้วยบัญชี GMail หากคุณเปิดใช้งานการตรวจสอบความถูกต้อง 2 ขั้นตอน ขอแนะนำให้สร้างรหัสผ่านที่สองเฉพาะสำหรับแอปพลิเคชัน แทนที่จะใช้รหัสผ่านบัญชีของคุณเองจาก https://myaccount.google.com/ EmailCollectorTargetDir=อาจเป็นพฤติกรรมที่ต้องการในการย้ายอีเมลไปยังแท็ก/ไดเรกทอรีอื่นเมื่อประมวลผลสำเร็จ เพียงตั้งชื่อไดเรกทอรีที่นี่เพื่อใช้คุณสมบัตินี้ (อย่าใช้อักขระพิเศษในชื่อ) โปรดทราบว่าคุณต้องใช้บัญชีเข้าสู่ระบบแบบอ่าน/เขียนด้วย -EmailCollectorLoadThirdPartyHelp=คุณสามารถใช้การกระทำนี้เพื่อใช้เนื้อหาอีเมลเพื่อค้นหาและโหลดบุคคลที่สามที่มีอยู่ในฐานข้อมูลของคุณ (การค้นหาจะดำเนินการในคุณสมบัติที่กำหนดไว้ระหว่าง 'id', 'name', 'name_alias', 'email') บุคคลที่สามที่พบ (หรือสร้าง) จะถูกนำมาใช้เพื่อดำเนินการต่อไปนี้ที่จำเป็น
ตัวอย่างเช่น หากคุณต้องการสร้างบุคคลที่สามด้วยชื่อที่ดึงมาจากสตริง ' ชื่อ: ชื่อที่จะค้นหา' แสดงอยู่ในเนื้อหา ใช้อีเมลของผู้ส่งเป็นอีเมล คุณสามารถตั้งค่าฟิลด์พารามิเตอร์ดังนี้:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=คำเตือน: เซิร์ฟเวอร์อีเมลจำนวนมาก (เช่น Gmail) กำลังค้นหาคำแบบเต็มเมื่อค้นหาสตริง และจะไม่ส่งคืนผลลัพธ์หากพบสตริงเป็นคำเพียงบางส่วนเท่านั้น ด้วยเหตุนี้ การใช้อักขระพิเศษในเกณฑ์การค้นหาจะถูกละเว้น หากอักขระเหล่านั้นไม่ได้เป็นส่วนหนึ่งของคำที่มีอยู่
หากต้องการยกเว้นการค้นหาคำ (ส่งคืนอีเมลหากเป็นคำ ไม่พบ) คุณสามารถใช้ ! อักขระหน้าคำ (อาจใช้ไม่ได้กับเมลเซิร์ฟเวอร์บางตัว) EndPointFor=จุดสิ้นสุดสำหรับ %s : %s DeleteEmailCollector=ลบตัวรวบรวมอีเมล @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=ชื่อบุคคลที่สาม - นามแฝ ALIAS_THIRDPARTY=นามแฝงบุคคลที่สาม - ชื่อบุคคลที่สาม PDFIn2Languages=แสดงป้ายกำกับในรูปแบบ PDF ใน 2 ภาษาที่แตกต่างกัน (ฟีเจอร์นี้อาจใช้ไม่ได้กับบางภาษา) PDF_USE_ALSO_LANGUAGE_CODE=หากคุณต้องการให้ข้อความบางส่วนใน PDF ของคุณซ้ำกันใน 2 ภาษาที่แตกต่างกันใน PDF ที่สร้างขึ้นเดียวกัน คุณต้องตั้งค่าภาษาที่สองนี้ที่นี่ ดังนั้น PDF ที่สร้างขึ้นจะมี 2 ภาษาที่แตกต่างกันในหน้าเดียวกัน ภาษาที่เลือกเมื่อสร้าง PDF และภาษานี้ ( มีเทมเพลต PDF เพียงไม่กี่แบบเท่านั้นที่รองรับสิ่งนี้) เว้นว่างไว้ 1 ภาษาต่อ PDF -PDF_USE_A=สร้างเอกสาร PDF ด้วยรูปแบบ PDF/A แทนรูปแบบ PDF เริ่มต้น +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=ป้อนรหัสของไอคอน FontAwesome ที่นี่ หากคุณไม่รู้ว่า FontAwesome คืออะไร คุณสามารถใช้ค่า fa-address-book ทั่วไปได้ RssNote=หมายเหตุ: ข้อกำหนดฟีด RSS แต่ละรายการมีวิดเจ็ตที่คุณต้องเปิดใช้งานเพื่อให้พร้อมใช้งานในแดชบอร์ด JumpToBoxes=ข้ามไปที่การตั้งค่า -> วิดเจ็ต @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/th_TH/commercial.lang b/htdocs/langs/th_TH/commercial.lang index ea699b672be..a6d4fcf254a 100644 --- a/htdocs/langs/th_TH/commercial.lang +++ b/htdocs/langs/th_TH/commercial.lang @@ -1,25 +1,26 @@ # Dolibarr language file - Source file is en_US - commercial -Commercial=Commerce -CommercialArea=Commerce area +Commercial=พาณิชย์ +CommercialArea=พื้นที่การค้า Customer=ลูกค้า Customers=ลูกค้า Prospect=โอกาส Prospects=ลูกค้าเป้าหมาย -DeleteAction=Delete an event -NewAction=New event +DeleteAction=ลบกิจกรรม +NewAction=กิจกรรมใหม่ AddAction=สร้างกิจกรรม -AddAnAction=Create an event +AddAnAction=สร้างกิจกรรม AddActionRendezVous=สร้างเหตุการณ์ Rendez-vous -ConfirmDeleteAction=Are you sure you want to delete this event? +ConfirmDeleteAction=คุณแน่ใจหรือไม่ว่าต้องการลบกิจกรรมนี้ CardAction=บัตรเหตุการณ์ -ActionOnCompany=Related company -ActionOnContact=Related contact +ActionOnCompany=บริษัทที่เกี่ยวข้อง +ActionOnContact=ติดต่อที่เกี่ยวข้อง +ActionOnUser=Related user TaskRDVWith=การประชุมกับ% s ShowTask=แสดงงาน ShowAction=เหตุการณ์ที่แสดง ActionsReport=รายงานเหตุการณ์ -ThirdPartiesOfSaleRepresentative=Third parties with sales representative -SaleRepresentativesOfThirdParty=Sales representatives of third party +ThirdPartiesOfSaleRepresentative=บุคคลที่สามกับตัวแทนฝ่ายขาย +SaleRepresentativesOfThirdParty=ตัวแทนฝ่ายขายของบุคคลที่สาม SalesRepresentative=ตัวแทนขาย SalesRepresentatives=พนักงานขาย SalesRepresentativeFollowUp=ตัวแทนขาย (ติดตาม) @@ -29,8 +30,8 @@ ShowCustomer=แสดงลูกค้า ShowProspect=แสดงความคาดหวัง ListOfProspects=รายชื่อลูกค้าเป้าหมาย ListOfCustomers=รายชื่อของลูกค้า -LastDoneTasks=Latest %s completed actions -LastActionsToDo=Oldest %s not completed actions +LastDoneTasks=การดำเนินการที่เสร็จสิ้นแล้ว %s ล่าสุด +LastActionsToDo=%s ที่เก่าที่สุดยังไม่ดำเนินการให้เสร็จสิ้น DoneAndToDoActions=เสร็จสมบูรณ์และการทำเช่นเหตุการณ์ที่เกิดขึ้น DoneActions=เหตุการณ์ที่เสร็จสมบูรณ์ ToDoActions=เหตุการณ์ที่ไม่สมบูรณ์ @@ -47,43 +48,55 @@ LastProspectToContact=หากต้องการติดต่อ LastProspectContactInProcess=ในขั้นตอนการติดต่อ LastProspectContactDone=ติดต่อทำ ActionAffectedTo=เหตุการณ์ได้รับมอบหมายให้ -ActionDoneBy=เหตุการณ์กระทำโดย ActionAC_TEL=โทรศัพท์ ActionAC_FAX=ส่งแฟ็กซ์ ActionAC_PROP=ส่งข้อเสนอทางไปรษณีย์ ActionAC_EMAIL=ส่งอีเมล์ -ActionAC_EMAIL_IN=Reception of Email +ActionAC_EMAIL_IN=การรับอีเมล์ ActionAC_RDV=การประชุม ActionAC_INT=การแทรกแซงในเว็บไซต์ ActionAC_FAC=ส่งใบแจ้งหนี้ลูกค้าทางไปรษณีย์ ActionAC_REL=ส่งใบแจ้งหนี้ลูกค้าโดยทางไปรษณีย์ (เตือน) ActionAC_CLO=ใกล้ ActionAC_EMAILING=ส่งอีเมลมวล -ActionAC_COM=Send sales order by mail +ActionAC_COM=ส่งคำสั่งซื้อขายทางไปรษณีย์ ActionAC_SHIP=ส่งจัดส่งทางไปรษณีย์ -ActionAC_SUP_ORD=Send purchase order by mail -ActionAC_SUP_INV=Send vendor invoice by mail +ActionAC_SUP_ORD=ส่งคำสั่งซื้อทางไปรษณีย์ +ActionAC_SUP_INV=ส่งใบแจ้งหนี้ของผู้ขายทางไปรษณีย์ ActionAC_OTH=อื่น ๆ -ActionAC_OTH_AUTO=Other auto -ActionAC_MANUAL=Events inserted manually (by a user) -ActionAC_AUTO=Events inserted automatically +ActionAC_OTH_AUTO=รถยนต์อื่นๆ +ActionAC_MANUAL=แทรกเหตุการณ์ด้วยตนเอง (โดยผู้ใช้) +ActionAC_AUTO=เหตุการณ์แทรกโดยอัตโนมัติ ActionAC_OTH_AUTOShort=อื่น ๆ -ActionAC_EVENTORGANIZATION=Event organization events +ActionAC_EVENTORGANIZATION=งานอีเว้นท์การจัดงาน Stats=สถิติการขาย StatusProsp=สถานะ Prospect DraftPropals=ข้อเสนอในเชิงพาณิชย์ร่าง -NoLimit=No limit -ToOfferALinkForOnlineSignature=Link for online signature -WelcomeOnOnlineSignaturePageProposal=Welcome to the page to accept commercial proposals from %s -WelcomeOnOnlineSignaturePageContract=Welcome to %s Contract PDF Signing Page -WelcomeOnOnlineSignaturePageFichinter=Welcome to %s Intervention PDF Signing Page -ThisScreenAllowsYouToSignDocFromProposal=This screen allow you to accept and sign, or refuse, a quote/commercial proposal -ThisScreenAllowsYouToSignDocFromContract=This screen allow you to sign contract on PDF format online. -ThisScreenAllowsYouToSignDocFromFichinter=This screen allow you to sign intervention on PDF format online. -ThisIsInformationOnDocumentToSignProposal=This is information on document to accept or refuse -ThisIsInformationOnDocumentToSignContract=This is information on contract to sign -ThisIsInformationOnDocumentToSignFichinter=This is information on intervention to sign -SignatureProposalRef=Signature of quote/commercial proposal %s -SignatureContractRef=Signature of contract %s -SignatureFichinterRef=Signature of intervention %s -FeatureOnlineSignDisabled=Feature for online signing disabled or document generated before the feature was enabled +NoLimit=ไม่มีขีด จำกัด +ToOfferALinkForOnlineSignature=ลิงค์สำหรับลายเซ็นออนไลน์ +WelcomeOnOnlineSignaturePageProposal=ยินดีต้อนรับสู่เพจเพื่อยอมรับข้อเสนอเชิงพาณิชย์จาก %s +WelcomeOnOnlineSignaturePageContract=ยินดีต้อนรับสู่ %s หน้าลงนามสัญญา PDF +WelcomeOnOnlineSignaturePageFichinter=ยินดีต้อนรับสู่ %s หน้าการลงนาม PDF การแทรกแซง +WelcomeOnOnlineSignaturePageSociete_rib=ยินดีต้อนรับสู่ %s หน้าลงนามในคำสั่ง PDF ของ SEPA +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page +ThisScreenAllowsYouToSignDocFromProposal=หน้าจอนี้อนุญาตให้คุณยอมรับและลงนามหรือปฏิเสธข้อเสนอใบเสนอราคา/เชิงพาณิชย์ +ThisScreenAllowsYouToSignDocFromContract=หน้าจอนี้ช่วยให้คุณสามารถเซ็นสัญญาในรูปแบบ PDF ออนไลน์ได้ +ThisScreenAllowsYouToSignDocFromFichinter=หน้าจอนี้อนุญาตให้คุณลงนามการแทรกแซงในรูปแบบ PDF ออนไลน์ +ThisScreenAllowsYouToSignDocFromSociete_rib=หน้าจอนี้อนุญาตให้คุณลงนามในหนังสือมอบอำนาจ SEPA ในรูปแบบ PDF ทางออนไลน์ +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. +ThisIsInformationOnDocumentToSignProposal=นี่คือข้อมูลในเอกสารที่จะยอมรับหรือปฏิเสธ +ThisIsInformationOnDocumentToSignContract=นี่คือข้อมูลเกี่ยวกับสัญญาที่จะลงนาม +ThisIsInformationOnDocumentToSignFichinter=นี่คือข้อมูลเกี่ยวกับการแทรกแซงที่จะลงนาม +ThisIsInformationOnDocumentToSignSociete_rib=นี่คือข้อมูลเกี่ยวกับอาณัติ SEPA ที่จะลงนาม +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign +SignatureProposalRef=ลายเซ็นของใบเสนอราคา/ข้อเสนอเชิงพาณิชย์ %s +SignatureContractRef=ลายเซ็นของสัญญา %s +SignatureFichinterRef=ลายเซ็นของการแทรกแซง %s +SignatureSociete_ribRef=ลายเซ็นของอาณัติ SEPA %s +FeatureOnlineSignDisabled=คุณลักษณะสำหรับการลงนามแบบออนไลน์ถูกปิดใช้งานหรือเอกสารที่สร้างขึ้นก่อนที่จะเปิดใช้งานคุณลักษณะนี้ +NoSignature=ไม่ได้ลงนาม +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/th_TH/datapolicy.lang b/htdocs/langs/th_TH/datapolicy.lang index d757f8c6fa3..97237e17180 100644 --- a/htdocs/langs/th_TH/datapolicy.lang +++ b/htdocs/langs/th_TH/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = นโยบายความเป็นส่วนตัวของข้อมูล # Module description 'ModuledatapolicyDesc' Module4100Desc = โมดูลในการจัดการความเป็นส่วนตัวของข้อมูล (สอดคล้องกับ GDPR) - -# # Administration page -# datapolicySetup = การตั้งค่านโยบายความเป็นส่วนตัวของข้อมูลโมดูล Deletion = การลบข้อมูล datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = ผู้มีแนวโน้มจะ DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = หรือผู้มีโอกาสเป็นลูกค้า/หรือลูกค้า DATAPOLICY_CONTACT_FOURNISSEUR = ผู้ผลิต DATAPOLICY_ADHERENT = สมาชิก -DATAPOLICY_Tooltip_SETUP = ประเภทการติดต่อ - ระบุตัวเลือกของคุณสำหรับแต่ละประเภท -DATAPOLICYMail = การตั้งค่าอีเมล -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = เนื้อหาของอีเมล -DATAPOLICYSUBSITUTION = คุณสามารถใช้ตัวแปรต่อไปนี้ในอีเมลของคุณ (LINKACCEPT อนุญาตให้สร้างลิงก์บันทึกข้อตกลงของบุคคลนั้น LINKREFUSED ทำให้สามารถบันทึกการปฏิเสธของบุคคลนั้นได้): -DATAPOLICYACCEPT = ข้อความหลังจากข้อตกลง -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = คุณสามารถส่งอีเมล GDPR ไปยังผู้ติดต่อที่เกี่ยวข้องทั้งหมดของคุณ (ผู้ที่ยังไม่ได้รับอีเมลและคุณยังไม่ได้ลงทะเบียนอะไรเกี่ยวกับข้อตกลง GDPR ของพวกเขา) เมื่อต้องการทำเช่นนี้ ใช้ปุ่มต่อไปนี้ SendAgreement = ส่งอีเมลล์ AllAgreementSend = ส่งอีเมลทั้งหมดแล้ว TXTLINKDATAPOLICYACCEPT = ข้อความสำหรับลิงก์ "ข้อตกลง" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR : การประมวลผลข้อมูลส่วนบุคคล DATAPOLICY_consentement = ได้รับความยินยอมในการประมวลผลข้อมูลส่วนบุคคล DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = ไม่เปิดเผยชื่อบุคคลที่สาม -DATAPOLICY_POPUP_ANONYME_TEXTE = คุณไม่สามารถลบผู้ติดต่อนี้ออกจาก Dolibarr ได้เนื่องจากมีรายการที่เกี่ยวข้องกัน ตาม GDPR คุณจะเปิดเผยข้อมูลทั้งหมดนี้โดยไม่เปิดเผยตัวตนเพื่อเคารพภาระผูกพันของคุณ คุณต้องการดำเนินการต่อหรือไม่? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = การพกพา GDPR -DATAPOLICY_PORTABILITE_TITLE = การส่งออกข้อมูลส่วนบุคคล -DATAPOLICY_PORTABILITE_CONFIRMATION = คุณต้องการส่งออกข้อมูลส่วนบุคคลของผู้ติดต่อรายนี้ คุณแน่ใจไหม ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = ไม่ระบุชื่อ %s - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = ส่งอีเมล GDPR MailSent = ได้ส่งอีเมล - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/th_TH/dict.lang b/htdocs/langs/th_TH/dict.lang index 3f381c5dcda..9f4e5e75f2b 100644 --- a/htdocs/langs/th_TH/dict.lang +++ b/htdocs/langs/th_TH/dict.lang @@ -21,7 +21,7 @@ CountryNL=เนเธอร์แลนด์ CountryHU=ฮังการี CountryRU=รัสเซีย CountrySE=สวีเดน -CountryCI=Ivory Coast +CountryCI=ชายฝั่งงาช้าง CountrySN=ประเทศเซเนกัล CountryAR=อาร์เจนตินา CountryCM=แคเมอรูน @@ -116,7 +116,7 @@ CountryHM=ได้ยินและเกาะ McDonald CountryVA=พระเห็น (นครรัฐวาติกัน) CountryHN=ฮอนดูรัส CountryHK=ฮ่องกง -CountryIS=Iceland +CountryIS=ไอซ์แลนด์ CountryIN=อินเดีย CountryID=อินโดนีเซีย CountryIR=อิหร่าน @@ -131,15 +131,15 @@ CountryKI=ประเทศคิริบาส CountryKP=เกาหลีเหนือ CountryKR=เกาหลีใต้ CountryKW=คูเวต -CountryKG=Kyrgyzstan +CountryKG=คีร์กีซสถาน CountryLA=ลาว CountryLV=ลัตเวีย CountryLB=ประเทศเลบานอน CountryLS=เลโซโท CountryLR=ประเทศไลบีเรีย -CountryLY=Libya +CountryLY=ลิเบีย CountryLI=Liechtenstein -CountryLT=Lithuania +CountryLT=ลิทัวเนีย CountryLU=ลักเซมเบิร์ก CountryMO=มาเก๊า CountryMK=มาซิโดเนียอ​​ดีตยูโกสลาเวีย @@ -158,9 +158,9 @@ CountryMX=เม็กซิโก CountryFM=ไมโครนีเซีย CountryMD=มอลโดวา CountryMN=ประเทศมองโกเลีย -CountryMS=Monserrat +CountryMS=มอนต์เซอร์รัต CountryMZ=โมซัมบิก -CountryMM=Myanmar (Burma) +CountryMM=เมียนมาร์ (พม่า) CountryNA=นามิเบีย CountryNR=นาอูรู CountryNP=เนปาล @@ -223,7 +223,7 @@ CountryTO=ตองกา CountryTT=ตรินิแดดและโตเบโก CountryTR=ตุรกี CountryTM=เติร์กเมนิสถาน -CountryTC=Turks and Caicos Islands +CountryTC=หมู่เกาะเติกส์และหมู่เกาะเคคอส CountryTV=ตูวาลู CountryUG=ยูกันดา CountryUA=ยูเครน @@ -247,7 +247,7 @@ CountryJE=นิวเจอร์ซีย์ CountryME=มอนเตเนโก CountryBL=เซนต์บาร์เธเล CountryMF=เซนต์มาร์ติน -CountryXK=Kosovo +CountryXK=โคโซโว ##### Civilities ##### CivilityMME=นาง @@ -280,7 +280,7 @@ CurrencySingMGA=มาลากาซี CurrencyMUR=รูปีมอริเชียส CurrencySingMUR=รูปีมอริเชียส CurrencyNOK=นอร์เวย์ Krones -CurrencySingNOK=Norwegian kronas +CurrencySingNOK=โครนานอร์เวย์ CurrencyTND=ดินาร์ตูนิเซีย CurrencySingTND=ดีนาร์ตูนิเซีย CurrencyUSD=สกุลเงินดอลลาร์สหรัฐ @@ -293,10 +293,10 @@ CurrencyXOF=CFA ฟรังก์ BCEAO CurrencySingXOF=ฟรังก์ BCEAO CurrencyXPF=ฟรังก์ CFP CurrencySingXPF=ฟรังก์ CFP -CurrencyCentEUR=cents +CurrencyCentEUR=เซนต์ CurrencyCentSingEUR=ร้อย -CurrencyCentINR=paisa -CurrencyCentSingINR=เซนต์ +CurrencyCentINR=เซนต์ +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=ที่พัน #### Input reasons ##### DemandReasonTypeSRC_INTE=อินเทอร์เน็ต @@ -310,7 +310,7 @@ DemandReasonTypeSRC_WOM=มุขบาฐ DemandReasonTypeSRC_PARTNER=หุ้นส่วน DemandReasonTypeSRC_EMPLOYEE=ลูกจ้าง DemandReasonTypeSRC_SPONSORING=การประกัน -DemandReasonTypeSRC_SRC_CUSTOMER=Incoming contact of a customer +DemandReasonTypeSRC_SRC_CUSTOMER=การติดต่อเข้ามาของลูกค้า #### Paper formats #### PaperFormatEU4A0=รูปแบบ 4A0 PaperFormatEU2A0=รูปแบบ 2A0 @@ -333,30 +333,30 @@ PaperFormatCAP5=รูปแบบ P5 แคนาดา PaperFormatCAP6=รูปแบบ P6 แคนาดา #### Expense report categories #### ExpAutoCat=รถ -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 +ExpCycloCat=จักรยานยนต์ +ExpMotoCat=รถมอเตอร์ไซค์ +ExpAuto3CV=3 ประวัติย่อ +ExpAuto4CV=4 ประวัติย่อ +ExpAuto5CV=5 ประวัติย่อ +ExpAuto6CV=6 ประวัติย่อ +ExpAuto7CV=7 ประวัติย่อ +ExpAuto8CV=8 ประวัติย่อ +ExpAuto9CV=9 ประวัติย่อ +ExpAuto10CV=10 ประวัติย่อ +ExpAuto11CV=11 ประวัติย่อ +ExpAuto12CV=12 ซีวี +ExpAuto3PCV=3 CV และมากกว่านั้น +ExpAuto4PCV=4 CV และอีกมากมาย +ExpAuto5PCV=5 CV และอีกมากมาย +ExpAuto6PCV=6 CV และอีกมากมาย +ExpAuto7PCV=7 CV และอีกมากมาย +ExpAuto8PCV=8 CV และอีกมากมาย +ExpAuto9PCV=9 CV และอีกมากมาย +ExpAuto10PCV=10 CV และอีกมากมาย +ExpAuto11PCV=11 CV และอีกมากมาย +ExpAuto12PCV=12 CV และอีกมากมาย +ExpAuto13PCV=13 CV และอีกมากมาย +ExpCyclo=ความจุต่ำกว่า 50 ซม.3 +ExpMoto12CV=มอเตอร์ไซค์ 1 หรือ 2 CV +ExpMoto345CV=รถมอเตอร์ไซค์ 3, 4 หรือ 5 CV +ExpMoto5PCV=รถมอเตอร์ไซค์ 5 CV และอื่นๆ diff --git a/htdocs/langs/th_TH/errors.lang b/htdocs/langs/th_TH/errors.lang index 080a80daec8..ad4ed27d515 100644 --- a/htdocs/langs/th_TH/errors.lang +++ b/htdocs/langs/th_TH/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=ผู้ใช้จะต้องได้รั ErrorTaskAlreadyAssigned=งานมอบหมายให้กับผู้ใช้แล้ว ErrorModuleFileSeemsToHaveAWrongFormat=ดูเหมือนว่าแพ็คเกจโมดูลจะมีรูปแบบที่ไม่ถูกต้อง ErrorModuleFileSeemsToHaveAWrongFormat2=ต้องมีไดเรกทอรีบังคับอย่างน้อยหนึ่งรายการใน zip ของโมดูล: %s หรือ %s -ErrorFilenameDosNotMatchDolibarrPackageRules=ชื่อของแพ็คเกจโมดูล (%s) ไม่ตรงกัน ไวยากรณ์ชื่อที่ต้องการ: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=เกิดข้อผิดพลาด ชื่อทริกเกอร์ซ้ำ %s โหลดแล้วจาก %s ErrorNoWarehouseDefined=เกิดข้อผิดพลาด ไม่มีการกำหนดคลังสินค้า ErrorBadLinkSourceSetButBadValueForRef=ลิงค์ที่คุณใช้ไม่ถูกต้อง มีการกำหนด 'แหล่งที่มา' สำหรับการชำระเงิน แต่ค่าสำหรับ 'อ้างอิง' ไม่ถูกต้อง @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/th_TH/mails.lang b/htdocs/langs/th_TH/mails.lang index dcddca62ef2..aa2719033e5 100644 --- a/htdocs/langs/th_TH/mails.lang +++ b/htdocs/langs/th_TH/mails.lang @@ -32,6 +32,8 @@ NewMailing=ส่งอีเมลใหม่ NewSMSing=New smsing EditMailing=แก้ไขการส่งอีเมล ResetMailing=ส่งการส่งอีเมล +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=ลบการส่งอีเมล PreviewMailing=ส่งอีเมลตัวอย่าง CreateMailing=สร้างการส่งอีเมล @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=ผู้รับอีเมล์เป็นที WarningNoEMailsAdded=ไม่มีอีเมล์ใหม่เพื่อเพิ่มรายชื่อของผู้รับ ConfirmValidMailing=คุณแน่ใจหรือไม่ว่าต้องการตรวจสอบอีเมลนี้ ConfirmResetMailing=คำเตือน เมื่อเริ่มต้นการส่งอีเมลอีกครั้ง %s คุณจะอนุญาต การส่งอีเมลนี้ซ้ำในการจัดส่งทางไปรษณีย์จำนวนมาก คุณแน่ใจหรือไม่ว่าต้องการทำเช่นนี้? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=คุณแน่ใจหรือไม่ว่าต้องการลบอีเมลนี้ NbOfUniqueEMails=จำนวนอีเมลที่ไม่ซ้ำ NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=ไม่มีผู้รับที่จะส่ EmailOptedOut=เจ้าของอีเมลขอไม่ติดต่อเขาด้วยอีเมลนี้อีกต่อไป EvenUnsubscribe=รวมอีเมลบอกเลิก EvenUnsubscribeDesc=รวมอีเมลบอกเลิกเมื่อคุณเลือกอีเมลเป็นเป้าหมาย มีประโยชน์สำหรับอีเมลบริการที่จำเป็นเช่น -XEmailsDoneYActionsDone=%s อีเมลที่ผ่านการคัดเลือกล่วงหน้า, อีเมล %s ประมวลผลสำเร็จแล้ว (สำหรับบันทึก %s /การกระทำเสร็จแล้ว) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/th_TH/stripe.lang b/htdocs/langs/th_TH/stripe.lang index ef79b6c51ee..8a8aec1b48e 100644 --- a/htdocs/langs/th_TH/stripe.lang +++ b/htdocs/langs/th_TH/stripe.lang @@ -1,71 +1,90 @@ # 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 +StripeSetup=การตั้งค่าโมดูลแถบ +StripeDesc=นำเสนอหน้าการชำระเงินออนไลน์แก่ลูกค้าของคุณสำหรับการชำระเงินด้วยบัตรเครดิต/เดบิตผ่าน Stripe สามารถใช้เพื่อให้ลูกค้าของคุณสามารถชำระเงินเฉพาะกิจหรือสำหรับการชำระเงินที่เกี่ยวข้องกับวัตถุ Dolibarr เฉพาะ (ใบแจ้งหนี้ คำสั่งซื้อ ...) +StripeOrCBDoPayment=ชำระเงินด้วยบัตรเครดิตหรือแถบ FollowingUrlAreAvailableToMakePayments=URL ต่อไปนี้จะพร้อมที่จะให้หน้าให้กับลูกค้าที่จะทำให้การชำระเงินบนวัตถุ Dolibarr PaymentForm=รูปแบบการชำระเงิน -WelcomeOnPaymentPage=Welcome to our online payment service +WelcomeOnPaymentPage=ยินดีต้อนรับสู่บริการชำระเงินออนไลน์ของเรา ThisScreenAllowsYouToPay=หน้าจอนี้จะช่วยให้คุณสามารถชำระเงินออนไลน์ไปยัง% s ThisIsInformationOnPayment=นี้เป็นข้อมูลเกี่ยวกับการชำระเงินที่จะทำ ToComplete=ให้เสร็จสมบูรณ์ YourEMail=ส่งอีเมล์ถึงจะได้รับการยืนยันการชำระเงิน -STRIPE_PAYONLINE_SENDEMAIL=Email notification after a payment attempt (success or fail) +STRIPE_PAYONLINE_SENDEMAIL=การแจ้งเตือนทางอีเมลหลังจากพยายามชำระเงิน (สำเร็จหรือล้มเหลว) Creditor=เจ้าหนี้ PaymentCode=รหัสการชำระเงิน -StripeDoPayment=Pay with Stripe -YouWillBeRedirectedOnStripe=You will be redirected on secured Stripe page to input you credit card information +StripeDoPayment=ชำระเงินด้วยลาย +YouWillBeRedirectedOnStripe=คุณจะถูกเปลี่ยนเส้นทางไปที่หน้า Stripe ที่ปลอดภัยเพื่อป้อนข้อมูลบัตรเครดิตของคุณ Continue=ถัดไป ToOfferALinkForOnlinePayment=สำหรับการชำระเงิน URL% s -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. +ToOfferALinkForOnlinePaymentOnOrder=URL ที่จะเสนอ %s หน้าการชำระเงินออนไลน์สำหรับใบสั่งขาย +ToOfferALinkForOnlinePaymentOnInvoice=URL ที่จะเสนอ %s หน้าการชำระเงินออนไลน์สำหรับใบแจ้งหนี้ของลูกค้า +ToOfferALinkForOnlinePaymentOnContractLine=URL ที่จะเสนอหน้าการชำระเงินออนไลน์ %s สำหรับรายละเอียดสัญญา +ToOfferALinkForOnlinePaymentOnFreeAmount=URL ที่จะนำเสนอหน้าการชำระเงินออนไลน์ %s ในจำนวนเงินเท่าใดก็ได้โดยไม่มีออบเจ็กต์ที่มีอยู่ +ToOfferALinkForOnlinePaymentOnMemberSubscription=URL ที่จะเสนอ %s หน้าการชำระเงินออนไลน์สำหรับการสมัครสมาชิก +ToOfferALinkForOnlinePaymentOnDonation=URL ที่จะเสนอ %s หน้าการชำระเงินออนไลน์สำหรับการชำระค่าบริจาค +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. +SetupStripeToHavePaymentCreatedAutomatically=ตั้งค่า Stripe ของคุณด้วย url %s เพื่อให้ระบบสร้างการชำระเงินโดยอัตโนมัติเมื่อ ตรวจสอบโดย Stripe AccountParameter=พารามิเตอร์บัญชี UsageParameter=พารามิเตอร์การใช้งาน InformationToFindParameters=ช่วยในการหาข้อมูลเกี่ยวกับบัญชีของคุณ s% -STRIPE_CGI_URL_V2=Url of Stripe CGI module for payment +STRIPE_CGI_URL_V2=URL ของโมดูล Stripe CGI สำหรับการชำระเงิน CSSUrlForPaymentForm=รูปแบบ CSS url ของแผ่นสำหรับรูปแบบการชำระเงิน -NewStripePaymentReceived=New Stripe payment received -NewStripePaymentFailed=New Stripe payment tried but failed -FailedToChargeCard=Failed to charge card -STRIPE_TEST_SECRET_KEY=Secret test key -STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key -STRIPE_TEST_WEBHOOK_KEY=Webhook test key -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 +NewStripePaymentReceived=ได้รับการชำระเงินแถบใหม่แล้ว +NewStripePaymentFailed=พยายามชำระเงิน New 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 live (มิฉะนั้นจะทดสอบโหมด / แซนด์บ็อกซ์) +StripeImportPayment=นำเข้าการชำระเงินลาย +ExampleOfTestCreditCard=ตัวอย่างบัตรเครดิตสำหรับการชำระเงินทดสอบ: %s => valid, %s => error CVC, %s => หมดอายุ %s => การเรียกเก็บเงินล้มเหลว +ExampleOfTestBankAcountForSEPA=ตัวอย่างการห้ามบัญชีธนาคารสำหรับการทดสอบการหักบัญชีธนาคาร: %s +StripeGateways=เกตเวย์ลาย +OAUTH_STRIPE_TEST_ID=รหัสไคลเอ็นต์ Stripe Connect (ca_...) +OAUTH_STRIPE_LIVE_ID=รหัสไคลเอ็นต์ Stripe Connect (ca_...) +BankAccountForBankTransfer=บัญชีธนาคารสำหรับการจ่ายเงินกองทุน +StripeAccount=บัญชีลาย +StripeChargeList=รายการค่าธรรมเนียม Stripe +StripeTransactionList=รายการธุรกรรม Stripe +StripeCustomerId=รหัสลูกค้าแถบ +StripePaymentId=รหัสการชำระเงินลาย +StripePaymentModes=โหมดการชำระเงินแบบแถบ +LocalID=รหัสท้องถิ่น +StripeID=รหัสแถบ +NameOnCard=ชื่อบนบัตร +CardNumber=หมายเลขบัตร +ExpiryDate=วันหมดอายุ +CVN=ซีวีเอ็น +DeleteACard=ลบการ์ด +ConfirmDeleteCard=คุณแน่ใจหรือไม่ว่าต้องการลบบัตรเครดิตหรือเดบิตนี้ +CreateCustomerOnStripe=สร้างลูกค้าบน Stripe +CreateCardOnStripe=สร้างการ์ดบน Stripe +CreateBANOnStripe=สร้างธนาคารบน Stripe +ShowInStripe=แสดงในแถบ +StripeUserAccountForActions=บัญชีผู้ใช้ที่จะใช้สำหรับการแจ้งเตือนทางอีเมลเกี่ยวกับเหตุการณ์ Stripe บางอย่าง (การจ่ายเงินแบบ Stripe) +StripePayoutList=รายการการจ่ายเงินแบบ Stripe +ToOfferALinkForTestWebhook=ลิงก์ไปยังการตั้งค่า Stripe WebHook เพื่อเรียก IPN (โหมดทดสอบ) +ToOfferALinkForLiveWebhook=ลิงก์ไปยังการตั้งค่า Stripe WebHook เพื่อเรียก IPN (โหมดสด) +PaymentWillBeRecordedForNextPeriod=การชำระเงินจะถูกบันทึกไว้สำหรับงวดถัดไป +ClickHereToTryAgain=คลิกที่นี่เพื่อลองอีกครั้ง... +CreationOfPaymentModeMustBeDoneFromStripeInterface=เนื่องจากกฎการตรวจสอบลูกค้าที่เข้มงวด การสร้างการ์ดจะต้องดำเนินการจากฝ่ายหลังของ Stripe คุณสามารถคลิกที่นี่เพื่อเปิดบันทึกลูกค้า Stripe: %s +STRIPE_CARD_PRESENT=บัตรของขวัญสำหรับ Stripe Terminals +TERMINAL_LOCATION=ที่ตั้ง (ที่อยู่) สำหรับ Stripe Terminals +RequestDirectDebitWithStripe=ขอหักบัญชีเงินฝากอัตโนมัติด้วย Stripe +RequesCreditTransferWithStripe=Request Credit Transfer with Stripe +STRIPE_SEPA_DIRECT_DEBIT=เปิดใช้งานการชำระเงินแบบหักบัญชีธนาคารผ่าน Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT +StripeConnect_Mode=โหมดการเชื่อมต่อแบบแถบ +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/tr_TR/admin.lang b/htdocs/langs/tr_TR/admin.lang index 6fd3997a685..bbaf5888519 100644 --- a/htdocs/langs/tr_TR/admin.lang +++ b/htdocs/langs/tr_TR/admin.lang @@ -459,7 +459,7 @@ ExtrafieldSelectList=Tablodan seç ExtrafieldSeparator=Ayırıcı (bir alan değil) ExtrafieldPassword=Parola ExtrafieldRadio=Radio buttons (1 choice only) -ExtrafieldCheckBox=Select list (n choices) +ExtrafieldCheckBox=Seçim listesi (seçeneklerde) ExtrafieldCheckBoxFromList=Select from table (n choices) ExtrafieldLink=Bir nesneye bağlantı ExtrafieldPointGeo=Geometrik Nokta @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Değerlerin listesi, biçim anahtarı ve değeri olan ExtrafieldParamHelpcheckbox=Değerler listesi, biçim anahtarı ve değeri olan satırlar olmalıdır (burada anahtar '0' olamaz)

örneğin:
1, değer1
2,değer2
3,değer3
... ExtrafieldParamHelpradio=Değerler listesi, biçim anahtarı ve değeri olan satırlar olmalıdır (burada anahtar '0' olamaz)

örneğin:
1,değer1
2,değer2
3,değer3
... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametreler NesneAdı olmalıdır: Sınıfyolu
Sözdizimi:NesneAdı:Sınıfyolu ObjectName:Classpath ExtrafieldParamHelpSeparator=Basit bir ayırıcı için boş tut
Daraltılan ayırıcı için bunu 1 olarak ayarlayın (yeni oturum için varsayılan olarak açılır, ardından her kullanıcı oturumu için durum tutulur)
Daraltılan ayırıcı için bunu 2 olarak ayarlayın (varsayılan olarak daraltıldı yeni oturum, ardından durum her kullanıcı oturumu için tutulur) LibraryToBuildPDF=PDF oluşturmada kullanılan kütüphane @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s ve ardından karakter sayısı ile kesilmi ModuleCompanyCodeSupplierDigitaria=%s ve ardından karakter sayısı ile kesilmiş tedarikçi adı:%s tedarikçi muhasebe kodu için. Use3StepsApproval=Varsayılan olarak, Tedarikçi Siparişlerinin 2 farklı kullanıcı tarafından oluşturulması ve onaylanması gerekir (bir adım/kullanıcı oluşturacak ve bir adım/kullanıcı onaylayacak. Kullanıcının hem oluşturma hem de onaylama izni varsa, bir adım/kullanıcı yeterli olacaktır). Miktar belirli bir değerin üzerindeyse bu seçenekle üçüncü bir adım/kullanıcı onayı vermeyi isteyebilirsiniz (böylece 3 adım zorunlu olacaktır: 1=doğrulama, 2=ilk onay ve 3=miktar yeterli ise ikinci onay).
Tek onay (2 adım) yeterli ise bunu boş olarak ayarlayın, ikinci bir onay (3 adım) her zaman gerekiyorsa çok düşük bir değere ayarlayın (0.1). UseDoubleApproval=Tutar (vergi öncesi) bu tutardan yüksekse 3 aşamalı bir onaylama kullanın... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Bazı E-posta Servis Sağlayıcıları kendi sunucularından başka bir sunucudan e-posta göndermenize izin vermez. Mevcut kurulumunuz e-posta göndermek için uygulama sunucusunu kullanıyor, e-posta sağlayıcınızın sunucusunu değil, bu nedenle bazı alıcılar (kısıtlayıcı DMARC protokolüyle uyumlu olan) e-posta sağlayıcınıza e-postanızı ve bazı e-posta sağlayıcılarını kabul edip edemeyeceklerini soracaktır. (Yahoo gibi), sunucu kendilerine ait olmadığı için "hayır" yanıtını verebilir, bu nedenle, gönderdiğiniz E-postaların çok azı teslim için kabul edilmeyebilir (e-posta sağlayıcınızın gönderme kotasına da dikkat edin). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- E-posta göndermek için kendi E-posta Servis Sağlayıcınızın SMTP sunucusunu kullanmak da ilginçtir, bu nedenle uygulamadan gönderilen tüm e-postalar ayrıca posta kutunuzun "Gönderilen" dizinine kaydedilecektir. WarningPHPMailD=Bu nedenle e-postaların gönderim yönteminin "SMTP" değerine değiştirilmesi tavsiye edilir. WarningPHPMailDbis=If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by %sclicking here%s. 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=Gönderen e-posta adresinizdeki alan adı bir SPF kaydı tarafından korunuyorsa (alan adı kayıt kuruluşunuzdan isteyin), alan adınızın DNS'sinin SPF kaydına aşağıdaki IP'leri eklemeniz gerekir: %s. -ActualMailSPFRecordFound=Gerçek SPF kaydı bulundu (e-posta için %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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 @@ -867,7 +868,7 @@ Permission255=Diğer kullanıcıların şifrelerini değiştir Permission256=Diğer kullanıcıları sil ya da engelle Permission262=Erişimi tüm üçüncü taraflara VE onların nesnelerine (yalnızca kullanıcının satış temsilcisi olarak bağlı olduğu üçüncü taraflara değil) genişletin. Permission262b=Harici kullanıcılar için etkili değildir (teklifler, siparişler, faturalar, sözleşmeler vb. için her zaman kendileriyle sınırlıdır). -Permission262c=Projeler için etkili değildir (yalnızca proje izinleri, görünürlük ve atamayla ilgili kurallar). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Nesneleri OLMADAN tüm Cari erişimi genişletin (yalnızca kullanıcının satış temsilcisi olduğu cariler değil).
Harici kullanıcılar için etkili değildir (teklifler, siparişler, faturalar, sözleşmeler vb. İçin her zaman kendileriyle sınırlıdır).
Projeler için etkili değildir (yalnızca proje izinleri, görünürlük ve atama konularıyla ilgili kurallar). Permission271=CA oku Permission272=Fatura oku @@ -944,7 +945,7 @@ Permission776=Ödeme gider raporu Permission777=Tüm gider raporlarını okuyun (ast olmayan kullanıcılara ait olanlar bile) Permission778=Herkesin gider raporlarını oluşturun/değiştirin Permission779=Gider raporlarını dışa aktar -Permission1001=Stok oku +Permission1001=Read warehouses and stocks Permission1002=Depo oluştur/değiştir Permission1003=Depo sil Permission1004=Stok hareketlerini oku @@ -2032,7 +2033,7 @@ MinimumNoticePeriod=Enaz bildirim süresi (İzin isteğiniz bu süreden önce ya NbAddedAutomatically=Her ay (otomatik olarak) bu kullanıcının sayacına eklenen gün sayısı EnterAnyCode=Bu alan, çizgiyi tanımlamak için bir referans içerir. Seçtiğiniz herhangi bir değeri, ancak özel karakterler olmadan girin. Enter0or1=0 veya 1 girin -EnterYesOrNo=Enter Yes or No +EnterYesOrNo=Evet veya Hayır girin UnicodeCurrency=Buraya parantezlerin arasına para birimi sembolünü temsil eden bayt numaralarının listesini girin. Örneğin: $ için [36] girin - Türk Lirası TL [84,76] - € için [8364] girin ColorFormat=RGB rengi HEX formatındadır, örn: FF0000 PictoHelp=Şu biçimde simge adı:
- geçerli tema dizinindeki bir resim dosyası için image.png
- image.png@module dosya bir modülün /img/ dizinindeyse
- FontAwesome fa-xxx picto için fa-xxx
- FontAwesome fa-xxx resmi için fontawesome_xxx_fa_color_size (ön ek, renk ve boyut ayarlı) @@ -2126,7 +2127,7 @@ MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Satırlara resim eklenmesi halinde sütunun ge MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=Teklif taleplerinde birim fiyat sütununu gizle MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=Teklif taleplerinde toplam fiyat sütununu gizle MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=Satınalma siparişlerinde birim fiyat sütununu gizle -MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on purchase orders +MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Satınalma siparişlerinde toplam fiyat sütununu gizle MAIN_PDF_NO_SENDER_FRAME=Gönderen adresi çerçevesindeki sınırları gizle MAIN_PDF_NO_RECIPENT_FRAME=Alıcı adres çerçevesindeki kenarlıkları gizle MAIN_PDF_HIDE_CUSTOMER_CODE=Müşteri kodunu gizle @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Değeri temizlemek için normal ifade filtresi (CO DuplicateForbidden=Kopyalanması yasaktır RemoveSpecialWords=Müşteriler veya tedarikçiler için alt hesaplar oluştururken belirli kelimeleri temizleyin RemoveSpecialWordsHelp=Müşteri veya tedarikçi hesabını hesaplamadan önce temizlenmesi gereken kelimeleri belirtin. Kullanın ";" her kelimenin arasında -GDPRContact=Veri Koruma Görevlisi (DPO, Veri Gizliliği veya GDPR kişisi) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Kişisel verilerinizi Bilgi Sisteminizde saklıyorsanız, Genel Veri Koruma Yönetmeliği'nden sorumlu olan kişinin adını buradan verebilirsiniz. HelpOnTooltip=Araç ipucunda gösterilecek yardım metni HelpOnTooltipDesc=Bu alan bir formda göründüğünde metnin bir araç ipucunda gösterilmesi için buraya metin veya çeviri anahtarı koyun @@ -2218,7 +2219,7 @@ CreateCandidature=İş başvurusu oluştur FormatZip=Posta Kodu MainMenuCode=Menü giriş kodu (ana menü) ECMAutoTree=Otomatik ECM ağacını göster -OperationParamDesc=Bazı verileri ayıklamak veya işlem için kullanılacak değerleri ayarlamak için kullanılacak kuralları tanımlayın.

Şirket adını ayıklama örneği e-posta konusunu geçici bir değişkene ekleyin:
tmp_var=EXTRACT:SUBJECT:Şirketten mesaj ([^\n]*)

Oluşturulacak bir nesnenin özelliklerini ayarlamaya yönelik örnekler:
objproperty1=SET:sabit kodlanmış bir değer
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:bir değer (değer yalnızca özellik önceden tanımlanmamışsa ayarlanır)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Şirketimin adı\\ s([^\\s]*)

Birkaç özelliği çıkarmak veya ayarlamak için yeni bir satır kullanın. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Açılış saatleri OpeningHoursDesc=Buraya firmanızın normal çalışma saatlerini girin. ResourceSetup=Kaynak modülünün yapılandırılması @@ -2264,7 +2265,7 @@ LargerThan=Şundan daha büyük IfTrackingIDFoundEventWillBeLinked=E-postada bir nesnenin izleme kimliği bulunursa veya e-posta, önceden toplanmış ve bir nesneye bağlanmış bir e-postanın yanıtıysa, oluşturulan olayın otomatik olarak bilinen ilgili nesneye bağlanacağını unutmayın. WithGMailYouCanCreateADedicatedPassword=GMail hesabıyla, 2 adımlı doğrulamayı etkinleştirdiyseniz https://myaccount.google.com/ adresinden kendi hesap şifrenizi kullanmak yerine uygulamaya özel ikinci bir şifre oluşturmanız önerilir. EmailCollectorTargetDir=Başarılı bir şekilde işlendiğinde e-postayı başka bir etiket/dizinine taşımak istenen bir davranış olabilir. Bu özelliği kullanmak için burada dizinin adını ayarlamanız yeterlidir (Adda özel karakterler KULLANMAYIN). Ayrıca okuma/yazma oturum açma hesabı kullanmanız gerektiğini unutmayın. -EmailCollectorLoadThirdPartyHelp=Veritabanınızda mevcut bir üçüncü tarafı bulmak ve yüklemek amacıyla e-posta içeriğini kullanmak için bu eylemi kullanabilirsiniz (arama, 'id','name','name_alias','email' arasında tanımlanan özellik üzerinde yapılacaktır). Bulunan (veya oluşturulan) üçüncü taraf, gerektiren aşağıdaki işlemler için kullanılacaktır.
Örneğin, ' dizesinden alınan bir adla üçüncü taraf oluşturmak istiyorsanız Ad: bulunacak ad' gövdede mevcut, gönderenin e-postasını e-posta olarak kullanın, parametre alanını şu şekilde ayarlayabilirsiniz:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Uyarı: Pek çok e-posta sunucusu (Gmail gibi) bir dizede arama yaparken tam sözcük araması yapar ve dize yalnızca bir sözcükte kısmen bulunursa sonuç döndürmez. Bu nedenle, arama kriterlerinde özel karakterlerin kullanılması, mevcut kelimelerin parçası olmadıkları sürece göz ardı edilecektir.
Bir kelime üzerinde hariç tutma araması yapmak için (kelime varsa e-postayı döndürün) bulunamadı), ! kelimeden önce karakter (bazı posta sunucularında çalışmayabilir). EndPointFor=%s için bitiş noktası: %s DeleteEmailCollector=E-posta toplayıcıyı sil @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Üçüncü taraf adı - Üçüncü taraf takma adı ALIAS_THIRDPARTY=Üçüncü taraf takma adı - Üçüncü taraf adı PDFIn2Languages=PDF'deki etiketleri 2 farklı dilde göster (bu özellik bazı dillerde çalışmayabilir) 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=Varsayılan format PDF yerine PDF/A formatında PDF belgeleri oluşturun +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Buraya FontAwesome simgesinin kodunu girin. FontAwesome'ın ne olduğunu bilmiyorsanız, fa-address-book genel değerini kullanabilirsiniz. RssNote=Not: Her RSS akışı tanımı, gösterge tablosunda mevcut olması için etkinleştirmeniz gereken bir pencere öğesi sağlar. JumpToBoxes=Kuruluma Atla -> Widget'lar @@ -2395,8 +2396,8 @@ INVOICE_ADD_EPC_QR_CODEMore=Bu özellik, faturalarınıza otomatik SEPA kredi tr INVOICE_ADD_EPC_QR_CODEPay=EPC QR koduyla ödemeyi destekleyen bir akıllı telefonla ödeme yapmak için bu QR kodunu tarayın. INVOICE_SHOW_SHIPPING_ADDRESS=Teslimat adresini göster INVOICE_SHOW_SHIPPING_ADDRESSMore=Bazı ülkelerde zorunlu gösterge (Fransa, ...) -SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Show billing contact on proposal -SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=By default the contact only appears for billing +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Teklifte fatura ilgilisini göster +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=Varsayılan olarak ilgili kişi yalnızca faturalandırma için görünür UrlSocialNetworksDesc=Sosyal ağın URL bağlantısı. Sosyal ağ kimliğini içeren değişken kısmı için {socialid} kullanın. IfThisCategoryIsChildOfAnother=Bu kategori başka bir kategorinin çocuğu ise DarkThemeMode=Koyu tema modu @@ -2528,18 +2529,18 @@ MainAuthenticationOidcAuthorizeUrlName=Authorize URL MainAuthenticationOidcAuthorizeUrlDesc=(example: https://example.com/oauth2/authorize) MainAuthenticationOidcTokenUrlName=Token URL MainAuthenticationOidcTokenUrlDesc=(example: https://example.com/oauth2/token) -MainAuthenticationOidcUserinfoUrlName=User info URL -MainAuthenticationOidcUserinfoUrlDesc=(example: https://example.com/oauth2/userinfo) -MainAuthenticationOidcLogoutUrlName=Logout URL -MainAuthenticationOidcLogoutUrlDesc=(example: https://example.com/oauth2/logout) +MainAuthenticationOidcUserinfoUrlName=Kullanıcı bilgisi URL'si +MainAuthenticationOidcUserinfoUrlDesc=(örneğin: https://orneksite.com/oauth2/userinfo) +MainAuthenticationOidcLogoutUrlName=Oturum kapatma URL'si +MainAuthenticationOidcLogoutUrlDesc=(örneğin: https://orneksite.com/oauth2/logout) MainAuthenticationOidcRedirectUrlName=yönlendirme bağlantısı MainAuthenticationOidcRedirectUrlDesc=Redirect URL to authorize on the OpenID provider side -MainAuthenticationOidcLogoutRedirectUrlName=Dolibarr logout URL +MainAuthenticationOidcLogoutRedirectUrlName=Dolibarr oturum kapatma URL'si MainAuthenticationOidcLogoutRedirectUrlDesc=Dolibarr logout URL to authorize on the OpenID provider side MainAuthenticationOidcLoginClaimName=Login claim MainAuthenticationOidcLoginClaimDesc=OpenID Connect claim matching the Dolibarr user login. If not set or empty, defaults to email -BlackListWords=Black list of words -AddBlackList=Add to black list +BlackListWords=Kelime kara listesi +AddBlackList=Kara listeye ekle FediverseSetup=Configuration of fediverse section ConfigImportSocialNetwork=Configuration of social networks compatible with Fediverse Fediverse=Fediverse @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/tr_TR/commercial.lang b/htdocs/langs/tr_TR/commercial.lang index 94a47123b82..68e713b631b 100644 --- a/htdocs/langs/tr_TR/commercial.lang +++ b/htdocs/langs/tr_TR/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Bu etkinliği silmek istediğinizden emin misiniz? CardAction=Etkinlik kartı ActionOnCompany=İlgili firma ActionOnContact=İlgili kişi +ActionOnUser=Related user TaskRDVWith=%s ile toplantı ShowTask=Görev göster ShowAction=Etkinlik göster @@ -93,3 +94,9 @@ SignatureContractRef=Sözleşmenin imzası %s SignatureFichinterRef=Müdahalenin imzası %s SignatureSociete_ribRef=SEPA Yetkisi İmzası %s FeatureOnlineSignDisabled=Çevrimiçi imzalama özelliği devre dışı bırakıldı veya belge bu özellik etkinleştirilmeden önce oluşturuldu +NoSignature=İmzalanmamış +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/tr_TR/companies.lang b/htdocs/langs/tr_TR/companies.lang index a427e57119a..2cd9e87e0c6 100644 --- a/htdocs/langs/tr_TR/companies.lang +++ b/htdocs/langs/tr_TR/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr kullanıcı adı NoDolibarrAccess=Dolibarr erişimi yok ExportDataset_company_1=Üçüncü Partiler (şirketler/dernekler/şahıslar) ve özellikleri ExportDataset_company_2=Kişiler ve özellikleri +ExportDataset_company_3=Üçüncü Partilerin Banka hesapları ImportDataset_company_1=Üçüncü Partiler ve özellikleri ImportDataset_company_2=Üçücü parti ilave kişileri/adresleri ve nitelikleri ImportDataset_company_3=Üçüncü Partilerin Banka hesapları diff --git a/htdocs/langs/tr_TR/datapolicy.lang b/htdocs/langs/tr_TR/datapolicy.lang index 8659715b044..a23c189c255 100644 --- a/htdocs/langs/tr_TR/datapolicy.lang +++ b/htdocs/langs/tr_TR/datapolicy.lang @@ -33,7 +33,7 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Potansiyel Müşteri/Müşteri DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ne potansiyel müşteri ne de müşteri DATAPOLICY_CONTACT_FOURNISSEUR = Tedarikçi DATAPOLICY_ADHERENT = Üye -DATAPOLICY_Tooltip_SETUP = İletişim türü - Her tür için seçeneklerinizi belirtin. +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = İlgili tüm kişilerinize (henüz bir e-posta almamış olan ve GDPR sözleşmesi hakkında hiçbir şey kaydetmediğiniz) bir GDPR e-postası gönderebilirsiniz. Bunu yapmak için aşağıdaki düğmeyi kullanın. SendAgreement = Mailleri gönder AllAgreementSend = Tüm e-postalar gönderildi diff --git a/htdocs/langs/tr_TR/dict.lang b/htdocs/langs/tr_TR/dict.lang index 3efac6fdecc..20d856a78c0 100644 --- a/htdocs/langs/tr_TR/dict.lang +++ b/htdocs/langs/tr_TR/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=CFP Frangı CurrencySingXPF=CFP Frangı CurrencyCentEUR=kuruş CurrencyCentSingEUR=cent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=thousandth #### Input reasons ##### DemandReasonTypeSRC_INTE=İnternet diff --git a/htdocs/langs/tr_TR/errors.lang b/htdocs/langs/tr_TR/errors.lang index f7439aec162..3ecd43d9f23 100644 --- a/htdocs/langs/tr_TR/errors.lang +++ b/htdocs/langs/tr_TR/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Karcanan zamanı girebilmek için kullanıcı göreve ErrorTaskAlreadyAssigned=Görev zaten kullanıcıya atandı ErrorModuleFileSeemsToHaveAWrongFormat=Modül paketi yanlış bir formata sahip gibi görünüyor. ErrorModuleFileSeemsToHaveAWrongFormat2=Modülün zip dosyasında en az bir zorunlu dizin bulunmalıdır: %s veya %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Modül paketinin adı (%s) olması gereken isim sözdizimi ile eşleşmiyor: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Hata, yinelenen tetikleyici adı %s. Zaten %s'dan yüklendi. ErrorNoWarehouseDefined=Hata, hiçbir depo tanımlanmadı. ErrorBadLinkSourceSetButBadValueForRef=Kullandığınız bağlantı geçerli değil. Ödeme için bir 'kaynak' tanımlandı ancak 'ref' değeri geçerli değil. @@ -422,3 +422,4 @@ OperNotDefined=Ödeme yöntemi tanımlanmadı ErrorThisContactXIsAlreadyDefinedAsThisType=%s zaten bu tür için ilgili kişi olarak tanımlandı. ErrorThisGroupIsAlreadyDefinedAsThisType=Bu gruptaki kişiler zaten bu tür için ilgili kişi olarak tanımlandı. EmptyMessageNotAllowedError=Boş mesaja izin verilmiyor +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/tr_TR/interventions.lang b/htdocs/langs/tr_TR/interventions.lang index 303a623df47..f20cc36baff 100644 --- a/htdocs/langs/tr_TR/interventions.lang +++ b/htdocs/langs/tr_TR/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=Taslak oluştur InterventionContact=Müdahale ilgilisi DeleteIntervention=Müdahale sil ValidateIntervention=Müdahale doğrula +SignIntervention=Müdahale işareti +UnsignIntervention=Unsign intervention ModifyIntervention=Müdahale değiştir CloseIntervention=Yakın müdahale DeleteInterventionLine=Müdahale satırı sil ConfirmDeleteIntervention=Bu müdahaleyi silmek istediğinizden emin misiniz? ConfirmValidateIntervention=Bu müdahaleyi %s adıyla doğrulamak istediğinizden emin misiniz? +ConfirmSignIntervention=Are you sure you want to set this intervention as signed ? +ConfirmUnsignIntervention=Are you sure you want to set this intervention as unsigned ? ConfirmModifyIntervention=Bu müdahaleyi değiştirmek istediğinizden emin misiniz? ConfirmCloseIntervention=Bu müdahaleyi kapatmak istediğinizden emin misiniz? ConfirmDeleteInterventionLine=Bu müdahale satırını silmek istediğinizden emin misiniz? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=Müdahalelere ait müdahaleler ve satırla InterventionClassifyBilled="Faturalandı" olarak sınıflandır InterventionClassifyUnBilled="Faturalanmadı" olarak sınıflandır InterventionClassifyDone="Tamamlandı" olarak sınıflandır +InterventionSign=Set Signed +InterventionUnsign=Set Unsigned SendInterventionRef=%s müdahalesinin sunulması SendInterventionByMail=Müdahaleyi e-posta ile gönder InterventionCreatedInDolibarr=Oluşturulan müdahale %s InterventionValidatedInDolibarr=Doğrulanan müdahale %s +InterventionSignedInDolibarr=Müdahale imzalandı +InterventionSignedOnline=Intervention signed online +InterventionUnsignedInDolibarr=Intervention unsigned InterventionModifiedInDolibarr=Değiştirilen müdahale %s InterventionClassifiedBilledInDolibarr=Faturalandı olarak ayarlanan müdahale %s InterventionClassifiedUnbilledInDolibarr=Faturalanmadı olarak ayarlanan müdahale %s @@ -75,4 +84,4 @@ TypeContact_fichinter_internal_INTERREPFOLL=Müdahale takibinden sorumlu TypeContact_fichinter_internal_INTERVENING=Müdahaleci TypeContact_fichinter_external_BILLING=Müdahale faturalandırmasında müşteri iletişim bilgileri TypeContact_fichinter_external_CUSTOMER=Müşteri iletişim müdahale takibi -NotARecurringInterventionalTemplate=Not a recurring intervention template +NotARecurringInterventionalTemplate=Tekrarlanan bir müdahale şablonu değil diff --git a/htdocs/langs/tr_TR/mails.lang b/htdocs/langs/tr_TR/mails.lang index ada6d764349..c53c038ab01 100644 --- a/htdocs/langs/tr_TR/mails.lang +++ b/htdocs/langs/tr_TR/mails.lang @@ -32,6 +32,8 @@ NewMailing=Yeni e-posta NewSMSing=Yeni SMS EditMailing=E-posta düzenle ResetMailing=E-postayı yeniden gönder +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=E-posta sil PreviewMailing=E-posta önizlemesi CreateMailing=E-posta oluştur @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=E-posta alıcısı boş WarningNoEMailsAdded=Alıcı listesine eklenecek yeni e-posta yok. ConfirmValidMailing=Bu e-postayı doğrulamak istediğinizden emin misiniz? ConfirmResetMailing=Uyarı, %s e-posta gönderme işlemini yeniden başlattığınızda, izin vereceksiniz: Bu e-postanın toplu postayla yeniden gönderilmesi. Bunu yapmak istediğinden emin misin? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Bu e-postayı silmek istediğinizden emin misiniz? NbOfUniqueEMails=Benzersiz e-posta Sayısı NbOfUniquePhones=Benzersiz telefon sayısı @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=E-postayı gönderecek başka alıcı yok EmailOptedOut=E-posta sahibi artık bu e-posta yoluyla kendisiyle iletişime geçmemeyi talep etti EvenUnsubscribe=Devre dışı bırakma e-postalarını dahil et EvenUnsubscribeDesc=Hedef olarak e-postaları seçtiğinizde devre dışı bırakılan e-postaları dahil edin. Örneğin zorunlu hizmet e-postaları için kullanışlıdır. -XEmailsDoneYActionsDone=%s e-postaları ön değerlendirmeye tabi tutuldu, %s e-postaları başarıyla işlendi (%s kaydı için) /işlemler yapıldı) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=E-postanız için bazı talimatlar oluşturabilirsiniz (Örneğin: e-posta şablonunda resim oluşturun...) ModelTemplate=E-posta şablonu YouCanChooseAModelForYouMailContent= Şablon modellerinden birini seçebilir veya AI ile bir tane oluşturabilirsiniz. TitleOfMailHolder=E-postanın başlığı buraya gelecek ContentOfMailHolder=E-postanın içeriği buraya gelecek... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/tr_TR/sendings.lang b/htdocs/langs/tr_TR/sendings.lang index 00a273841e4..721c2960393 100644 --- a/htdocs/langs/tr_TR/sendings.lang +++ b/htdocs/langs/tr_TR/sendings.lang @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=Depoda gönderilecek ürün bulunamadı %s. WeightVolShort=Ağırlık/Hac. ValidateOrderFirstBeforeShipment=Sevkiyatları yapabilmek için önce siparişi doğrulamlısınız. NoLineGoOnTabToAddSome=Satır yok, eklemek için "%s" sekmesine gidin -CreateInvoiceForThisCustomerFromSendings=Fatura gönderimleri +CreateInvoiceForThisCustomerFromSendings=Create Bills IfValidateInvoiceIsNoSendingStayUnbilled=Fatura doğrulaması 'Hayır' ise, fatura doğrulanıncaya kadar gönderim 'Faturalanmamış' durumunda kalacaktır. OptionToSetSendingBilledNotEnabled=Fatura doğrulandığında gönderimi otomatik olarak 'Faturalandı' olarak ayarlamaya yönelik İş Akışı modülündeki seçenek etkin olmaz, dolayısıyla fatura oluşturulduktan sonra gönderimlerin durumunu manuel olarak 'Faturalandı' olarak ayarlamanız gerekecektir. diff --git a/htdocs/langs/tr_TR/stripe.lang b/htdocs/langs/tr_TR/stripe.lang index 6057c7cb12f..89c399b3369 100644 --- a/htdocs/langs/tr_TR/stripe.lang +++ b/htdocs/langs/tr_TR/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=Bir sözleşme satırı için %s çev ToOfferALinkForOnlinePaymentOnFreeAmount=Mevcut bir nesne olmadan, herhangi bir tutarda %s çevrimiçi ödeme sayfası sunan URL ToOfferALinkForOnlinePaymentOnMemberSubscription=Üye aboneliği için %s çevrimiçi ödeme sayfası sunan URL ToOfferALinkForOnlinePaymentOnDonation=Bağışın ödenmesi için %s çevrimiçi ödeme sayfası sunan URL -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) +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) YouCanEmbedOnWebsite=Ödeme sayfasını bir Dolibarr web sitesine entegre etmek istiyorsanız şu parametreyi ekleyebilirsiniz: &ws=website_ref.
Ek olarak, isimlendirilmiş iki sayfa paymentok ve paymentko, başarısız bir çevrimiçi ödeme sonrasında yönlendirmeyi almak için web sitesinde oluşturulmalıdır. SetupStripeToHavePaymentCreatedAutomatically=Ödemenin otomatik olarak oluşturulmasını sağlamak için Stripe'ınızı %s URL'si ile ayarlayın. Stripe tarafından doğrulandı. AccountParameter=Hesap parametreleri diff --git a/htdocs/langs/tr_TR/website.lang b/htdocs/langs/tr_TR/website.lang index f18dd4b1392..0570e64714e 100644 --- a/htdocs/langs/tr_TR/website.lang +++ b/htdocs/langs/tr_TR/website.lang @@ -62,7 +62,7 @@ NoPageYet=Henüz hiç sayfa yok YouCanCreatePageOrImportTemplate=Yeni bir sayfa oluşturabilir veya tam bir web sitesi şablonunu içe aktarabilirsiniz SyntaxHelp=Belirli sözdizimi ipuçları hakkında yardım YouCanEditHtmlSourceckeditor=Düzenleyicideki "Kaynak" düğmesini kullanarak HTML kaynak kodunu düzenleyebilirsiniz -YouCanEditHtmlSource=
<?php ?>etiketlerini kullanarak bu kaynağa PHP kodu ekleyebilirsiniz. Şu global değişkenler kullanılabilir: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

Şu söz dizimi ile başka bir Sayfanın/Kapsayıcının içeriğini de ekleyebilirsiniz:
<?php includeContainer('alias_of_container_to_include'); ?>

Şu söz dizimi ile başka bir Sayfaya/Kapsayıcıya yönlendirme yapabilirsiniz (Not: Yönlendirmeden önce herhangi bir içeriğin çıktısını almayın):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>
GET parametreleriyle de yönlendirme yapabilirsiniz:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

Başka bir sayfaya bağlantı eklemek için şu söz dizimini kullanın:
<a href="alias_of_page_to_link_to.php">mylink<a>

documents dizininde saklanan bir dosya için indirme bağlantısı eklemek istiyorsanız document.php wrapper'ını kullanın:
Örneğin documents/ecm içindeki bir dosya için (oturum açılmış olması gerekir) söz dizimi:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
documents/medias içindeki bir dosya için (genel erişime açık dizin) söz dizimi:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
Bir bağlantıyla paylaşılmış dosya için (dosyanın paylaşım karma anahtarını kullanarak açık erişim) söz dizimi:
<a href="/document.php?hashp=publicsharekeyoffile">
+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'); ?>
You can also make a redirection with GET parameters:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

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

You can dynamically set the page title and SEO meta tags (title, keywords, description). Simply define the following variables:
$__PAGE__TITLE__ = "Title value …";
$__PAGE__KEYWORDS__ = "keyword1, keyword2, keyword3 …"; // Comma separated
$__PAGE__DESC__ = "Description …";


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">
YouCanEditHtmlSource1=
Bir eklemek için resim, belgeler dizininde depolanır , viewimage.php sarmalayıcısını kullanın.
Örnek, şunun için: belgelere/medyalara bir resim (genel erişim için açık dizin), sözdizimi şöyledir:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
YouCanEditHtmlSource2=Bir paylaşım bağlantısıyla paylaşılan bir resim için (dosyanın paylaşım karma anahtarını kullanarak açık erişim), söz dizimi şöyledir:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource3=Bir PHP nesnesinin görüntüsünün URL'sini almak için,
<<<<<<< komutunu kullanın. span>img src="<?php print getImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/uk_UA/admin.lang b/htdocs/langs/uk_UA/admin.lang index 8eeae6570ae..4c9f70e2e9f 100644 --- a/htdocs/langs/uk_UA/admin.lang +++ b/htdocs/langs/uk_UA/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Список значень складається з ExtrafieldParamHelpcheckbox=Список значень повинен складатися з рядків з форматом ключ,значення (де ключ не може бути "0")

, наприклад:
1,значення1
2,значення2
3,значення3
... ExtrafieldParamHelpradio=Список значень повинен складатися з рядків з форматом ключ,значення (де ключ не може бути "0")

, наприклад:
1,значення1
2,значення2
3,значення3
... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Параметри мають бути ObjectName:Classpath
Синтаксис: ObjectName:Classpath ExtrafieldParamHelpSeparator=Залиште пустим для простого роздільника
Встановіть значення 1 для роздільника, що згортається (відкривається за замовчуванням для нового сеансу, потім статус зберігається для кожного сеансу користувача)
Встановіть значення 2 для роздільника, що згортається (згорнутий за замовчуванням для нового сеансу, потім статус зберігається для кожного сеансу користувача) LibraryToBuildPDF=Бібліотека, яка використовується для генерації PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, за яким слід усечене і ModuleCompanyCodeSupplierDigitaria=%s, а потім усічене ім'я постачальника за кількістю символів: %s для коду обліку постачальника. Use3StepsApproval=За замовчуванням замовлення на покупку мають створювати та затверджувати 2 різні користувачі (один крок/користувач для створення і один крок/користувач для схвалення. Зверніть увагу, що якщо користувач має обидва дозволи на створення та схвалення, буде достатньо одного кроку/користувача) . Ви можете попросити за допомогою цієї опції ввести третій крок/схвалення користувача, якщо сума перевищує визначене значення (тому знадобляться 3 кроки: 1=перевірка, 2=перше схвалення та 3=друге схвалення, якщо суми достатньо).
Встановіть значення пустим, якщо достатньо одного схвалення (2 кроки), установіть дуже низьке значення (0,1), якщо завжди потрібне друге затвердження (3 кроки). UseDoubleApproval=Використовуйте 3-етапне схвалення, коли сума (без податку) перевищує... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Деякі постачальники послуг електронної пошти (наприклад, Yahoo) не дозволяють надсилати електронні листи з іншого сервера, ніж їх власний сервер. Ваші поточні налаштування використовує сервер програми для надсилання електронної пошти, а не сервер вашого постачальника послуг електронної пошти, тому деякі одержувачі (сумісний з обмежувальним протоколом DMARC) запитуватимуть вашого постачальника електронної пошти, чи можуть вони прийняти вашу електронну пошту та деякі постачальники електронної пошти. (наприклад, Yahoo) може відповісти "ні", тому що сервер не належить їм, тому деякі з ваших надісланих електронних листів можуть не прийматися для доставки (також будьте обережні щодо квоти надсилання вашого постачальника послуг електронної пошти). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Використання SMTP-сервера вашого власного постачальника послуг електронної пошти для надсилання електронних листів також є цікавим, тому всі листи, надіслані з програми, також будуть збережені у вашому каталозі «Відправлені» вашої поштової скриньки. WarningPHPMailD=Тому рекомендується змінити метод надсилання електронних листів на значення "SMTP". WarningPHPMailDbis=Якщо ви справді хочете зберегти стандартний метод "PHP" для надсилання електронних листів, просто проігноруйте це попередження або видаліть його, %sклацнувши тут%s. WarningPHPMail2=Якщо вашому постачальнику послуг електронної пошти SMTP потрібно обмежити клієнта електронної пошти деякими IP-адресами (дуже рідко), це IP-адреса поштового агента користувача (MUA) для вашої програми ERP CRM: %s . -WarningPHPMailSPF=Якщо доменне ім’я у вашій адресі електронної пошти відправника захищене записом SPF (запитайте ваш реєстр доменних імен), ви повинні додати такі IP-адреси в SPF-запис DNS вашого домену: %s . -ActualMailSPFRecordFound=Фактичний запис SPF знайдено (для електронної пошти %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=Натисніть, щоб показати опис DependsOn=Цей модуль потребує модуля(ів) RequiredBy=Цей модуль необхідний для модуля(ів) @@ -867,7 +868,7 @@ Permission255=Змінити пароль інших користувачів Permission256=Видалити або вимкнути інших користувачів Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Розширити доступ всім третім особам БЕЗ їхніх об’єктів (а не тільки третім особам, для яких користувач є торговим представником).
Не ефективно для зовнішніх користувачів (завжди обмежуються ними для пропозицій, замовлень, рахунків-фактур, контрактів тощо).
Не ефективно для проектів (має значення лише правила щодо дозволів проекту, видимості та призначення). Permission271=Прочитайте CA Permission272=Прочитайте рахунки-фактури @@ -944,7 +945,7 @@ Permission776=Оплатити звіти про витрати Permission777=Читати всі звіти про витрати (навіть звіти користувачів, які не є підлеглими) Permission778=Створюйте/змінюйте звіти про витрати для кожного Permission779=Експортні звіти про витрати -Permission1001=Читайте акції +Permission1001=Read warehouses and stocks Permission1002=Створювати/змінювати склади Permission1003=Видалити склади Permission1004=Прочитайте рух акцій @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Фільтр регулярних виразів DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Очистіть певні слова під час створення субрахунків для клієнтів або постачальників RemoveSpecialWordsHelp=Укажіть слова, які потрібно очистити перед розрахунком рахунку клієнта або постачальника. Використовуйте ";" між кожним словом -GDPRContact=Офіцер із захисту даних (DPO, конфіденційність даних або GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Якщо ви зберігаєте персональні дані у своїй інформаційній системі, тут ви можете назвати контактну особу, відповідальну за Загальний регламент захисту даних HelpOnTooltip=Текст довідки для відображення у підказці HelpOnTooltipDesc=Введіть тут текст або ключ перекладу, щоб текст відображався у підказці, коли це поле з’явиться у формі @@ -2218,7 +2219,7 @@ CreateCandidature=Створити заявку на роботу FormatZip=Застібка на блискавці MainMenuCode=Код входу в меню (головне меню) ECMAutoTree=Показати автоматичне дерево ECM -OperationParamDesc=Визначте правила для видобування деяких даних або встановіть значення для роботи.

Приклад вилучення назви компанії з тему електронного листа в тимчасову змінну:
tmp_var=EXTRACT:SUBJECT:Повідомлення від компанії ([^\n]*)

Приклади встановлення властивостей об’єкта для створення:
objproperty1=SET:твердо закодоване значення
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:значення (значення встановлено, лише якщо властивість ще не визначено)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Назва моєї компанії\\ s([^\\s]*)

Використовуйте новий рядок, щоб отримати або встановити кілька властивостей. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Години роботи OpeningHoursDesc=Введіть тут звичайні години роботи вашої компанії. ResourceSetup=Конфігурація модуля ресурсів @@ -2264,7 +2265,7 @@ LargerThan=Більший за IfTrackingIDFoundEventWillBeLinked=Зверніть увагу: якщо в електронному листі знайдено ідентифікатор відстеження об’єкта або якщо електронний лист є відповіддю на електронний лист, який уже зібрано та пов’язано з об’єктом, створена подія буде автоматично пов’язана з відомим пов’язаним об’єктом. WithGMailYouCanCreateADedicatedPassword=В обліковому записі GMail, якщо ви ввімкнули 2-етапну перевірку, рекомендується створити спеціальний другий пароль для програми замість використання власного пароля облікового запису на https://myaccount.google.com/. EmailCollectorTargetDir=Може бути бажаною поведінкою перемістити електронний лист до іншого тегу/каталогу після його успішної обробки. Просто введіть назву каталогу тут, щоб використовувати цю функцію (НЕ використовуйте спеціальні символи в назві). Зверніть увагу, що ви також повинні використовувати обліковий запис для читання/запису. -EmailCollectorLoadThirdPartyHelp=Ви можете використати цю дію, щоб використати вміст електронної пошти для пошуку та завантаження існуючої третьої сторони у вашій базі даних (пошук здійснюватиметься за визначеною властивістю серед «id», «name», «name_alias», «email»). Знайдена (або створена) третя сторона буде використана для наступних дій, які її потребують.
Наприклад, якщо ви хочете створити третю сторону з іменем, витягнутим із рядка ' Ім’я: ім’я для пошуку» представлено в тілі, використовуйте електронну адресу відправника як електронну адресу, ви можете налаштувати поле параметра так:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Попередження: багато серверів електронної пошти (наприклад, Gmail) виконують повний пошук слів під час пошуку в рядку та не повертають результат, якщо рядок знайдено лише частково у слові. З цієї причини використання спеціальних символів у критеріях пошуку також ігноруватиметься, якщо вони не є частиною існуючих слів.
Щоб виключити пошук за словом (повернути електронний лист, якщо слово не знайдено), ви можете використовувати ! перед словом (може не працювати на деяких поштових серверах). EndPointFor=Кінцева точка для %s : %s DeleteEmailCollector=Видалити збірник електронної пошти @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Ім'я контрагент - псевдонім контра ALIAS_THIRDPARTY=контрагент псевдонім - контрагент ім'я PDFIn2Languages=Показувати мітки у PDF-файлі двома різними мовами (ця функція може не працювати для кількох мов) PDF_USE_ALSO_LANGUAGE_CODE=Якщо ви хочете, щоб деякі тексти у вашому PDF-файлі були продубльовані двома різними мовами в одному згенерованому PDF-файлі, ви повинні встановити тут цю другу мову, щоб згенерований PDF-файл містив 2 різні мови на одній сторінці, одну, вибрану під час створення PDF-файлу, і цю ( лише кілька шаблонів PDF підтримують це). Залиште порожнім для 1 мови для PDF. -PDF_USE_A=Створюйте документи PDF у форматі PDF/A замість стандартного формату PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Введіть тут код значка FontAwesome. Якщо ви не знаєте, що таке FontAwesome, ви можете використовувати загальне значення fa-address-book. RssNote=Примітка. Кожне визначення RSS-каналу містить віджет, який потрібно ввімкнути, щоб він був доступним на інформаційній панелі JumpToBoxes=Перейдіть до Налаштування -> Віджети @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/uk_UA/datapolicy.lang b/htdocs/langs/uk_UA/datapolicy.lang index 273217e8255..69af5188fb8 100644 --- a/htdocs/langs/uk_UA/datapolicy.lang +++ b/htdocs/langs/uk_UA/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,13 +15,10 @@ Module4100Name = Політика конфіденційності даних # Module description 'ModuledatapolicyDesc' Module4100Desc = Модуль для керування конфіденційністю даних (відповідність GDPR) - -# # Administration page -# datapolicySetup = Налаштування політики конфіденційності даних модуля Deletion = Видалення даних -datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). +datapolicySetupPage = Залежно від законодавства вашої країни (приклад стаття 5 GDPR), персональні дані повинні зберігатися певний період не перевищуючи періоду, протягом якого дані потрібні для мети, для якої вони були зібрані, за винятком цілей архівування.
Видалення буде виконано автоматично через певний час без подій (тривалість які ви вкажете нижче). NB_MONTHS = %s місяців ONE_YEAR = 1 рік NB_YEARS = %s років @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Потенційний клієнт DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Ні перспектива/Ні клієнт DATAPOLICY_CONTACT_FOURNISSEUR = Постачальник DATAPOLICY_ADHERENT = Член -DATAPOLICY_Tooltip_SETUP = Тип контакту - вкажіть свій вибір для кожного типу. -DATAPOLICYMail = Налаштування електронної пошти -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Зміст електронного листа -DATAPOLICYSUBSITUTION = Ви можете використовувати такі змінні у своїй електронній пошті (LINKACCEPT дозволяє створити посилання, що фіксує згоду особи, LINKREFUSED дає змогу зафіксувати відмову особи): -DATAPOLICYACCEPT = Повідомлення після узгодження -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Ви можете надіслати електронний лист GDPR усім своїм відповідним контактам (які ще не отримали електронний лист і для яких ви нічого не зареєстрували щодо їх угоди GDPR). Для цього скористайтеся наступною кнопкою. SendAgreement = Надсилайте електронні листи AllAgreementSend = Усі листи надіслано TXTLINKDATAPOLICYACCEPT = Текст для посилання "договір" -TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# +TXTLINKDATAPOLICYREFUSE = Текст для посилання "незгода" # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: Обробка персональних даних DATAPOLICY_consentement = Отримана згода на обробку персональних даних -DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Анонімність третьої особи -DATAPOLICY_POPUP_ANONYME_TEXTE = Ви не можете видалити цей контакт із Dolibarr, оскільки є пов’язані елементи. Відповідно до GDPR ви зробите всі ці дані анонімними, щоб виконувати свої зобов’язання. Ви б хотіли продовжити? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Портативність GDPR -DATAPOLICY_PORTABILITE_TITLE = Експорт персональних даних -DATAPOLICY_PORTABILITE_CONFIRMATION = Ви хочете експортувати особисті дані цього контакту. Ти впевнений ? - -# +DATAPOLICY_opposition_traitement = Виступає проти обробки своїх персональних даних +DATAPOLICY_opposition_prospection = Заперечує проти обробки своїх персональних даних для цілей пошуку # Notes added during an anonymization -# -ANONYMISER_AT = Анонімно %s - -DATAPOLICY_date = Date of agreement/disagreement GDPR -DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Надіслати електронний лист GDPR +DATAPOLICY_date = Дата згоди/незгоди GDPR +DATAPOLICY_send = Електронний лист про дату угоди надіслано MailSent = Повідомлення було відправлено - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion +NUMBER_MONTH_BEFORE_DELETION = Кількість місяців до видалення diff --git a/htdocs/langs/uk_UA/dict.lang b/htdocs/langs/uk_UA/dict.lang index 48f985ae580..d5372bd4e1a 100644 --- a/htdocs/langs/uk_UA/dict.lang +++ b/htdocs/langs/uk_UA/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=франки CFP CurrencySingXPF=франк CFP CurrencyCentEUR=центів CurrencyCentSingEUR=цент -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=тисячний #### Input reasons ##### DemandReasonTypeSRC_INTE=Інтернет diff --git a/htdocs/langs/uk_UA/errors.lang b/htdocs/langs/uk_UA/errors.lang index 6967650258e..c4e2016971f 100644 --- a/htdocs/langs/uk_UA/errors.lang +++ b/htdocs/langs/uk_UA/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Користувача потрібно призна ErrorTaskAlreadyAssigned=Завдання вже призначено користувачеві ErrorModuleFileSeemsToHaveAWrongFormat=Здається, пакет модуля має неправильний формат. ErrorModuleFileSeemsToHaveAWrongFormat2=Принаймні один обов'язковий каталог повинен існувати в zip модуля: %s або %s a706 -ErrorFilenameDosNotMatchDolibarrPackageRules=Назва пакета модуля ( %s ) не відповідає очікуваному синтаксису імені: a0ecb2ec87f49fzd0 a019 +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Помилка, дублікат імені тригера %s. Вже завантажено з %s. ErrorNoWarehouseDefined=Помилка, склади не визначені. ErrorBadLinkSourceSetButBadValueForRef=Посилання, яке ви використовуєте, недійсне. "Джерело" для платежу визначено, але значення для "посилання" недійсне. @@ -422,3 +422,4 @@ OperNotDefined=Спосіб оплати не визначено ErrorThisContactXIsAlreadyDefinedAsThisType=%s уже визначено як контакт для цього типу. ErrorThisGroupIsAlreadyDefinedAsThisType=Контакти з цією групою вже визначені як контакти для цього типу. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/uk_UA/mails.lang b/htdocs/langs/uk_UA/mails.lang index a0683c0c53a..bf3641b53b9 100644 --- a/htdocs/langs/uk_UA/mails.lang +++ b/htdocs/langs/uk_UA/mails.lang @@ -32,6 +32,8 @@ NewMailing=Нове листування NewSMSing=Нові смс EditMailing=Редагувати електронну пошту ResetMailing=Повторно надіслати електронний лист +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Видалити електронні листи PreviewMailing=Попередній перегляд електронної пошти CreateMailing=Створити електронну пошту @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Одержувач електронної пошти WarningNoEMailsAdded=Немає нових електронних адрес, які можна додати до списку одержувачів. ConfirmValidMailing=Ви впевнені, що хочете підтвердити цей електронний лист? ConfirmResetMailing=Попередження, повторно ініціалізувавши електронний лист %s , ви дозволите повторно надіслати цей електронний лист у масовій розсилці. Ви впевнені, що хочете це зробити? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Ви впевнені, що хочете видалити це повідомлення електронної пошти? NbOfUniqueEMails=Кількість унікальних електронних листів NbOfUniquePhones=Кількість унікальних телефонів @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Більше немає одержувача, якому EmailOptedOut=Власник електронної пошти попросив більше не звертатися до нього за цією електронною адресою EvenUnsubscribe=Додайте електронні листи для відмови EvenUnsubscribeDesc=Включайте електронні листи для відмови, коли ви обираєте електронні листи як цільові. Корисно, наприклад, для обов’язкових службових електронних листів. -XEmailsDoneYActionsDone=%s електронні листи попередньо кваліфіковані, %s електронні листи успішно оброблено (для запису %s /виконані дії) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Ви можете створити деякі інструкції для своєї електронної пошти (приклад: створити зображення в шаблоні електронної пошти...) ModelTemplate=Шаблон електронної пошти YouCanChooseAModelForYouMailContent= Ви можете вибрати одну з моделей шаблонів або створити її за допомогою ШІ TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/uk_UA/stripe.lang b/htdocs/langs/uk_UA/stripe.lang index 1900406034e..406e7ba3924 100644 --- a/htdocs/langs/uk_UA/stripe.lang +++ b/htdocs/langs/uk_UA/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL-адреса, щоб запроп ToOfferALinkForOnlinePaymentOnFreeAmount=URL-адреса, щоб запропонувати сторінку онлайн-платежів %s будь-якої суми без наявного об’єкта ToOfferALinkForOnlinePaymentOnMemberSubscription=URL-адреса, щоб запропонувати сторінку онлайн-платежів %s за підписку члена ToOfferALinkForOnlinePaymentOnDonation=URL-адреса, щоб запропонувати сторінку онлайн-платежів %s для оплати пожертвування -YouCanAddTagOnUrl=Ви також можете додати параметр URL-адреси &tag= значення до будь-якої з цих URL-адрес (обов'язковий лише для платежу, не пов'язаного з тегом коментаря платежу).
Для URL платежів без існуючого об'єкта ви також можете додати параметр &noidempotency=1 , щоб одне й те саме посилання з тим самим тегом можна було використовувати кілька разів (деякі режими оплати можуть обмежувати платіж для кожного окремого посилання без цього 1 параметр) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Налаштуйте свій Stripe за URL-адресою %s , щоб платіж створювався автоматично після підтвердження Stripe. AccountParameter=Параметри рахунку UsageParameter=Параметри використання @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Розташування (адреса) терміналів S RequestDirectDebitWithStripe=Запит на прямий дебет за допомогою Stripe RequesCreditTransferWithStripe=Запит на переказ кредиту за допомогою Stripe STRIPE_SEPA_DIRECT_DEBIT=Увімкніть платежі прямим дебетом через Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=Режим Stripe Connect +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/ur_PK/admin.lang b/htdocs/langs/ur_PK/admin.lang index f74e0b4a67c..d92b54bc44f 100644 --- a/htdocs/langs/ur_PK/admin.lang +++ b/htdocs/langs/ur_PK/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=اقدار کی فہرست شکل کلید کے سات ExtrafieldParamHelpcheckbox=اقدار کی فہرست فارمیٹ کلید کے ساتھ لائنوں میں ہونی چاہیے، ویلیو (جہاں کلید '0' نہیں ہو سکتی)

مثال کے طور پر:
1,value1

a0342fda19bz0 2,342fdavalue... ExtrafieldParamHelpradio=اقدار کی فہرست فارمیٹ کلید کے ساتھ لائنوں میں ہونی چاہیے، ویلیو (جہاں کلید '0' نہیں ہو سکتی)

مثال کے طور پر:
1,value1

a0342fda19bz0 2,342fdavalue... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=پیرامیٹرز کا ہونا ضروری ہے ObjectName:Classpath
نحو: ObjectName:Classpath ExtrafieldParamHelpSeparator=ایک سادہ سیپریٹر کے لیے خالی رکھیں اسٹیٹس کو ہر صارف کے سیشن کے لیے رکھا جاتا ہے) LibraryToBuildPDF=لائبریری PDF جنریشن کے لیے استعمال ہوتی ہے۔ @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s کے بعد حروف کی تعداد کے ModuleCompanyCodeSupplierDigitaria=%s اس کے بعد حروف کی تعداد کے لحاظ سے کٹا ہوا سپلائر کا نام: سپلائر اکاؤنٹنگ کوڈ کے لیے %s۔ Use3StepsApproval=پہلے سے طے شدہ طور پر، خریداری کے آرڈرز کو 2 مختلف صارفین کے ذریعے تخلیق اور منظور کرنے کی ضرورت ہے (ایک قدم/صارف تخلیق کرنے کے لیے اور ایک قدم/صارف کو منظور کرنے کے لیے۔ نوٹ کریں کہ اگر صارف کے پاس تخلیق اور منظوری دونوں کی اجازت ہے، تو ایک قدم/صارف کافی ہوگا) . آپ اس اختیار کے ساتھ تیسرا مرحلہ/صارف کی منظوری متعارف کرانے کے لیے کہہ سکتے ہیں، اگر رقم وقف شدہ قدر سے زیادہ ہے (لہذا 3 مراحل ضروری ہوں گے: 1=توثیق، 2=پہلی منظوری اور 3=دوسری منظوری اگر رقم کافی ہے)۔
اسے خالی پر سیٹ کریں اگر ایک منظوری (2 قدم) کافی ہے، اسے بہت کم قیمت (0.1) پر سیٹ کریں اگر دوسری منظوری (3 مراحل) کی ہمیشہ ضرورت ہو۔ UseDoubleApproval=جب رقم (بغیر ٹیکس) سے زیادہ ہو تو 3 مراحل کی منظوری کا استعمال کریں... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- کچھ ای میل سروس فراہم کرنے والے (جیسے Yahoo) آپ کو اپنے سرور کے بجائے کسی دوسرے سرور سے ای میل بھیجنے کی اجازت نہیں دیتے ہیں۔ آپ کا موجودہ سیٹ اپ ای میل بھیجنے کے لیے ایپلیکیشن کے سرور کا استعمال کرتا ہے نہ کہ آپ کے ای میل فراہم کنندہ کا سرور، اس لیے کچھ وصول کنندگان (جو پابندی والے DMARC پروٹوکول کے ساتھ مطابقت رکھتا ہے) آپ کے ای میل فراہم کنندہ سے پوچھیں گے کہ کیا وہ آپ کی ای میل اور کچھ ای میل فراہم کنندگان کو قبول کر سکتے ہیں۔ (جیسے Yahoo) "نہیں" میں جواب دے سکتا ہے کیونکہ سرور ان کا نہیں ہے، اس لیے آپ کی بھیجی گئی ای میلز میں سے کچھ کو ڈیلیوری کے لیے قبول نہیں کیا جا سکتا ہے (اپنے ای میل فراہم کنندہ کے بھیجنے کے کوٹے سے بھی محتاط رہیں)۔ +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- ای میلز بھیجنے کے لیے آپ کے اپنے ای میل سروس پرووائیڈر کے SMTP سرور کا استعمال کرنا بھی دلچسپ ہے اس لیے ایپلی کیشن سے بھیجی گئی تمام ای میلز آپ کے میل باکس کی "بھیجی گئی" ڈائرکٹری میں بھی محفوظ ہو جائیں گی۔ WarningPHPMailD=اس لیے ای میل بھیجنے کے طریقے کو "SMTP" کی قدر میں تبدیل کرنے کی سفارش کی جاتی ہے۔ WarningPHPMailDbis=اگر آپ واقعی ای میلز بھیجنے کے لیے پہلے سے طے شدہ "PHP" طریقہ کو برقرار رکھنا چاہتے ہیں، تو صرف اس انتباہ کو نظر انداز کریں، یا اسے %sیہاں کلک کرکے ہٹا دیں%s۔ WarningPHPMail2=اگر آپ کے ای میل SMTP فراہم کنندہ کو ای میل کلائنٹ کو کچھ IP پتوں تک محدود کرنے کی ضرورت ہے (بہت کم)، یہ آپ کی ERP CRM درخواست کے لیے میل صارف ایجنٹ (MUA) کا IP پتہ ہے: %s ۔ -WarningPHPMailSPF=اگر آپ کے بھیجنے والے کے ای میل ایڈریس میں موجود ڈومین کا نام SPF ریکارڈ کے ذریعے محفوظ ہے (اپنے ڈومین نام کے رجسٹرار سے پوچھیں)، تو آپ کو اپنے ڈومین کے DNS کے SPF ریکارڈ میں درج ذیل آئی پیز کو شامل کرنا ہوگا: %s a0a65d071f6f6fz0. -ActualMailSPFRecordFound=اصل SPF ریکارڈ ملا (ای میل %s کے لیے): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=تفصیل دکھانے کے لیے کلک کریں۔ DependsOn=اس ماڈیول کو ماڈیول کی ضرورت ہے RequiredBy=یہ ماڈیول ماڈیول (زبانوں) کو درکار ہے @@ -867,7 +868,7 @@ Permission255=دوسرے صارفین کے پاس ورڈ میں ترمیم کر Permission256=دوسرے صارفین کو حذف یا غیر فعال کریں۔ Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=تمام فریق ثالث تک رسائی ان کی اشیاء کے بغیر بڑھائیں (صرف تیسرے فریق ہی نہیں جن کے لیے صارف فروخت کا نمائندہ ہے)۔
بیرونی صارفین کے لیے مؤثر نہیں ہے (ہمیشہ تجاویز، آرڈرز، انوائسز، معاہدوں وغیرہ کے لیے خود تک محدود)۔
پراجیکٹس کے لیے موثر نہیں ہے (صرف پراجیکٹ کی اجازتوں، مرئیت اور تفویض کے معاملات پر اصول)۔ Permission271=CA پڑھیں Permission272=رسیدیں پڑھیں @@ -944,7 +945,7 @@ Permission776=اخراجات کی رپورٹیں ادا کریں۔ Permission777=تمام اخراجات کی رپورٹیں پڑھیں (یہاں تک کہ وہ صارف جو ماتحت نہیں ہیں) Permission778=ہر ایک کے اخراجات کی رپورٹیں بنائیں/ترمیم کریں۔ Permission779=اخراجات کی رپورٹیں برآمد کریں۔ -Permission1001=اسٹاک پڑھیں +Permission1001=Read warehouses and stocks Permission1002=گودام بنائیں/ترمیم کریں۔ Permission1003=گوداموں کو حذف کریں۔ Permission1004=اسٹاک کی نقل و حرکت پڑھیں @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=کلین ویلیو کے لیے ریجیکس فل DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=گاہکوں یا سپلائرز کے لیے ذیلی اکاؤنٹس بناتے وقت کچھ الفاظ صاف کریں۔ RemoveSpecialWordsHelp=گاہک یا سپلائر کے اکاؤنٹ کا حساب لگانے سے پہلے صاف کیے جانے والے الفاظ کی وضاحت کریں۔ استعمال کریں "؛" ہر لفظ کے درمیان -GDPRContact=ڈیٹا پروٹیکشن آفیسر (ڈی پی او، ڈیٹا پرائیویسی یا جی ڈی پی آر رابطہ) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=اگر آپ اپنے انفارمیشن سسٹم میں ذاتی ڈیٹا اسٹور کرتے ہیں، تو آپ اس رابطہ کا نام دے سکتے ہیں جو یہاں جنرل ڈیٹا پروٹیکشن ریگولیشن کے لیے ذمہ دار ہے۔ HelpOnTooltip=ٹول ٹپ پر دکھانے کے لیے متن کی مدد کریں۔ HelpOnTooltipDesc=جب یہ فیلڈ فارم میں ظاہر ہوتا ہے تو ٹول ٹپ میں متن دکھانے کے لیے متن یا ترجمہ کی کلید یہاں رکھیں @@ -2218,7 +2219,7 @@ CreateCandidature=ملازمت کی درخواست بنائیں FormatZip=زپ MainMenuCode=مینو انٹری کوڈ (مین مینو) ECMAutoTree=خودکار ECM درخت دکھائیں۔ -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=ابتدائی گھنٹے OpeningHoursDesc=اپنی کمپنی کے باقاعدہ کھلنے کے اوقات یہاں درج کریں۔ ResourceSetup=وسائل کے ماڈیول کی ترتیب @@ -2264,7 +2265,7 @@ LargerThan=سے بڑا IfTrackingIDFoundEventWillBeLinked=نوٹ کریں کہ اگر ای میل میں کسی آبجیکٹ کی ٹریکنگ آئی ڈی پائی جاتی ہے، یا اگر ای میل پہلے سے جمع کردہ اور کسی آبجیکٹ سے منسلک ای میل کا جواب ہے، تو تخلیق شدہ واقعہ خود بخود معلوم متعلقہ آبجیکٹ سے منسلک ہو جائے گا۔ WithGMailYouCanCreateADedicatedPassword=GMail اکاؤنٹ کے ساتھ، اگر آپ نے 2 مراحل کی توثیق کو فعال کیا ہے، تو یہ تجویز کیا جاتا ہے کہ https://myaccount.google.com/ سے اپنے اکاؤنٹ کا پاس ورڈ استعمال کرنے کے بجائے ایپلیکیشن کے لیے ایک وقف شدہ دوسرا پاس ورڈ بنائیں۔ EmailCollectorTargetDir=یہ ایک مطلوبہ رویہ ہو سکتا ہے کہ ای میل کو کسی دوسرے ٹیگ/ڈائریکٹری میں منتقل کر دیا جائے جب اس پر کامیابی سے کارروائی ہو جائے۔ اس فیچر کو استعمال کرنے کے لیے صرف ڈائرکٹری کا نام یہاں سیٹ کریں (نام میں خصوصی حروف کا استعمال نہ کریں)۔ نوٹ کریں کہ آپ کو پڑھنا/لکھنا لاگ ان اکاؤنٹ بھی استعمال کرنا چاہیے۔ -EmailCollectorLoadThirdPartyHelp=آپ اپنے ڈیٹا بیس میں موجود تیسرے فریق کو تلاش کرنے اور لوڈ کرنے کے لیے ای میل کے مواد کو استعمال کرنے کے لیے اس کارروائی کا استعمال کر سکتے ہیں (تلاش 'id', 'name', 'name_alias', 'email' کے درمیان متعین پراپرٹی پر کی جائے گی)۔ پایا (یا تخلیق کردہ) فریق ثالث کو مندرجہ ذیل کارروائیوں کے لیے استعمال کیا جائے گا جن کو اس کی ضرورت ہے۔
مثال کے طور پر، اگر آپ سٹرنگ سے نکالے گئے نام کے ساتھ تھرڈ پارٹی بنانا چاہتے ہیں۔ نام: تلاش کرنے کے لیے نام' باڈی میں موجود ہے، بھیجنے والے کے ای میل کو بطور ای میل استعمال کریں، آپ پیرامیٹر فیلڈ کو اس طرح سیٹ کر سکتے ہیں:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=انتباہ: بہت سارے ای میل سرورز (جیسے جی میل) کسی سٹرنگ پر تلاش کرتے وقت مکمل الفاظ کی تلاش کر رہے ہیں اور اگر سٹرنگ صرف جزوی طور پر کسی لفظ میں پائی جاتی ہے تو نتیجہ واپس نہیں آئے گا۔ اس وجہ سے بھی، تلاش کے معیار میں خصوصی حروف کا استعمال نظر انداز کر دیا جائے گا اگر وہ موجودہ الفاظ کا حصہ نہیں ہیں۔
کسی لفظ کو خارج کرنے کے لیے (اگر لفظ ہو تو ای میل واپس کریں) نہیں ملا)، آپ استعمال کر سکتے ہیں! لفظ سے پہلے کا کردار (ہو سکتا ہے کچھ میل سرورز پر کام نہ کرے)۔ EndPointFor=%s کے لیے اختتامی نقطہ : %s DeleteEmailCollector=ای میل کلیکٹر کو حذف کریں۔ @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=تھرڈ پارٹی کا نام - تھرڈ پارٹی عرف ALIAS_THIRDPARTY=تھرڈ پارٹی عرف - تھرڈ پارٹی کا نام PDFIn2Languages=پی ڈی ایف میں لیبلز کو 2 مختلف زبانوں میں دکھائیں (ہو سکتا ہے یہ فیچر کچھ زبانوں کے لیے کام نہ کرے) PDF_USE_ALSO_LANGUAGE_CODE=اگر آپ چاہتے ہیں کہ آپ کی پی ڈی ایف میں کچھ متن ایک ہی جنریٹڈ پی ڈی ایف میں 2 مختلف زبانوں میں ڈپلیکیٹ ہوں، تو آپ کو یہاں یہ دوسری زبان سیٹ کرنی ہوگی تاکہ جنریٹ کی گئی پی ڈی ایف ایک ہی صفحہ میں 2 مختلف زبانوں پر مشتمل ہو، جو پی ڈی ایف بنانے کے وقت منتخب کی گئی ہو اور یہ ( صرف چند پی ڈی ایف ٹیمپلیٹس اس کی حمایت کرتے ہیں)۔ فی پی ڈی ایف 1 زبان کے لیے خالی رکھیں۔ -PDF_USE_A=ڈیفالٹ فارمیٹ PDF کے بجائے PDF/A فارمیٹ کے ساتھ PDF دستاویزات بنائیں +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=یہاں ایک FontAwesome آئیکن کا کوڈ درج کریں۔ اگر آپ نہیں جانتے کہ FontAwesome کیا ہے، تو آپ عام قدر fa-address-book استعمال کر سکتے ہیں۔ RssNote=نوٹ: ہر آر ایس ایس فیڈ کی تعریف ایک ویجیٹ فراہم کرتی ہے جسے ڈیش بورڈ میں دستیاب رکھنے کے لیے آپ کو اسے فعال کرنا ہوگا۔ JumpToBoxes=سیٹ اپ پر جائیں -> وجیٹس @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ur_PK/datapolicy.lang b/htdocs/langs/ur_PK/datapolicy.lang index 754b954911a..03933eaf9af 100644 --- a/htdocs/langs/ur_PK/datapolicy.lang +++ b/htdocs/langs/ur_PK/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = ڈیٹا پرائیویسی پالیسی # Module description 'ModuledatapolicyDesc' Module4100Desc = ڈیٹا پرائیویسی کا انتظام کرنے کے لیے ماڈیول (جی ڈی پی آر کے مطابق) - -# # Administration page -# datapolicySetup = ماڈیول ڈیٹا پرائیویسی پالیسی سیٹ اپ Deletion = ڈیٹا کو حذف کرنا datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = امکان/کسٹمر DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = نہ ہی امکان/نہ ہی گاہک DATAPOLICY_CONTACT_FOURNISSEUR = سپلائر DATAPOLICY_ADHERENT = رکن -DATAPOLICY_Tooltip_SETUP = رابطے کی قسم - ہر قسم کے لیے اپنے انتخاب کی نشاندہی کریں۔ -DATAPOLICYMail = ای میلز سیٹ اپ -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = ای میل کا مواد -DATAPOLICYSUBSITUTION = آپ اپنے ای میل میں درج ذیل متغیرات استعمال کر سکتے ہیں (LINKACCEPT شخص کے معاہدے کو ریکارڈ کرنے والا ایک لنک بنانے کی اجازت دیتا ہے، LINKREFUSED شخص کے انکار کو ریکارڈ کرنا ممکن بناتا ہے): -DATAPOLICYACCEPT = معاہدے کے بعد پیغام -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = آپ اپنے تمام متعلقہ رابطوں کو ایک GDPR ای میل بھیج سکتے ہیں (جن کو ابھی تک کوئی ای میل موصول نہیں ہوئی ہے اور جس کے لیے آپ نے ان کے GDPR معاہدے کے بارے میں کچھ رجسٹر نہیں کیا ہے)۔ ایسا کرنے کے لیے درج ذیل بٹن کا استعمال کریں۔ SendAgreement = ای میلز بھیجیں۔ AllAgreementSend = تمام ای میلز بھیج دی گئی ہیں۔ TXTLINKDATAPOLICYACCEPT = لنک کے لیے متن "معاہدہ" TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = جی ڈی پی آر: ذاتی ڈیٹا کی پروسیسنگ DATAPOLICY_consentement = ذاتی ڈیٹا کی پروسیسنگ کے لیے رضامندی حاصل کی گئی۔ DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = کسی تیسرے فریق کو گمنام کریں۔ -DATAPOLICY_POPUP_ANONYME_TEXTE = آپ اس رابطے کو Dolibarr سے حذف نہیں کر سکتے کیونکہ متعلقہ آئٹمز ہیں۔ GDPR کے مطابق، آپ اپنی ذمہ داریوں کا احترام کرنے کے لیے اس تمام ڈیٹا کو گمنام کر دیں گے۔ کیا آپ جاری رکھنا چاہیں گے؟ - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = پورٹیبلٹی جی ڈی پی آر -DATAPOLICY_PORTABILITE_TITLE = ذاتی ڈیٹا کی برآمد -DATAPOLICY_PORTABILITE_CONFIRMATION = آپ اس رابطے کا ذاتی ڈیٹا برآمد کرنا چاہتے ہیں۔ کیا تمہیں یقین ہے ؟ - -# # Notes added during an anonymization -# -ANONYMISER_AT = %s کو گمنام کیا - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = GDPR ای میل بھیجیں۔ MailSent = ای میل بھیج دیا گیا ہے - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/ur_PK/dict.lang b/htdocs/langs/ur_PK/dict.lang index bab0b0b166d..baba8e78e93 100644 --- a/htdocs/langs/ur_PK/dict.lang +++ b/htdocs/langs/ur_PK/dict.lang @@ -137,7 +137,7 @@ CountryLV=لٹویا CountryLB=لبنان CountryLS=لیسوتھو CountryLR=لائبیریا -CountryLY=Libya +CountryLY=لیبیا CountryLI=لیختنسٹین CountryLT=لتھوانیا CountryLU=لکسمبرگ @@ -158,7 +158,7 @@ CountryMX=میکسیکو CountryFM=مائیکرونیشیا CountryMD=مالڈووا CountryMN=منگولیا -CountryMS=مونسیرت +CountryMS=مونٹسریٹ CountryMZ=موزمبیق CountryMM=میانمار (برما) CountryNA=نمیبیا @@ -233,7 +233,7 @@ CountryUY=یوراگوئے CountryUZ=ازبکستان CountryVU=وانواتو CountryVE=وینزویلا -CountryVN=ویت نام +CountryVN=ویتنام CountryVG=ورجن جزائر، برطانوی CountryVI=ورجن آئی لینڈز، یو ایس CountryWF=والس اور فوٹونا @@ -247,13 +247,13 @@ CountryJE=جرسی CountryME=مونٹی نیگرو CountryBL=سینٹ بارتھیلمی۔ CountryMF=سینٹ مارٹن -CountryXK=Kosovo +CountryXK=کوسوو ##### Civilities ##### CivilityMME=مسز. -CivilityMMEShort=Mrs. +CivilityMMEShort=مسز. CivilityMR=مسٹر. -CivilityMRShort=Mr. +CivilityMRShort=مسٹر. CivilityMLE=MS. CivilityMTRE=ماسٹر CivilityDR=ڈاکٹر @@ -295,8 +295,8 @@ CurrencyXPF=CFP فرانک CurrencySingXPF=CFP فرانک CurrencyCentEUR=سینٹ CurrencyCentSingEUR=سینٹ -CurrencyCentINR=پیسہ -CurrencyCentSingINR=پیسہ +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=ہزارواں #### Input reasons ##### DemandReasonTypeSRC_INTE=انٹرنیٹ diff --git a/htdocs/langs/ur_PK/errors.lang b/htdocs/langs/ur_PK/errors.lang index 3d0b076e2dd..d3db79b8d76 100644 --- a/htdocs/langs/ur_PK/errors.lang +++ b/htdocs/langs/ur_PK/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=استعمال شدہ وقت میں داخل ہونے ErrorTaskAlreadyAssigned=کام پہلے ہی صارف کو تفویض کیا گیا ہے۔ ErrorModuleFileSeemsToHaveAWrongFormat=ایسا لگتا ہے کہ ماڈیول پیکیج کا فارمیٹ غلط ہے۔ ErrorModuleFileSeemsToHaveAWrongFormat2=ماڈیول کی زپ میں کم از کم ایک لازمی ڈائرکٹری کا ہونا ضروری ہے: %s یا a0ecb2ec87f49fzfz506010 -ErrorFilenameDosNotMatchDolibarrPackageRules=ماڈیول پیکج کا نام ( %s ) متوقع نام کے نحو سے مماثل نہیں ہے: a0ecb2ec87f49fza606019fz +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=خرابی، ڈپلیکیٹ ٹرگر کا نام %s۔ پہلے سے ہی %s سے بھری ہوئی ہے۔ ErrorNoWarehouseDefined=خرابی، کسی گودام کی وضاحت نہیں کی گئی۔ ErrorBadLinkSourceSetButBadValueForRef=آپ جو لنک استعمال کرتے ہیں وہ درست نہیں ہے۔ ادائیگی کے لیے 'ذریعہ' کی وضاحت کی گئی ہے، لیکن 'ریف' کے لیے قدر درست نہیں ہے۔ @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/ur_PK/mails.lang b/htdocs/langs/ur_PK/mails.lang index 9c71b938343..4a97566f269 100644 --- a/htdocs/langs/ur_PK/mails.lang +++ b/htdocs/langs/ur_PK/mails.lang @@ -32,6 +32,8 @@ NewMailing=نئی ای میلنگ NewSMSing=New smsing EditMailing=ای میل میں ترمیم کریں۔ ResetMailing=ای میل دوبارہ بھیجیں۔ +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=ای میل کو حذف کریں۔ PreviewMailing=ای میل کا پیش نظارہ کریں۔ CreateMailing=ای میل بنائیں @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=ای میل وصول کنندہ خالی ہے۔ WarningNoEMailsAdded=وصول کنندہ کی فہرست میں شامل کرنے کے لیے کوئی نیا ای میل نہیں ہے۔ ConfirmValidMailing=کیا آپ واقعی اس ای میل کی توثیق کرنا چاہتے ہیں؟ ConfirmResetMailing=انتباہ، %s ای میل کو دوبارہ شروع کرکے، آپ اس ای میل کو بلک میلنگ میں دوبارہ بھیجنے کی اجازت دیں گے۔ کیا آپ واقعی یہ کرنا چاہتے ہیں؟ +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=کیا آپ واقعی اس ای میل کو حذف کرنا چاہتے ہیں؟ NbOfUniqueEMails=منفرد ای میلز کی تعداد NbOfUniquePhones=No. of unique phones @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=ای میل بھیجنے کے لیے مزید وصول EmailOptedOut=ای میل کے مالک نے اس ای میل کے ساتھ مزید رابطہ نہ کرنے کی درخواست کی ہے۔ EvenUnsubscribe=آپٹ آؤٹ ای میلز شامل کریں۔ EvenUnsubscribeDesc=جب آپ ای میلز کو اہداف کے طور پر منتخب کرتے ہیں تو آپٹ آؤٹ ای میلز کو شامل کریں۔ مثال کے طور پر لازمی سروس ای میلز کے لیے مفید ہے۔ -XEmailsDoneYActionsDone=%s ای میلز پہلے سے اہل ہیں، %s ای میلز پر کامیابی کے ساتھ کارروائی کی گئی (%s ریکارڈ کے لیے /کارروائیاں ہو چکی ہیں) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/ur_PK/stripe.lang b/htdocs/langs/ur_PK/stripe.lang index 8c750d656f8..2881abbcb87 100644 --- a/htdocs/langs/ur_PK/stripe.lang +++ b/htdocs/langs/ur_PK/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=کنٹریکٹ لائن کے لیے % ToOfferALinkForOnlinePaymentOnFreeAmount=کسی بھی رقم کا %s آن لائن ادائیگی کا صفحہ پیش کرنے کے لیے URL ToOfferALinkForOnlinePaymentOnMemberSubscription=ممبر کی رکنیت کے لیے %s آن لائن ادائیگی کا صفحہ پیش کرنے کے لیے URL ToOfferALinkForOnlinePaymentOnDonation=عطیہ کی ادائیگی کے لیے %s آن لائن ادائیگی کا صفحہ پیش کرنے کے لیے URL -YouCanAddTagOnUrl=آپ ان میں سے کسی یو آر ایل میں url پیرامیٹر &tag= ویلیو کو بھی شامل کر سکتے ہیں (صرف ادائیگی کے لیے لازمی ہے جو کسی چیز سے منسلک نہیں ہے) اپنا پیمنٹ ٹیگ شامل کرنے کے لیے۔
ادائیگیوں کے URL کے لیے جس میں کوئی شے موجود نہیں ہے، آپ &noidempotency=1 پیرامیٹر بھی شامل کر سکتے ہیں تاکہ ایک ہی ٹیگ کے ساتھ ایک ہی لنک کو کئی بار استعمال کیا جا سکے (کچھ ادائیگی کا موڈ ہر ایک لنک کے بغیر ادائیگی کو محدود کر سکتا ہے۔ پیرامیٹر) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=اپنی اسٹرائپ کو url %s کے ساتھ سیٹ اپ کریں تاکہ اسٹرائپ کی توثیق ہونے پر ادائیگی خود بخود بن جائے۔ AccountParameter=اکاؤنٹ کے پیرامیٹرز UsageParameter=استعمال کے پیرامیٹرز @@ -41,8 +42,8 @@ STRIPE_LIVE_WEBHOOK_KEY=ویب ہُک لائیو کلید ONLINE_PAYMENT_WAREHOUSE=جب آن لائن ادائیگی کی جاتی ہے تو اسٹاک کو کم کرنے کے لیے استعمال کیا جائے گا StripeLiveEnabled=اسٹرائپ لائیو فعال (بصورت دیگر ٹیسٹ/سینڈ باکس موڈ) StripeImportPayment=پٹی کی ادائیگی درآمد کریں۔ -ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails -ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s +ExampleOfTestCreditCard=جانچ کی ادائیگی کے لیے کریڈٹ کارڈ کی مثال: %s => درست، %s => غلطی CVC، %s => میعاد ختم، %s => چارج ناکام +ExampleOfTestBankAcountForSEPA=براہ راست ڈیبٹ ٹیسٹ کے لیے بینک اکاؤنٹ BAN کی مثال: %s StripeGateways=پٹی والے دروازے OAUTH_STRIPE_TEST_ID=اسٹرائپ کنیکٹ کلائنٹ آئی ڈی (ca_...) OAUTH_STRIPE_LIVE_ID=اسٹرائپ کنیکٹ کلائنٹ آئی ڈی (ca_...) @@ -51,6 +52,7 @@ StripeAccount=پٹی کھاتہ StripeChargeList=اسٹرائپ چارجز کی فہرست StripeTransactionList=پٹی کے لین دین کی فہرست StripeCustomerId=پٹی کسٹمر آئی ڈی +StripePaymentId=پٹی ادائیگی کی شناخت StripePaymentModes=پٹی ادائیگی کے طریقوں LocalID=لوکل آئی ڈی StripeID=پٹی کی شناخت @@ -62,7 +64,7 @@ DeleteACard=کارڈ حذف کریں۔ ConfirmDeleteCard=کیا آپ واقعی اس کریڈٹ یا ڈیبٹ کارڈ کو حذف کرنا چاہتے ہیں؟ CreateCustomerOnStripe=پٹی پر گاہک بنائیں CreateCardOnStripe=پٹی پر کارڈ بنائیں -CreateBANOnStripe=Create bank on Stripe +CreateBANOnStripe=پٹی پر بینک بنائیں ShowInStripe=پٹی میں دکھائیں۔ StripeUserAccountForActions=کچھ اسٹرائپ ایونٹس کی ای میل اطلاع کے لیے استعمال کرنے والا صارف اکاؤنٹ (سٹرائپ ادائیگی) StripePayoutList=پٹی کی ادائیگیوں کی فہرست @@ -70,9 +72,19 @@ ToOfferALinkForTestWebhook=IPN (ٹیسٹ موڈ) کو کال کرنے کے لی ToOfferALinkForLiveWebhook=IPN (لائیو موڈ) کو کال کرنے کے لیے اسٹرائپ ویب ہُک کو سیٹ اپ کرنے کا لنک PaymentWillBeRecordedForNextPeriod=ادائیگی اگلی مدت کے لیے ریکارڈ کی جائے گی۔ ClickHereToTryAgain= دوبارہ کوشش کرنے کے لیے یہاں کلک کریں... -CreationOfPaymentModeMustBeDoneFromStripeInterface=مضبوط کسٹمر تصدیقی اصولوں کی وجہ سے، کارڈ کی تخلیق اسٹرائپ بیک آفس سے ہونی چاہیے۔ آپ اسٹرائپ کسٹمر ریکارڈ پر سوئچ کرنے کے لیے یہاں کلک کر سکتے ہیں: %s -STRIPE_CARD_PRESENT=Card Present for Stripe Terminals -TERMINAL_LOCATION=Location (address) for Stripe Terminals -RequestDirectDebitWithStripe=Request Direct Debit with Stripe -STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe - +CreationOfPaymentModeMustBeDoneFromStripeInterface=مضبوط کسٹمر تصدیقی اصولوں کی وجہ سے، کارڈ کی تخلیق سٹرائپ بیک آفس سے کی جانی چاہیے۔ آپ اسٹرائپ کسٹمر ریکارڈ پر سوئچ کرنے کے لیے یہاں کلک کر سکتے ہیں: %s +STRIPE_CARD_PRESENT=پٹی والے ٹرمینلز کے لیے کارڈ پیش کیا گیا۔ +TERMINAL_LOCATION=پٹی والے ٹرمینلز کے لیے مقام (پتہ) +RequestDirectDebitWithStripe=پٹی کے ساتھ براہ راست ڈیبٹ کی درخواست کریں۔ +RequesCreditTransferWithStripe=Request Credit Transfer with Stripe +STRIPE_SEPA_DIRECT_DEBIT=اسٹرائپ کے ذریعے ڈائریکٹ ڈیبٹ ادائیگیوں کو فعال کریں۔ +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT +StripeConnect_Mode=پٹی کنیکٹ موڈ +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/uz_UZ/admin.lang b/htdocs/langs/uz_UZ/admin.lang index 9215204652e..6bc84fe6abe 100644 --- a/htdocs/langs/uz_UZ/admin.lang +++ b/htdocs/langs/uz_UZ/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Qadriyatlar ro'yxati format bo'lishi kerak, bu erda ka ExtrafieldParamHelpcheckbox=Qadriyatlar ro'yxati format kaliti bo'lgan satrlardan iborat bo'lishi kerak, (agar bu erda '0' bo'lishi mumkin emas)

masalan:
1, value1
2, value2
3 ,03f03f ExtrafieldParamHelpradio=Qadriyatlar ro'yxati format kaliti bo'lgan satrlardan iborat bo'lishi kerak, (agar bu erda '0' bo'lishi mumkin emas)

masalan:
1, value1
2, value2
3 ,03f03f 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Parametrlar ObjectName: Classpath
sintaksis: ObjectName: Classpath bo'lishi kerak ExtrafieldParamHelpSeparator=
oddiy ajratuvchisi uchun bo'sh joyni saqlang holat har bir foydalanuvchi seansida saqlanadi) LibraryToBuildPDF=PDF yaratish uchun foydalaniladigan kutubxona @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, keyin qisqartirilgan mijoz nomi, belgilar ModuleCompanyCodeSupplierDigitaria=%s, keyin esa etkazib beruvchining qisqartirilgan nomi, belgilar soni bo'yicha: etkazib beruvchining buxgalteriya kodi uchun %s. Use3StepsApproval=Odatiy bo'lib, Sotib olish to'g'risida buyurtmalarni 2 xil foydalanuvchi yaratishi va tasdiqlashi kerak (bitta qadam / foydalanuvchi yaratishi va bitta qadam / foydalanuvchi tasdiqlashi kerak. E'tibor bering, agar foydalanuvchi yaratish va tasdiqlash huquqiga ega bo'lsa, bitta qadam / foydalanuvchi etarli bo'ladi) . Ushbu parametr bilan siz uchinchi bosqichni / foydalanuvchi tomonidan tasdiqlanishini so'rashingiz mumkin, agar miqdori ajratilgan qiymatdan yuqori bo'lsa (shuning uchun 3 ta qadam kerak bo'ladi: 1 = tasdiqlash, 2 = birinchi tasdiqlash va 3 = ikkinchi tasdiqlash miqdori etarli bo'lsa).
Agar bitta tasdiqlash (2 ta qadam) etarli bo'lsa, buni bo'sh qilib qo'ying, agar har doim ikkinchi ma'qullash (3 bosqich) kerak bo'lsa, uni juda past qiymatga (0,1) o'rnating. UseDoubleApproval=Miqdor (soliqsiz) ... dan yuqori bo'lsa, 3 bosqichli tasdiqdan foydalaning. -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Ba'zi elektron pochta xizmatlarini ko'rsatuvchi provayderlar (Yahoo singari) sizga o'z serverlaridan tashqari boshqa serverlardan elektron pochta xabarlarini yuborishga ruxsat bermaydilar. Sizning joriy sozlamangiz dastur serveridan sizning elektron pochta provayderingiz serverini emas, balki elektron pochta xabarlarini yuborish uchun foydalanadi, shuning uchun ba'zi qabul qiluvchilar (cheklovchi DMARC protokoli bilan mos keladigan) sizning elektron pochta provayderingizdan sizning elektron pochtangizni va ba'zi elektron pochta provayderlarini qabul qila oladimi deb so'rashadi. (Yahoo singari) "yo'q" deb javob berishi mumkin, chunki server ularga tegishli emas, shuning uchun yuborilgan elektron pochtangizning oz qismi etkazib berishga qabul qilinmasligi mumkin (elektron pochta provayderingiz yuborish kvotasidan ham ehtiyot bo'ling). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Elektron pochta xabarlarini yuborish uchun o'zingizning elektron pochta xizmati provayderingizning SMTP-serveridan foydalanish ham qiziq, shuning uchun dasturdan yuborilgan barcha elektron pochta xabarlari sizning pochta qutingizdagi "Yuborilgan" katalogga saqlanadi. WarningPHPMailD=Shuning uchun elektron pochta xabarlarini yuborish usulini "SMTP" qiymatiga o'zgartirish tavsiya etiladi. WarningPHPMailDbis=Agar siz haqiqatan ham e-pochta xabarlarini yuborish uchun standart “PHP” usulini saqlab qolmoqchi bo‘lsangiz, bu ogohlantirishga e’tibor bermang yoki %sbu yerga bosing%s. 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 (e-pochta uchun %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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 @@ -867,7 +868,7 @@ Permission255=Boshqa foydalanuvchilarning parolini o'zgartiring Permission256=Boshqa foydalanuvchilarni o'chirish yoki o'chirish Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Ob'ektlarisiz barcha uchinchi shaxslarga kirishni kengaytiring (nafaqat foydalanuvchi savdo vakili bo'lgan uchinchi shaxslar).
tashqi foydalanuvchilar uchun samarali emas (takliflar, buyurtmalar, hisob-fakturalar, shartnomalar va boshqalar uchun har doim o'zlari bilan cheklangan).
Loyihalar uchun samarali emas (faqat loyiha ruxsatnomalari qoidalari, ko'rinishi va tayinlash masalalari). Permission271=CA ni o'qing Permission272=Hisob-fakturalarni o'qing @@ -944,7 +945,7 @@ Permission776=Xarajatlar bo'yicha hisobotlarni to'lash Permission777=Barcha xarajatlar hisobotlarini o'qing (hatto foydalanuvchi bo'ysunmaydiganlar ham) Permission778=Hammaning xarajatlar hisobotini yarating / o'zgartiring Permission779=Eksport xarajatlari to'g'risidagi hisobotlar -Permission1001=Qimmatli qog'ozlarni o'qing +Permission1001=Read warehouses and stocks Permission1002=Omborlarni yaratish / o'zgartirish Permission1003=Omborlarni o'chirish Permission1004=Birja harakatlarini o'qing @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filtri toza qiymatga (COMPANY_DIGITARIA_CLEA DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Mijozlar yoki etkazib beruvchilar uchun sub-hisoblarni yaratishda ma'lum so'zlarni tozalang RemoveSpecialWordsHelp=Xaridor yoki yetkazib beruvchi hisobini hisoblashdan oldin tozalanishi kerak bo'lgan so'zlarni belgilang. ";" dan foydalaning har bir so'z orasida -GDPRContact=Ma'lumotlarni himoya qilish bo'yicha mutaxassis (DPO, ma'lumotlarning maxfiyligi yoki GDPR aloqasi) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Agar siz shaxsiy ma'lumotlarni Axborot tizimingizda saqlasangiz, bu yerda Ma'lumotlarni himoya qilish bo'yicha Umumiy Nizomga mas'ul bo'lgan kontaktni nomlashingiz mumkin HelpOnTooltip=Matnni ko'rsatmalar panelida ko'rsatish uchun yordam bering HelpOnTooltipDesc=Matn yoki tarjima kalitini bu erga qo'ying, bu maydon formada paydo bo'lganda matn asboblar panelida ko'rsatilsin @@ -2218,7 +2219,7 @@ CreateCandidature=Ishga ariza yarating FormatZip=Zip MainMenuCode=Menyu kirish kodi (asosiy menyu) ECMAutoTree=Avtomatik ECM daraxtini ko'rsating -OperationParamDesc=Ayrim maʼlumotlarni chiqarishda foydalanish qoidalarini belgilang yoki ishlash uchun foydalaniladigan qiymatlarni oʻrnating.

Kompaniya nomini olish uchun misol. elektron pochta mavzusi vaqtinchalik oʻzgaruvchiga:
tmp_var=EXTRACT:SUBJECT:Kompaniyadan xabar ([^\n]*)

Yaraladigan ob'ekt xususiyatlarini o'rnatishga misollar:
objproperty1=SET:qattiq kodlangan qiymat
objproperty2=SET:__tmp_var__
objFETIvalty:value:SETIMP3a faqat xususiyat hali aniqlanmagan bo'lsa o'rnatiladi)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:\\y s([^\\s]*)

Bir nechta xususiyatlarni ajratib olish yoki oʻrnatish uchun yangi qatordan foydalaning. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Ish vaqti OpeningHoursDesc=Bu erga kompaniyangizning muntazam ish vaqtiga kiring. ResourceSetup=Resurs modulining konfiguratsiyasi @@ -2264,7 +2265,7 @@ LargerThan=Undan kattaroq IfTrackingIDFoundEventWillBeLinked=E'tibor bering, agar ob'ektning kuzatuv identifikatori elektron pochtada topilsa yoki elektron pochta allaqachon to'plangan va ob'ektga bog'langan elektron pochtaga javob bo'lsa, yaratilgan voqea avtomatik ravishda ma'lum tegishli ob'ektga bog'lanadi. WithGMailYouCanCreateADedicatedPassword=GMail hisob qaydnomasi bilan, agar siz 2 bosqichli tekshirishni yoqqan boʻlsangiz, https://myaccount.google.com/ saytidan oʻz hisob parolingizdan foydalanish oʻrniga ilova uchun maxsus ikkinchi parol yaratish tavsiya etiladi. EmailCollectorTargetDir=Muvaffaqiyatli qayta ishlanganda elektron pochtani boshqa teg/katalogga ko'chirish istalgan xatti-harakatlar bo'lishi mumkin. Bu funksiyadan foydalanish uchun bu yerda katalog nomini o‘rnatish kifoya (nomda maxsus belgilardan foydalanmang). Shuni yodda tutingki, siz o'qish/yozish hisob qaydnomasidan ham foydalanishingiz kerak. -EmailCollectorLoadThirdPartyHelp=Maʼlumotlar bazasida mavjud boʻlgan uchinchi tomonni topish va yuklash uchun elektron pochta tarkibidan foydalanish uchun ushbu amaldan foydalanishingiz mumkin (qidiruv “id”, “name”, “name_alias”, “email” oʻrtasida belgilangan xususiyatda amalga oshiriladi). Topilgan (yoki yaratilgan) uchinchi tomon zarur boʻlgan quyidagi harakatlar uchun ishlatiladi.
Masalan, agar siz satrdan olingan nom bilan uchinchi tomon yaratmoqchi boʻlsangiz ' Ism: topiladigan nom' tanada mavjud bo'lsa, jo'natuvchining elektron pochtasidan elektron pochta sifatida foydalaning, parametr maydonini shunday o'rnatishingiz mumkin:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Ogohlantirish: ko'pgina elektron pochta serverlari (masalan, Gmail) satrda qidirishda to'liq so'zlarni qidirishadi va agar satr faqat qisman so'zda topilsa, natijani qaytarmaydi. Shu sababli, qidiruv mezonlarida maxsus belgilardan foydalanish, agar ular mavjud so‘zlarning bir qismi bo‘lmasa, e’tiborga olinmaydi.
So‘z bo‘yicha qidiruvni istisno qilish uchun (agar so‘z bo‘lsa, e-pochtani qaytaring. topilmadi), dan foydalanishingiz mumkin! so'z oldidagi belgi (ba'zi pochta serverlarida ishlamasligi mumkin). EndPointFor=%s uchun yakuniy nuqta: %s DeleteEmailCollector=Elektron pochta kollektorini o'chirish @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Uchinchi tomon nomi - Uchinchi tomon taxalluslari ALIAS_THIRDPARTY=Uchinchi tomon taxalluslari - uchinchi tomon nomi PDFIn2Languages=PDF-da yorliqlarni 2 xil tilda ko'rsatish (bu xususiyat ba'zi tillarda ishlamasligi mumkin) 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=Standart PDF formati o'rniga PDF/A formatida PDF hujjatlarini yarating +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Bu erga FontAwesome ikonkasining kodini kiriting. Agar siz FontAwesome nima ekanligini bilmasangiz, umumiy qiymatdan foydalanishingiz mumkin. RssNote=Izoh: Har bir RSS tasmali ta'rifi vidjetni taqdim etadi, uni boshqarish panelida bo'lishini ta'minlash kerak JumpToBoxes=O'rnatish -> Vidjetlarga o'tish @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/uz_UZ/datapolicy.lang b/htdocs/langs/uz_UZ/datapolicy.lang index 83093cd210f..ab75b2728f7 100644 --- a/htdocs/langs/uz_UZ/datapolicy.lang +++ b/htdocs/langs/uz_UZ/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,13 +15,10 @@ Module4100Name = Ma'lumotlar maxfiyligi siyosati # Module description 'ModuledatapolicyDesc' Module4100Desc = Ma'lumotlar maxfiyligini boshqarish moduli (GDPRga muvofiqlik) - -# # Administration page -# datapolicySetup = Modul maʼlumotlarining maxfiylik siyosatini oʻrnatish Deletion = Ma'lumotlarni o'chirish -datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). +datapolicySetupPage = Mamlakatlaringiz qonunlariga qarab (misol GDPRning 5-moddasi), shaxsiy maʼlumotlar bir muddat saqlanishi kerak maʼlumotlar yigʻilgan maqsad uchun zarur boʻlgan muddatdan oshmasligi, arxiv maqsadlari bundan mustasno.
Oʻchirish maʼlum bir vaqtdan soʻng hodisalarsiz avtomatik ravishda amalga oshiriladi (davomiylik). Siz quyida ko'rsatgan bo'lasiz). NB_MONTHS = %s oy ONE_YEAR = 1 yil NB_YEARS = %s yil @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Istiqbolli/mijoz DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Na istiqbolli / na mijoz DATAPOLICY_CONTACT_FOURNISSEUR = Yetkazib beruvchi DATAPOLICY_ADHERENT = A'zo -DATAPOLICY_Tooltip_SETUP = Kontakt turi - har bir tur uchun tanlovingizni ko'rsating. -DATAPOLICYMail = Elektron pochta xabarlarini sozlash -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Elektron pochtaning mazmuni -DATAPOLICYSUBSITUTION = Siz o'z elektron pochtangizda quyidagi o'zgaruvchilardan foydalanishingiz mumkin (LINKACCEPT shaxsning kelishuvini qayd qiluvchi havola yaratish imkonini beradi, LINK REFUSED shaxsning rad etishini qayd etish imkonini beradi): -DATAPOLICYACCEPT = Kelishuvdan keyin xabar -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Siz GDPR elektron pochta xabarini barcha tegishli kontaktlaringizga yuborishingiz mumkin (ular hali elektron pochta xabarini olmagan va siz GDPR shartnomasi haqida hech narsa ro'yxatdan o'tmagan). Buning uchun quyidagi tugmani ishlating. SendAgreement = Elektron pochta xabarlarini yuboring AllAgreementSend = Barcha elektron pochta xabarlari yuborildi TXTLINKDATAPOLICYACCEPT = "Shartnoma" havolasi uchun matn -TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# +TXTLINKDATAPOLICYREFUSE = "Ixtilof" havolasi uchun matn # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: Shaxsiy ma'lumotlarni qayta ishlash DATAPOLICY_consentement = Shaxsiy ma'lumotlarni qayta ishlash uchun olingan rozilik -DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Uchinchi tomonni anonimlashtirish -DATAPOLICY_POPUP_ANONYME_TEXTE = Bu kontaktni Dolibarr’dan o‘chira olmaysiz, chunki tegishli elementlar mavjud. GDPRga muvofiq, siz o'z majburiyatlaringizni hurmat qilish uchun ushbu ma'lumotlarning barchasini anonim qilib qo'yasiz. Davom etishni xohlaysizmi? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Portativlik GDPR -DATAPOLICY_PORTABILITE_TITLE = Shaxsiy ma'lumotlarni eksport qilish -DATAPOLICY_PORTABILITE_CONFIRMATION = Siz ushbu kontaktning shaxsiy ma'lumotlarini eksport qilmoqchisiz. Ishonchingiz komilmi ? - -# +DATAPOLICY_opposition_traitement = Uning shaxsiy ma'lumotlarini qayta ishlashga qarshi +DATAPOLICY_opposition_prospection = Uning shaxsiy ma'lumotlarini qidiruv maqsadlarida qayta ishlashga qarshi # Notes added during an anonymization -# -ANONYMISER_AT = %s anonimlashtirildi - -DATAPOLICY_date = Date of agreement/disagreement GDPR -DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = GDPR e-pochtasini yuboring +DATAPOLICY_date = Kelishuv/kelishmovchilik sanasi GDPR +DATAPOLICY_send = Kelishuv sanasi e-pochta orqali yuborildi MailSent = Email yuborildi - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion +NUMBER_MONTH_BEFORE_DELETION = O'chirishdan oldingi oylar soni diff --git a/htdocs/langs/uz_UZ/dict.lang b/htdocs/langs/uz_UZ/dict.lang index dbbf8685af5..96f6c17ad2d 100644 --- a/htdocs/langs/uz_UZ/dict.lang +++ b/htdocs/langs/uz_UZ/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=CFP Frants CurrencySingXPF=CFP franki CurrencyCentEUR=sent CurrencyCentSingEUR=sent -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=minginchi #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/uz_UZ/errors.lang b/htdocs/langs/uz_UZ/errors.lang index 17ded33ab28..99faf89e9af 100644 --- a/htdocs/langs/uz_UZ/errors.lang +++ b/htdocs/langs/uz_UZ/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Vaqtni sarflashni kiritish uchun foydalanuvchiga tops ErrorTaskAlreadyAssigned=Vazifa allaqachon foydalanuvchiga berilgan ErrorModuleFileSeemsToHaveAWrongFormat=Modul to'plami noto'g'ri formatga o'xshaydi. ErrorModuleFileSeemsToHaveAWrongFormat2=Modul zip-da kamida bitta majburiy katalog mavjud bo'lishi kerak: %s yoki %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Modul paketining nomi ( %s ) kutilgan nom sintaksisiga mos kelmaydi: %s a0a65d071f6fcz +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Xato, %s trigger nomini takrorlang. %s dan allaqachon yuklangan. ErrorNoWarehouseDefined=Xato, omborlar aniqlanmadi. ErrorBadLinkSourceSetButBadValueForRef=Siz foydalanadigan havola yaroqsiz. To'lov uchun "manba" aniqlangan, ammo "ref" qiymati haqiqiy emas. @@ -422,3 +422,4 @@ OperNotDefined=To'lov usuli aniqlanmagan ErrorThisContactXIsAlreadyDefinedAsThisType=%s allaqachon ushbu turdagi kontakt sifatida belgilangan. ErrorThisGroupIsAlreadyDefinedAsThisType=Ushbu guruhdagi kontaktlar allaqachon ushbu turdagi kontakt sifatida belgilangan. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/uz_UZ/mails.lang b/htdocs/langs/uz_UZ/mails.lang index 1d87009f6f8..31d9307488a 100644 --- a/htdocs/langs/uz_UZ/mails.lang +++ b/htdocs/langs/uz_UZ/mails.lang @@ -32,6 +32,8 @@ NewMailing=Yangi elektron pochta xabarlari NewSMSing=Yangi sms EditMailing=Elektron pochta xabarlarini tahrirlash ResetMailing=Elektron pochta xabarlarini qayta yuboring +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Elektron pochta xabarlarini o'chirish PreviewMailing=Elektron pochta xabarlarini oldindan ko'rish CreateMailing=Elektron pochta xabarlarini yarating @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Elektron pochta qabul qiluvchisi bo'sh WarningNoEMailsAdded=Qabul qiluvchilar ro'yxatiga qo'shish uchun yangi elektron pochta xabarlari yo'q. ConfirmValidMailing=Ushbu elektron pochta xabarini tasdiqlamoqchimisiz? ConfirmResetMailing=Ogohlantirish, %s elektron pochtasini qayta boshlash orqali siz ushbu elektron pochtani ommaviy pochta orqali qayta yuborishga ruxsat berasiz. Haqiqatan ham buni qilishni xohlaysizmi? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Ushbu elektron pochta xabarini o'chirishni xohlaysizmi? NbOfUniqueEMails=Noyob elektron pochta xabarlari soni NbOfUniquePhones=Noyob telefonlar soni @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=E-pochtani yuborish uchun boshqa qabul qiluvchi yo'q EmailOptedOut=E-pochta egasi u bilan endi bu xat orqali bog‘lanmaslikni so‘radi EvenUnsubscribe=O'chirish xatlarini ham qo'shing EvenUnsubscribeDesc=Maqsad sifatida elektron pochta xabarlarini tanlaganingizda, rad etish xatlarini qo'shing. Masalan, majburiy elektron pochta xabarlari uchun foydalidir. -XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Siz elektron pochtangiz uchun ba'zi ko'rsatmalar yaratishingiz mumkin (Masalan: elektron pochta shablonida rasm yaratish...) ModelTemplate=Elektron pochta shabloni YouCanChooseAModelForYouMailContent= Siz shablon modellaridan birini tanlashingiz yoki AI bilan bittasini yaratishingiz mumkin TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/uz_UZ/stripe.lang b/htdocs/langs/uz_UZ/stripe.lang index 9effe5fd01e..08ad8413728 100644 --- a/htdocs/langs/uz_UZ/stripe.lang +++ b/htdocs/langs/uz_UZ/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=Shartnoma liniyasi uchun %s onlayn to ToOfferALinkForOnlinePaymentOnFreeAmount=Mavjud ob'ekti bo'lmagan har qanday miqdordagi %s onlayn to'lov sahifasini taqdim etish uchun URL ToOfferALinkForOnlinePaymentOnMemberSubscription=Ro'yxatdan obuna uchun %s onlayn to'lov sahifasini taqdim etish uchun URL ToOfferALinkForOnlinePaymentOnDonation=Xayr-ehson to'lash uchun %s onlayn to'lov sahifasini taqdim etadigan URL -YouCanAddTagOnUrl=O'zingizning to'lov izoh yorlig'ingizni qo'shish uchun url parametrini & tag = URL-ni qo'shishingiz mumkin (faqat ob'ekt bilan bog'lanmagan to'lov uchun majburiy).
Mavjud ob'ekti bo'lmagan to'lovlar URL manzili uchun siz & noidempotency = 1 parametrini qo'shishingiz mumkin, shuning uchun bir xil teg bilan bir xil havoladan bir necha marta foydalanish mumkin (ba'zi to'lov rejimi har bir boshqa havola uchun to'lovni 1 ga cheklashi mumkin) parametr) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Stripe-ni url bilan sozlang %s Stripe tomonidan tasdiqlanganda to'lov avtomatik ravishda yaratiladi. AccountParameter=Hisob parametrlari UsageParameter=Foydalanish parametrlari @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Stripe terminallari uchun joy (manzil). RequestDirectDebitWithStripe=Stripe bilan to'g'ridan-to'g'ri debetni talab qiling RequesCreditTransferWithStripe=Stripe bilan kredit o'tkazmasini talab qiling STRIPE_SEPA_DIRECT_DEBIT=Stripe orqali to'g'ridan-to'g'ri debet to'lovlarini yoqing +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=Stripe Connect rejimi +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/vi_VN/admin.lang b/htdocs/langs/vi_VN/admin.lang index ceb8388a788..f415bc5c5a1 100644 --- a/htdocs/langs/vi_VN/admin.lang +++ b/htdocs/langs/vi_VN/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Danh sách các giá trị phải là các dòng có k ExtrafieldParamHelpcheckbox=Danh sách các giá trị phải là các dòng có khóa định dạng, giá trị (trong đó khóa không thể là '0')

ví dụ:
1, giá trị1
2, giá trị2
3, giá trị3
... ExtrafieldParamHelpradio=Danh sách các giá trị phải là các dòng có khóa định dạng, giá trị (trong đó khóa không thể là '0')

ví dụ:
1, giá trị1
2, giá trị2
3, giá trị3
... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=Các tham số phải là ObjectName:Classpath
Cú pháp: ObjectName:Classpath ExtrafieldParamHelpSeparator=Giữ trống cho một dấu phân cách đơn giản
Đặt giá trị này thành 1 cho dấu phân cách thu gọn (mặc định mở cho phiên mới, sau đó trạng thái được giữ cho mỗi phiên người dùng)
Đặt giá trị này thành 2 cho dấu phân cách thu gọn (mặc định được thu gọn cho phiên mới, sau đó trạng thái được giữ trước mỗi phiên người dùng) LibraryToBuildPDF=Thư viện được sử dụng để tạo PDF @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s theo sau tên khách hàng bị cắt bớ ModuleCompanyCodeSupplierDigitaria=%s theo sau tên nhà cung cấp bị cắt bớt theo bở số lượng ký tự: %s cho mã kế toán nhà cung cấp. Use3StepsApproval=Theo mặc định, Đơn đặt hàng cần được tạo và phê duyệt bởi 2 người dùng khác nhau (một bước / người dùng để tạo và một bước / người dùng để phê duyệt. Lưu ý rằng nếu người dùng có cả quyền để tạo và phê duyệt, một bước / người dùng sẽ đủ) . Bạn có thể yêu cầu tùy chọn này để giới thiệu bước thứ ba / phê duyệt của người dùng, nếu số tiền cao hơn giá trị chuyên dụng (vì vậy sẽ cần 3 bước: 1 = xác thực, 2 = phê duyệt đầu tiên và 3 = phê duyệt thứ hai nếu số tiền là đủ).
Đặt điều này thành trống nếu một phê duyệt (2 bước) là đủ, đặt nó thành giá trị rất thấp (0,1) nếu luôn luôn cần phê duyệt thứ hai (3 bước). UseDoubleApproval=Sử dụng phê duyệt 3 bước khi số tiền (chưa có thuế) cao hơn ... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- Một số Nhà cung cấp dịch vụ Email (như Yahoo) không cho phép bạn gửi email từ máy chủ khác ngoài máy chủ của họ. Thiết lập hiện tại của bạn sử dụng máy chủ của ứng dụng để gửi email chứ không phải máy chủ của nhà cung cấp email của bạn, vì vậy một số người nhận (máy chủ tương thích với giao thức DMARC hạn chế), sẽ hỏi nhà cung cấp email của bạn xem họ có thể chấp nhận email của bạn và một số nhà cung cấp email không (như Yahoo) có thể trả lời "không" vì máy chủ không phải của họ, vì vậy một số Email đã gửi của bạn có thể không được chấp nhận gửi (cũng hãy cẩn thận với hạn ngạch gửi của nhà cung cấp email của bạn). +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- Việc sử dụng máy chủ SMTP của Nhà cung cấp dịch vụ Email của chính bạn để gửi email cũng rất thú vị vì tất cả các email được gửi từ ứng dụng cũng sẽ được lưu vào thư mục "Đã gửi" trong hộp thư của bạn. WarningPHPMailD=Do đó, nên thay đổi phương thức gửi e-mail thành giá trị "SMTP". WarningPHPMailDbis=Nếu bạn thực sự muốn giữ phương thức "PHP" mặc định để gửi email, chỉ cần bỏ qua cảnh báo này hoặc xóa nó bằng cách %snhấp vào đây%s. 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=Nếu tên miền trong địa chỉ email người gửi của bạn được bảo vệ bằng bản ghi SPF (hãy hỏi nhà đăng ký tên miền của bạn), bạn phải thêm các IP sau vào bản ghi SPF của DNS trong miền của bạn: %s. -ActualMailSPFRecordFound=Đã tìm thấy bản ghi SPF thực tế (đối với email %s): %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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s 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 @@ -867,7 +868,7 @@ Permission255=Chỉnh sửa mật khẩu của người dùng khác Permission256=Xóa hoặc vô hiệu người dùng khác Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=Mở rộng quyền truy cập cho tất cả các bên thứ ba MÀ KHÔNG CÓ đối tượng của họ (không chỉ các bên thứ ba mà người dùng là đại diện bán hàng).
Không hiệu quả đối với người dùng bên ngoài (luôn giới hạn ở chính họ đối với các đề xuất, đơn đặt hàng, hóa đơn, hợp đồng, v.v.).
Không hiệu quả đối với các dự án (chỉ các quy tắc về quyền của dự án, khả năng hiển thị và các vấn đề chuyển nhượng). Permission271=Xem CA Permission272=Xem hóa đơn @@ -944,7 +945,7 @@ Permission776=Báo cáo thanh toán chi phí Permission777=Đọc tất cả các báo cáo chi phí (kể cả báo cáo của người dùng không phải cấp dưới) Permission778=Tạo/sửa đổi báo cáo chi phí của mọi người Permission779=Xuất dữ liệu báo cáo chi phí -Permission1001=Xem tồn kho +Permission1001=Read warehouses and stocks Permission1002=Tạo/chỉnh sửa Kho hàng Permission1003=Xóa kho hàng Permission1004=Xem thay đổi tồn kho @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Bộ lọc Regex để làm sạch giá trị (COM DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Xóa một số từ nhất định khi tạo tài khoản phụ cho khách hàng hoặc nhà cung cấp RemoveSpecialWordsHelp=Chỉ định các từ cần làm sạch trước khi tính toán tài khoản khách hàng hoặc nhà cung cấp. Sử dụng một ";" giữa mỗi từ -GDPRContact=Cán bộ bảo vệ dữ liệu (DPO, Bảo mật dữ liệu hoặc liên lạc GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Nếu bạn lưu trữ dữ liệu cá nhân trong Hệ thống thông tin của mình, bạn có thể nêu tên người liên hệ chịu trách nhiệm về Quy định chung về bảo vệ dữ liệu tại đây HelpOnTooltip=Trợ giúp văn bản để hiển thị trên tooltip HelpOnTooltipDesc=Đặt văn bản hoặc từ khóa dịch ở đây để văn bản hiển thị trong tooltip khi trường này xuất hiện trong một biểu mẫu @@ -2218,7 +2219,7 @@ CreateCandidature=Tạo đơn xin việc FormatZip=Zip MainMenuCode=Mã mục nhập menu (mainmenu) ECMAutoTree=Hiển thị cây ECM tự động -OperationParamDesc=Xác định các quy tắc sẽ sử dụng để trích xuất một số dữ liệu hoặc đặt giá trị để sử dụng cho hoạt động.

Ví dụ về trích xuất tên công ty từ chủ đề email thành một biến tạm thời:
tmp_var=EXTRACT:SUBJECT:Tin nhắn từ công ty ([^\n]*)

Ví dụ về cách đặt thuộc tính của đối tượng cần tạo:
objproperty1=SET:giá trị được mã hóa cứng
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a giá trị (giá trị chỉ được đặt nếu thuộc tính chưa được xác định)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Tên công ty của tôi là\\ s([^\\s]*)

Sử dụng một dòng mới để trích xuất hoặc đặt một số thuộc tính. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=Giờ mở cửa OpeningHoursDesc=Nhập vào đây giờ mở cửa thường xuyên của công ty bạn. ResourceSetup=Cấu hình của mô-đun tài nguyên @@ -2264,7 +2265,7 @@ LargerThan=Lớn hơn IfTrackingIDFoundEventWillBeLinked=Lưu ý rằng nếu tìm thấy ID theo dõi của một đối tượng trong email hoặc nếu email đó là câu trả lời của một email đã được thu thập và liên kết với một đối tượng thì sự kiện đã tạo sẽ tự động được liên kết với đối tượng liên quan đã biết. WithGMailYouCanCreateADedicatedPassword=Với tài khoản Gmail, nếu bạn đã bật xác thực 2 bước, bạn nên tạo mật khẩu thứ hai dành riêng cho ứng dụng thay vì sử dụng mật khẩu tài khoản của chính bạn từ https://myaccount.google.com/. EmailCollectorTargetDir=Có thể bạn nên chuyển email sang thẻ/thư mục khác khi nó được xử lý thành công. Chỉ cần đặt tên thư mục ở đây để sử dụng tính năng này (KHÔNG sử dụng ký tự đặc biệt trong tên). Lưu ý rằng bạn cũng phải sử dụng tài khoản đăng nhập đọc/ghi. -EmailCollectorLoadThirdPartyHelp=Bạn có thể sử dụng hành động này để sử dụng nội dung email nhằm tìm và tải bên thứ ba hiện có trong cơ sở dữ liệu của mình (việc tìm kiếm sẽ được thực hiện trên thuộc tính được xác định trong số 'id','name','name_alias','email'). Bên thứ ba được tìm thấy (hoặc đã tạo) sẽ được sử dụng cho các hành động cần đến nó.
Ví dụ: nếu bạn muốn tạo bên thứ ba có tên được trích xuất từ một chuỗi ' Tên: tên cần tìm' hiện trong nội dung, sử dụng email người gửi làm email, bạn có thể đặt trường tham số như thế này:
'email=HEADER:^From:(. *);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Cảnh báo: rất nhiều máy chủ email (như Gmail) đang thực hiện tìm kiếm từ đầy đủ khi tìm kiếm trên một chuỗi và sẽ không trả về kết quả nếu chuỗi đó chỉ được tìm thấy một phần trong một từ. Vì lý do này, việc sử dụng các ký tự đặc biệt vào tiêu chí tìm kiếm sẽ bị bỏ qua vì chúng không phải là một phần của các từ hiện có.
Để thực hiện tìm kiếm loại trừ trên một từ (trả lại email nếu từ đó không tìm thấy), bạn có thể sử dụng ! ký tự trước từ (có thể không hoạt động trên một số máy chủ thư). EndPointFor=Điểm kết thúc cho %s: %s DeleteEmailCollector=Xóa trình thu thập email @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=Tên bên thứ ba - Bí danh của bên thứ ba ALIAS_THIRDPARTY=Bí danh của bên thứ ba - Tên của bên thứ ba PDFIn2Languages=Hiển thị nhãn trong PDF bằng 2 ngôn ngữ khác nhau (tính năng này có thể không hoạt động đối với một số ngôn ngữ) 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=Tạo tài liệu PDF với định dạng PDF/A thay vì định dạng PDF mặc định +PDF_USE_A=PDF documents format 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 RssNote=Lưu ý: Mỗi nguồn cấp RSS cung cấp một tiện ích mà bạn phải kích hoạt để có sẵn trong bảng điều khiển JumpToBoxes=Chuyển tới Thiết lập --> Widgets @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/vi_VN/commercial.lang b/htdocs/langs/vi_VN/commercial.lang index 1f1427bed27..a8fa18e1720 100644 --- a/htdocs/langs/vi_VN/commercial.lang +++ b/htdocs/langs/vi_VN/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=Bạn có chắc chắn muốn xóa sự kiện này? CardAction=Thẻ sự kiện ActionOnCompany=Công ty liên quan ActionOnContact=Liên lạc liên quan +ActionOnUser=Related user TaskRDVWith=Gặp gỡ với %s ShowTask=Hiện tác vụ ShowAction=Hiện sự kiện @@ -47,7 +48,6 @@ LastProspectToContact=Để liên lạc LastProspectContactInProcess=Đang liên lạc LastProspectContactDone=Đã liên lạc ActionAffectedTo=Sự kiện được giao cho -ActionDoneBy=Sự kiện được hoàn tất bởi ActionAC_TEL=Gọi điện thoại ActionAC_FAX=Gửi fax ActionAC_PROP=Gửi đơn hàng đề xuất qua thư @@ -78,16 +78,25 @@ WelcomeOnOnlineSignaturePageProposal=Chào mừng bạn đến trang để chấ WelcomeOnOnlineSignaturePageContract=Chào mừng bạn đến với %s Trang ký PDF hợp đồng WelcomeOnOnlineSignaturePageFichinter=Chào mừng bạn đến với %s Trang ký PDF can thiệp WelcomeOnOnlineSignaturePageSociete_rib=Chào mừng bạn đến với %s Trang ký PDF ủy quyền SEPA +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=Màn hình này cho phép bạn chấp nhận và ký, hoặc từ chối, một báo giá / đề xuất thương mại ThisScreenAllowsYouToSignDocFromContract=Màn hình này cho phép bạn ký hợp đồng trực tuyến dưới dạng PDF. ThisScreenAllowsYouToSignDocFromFichinter=Màn hình này cho phép bạn ký can thiệp vào định dạng PDF trực tuyến. ThisScreenAllowsYouToSignDocFromSociete_rib=Màn hình này cho phép bạn ký Ủy nhiệm SEPA trên định dạng PDF trực tuyến. +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=Đây là thông tin trên tài liệu để chấp nhận hoặc từ chối ThisIsInformationOnDocumentToSignContract=Đây là thông tin về hợp đồng ký kết ThisIsInformationOnDocumentToSignFichinter=Đây là thông tin can thiệp để ký ThisIsInformationOnDocumentToSignSociete_rib=Đây là thông tin về SEPA Ủy quyền ký +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=Chữ ký của báo giá / đề xuất thương mại %s SignatureContractRef=Chữ ký hợp đồng %s SignatureFichinterRef=Chữ ký can thiệp %s SignatureSociete_ribRef=Chữ ký của Ủy quyền SEPA %s FeatureOnlineSignDisabled=Tính năng ký trực tuyến bị vô hiệu hóa hoặc tài liệu được tạo trước khi tính năng được bật +NoSignature=Không ký +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/vi_VN/companies.lang b/htdocs/langs/vi_VN/companies.lang index 8bf2cbbae27..34ce5392ee0 100644 --- a/htdocs/langs/vi_VN/companies.lang +++ b/htdocs/langs/vi_VN/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Đăng nhập Dolibarr NoDolibarrAccess=Không truy cập Dolibarr ExportDataset_company_1=Bên thứ ba (công ty / tổ chức / người) và tính chất của họ ExportDataset_company_2=Liên lạc và tính chất của họ +ExportDataset_company_3=Tài khoản ngân hàng của bên thứ ba ImportDataset_company_1=Bên thứ ba và tính chất của họ ImportDataset_company_2=Các liên lạc/ địa chỉ và thuộc tính bổ sung của bên thứ ba ImportDataset_company_3=Tài khoản ngân hàng của bên thứ ba diff --git a/htdocs/langs/vi_VN/datapolicy.lang b/htdocs/langs/vi_VN/datapolicy.lang index bcc9f791dda..11025ffa447 100644 --- a/htdocs/langs/vi_VN/datapolicy.lang +++ b/htdocs/langs/vi_VN/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,13 +15,10 @@ Module4100Name = Chính sách bảo mật dữ liệu # Module description 'ModuledatapolicyDesc' Module4100Desc = Mô-đun quản lý quyền riêng tư dữ liệu (Tuân thủ GDPR) - -# # Administration page -# datapolicySetup = Thiết lập chính sách bảo mật dữ liệu mô-đun Deletion = Xóa dữ liệu -datapolicySetupPage = Depending on the laws of your countries (Example Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). +datapolicySetupPage = Tùy thuộc vào luật pháp của quốc gia bạn (Ví dụ Điều 5 của GDPR), dữ liệu cá nhân phải được lưu giữ trong một khoảng thời gian không vượt quá khoảng thời gian dữ liệu cần thiết cho mục đích thu thập dữ liệu, ngoại trừ mục đích lưu trữ.
Việc xóa sẽ được thực hiện tự động sau một khoảng thời gian nhất định mà không có sự kiện (khoảng thời gian mà bạn sẽ chỉ ra dưới đây). NB_MONTHS = %s tháng ONE_YEAR = 1 năm NB_YEARS = %s năm @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = Khách hàng tiềm năng DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = Cũng không phải khách hàng tiềm năng/Cũng không phải khách hàng DATAPOLICY_CONTACT_FOURNISSEUR = Nhà cung cấp DATAPOLICY_ADHERENT = Thành viên -DATAPOLICY_Tooltip_SETUP = Loại liên hệ - Cho biết các lựa chọn của bạn cho từng loại. -DATAPOLICYMail = Cài đặt email -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = Nội dung của email -DATAPOLICYSUBSITUTION = Bạn có thể sử dụng các biến sau trong email của mình (LINKACCEPT cho phép tạo liên kết ghi lại sự đồng ý của người đó, LINKREFUSED cho phép ghi lại lời từ chối của người đó): -DATAPOLICYACCEPT = Tin nhắn sau khi thỏa thuận -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = Bạn có thể gửi email GDPR đến tất cả các địa chỉ liên hệ có liên quan của mình (những người chưa nhận được email và bạn chưa đăng ký bất kỳ điều gì về thỏa thuận GDPR của họ). Để thực hiện việc này, hãy sử dụng nút sau. SendAgreement = Gửi email AllAgreementSend = Tất cả các email đã được gửi TXTLINKDATAPOLICYACCEPT = Văn bản cho liên kết "thỏa thuận" -TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# +TXTLINKDATAPOLICYREFUSE = Văn bản cho liên kết "bất đồng" # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR: Xử lý dữ liệu cá nhân DATAPOLICY_consentement = Đã có sự đồng ý cho việc xử lý dữ liệu cá nhân -DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data -DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = Ẩn danh bên thứ ba -DATAPOLICY_POPUP_ANONYME_TEXTE = Bạn không thể xóa liên hệ này khỏi Dolibarr vì có các mục liên quan. Theo GDPR, bạn sẽ ẩn danh tất cả dữ liệu này để tôn trọng nghĩa vụ của mình. Bạn có muốn tiếp tục không ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = Tính di động GDPR -DATAPOLICY_PORTABILITE_TITLE = Xuất dữ liệu cá nhân -DATAPOLICY_PORTABILITE_CONFIRMATION = Bạn muốn xuất dữ liệu cá nhân của liên hệ này. Bạn có chắc không ? - -# +DATAPOLICY_opposition_traitement = Phản đối việc xử lý dữ liệu cá nhân của anh ấy +DATAPOLICY_opposition_prospection = Phản đối việc xử lý dữ liệu cá nhân của anh ấy cho mục đích tìm kiếm # Notes added during an anonymization -# -ANONYMISER_AT = Ẩn danh %s - -DATAPOLICY_date = Date of agreement/disagreement GDPR -DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = Gửi email GDPR +DATAPOLICY_date = Ngày đồng ý/không đồng ý GDPR +DATAPOLICY_send = Ngày gửi email thỏa thuận MailSent = Email đã được gửi - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. -NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion +NUMBER_MONTH_BEFORE_DELETION = Số tháng trước khi xóa diff --git a/htdocs/langs/vi_VN/dict.lang b/htdocs/langs/vi_VN/dict.lang index 1d4af2151ac..4fdd00c4ffa 100644 --- a/htdocs/langs/vi_VN/dict.lang +++ b/htdocs/langs/vi_VN/dict.lang @@ -295,8 +295,8 @@ CurrencyXPF=CFP Francs CurrencySingXPF=CFP Franc CurrencyCentEUR=xu CurrencyCentSingEUR=phần trăm -CurrencyCentINR=paisa -CurrencyCentSingINR=paise +CurrencyCentINR=paise +CurrencyCentSingINR=paisa CurrencyThousandthSingTND=nghìn #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet diff --git a/htdocs/langs/vi_VN/errors.lang b/htdocs/langs/vi_VN/errors.lang index 04eadf5969e..33a3596e596 100644 --- a/htdocs/langs/vi_VN/errors.lang +++ b/htdocs/langs/vi_VN/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=Người dùng phải được chỉ định cho nhi ErrorTaskAlreadyAssigned=Nhiệm vụ đã được phân công cho người dùng ErrorModuleFileSeemsToHaveAWrongFormat=Gói mô-đun dường như có một sai định dạng. ErrorModuleFileSeemsToHaveAWrongFormat2=Ít nhất một thư mục bắt buộc phải tồn tại trong tập zip của mô-đun: %s hoặc %s -ErrorFilenameDosNotMatchDolibarrPackageRules=Tên của gói mô-đun ( %s ) không khớp với cú pháp tên dự kiến: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=Lỗi, trùng lặp tên trigger %s. Đã được tải từ %s. ErrorNoWarehouseDefined=Lỗi, không có kho được định nghĩa. ErrorBadLinkSourceSetButBadValueForRef=Liên kết bạn sử dụng không hợp lệ. Một 'nguồn' để thanh toán được xác định, nhưng giá trị cho 'tham chiếu' không hợp lệ. @@ -422,3 +422,4 @@ OperNotDefined=Phương thức thanh toán không được xác định ErrorThisContactXIsAlreadyDefinedAsThisType=%s đã được xác định là địa chỉ liên hệ cho loại này. ErrorThisGroupIsAlreadyDefinedAsThisType=Những người liên hệ với nhóm này đã được xác định là người liên hệ cho loại này. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/vi_VN/mails.lang b/htdocs/langs/vi_VN/mails.lang index 8906d3b20b2..870ed8b23a9 100644 --- a/htdocs/langs/vi_VN/mails.lang +++ b/htdocs/langs/vi_VN/mails.lang @@ -32,6 +32,8 @@ NewMailing=Email mới NewSMSing=Tin nhắn mới EditMailing=Chỉnh sửa Email ResetMailing=Gửi lại Email +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=Xóa email PreviewMailing=Xem trước gửi email CreateMailing=Tạo email @@ -53,6 +55,7 @@ ErrorMailRecipientIsEmpty=Email người nhận có sản phẩm nào WarningNoEMailsAdded=Không có Email mới để thêm vào danh sách người nhận. ConfirmValidMailing=Bạn có chắc chắn muốn xác nhận email này? ConfirmResetMailing=Cảnh báo, bằng cách khởi tạo lại email %s , bạn sẽ cho phép gửi lại email này trong một thư gửi hàng loạt. Bạn có chắc chắn muốn làm điều này? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Bạn có chắc chắn muốn xóa email này? NbOfUniqueEMails=Số lượng email duy nhất NbOfUniquePhones=Số lượng điện thoại độc đáo @@ -190,11 +193,12 @@ NoMoreRecipientToSendTo=Không còn người nhận để gửi email đến EmailOptedOut=Chủ sở hữu email đã yêu cầu không liên hệ với anh ta bằng email này nữa EvenUnsubscribe=Bao gồm các email chọn không tham gia EvenUnsubscribeDesc=Bao gồm các email chọn không tham gia khi bạn chọn email làm mục tiêu. Ví dụ: hữu ích cho các email dịch vụ bắt buộc. -XEmailsDoneYActionsDone=%s email đủ điều kiện trước, %s email đã được xử lý thành công (đối với bản ghi %s /hành động đã thực hiện) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=Bạn có thể thực hiện một số hướng dẫn cho Email của mình (Ví dụ: tạo hình ảnh trong mẫu email...) ModelTemplate=Mẫu email YouCanChooseAModelForYouMailContent= Bạn có thể chọn một trong các mô hình mẫu hoặc tạo một mô hình bằng AI TitleOfMailHolder=Title of the e-mail goes here ContentOfMailHolder=Content of email goes here... LastNews=Last News +ListProducts= List of products PasswordReset=Password reset diff --git a/htdocs/langs/vi_VN/stripe.lang b/htdocs/langs/vi_VN/stripe.lang index 5f37ff46f62..5e3e632fb3c 100644 --- a/htdocs/langs/vi_VN/stripe.lang +++ b/htdocs/langs/vi_VN/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=URL để cung cấp trang thanh toá ToOfferALinkForOnlinePaymentOnFreeAmount=URL để cung cấp trang thanh toán trực tuyến %s với bất kỳ số tiền nào không có đối tượng hiện có ToOfferALinkForOnlinePaymentOnMemberSubscription=URL để cung cấp trang thanh toán trực tuyến %s cho đăng ký thành viên ToOfferALinkForOnlinePaymentOnDonation=URL để cung cấp trang thanh toán trực tuyến %s để thanh toán một khoản đóng góp -YouCanAddTagOnUrl=Bạn cũng có thể thêm tham số url &tag=value vào bất kỳ URL nào (chỉ bắt buộc đối với thanh toán không được liên kết với một đối tượng) để thêm thẻ nhận xét thanh toán của riêng bạn.
Đối với URL thanh toán không có đối tượng hiện tại, bạn cũng có thể thêm tham số &noidempotency=1 để có thể sử dụng cùng một liên kết với cùng một thẻ (một số chế độ thanh toán có thể giới hạn thanh toán là 1 cho mỗi liên kết khác nhau mà không có tham số này) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=Thiết lập Stripe của bạn với url %s để thanh toán được tạo tự động khi được xác thực bởi Stripe. AccountParameter=Thông số tài khoản UsageParameter=Thông số sử dụng @@ -77,4 +78,13 @@ TERMINAL_LOCATION=Vị trí (địa chỉ) của Stripe Terminals RequestDirectDebitWithStripe=Yêu cầu ghi nợ trực tiếp với Stripe RequesCreditTransferWithStripe=Yêu cầu chuyển khoản tín dụng với Stripe STRIPE_SEPA_DIRECT_DEBIT=Cho phép thanh toán Ghi nợ trực tiếp thông qua Stripe +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT StripeConnect_Mode=Chế độ kết nối sọc +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/langs/zh_CN/admin.lang b/htdocs/langs/zh_CN/admin.lang index 59fe955d253..0a3c444da92 100644 --- a/htdocs/langs/zh_CN/admin.lang +++ b/htdocs/langs/zh_CN/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=值列表必须是格式为键/值对的行(其中 ExtrafieldParamHelpcheckbox=值列表必须是格式为 键/值 的对(其中 键不能为 '0')

例如:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=值列表必须是格式为 键/值 的对(其中 键不能为 '0')1 2 例如:3 1,value1 4 2,value2 5 3,value3 6 ... 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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=参数必须是 ObjectName:Classpath
语法:ObjectName:Classpath ExtrafieldParamHelpSeparator=为简单分隔符留空
将此设置为 1 用于折叠分隔符(默认为新会话打开,然后为每个用户会话保留状态)
将此设置为 2 用于折叠分隔符(默认为新会话折叠,然后在每个用户会话之前保持状态) LibraryToBuildPDF=用于 PDF 生成的库 @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s 后跟按字符数截断的客户名称: ModuleCompanyCodeSupplierDigitaria=%s 后跟按字符数截断的供应商名称:%s 作为供应商科目代码。 Use3StepsApproval=默认情况下,需要由2个不同的用户创建和审批采购订单(一个步骤/用户创建和一个步骤/用户审批。请注意,如果用户同时拥有创建和审批权限,则一个步骤/用户就足够了) 。如果金额高于特定值,您可以要求使用此选项引入第三个步骤/用户审批(因此需要3个步骤:1 =确认,2 =首次审批,3 =如果金额足够则二次审批)。
如果一次审批(2个步骤)足够,则将其设置为空,如果始终需要二次审批(3个步骤),则将其设置为非常低的值(0.1)。 UseDoubleApproval=当金额(不含税)高于...时,使用 3 步审批 -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- 一些电子邮件服务提供商(如雅虎)不允许您从其他服务器而不是他们自己的服务器发送电子邮件。您当前的设置使用应用程序的服务器而不是您的电子邮件提供商的服务器来发送电子邮件,因此某些收件人(与限制性 DMARC 协议兼容的)会询问您的电子邮件提供商他们是否可以接受您的电子邮件,某些电子邮件提供商(如雅虎)可能会回答“不”,因为发送服务器不是他们的,所以您发送的电子邮件中有少数可能不被接受(还要注意您的电子邮件提供商的发送配额)。 +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- 使用您自己的电子邮件服务提供商的 SMTP 服务器发送电子邮件也很有趣,因为从应用程序发送的所有电子邮件也将保存到您邮箱的“已发送”目录中。 WarningPHPMailD=因此,建议将电子邮件的发送方式更改为"SMTP"值。 WarningPHPMailDbis=如果您确实想保持默认的“PHP”方式发送电子邮件,请忽略此警告,或%s点击这里%s将其移除。 WarningPHPMail2=如果您的电子邮件SMTP提供商需要将电子邮件客户端限制为某些IP地址(非常罕见),则这是您的ERP CRM应用程序的邮件用户代理(MUA)的IP地址: %s。 -WarningPHPMailSPF=如果您的发件人电子邮件地址域受 SPF 记录保护(询问您的域名注册商),您必须在您域名的 DNS 记录中添加以下 IP的 SPF 记录: %s 。 -ActualMailSPFRecordFound=实际找到的 SPF 记录(对于电子邮件 %s):%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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=点击以显示描述 DependsOn=该模块需要模块(集) RequiredBy=本模块被以下模块(集)需要 @@ -867,7 +868,7 @@ Permission255=修改其他用户密码 Permission256=删除或禁用其他用户 Permission262=访问权限扩展至所有合作方及其对象(不仅限于与用户关联为销售代表的合作方)。 Permission262b=对于外部用户无效(他们始终仅限于报价、订单、发票、合同等)。 -Permission262c=对项目无效(规则仅限于项目权限、可见性和分配事宜)。 +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=将访问权限扩展到所有没有对象的合作方(不仅是用户作为销售代表的合作方)。
对外部用户无效(对于报价单、订单、发票、合同等,始终仅限于他们自己)。
对项目无效(仅关于项目权限、可见性和分配事项的规则)。 Permission271=查看 CA Permission272=查看发票 @@ -944,7 +945,7 @@ Permission776=支付费用报销单 Permission777=读取所有费用报销单(包括非下属用户的) Permission778=创建/变更每个人的费用报销单 Permission779=导出费用报销单 -Permission1001=读取库存 +Permission1001=Read warehouses and stocks Permission1002=创建/变更仓库 Permission1003=删除仓库 Permission1004=读取库存调拨 @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=清理值的正则表达式(COMPANY_DIGITARIA_CL DuplicateForbidden=禁止重复 RemoveSpecialWords=为客户或供应商生成子帐户时清除某些字词 RemoveSpecialWordsHelp=在计算客户或供应商帐户之前指定要清理的单词。 在每个单词之间使用“;” -GDPRContact=数据保护官(DPO、数据隐私或 GDPR 联系人) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=如果您将个人数据存储在您的信息系统中,您可以在此处指定负责一般数据保护条例(GDPR)的联系人 HelpOnTooltip=显示在工具提示上的帮助文本 HelpOnTooltipDesc=当该字段出现在表单中时,将文本或翻译键放在此处以在工具提示中显示文本 @@ -2218,7 +2219,7 @@ CreateCandidature=创建工作申请 FormatZip=Zip MainMenuCode=菜单入口代码(主菜单) ECMAutoTree=显示自动 ECM 树 -OperationParamDesc=定义用于提取某些数据或设置用于操作的值的规则。

将电子邮件主题中的公司名称提取到临时变量中的示例:
tmp_var=EXTRACT:SUBJECT:来自公司的消息 ([^\n]*)

设置要创建的对象的属性的示例:
objproperty1=SET:硬编码值
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:一个值(值仅当属性尚未定义时才设置)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:我的公司名称是\\ s([^\\s]*)

使用新行提取或设置多个属性。 +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=营业时间 OpeningHoursDesc=在此处输入贵公司的正常营业时间。 ResourceSetup=资源模块的配置 @@ -2264,7 +2265,7 @@ LargerThan=大于 IfTrackingIDFoundEventWillBeLinked=请注意,如果在电子邮件中找到对象的跟踪 ID,或者如果电子邮件是收集到的并链接到对象的电子邮件区域的答复,则创建的事件将自动链接到已知的相关对象。 WithGMailYouCanCreateADedicatedPassword=如果您启用了 GMail 帐户的两步验证,需要为Dolibarr创建一个专用的应用密码,而不是使用您自己的来自 https://myaccount.google.com/ 的帐户密码。 EmailCollectorTargetDir=成功处理电子邮件后,将其移动到另一个标签/目录可能是一种期望中的行为。只需在此处设置目录名称即可使用此功能(请勿在名称中使用特殊字符)。请注意,您还必须使用可以读/写的登录帐户。 -EmailCollectorLoadThirdPartyHelp=您可以使用此操作来使用电子邮件内容来查找并加载数据库中现有的合作方(搜索将在“id”、“name”、“name_alias”、“email”之间定义的属性上完成)。找到(或创建)的合作方将用于以下需要它的操作。
例如,如果您想要创建一个合作方,其名称是从正文中的字符串“Name: name to find”中提取的,请使用发件人邮箱作为email,您可以这样设置参数字段:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s] *);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=警告:许多电子邮件服务器(例如 Gmail)在搜索字符串时会进行完整单词搜索,如果仅在单词中找到字符串的一部分,则不会返回结果。也出于这个原因,在搜索条件中使用特殊字符将被忽略,因为它们不是现有单词的一部分。
要对某个单词进行排除搜索(如果未找到该单词,则返回电子邮件),您可以使用 !单词之前的字符(可能不适用于某些邮件服务器)。 EndPointFor=%s 的终点:%s DeleteEmailCollector=删除电子邮件收集器 @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=合作方名称 - 合作方別名 ALIAS_THIRDPARTY=合作方別名 - 合作方名称 PDFIn2Languages=以 2 种不同语言显示 PDF 中的标签(此功能可能不适用于某些语言) PDF_USE_ALSO_LANGUAGE_CODE=如果您想在同一个生成的 PDF 中以 2 种不同的语言复制 PDF 中的某些文本,则必须在此处设置第二种语言,以便生成的 PDF 将在同一页面中包含 2 种不同的语言:生成 PDF 时选择的一种和这个(只有少数 PDF 模板支持这一点)。留空为每个 PDF只有1种语言。 -PDF_USE_A=使用 PDF/A 格式而不是默认格式 PDF 生成 PDF 文档 +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=在此处输入 FontAwesome 图标的代码。如果你不知道什么是 FontAwesome,你可以使用通用值 fa-address-book。 RssNote=注意:每个 RSS 源定义都提供一个widget小组件,您必须启用该widget小组件才能在看板中使用它 JumpToBoxes=跳转到 设置 -> widget小组件 @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/zh_CN/commercial.lang b/htdocs/langs/zh_CN/commercial.lang index 7e6c7d71b8f..5bb4c277400 100644 --- a/htdocs/langs/zh_CN/commercial.lang +++ b/htdocs/langs/zh_CN/commercial.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - commercial Commercial=商务 -CommercialArea=商务部分 +CommercialArea=商务区 Customer=客户 Customers=客户 Prospect=准客户 @@ -11,9 +11,10 @@ AddAction=新建事件 AddAnAction=新建事件 AddActionRendezVous=新建会议 ConfirmDeleteAction=你确定要删除这个事件? -CardAction=事件卡 +CardAction=事件 ActionOnCompany=关联公司 ActionOnContact=关联联系人 +ActionOnUser=Related user TaskRDVWith=与 %s 会议 ShowTask=显示任务 ShowAction=显示事件 @@ -47,7 +48,6 @@ LastProspectToContact=即将联系 LastProspectContactInProcess=正在联系 LastProspectContactDone=已经联系 ActionAffectedTo=时间影响到 -ActionDoneBy=时间完成人 ActionAC_TEL=电话 ActionAC_FAX=发送传真 ActionAC_PROP=通过邮件发送报价 @@ -59,31 +59,44 @@ ActionAC_FAC=通过邮件发送客户发票 ActionAC_REL=通过邮件发送客户发票(提醒) ActionAC_CLO=关闭 ActionAC_EMAILING=发送群发电子邮件 -ActionAC_COM=Send sales order by mail +ActionAC_COM=通过邮件发送销售订单 ActionAC_SHIP=通过邮件发送货运单 ActionAC_SUP_ORD=通过邮件发送采购订单 ActionAC_SUP_INV=通过邮件发送供应商发票 ActionAC_OTH=其他 -ActionAC_OTH_AUTO=Other auto -ActionAC_MANUAL=Events inserted manually (by a user) -ActionAC_AUTO=Events inserted automatically +ActionAC_OTH_AUTO=其他自动 +ActionAC_MANUAL=(由用户)手动插入的事件 +ActionAC_AUTO=自动插入的事件 ActionAC_OTH_AUTOShort=其他 -ActionAC_EVENTORGANIZATION=Event organization events +ActionAC_EVENTORGANIZATION=组织活动事件 Stats=销售统计 StatusProsp=准客户状态 DraftPropals=报价单草稿 NoLimit=没有限制 ToOfferALinkForOnlineSignature=链接在线签名 WelcomeOnOnlineSignaturePageProposal=欢迎来到批准来自%s的报价单的页面 -WelcomeOnOnlineSignaturePageContract=Welcome to %s Contract PDF Signing Page +WelcomeOnOnlineSignaturePageContract=欢迎来到 %s 合同 PDF 签名页面 WelcomeOnOnlineSignaturePageFichinter=欢迎来到 %s 现场服务PDF签名页 +WelcomeOnOnlineSignaturePageSociete_rib=欢迎来到 %s SEPA 授权 PDF 签名页面 +WelcomeOnOnlineSignaturePageExpedition=欢迎来到 %s 发货单 PDF 签名页面 ThisScreenAllowsYouToSignDocFromProposal=此界面允许您接受并签署或者拒绝报价/报价单 -ThisScreenAllowsYouToSignDocFromContract=This screen allow you to sign contract on PDF format online. +ThisScreenAllowsYouToSignDocFromContract=此界面允许您在线以 PDF 格式签署合同。 ThisScreenAllowsYouToSignDocFromFichinter=此界面允许您在线签署 PDF 格式的现场服务。 -ThisIsInformationOnDocumentToSignProposal=This is information on document to accept or refuse -ThisIsInformationOnDocumentToSignContract=This is information on contract to sign +ThisScreenAllowsYouToSignDocFromSociete_rib=此界面允许您在线签署 PDF 格式的 SEPA 授权书。 +ThisScreenAllowsYouToSignDocFromExpedition=此界面允许您在线以 PDF 格式签署发货。 +ThisIsInformationOnDocumentToSignProposal=这是有关文档的信息,供您接受或拒绝 +ThisIsInformationOnDocumentToSignContract=这是有关合同的签名信息 ThisIsInformationOnDocumentToSignFichinter=这是有关现场服务签名的信息 +ThisIsInformationOnDocumentToSignSociete_rib=这是有关 SEPA 授权签署的信息 +ThisIsInformationOnDocumentToSignExpedition= 这是有关发货单的签名信息 SignatureProposalRef=签署报价/报价单 %s -SignatureContractRef=Signature of contract %s +SignatureContractRef=合同 %s的签名 SignatureFichinterRef=现场服务 %s 的签名 +SignatureSociete_ribRef=SEPA 授权书 %s的签名 FeatureOnlineSignDisabled=禁用联机签名的功能或在启用功能之前生成的文档 +NoSignature=未签署 +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/zh_CN/companies.lang b/htdocs/langs/zh_CN/companies.lang index 5ba37b9981b..36880cd4003 100644 --- a/htdocs/langs/zh_CN/companies.lang +++ b/htdocs/langs/zh_CN/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=登陆Dolibarr NoDolibarrAccess=没有Dolibarr访问 ExportDataset_company_1=合作方(公司/基金会/自然人)及其属性特征 ExportDataset_company_2=联系人及其属性特征 +ExportDataset_company_3=合作方银行账户 ImportDataset_company_1=合作方及其属性特征 ImportDataset_company_2=合作方附加联系人/地址和属性 ImportDataset_company_3=合作方银行账户 diff --git a/htdocs/langs/zh_CN/dict.lang b/htdocs/langs/zh_CN/dict.lang index 4d07e5ecebe..ad3f309e64a 100644 --- a/htdocs/langs/zh_CN/dict.lang +++ b/htdocs/langs/zh_CN/dict.lang @@ -158,7 +158,7 @@ CountryMX=墨西哥 CountryFM=密克罗尼西亚 CountryMD=摩尔多瓦 CountryMN=蒙古 -CountryMS=蒙特塞拉特 +CountryMS=Montserrat CountryMZ=莫桑比克 CountryMM=缅甸 CountryNA=纳米比亚 @@ -233,7 +233,7 @@ CountryUY=乌拉圭 CountryUZ=乌兹别克斯坦 CountryVU=瓦努阿图 CountryVE=委内瑞拉 -CountryVN=越南 +CountryVN=Vietnam CountryVG=英属维尔京群岛 CountryVI=维尔京群岛,美国 CountryWF=瓦利斯和富图纳群岛 @@ -324,7 +324,7 @@ PaperFormatEUA6=A6格式 PaperFormatUSLETTER=美式信签格式 PaperFormatUSLEGAL=美式法律格式 PaperFormatUSEXECUTIVE=US 公文 -PaperFormatUSLEDGER=总帐/小报 +PaperFormatUSLEDGER=总账/小报 PaperFormatCAP1=加拿大 P1格式 PaperFormatCAP2=加拿大 P2格式 PaperFormatCAP3=加拿大 P3格式 diff --git a/htdocs/langs/zh_CN/errors.lang b/htdocs/langs/zh_CN/errors.lang index e39abe303e9..b4553a2613d 100644 --- a/htdocs/langs/zh_CN/errors.lang +++ b/htdocs/langs/zh_CN/errors.lang @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=必须为任务分配用户才能输入消耗的时 ErrorTaskAlreadyAssigned=任务已分配给用户 ErrorModuleFileSeemsToHaveAWrongFormat=模块包似乎格式错误。 ErrorModuleFileSeemsToHaveAWrongFormat2=至少有一个强制性目录必须存在于模块的压缩包中: %s%s -ErrorFilenameDosNotMatchDolibarrPackageRules=模块包的名称( %s )与预期的名称语法不匹配: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=错误,重复的触发器名称%s。已经从%s加载。 ErrorNoWarehouseDefined=错误,未定义仓库。 ErrorBadLinkSourceSetButBadValueForRef=您使用的链接无效。付款的“来源”已定义,但“参考”的值无效。 @@ -422,3 +422,4 @@ OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/zh_CN/interventions.lang b/htdocs/langs/zh_CN/interventions.lang index 9bff9cd9359..11d67386273 100644 --- a/htdocs/langs/zh_CN/interventions.lang +++ b/htdocs/langs/zh_CN/interventions.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - interventions Intervention=现场服务 Interventions=现场服务 -InterventionCard=现场服务卡 +InterventionCard=现场服务 NewIntervention=新建现场服务 AddIntervention=创建现场服务 ChangeIntoRepeatableIntervention=改为可重复的现场服务 @@ -13,11 +13,17 @@ CreateDraftIntervention=创建草案 InterventionContact=现场服务联系人 DeleteIntervention=删除现场服务 ValidateIntervention=验证现场服务 +SignIntervention=签署现场服务 +UnsignIntervention=Unsign intervention ModifyIntervention=变更现场服务 +CloseIntervention=Close intervention DeleteInterventionLine=删除现场服务行 ConfirmDeleteIntervention=您确定要删除此现场服务吗? ConfirmValidateIntervention=您确定要以名称 %s 来验证此现场服务吗? +ConfirmSignIntervention=Are you sure you want to set this intervention as signed ? +ConfirmUnsignIntervention=Are you sure you want to set this intervention as unsigned ? ConfirmModifyIntervention=您确定要变更此现场服务吗? +ConfirmCloseIntervention=Are you sure you want to close this intervention? ConfirmDeleteInterventionLine=您确定要删除此现场服务行吗? ConfirmCloneIntervention=您确定要克隆此现场服务吗? NameAndSignatureOfInternalContact=现场服务人员的姓名及签名: @@ -27,21 +33,25 @@ InterventionCardsAndInterventionLines=现场服务和现场服务行 InterventionClassifyBilled=归类到“已计费” InterventionClassifyUnBilled=归类到“未计费” InterventionClassifyDone=归类到“已完成” -StatusInterInvoiced=已计费 +InterventionSign=Set Signed +InterventionUnsign=Set Unsigned SendInterventionRef=提交现场服务 %s SendInterventionByMail=通过电子邮件发送现场服务 InterventionCreatedInDolibarr=现场服务 %s 已创建 InterventionValidatedInDolibarr=现场服务 %s 已验证 +InterventionSignedInDolibarr=现场服务已签署 +InterventionSignedOnline=Intervention signed online +InterventionUnsignedInDolibarr=Intervention unsigned InterventionModifiedInDolibarr=现场服务 %s 已变更 InterventionClassifiedBilledInDolibarr=现场服务 %s 设置为已计费 InterventionClassifiedUnbilledInDolibarr=现场服务 %s 设置为未计费 InterventionSentByEMail=通过电子邮件发送现场服务 %s +InterventionClosedInDolibarr= Intervention %s closed InterventionDeletedInDolibarr=现场服务 %s 已删除 InterventionsArea=现场服务区 DraftFichinter=现场服务草案 LastModifiedInterventions=最近修改的 %s 个现场服务 FichinterToProcess=要处理的现场服务 -TypeContact_fichinter_external_CUSTOMER=跟进客户联系人 PrintProductsOnFichinter=在现场服务卡上也打印“产品”类型行(不仅是服务) PrintProductsOnFichinterDetails=从订单生成现场服务 UseServicesDurationOnFichinter=为订单生成的现场服务使用服务期限 @@ -70,3 +80,8 @@ FichinterNoContractLinked=现场服务 %s 在没有链接到合同的情况下 ErrorFicheinterCompanyDoesNotExist=公司不存在。现场服务不能被创建。 NextDateToIntervention=下一次现场服务的产生日期 NoIntervention=无现场服务 +TypeContact_fichinter_internal_INTERREPFOLL=Responsible for intervention follow-up +TypeContact_fichinter_internal_INTERVENING=Intervenant +TypeContact_fichinter_external_BILLING=Customer contact of intervention billing +TypeContact_fichinter_external_CUSTOMER=Customer contact of intervention follow-up +NotARecurringInterventionalTemplate=Not a recurring intervention template diff --git a/htdocs/langs/zh_CN/mails.lang b/htdocs/langs/zh_CN/mails.lang index 23239d5d1af..77ec14aa58f 100644 --- a/htdocs/langs/zh_CN/mails.lang +++ b/htdocs/langs/zh_CN/mails.lang @@ -7,8 +7,9 @@ AllEMailings=所有电子邮件 MailCard=通过电子邮件发送卡 MailRecipients=收件人 MailRecipient=收件人 -MailTitle=描述 +MailTitle=标签 MailFrom=从 +ForceEmailFrom=Default email From PhoneFrom=从 MailErrorsTo=Errors to MailReply=回复 @@ -18,6 +19,8 @@ MailCC=抄送 MailToCCUsers=复制给用户 MailCCC=缓存副本 MailTopic=Email subject +MailDate=Email date +MailReferences=Message IDs in References MailText=内容 MailFile=附件 MailMessage=电子邮件正文 @@ -29,8 +32,9 @@ NewMailing=新的电子邮件 NewSMSing=New smsing EditMailing=编辑电子邮件 ResetMailing=重新发送电子邮件 +ConfirmResetMailingTargetMassaction=Confirmation of the reset of targets status +ResetMailingTargetMassaction=Reset targets status DeleteMailing=删除电子邮件 -DeleteAMailing=删除一个电子邮件 PreviewMailing=预览电子邮件 CreateMailing=创建电子邮件 TestMailing=测试 @@ -51,6 +55,7 @@ ErrorMailRecipientIsEmpty=电子邮件收件人是空的 WarningNoEMailsAdded=没有新的电子邮件添加到收件人列表。 ConfirmValidMailing=您确定要验证此电子邮件吗? 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? +ConfirmResetMailingTargetMassactionQuestion=Are you sure you want to reset the status of the selected recipients (this may means that email will be resent if you use the Send email feature of the emailing) ? ConfirmDeleteMailing=Are you sure you want to delete this emailing? NbOfUniqueEMails=No. of unique emails NbOfUniquePhones=No. of unique phones @@ -111,6 +116,7 @@ MailNoChangePossible=为验证电子邮件收件人无法改变 SearchAMailing=搜索邮件 SendMailing=发送电子邮件 SentBy=发送 +AdvancedAlternative=Advanced alternative MailingNeedCommand=可以从命令行执行发送电子邮件。请您的服务器管理员启动以下命令以将电子邮件发送给所有收件人: MailingNeedCommand2=但是您可以发送到网上,加入与最大的电子邮件数量值参数MAILING_LIMIT_SENDBYWEB你要发送的会议。 ConfirmSendingEmailing=如果您想直接从此屏幕发送电子邮件,请确认您确定要立即从浏览器发送电子邮件? @@ -136,8 +142,8 @@ NoNotificationsWillBeSent=No automatic email notifications are planned for this 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 +ListOfActiveNotifications=Active subscriptions (targets/events) for automatic email notification +ListOfNotificationsDone=Automatic email notifications sent MailSendSetupIs=Email电子邮箱配置设定 '%s'. 这个模式无法用于邮件群发。 MailSendSetupIs2=首先您得这么地, 得先有个管理员账号吧 admin , 进入菜单 %s主页 - 设置 - EMails%s 修改参数 '%s' 用 '%s'模式。 在此模式下, 您才可输入一个 SMTP 服务器地址 来供您收发邮件。 MailSendSetupIs3=如果你对 SMTP 服务器的配置方面有疑问, 你可到这里询问 %s. @@ -171,7 +177,7 @@ 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) +OutGoingEmailSetupForEmailing=Outgoing emails (%s) DefaultOutgoingEmailSetup=Same configuration than the global Outgoing email setup Information=信息 ContactsWithThirdpartyFilter=Contacts with third-party filter @@ -179,7 +185,7 @@ Unanswered=Unanswered 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 +RecordCreatedByEmailCollector=Record created by the Email Collector %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. @@ -187,8 +193,12 @@ NoMoreRecipientToSendTo=没有更多收件人可以向其发送电子邮件 EmailOptedOut=Email owner has requested to not contact him with this email anymore EvenUnsubscribe=Include opt-out emails EvenUnsubscribeDesc=Include opt-out emails when you select emails as targets. Useful for mandatory service emails for example. -XEmailsDoneYActionsDone=%s 封电子邮件已通过资格预审,%s 封电子邮件已成功处理(对于 %s 记录/动作已完成) -helpWithAi=Generate message from AI +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s operations done) YouCanMakeSomeInstructionForEmail=You can make some instructions for your Email (Example: generate image in email template...) ModelTemplate=Email template YouCanChooseAModelForYouMailContent= You can choose one of template models or generate one with AI +TitleOfMailHolder=Title of the e-mail goes here +ContentOfMailHolder=Content of email goes here... +LastNews=Last News +ListProducts= List of products +PasswordReset=Password reset diff --git a/htdocs/langs/zh_HK/admin.lang b/htdocs/langs/zh_HK/admin.lang index 6a43bb2d63a..a5a4a8c20f8 100644 --- a/htdocs/langs/zh_HK/admin.lang +++ b/htdocs/langs/zh_HK/admin.lang @@ -27,7 +27,7 @@ FilesAdded=已新增的檔案 FileCheckDolibarr=檢查應用程式檔案的完整性 AvailableOnlyOnPackagedVersions=僅當應用程式是從官方套件安裝時,本地完整性檢查檔案才可用 XmlNotFound=未找到應用程式的 XML 完整性檔案 -SessionId=用戶使用時段 ID +SessionId=用戶使用時段編號 SessionSaveHandler=保存用戶使用時段的處理程序 SessionSavePath=使用時段保存位置 PurgeSessions=清除用戶使用時段 @@ -120,9 +120,9 @@ ComptaSetup=會計模塊設置 UserSetup=用戶管理設置 MultiCurrencySetup=多貨幣設置 MenuLimits=限制和準確性 -MenuIdParent=父選單ID -DetailMenuIdParent=父選單 ID(頂級選單為空) -ParentID=父級 ID +MenuIdParent=父選單編號 +DetailMenuIdParent=父選單編號(頂級選單為空) +ParentID=父級 編號 DetailPosition=對數字進行排序以定義選單位置 AllMenus=全部 NotConfigured=模塊 / 應用程式未配置 @@ -134,7 +134,7 @@ CurrentValueSeparatorDecimal=小數點分隔符 CurrentValueSeparatorThousand=千位分隔符 Destination=目的地 IdModule=模塊編號 -IdPermissions=權限ID +IdPermissions=權限編號 LanguageBrowserParameter=參數%s LocalisationDolibarrParameters=定位參數 ClientHour=客戶端時間(用戶) @@ -145,7 +145,7 @@ CurrentHour=PHP 時間(服務器) CurrentSessionTimeOut=當前使用時段超時 YouCanEditPHPTZ=要設置不同的 PHP 時區(不是必需的),您可以嘗試新增一個 .htaccess 文件,其中包含這樣的行:“SetEnv TZ Europe / Paris” HoursOnThisPageAreOnServerTZ=警告,與其他屏幕不同,此頁面上的時間不是您的本地時區,而是伺服器的時區。 -Box=小工具 +Box=小部件 Boxes=小部件 MaxNbOfLinesForBoxes=最大限度。小部件的行數 AllWidgetsWereEnabled=所有可用的小部件都已啟用 @@ -269,7 +269,7 @@ ReferencedPreferredPartners=首選合作夥伴 OtherResources=其他資源 ExternalResources=外部資源 SocialNetworks=社交網絡 -SocialNetworkId=社交網絡 ID +SocialNetworkId=社交網絡編號 ForDocumentationSeeWiki=對於用戶或開發人員文檔(文檔、常見問題解答...),
看看 Dolibarr Wiki:
%s ForAnswersSeeForum=對於任何其他問題/幫助,您可以使用 Dolibarr 論壇:
%s HelpCenterDesc1=以下是一些獲取 Dolibarr 幫助和支持的資源。 @@ -458,9 +458,9 @@ ExtrafieldSelect=選擇列表 ExtrafieldSelectList=從表中選擇 ExtrafieldSeparator=分隔符(不是字段) ExtrafieldPassword=密碼 -ExtrafieldRadio=Radio buttons (1 choice only) -ExtrafieldCheckBox=Select list (n choices) -ExtrafieldCheckBoxFromList=Select from table (n choices) +ExtrafieldRadio=單選按鈕(僅限 1 個選擇) +ExtrafieldCheckBox=選擇清單(n 個選項) +ExtrafieldCheckBoxFromList=從表格中選擇(n 個選項) ExtrafieldLink=連結到物件 ExtrafieldPointGeo=幾何點 ExtrafieldMultiPointGeo=幾何多點 @@ -474,8 +474,7 @@ ExtrafieldParamHelpPassword=將此欄位留空意味著該值將在不加密的 ExtrafieldParamHelpselect=值列表必須是格式為 key,value 的行(其中 key 不能為“0”)

例如:
1、值1
2、值2
代碼3,值3
...

為了使列表依賴於另一個補充屬性列表:
1、值1|選項_ parent_list_code :parent_key
2、值2|選項_ parent_list_code :parent_key

為了讓列表依賴於另一個列表:
1,值1| parent_list_code :parent_key
2、值2| parent_list_code :父鍵 ExtrafieldParamHelpcheckbox=值列表必須是格式為 key,value 的行(其中 key 不能為“0”)

例如:
1、值1
2、值2
3、值3
... ExtrafieldParamHelpradio=值列表必須是格式為 key,value 的行(其中 key 不能為“0”)

例如:
1、值1
2、值2
3、值3
... -ExtrafieldParamHelpsellist=數值列表來自表格
語法:表名:標籤欄位:id_field::filtersql\n
範例:c_typent:libelle:id::filtersql

- id_field 必然是一個主 int 鍵
-filtersql 是一個條件。它必須使用 USF 語法。範例:(active:=:1) 僅顯示活動值
您也可以在過濾器中使用$ID$,它是當前物件的當前ID
如果您想過濾額外字段,請使用語法 extra.fieldcode=... (其中 fieldcode 是額外字段的代碼)

為了讓清單依賴另一個補充屬性清單:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

為了讓清單依賴另一個清單:
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 +ExtrafieldParamHelpsellist=數值列表來自表格
語法:表名:標籤欄位:id_field::filtersql
範例:c_typent:libelle:id::filtersql

- id_field 必然是一個主 int 鍵
-filtersql 是一個條件。它必須使用 USF 語法。範例:(active:=:1) 僅顯示活動值
您也可以在過濾器中使用$ID$,它是當前物件的當前ID
如果您想過濾額外字段,請使用語法 extra.fieldcode=... (其中 fieldcode 是額外字段的代碼)

為了讓清單依賴另一個補充屬性清單:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

為了讓清單依賴另一個清單:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=參數必須是 ObjectName:Classpath
語法:ObjectName:Classpath ExtrafieldParamHelpSeparator=留空作為簡單的分隔符
將其設為 1 以取得折疊分隔符號(預設為新使用時段打開,然後為每個使用者使用時段保留狀態)
將其設為 2 作為折疊分隔符號(新會話預設折疊,然後在每個使用者使用時段之前保留狀態) LibraryToBuildPDF=用於 PDF 生成的庫 @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s 後面接著截斷的客戶名稱和字元 ModuleCompanyCodeSupplierDigitaria=%s 後面接著截斷的供應商名稱和字元數:%s 表示供應商會計代碼。 Use3StepsApproval=預設情況下,採購訂單需要由 2 個不同的用戶建立和批准(建立一個步驟/用戶,批准一個步驟/用戶。請注意,如果用戶同時擁有建立和批准權限,則一個步驟/用戶就足夠了) 。如果金額高於專用值,您可以要求使用此選項引入第三步驟/使用者批准(因此需要 3 個步驟:1=驗證,2=第一次批准,3=如果金額足夠則第二次批准)。
如果一次批准(2 個步驟)就足夠,則將其設為空;如果始終需要第二次批准(3 個步驟),則將其設為非常低的值(0.1)。 UseDoubleApproval=當金額(不含稅)高於...時,使用3步驟審批 -WarningPHPMail=警告:從應用程式發送電子郵件的設定正在使用預設的通用設定。此選擇不需要任何技術知識即可完成設定。
但是,出於以下幾個原因,通常最好將外發電子郵件設定為使用電子郵件服務提供者的電子郵件伺服器而不是預設值: +WarningPHPMail=注意:從應用程式發送電子郵件的設定使用預設的通用設定(稱為“%s”)。這種選擇不需要技術知識,也不需要特殊的設定。
但是,基於以下幾個原因,通常最好將外發電子郵件設定為使用其他方法(稱為「%s」)來使用電子郵件服務提供者的電子郵件伺服器,而不是預設值: WarningPHPMailA=- 使用電郵服務提供商的伺服器提高您的電郵可信度,因此提高發送成功率而不被標記為垃圾郵件 -WarningPHPMailB=- 某些電子郵件服務提供者(如雅虎)不允許您從他們自己的伺服器之外的其他伺服器發送電子郵件。您目前的設定使用應用程式的伺服器而不是電子郵件提供者的伺服器來傳送電子郵件,因此某些收件者(與限制性DMARC 協定相容的收件者)會詢問您的電子郵件提供者是否可以接受您的電子郵件,而某些電子郵件提供者(如雅虎)可能會回答“否”,因為伺服器不是他們的,因此您發送的電子郵件中很少有可能不會被接受(還要注意您的電子郵件提供者的發送配額)。 +WarningPHPMailB=- 如果您的電子郵件網域(mymaildomain.com 到 myname@mymaildomain.com 部分)受 SPF + DMARC 記錄保護,您的電子郵件可能會被標記為垃圾郵件,因為您在寄件者網域 (mymaildomain.com) 的 DNS 區域中定義的 DMARC 規則不允許作為一般寄件者傳送。在這種情況下,您必須停用網域的DMARC(或將其設定為p=none,如@gmail.com 所做的那樣),或者更好的是,如果您有技術知識,請使用其他方法通過SMTP 發送電子郵件您自己的電子郵件提供者的伺服器。 WarningPHPMailC=- 使用您自己的電子郵件服務提供者的 SMTP 伺服器發送電子郵件也很有趣,因此從應用程式發送的所有電子郵件也將保存到您郵箱的「已發送」目錄中。 WarningPHPMailD=因此,建議將電子郵件的傳送方式變更為值「SMTP」。 WarningPHPMailDbis=如果您確實想保留預設的「PHP」方法來傳送電子郵件,只需忽略此警告,或透過%s按一下此處%s將其刪除。 WarningPHPMail2=如果您的電子郵件SMTP 提供者需要將電子郵件用戶端限制為某些IP 位址(非常罕見),則這是ERP CRM 應用程式的郵件使用者代理(MUA) 的IP 位址:%s 。 -WarningPHPMailSPF=如果您的寄件者電子郵件地址中的網域名稱受 SPF 記錄保護(詢問您的網域註冊商),您必須在您的網域的 DNS 的 SPF 記錄中新增以下 IP:%s。 -ActualMailSPFRecordFound=找到的真正SPF 記錄(針對電子郵件%s):%s +WarningPHPMailSPF=如果您的寄件者電子郵件地址中的網域名稱受SPF 記錄保護(請詢問您的網域註冊商),您必須在您的網域的DNS 的SPF 記錄中新增下列IP 或條目:%s。 +WarningPHPMailSPFDMARC=如果寄件者電子郵件地址中的網域名稱受與p=none 不同的DMARC 記錄保護(詢問您的網域註冊商),則必須刪除您的DMARC 記錄,或將其設為p=none,如@gmail. com)或使用發送另一種方法。 +SPFAndDMARCInformation=主要電子郵件地址的 SPF 和 DMARC DNS 記錄 +ActualMailDNSRecordFound=找到實際的 %s 記錄(針對電子郵件 %s):%s ClickToShowDescription=點擊顯示描述 DependsOn=此模組需要模組(群) RequiredBy=此模組被模組(群)要求 @@ -576,7 +577,7 @@ Module30Name=發票 Module30Desc=管理客戶的發票和貸方票據。供應商發票和貸方票據的管理 Module40Name=供應商 Module40Desc=供應商和採購管理(採購訂單和供應商發票開具賬單) -Module42Name=調試日誌 +Module42Name=偵錯日誌 Module42Desc=日誌記錄設施(文件、系統日誌……)。此類日誌用於技術 / 調試目的。 Module43Name=偵錯欄 Module43Desc=為開發人員提供的工具,在瀏覽器中新增偵錯欄。 @@ -590,7 +591,7 @@ Module52Name=存貨 Module52Desc=存貨管理(庫存變動跟踪和庫存) Module53Name=服務 Module53Desc=服務管理 -Module54Name=合同/訂閱 +Module54Name=合同 / 訂閱 Module54Desc=合同管理(服務或定期訂閱) Module55Name=條形碼 Module55Desc=條形碼或二維碼管理 @@ -694,7 +695,7 @@ Module5000Name=多間公司 Module5000Desc=允許您管理多家公司 Module6000Name=模塊間工作流程 Module6000Desc=不同模塊之間的工作流程管理(自動創建 對象 和/或 自動 狀態更改) -Module10000Name=網站群 +Module10000Name=網站 Module10000Desc=CMS 使用所見即所得編輯器建立網站。這是一個網站管理員或開發人員的內容管理系統(最好了解HTML和CSS語言)。只需將您的 Web 伺服器(Apache、Nginx...)設定為指向專用的 Dolibarr 目錄,即可使用您自己的網域在網路上線上。 Module20000Name=請假申請管理 Module20000Desc=定義和跟踪員工休假請求 @@ -867,7 +868,7 @@ Permission255=修改其他用戶密碼 Permission256=刪除或禁用其他用戶 Permission262=將存取權限擴展到所有第三方及其物件(不僅僅是使用者作為銷售代表連結的第三方)。 Permission262b=不適用於外部用戶(報價單、訂單、發票、合同等始終僅限於他們自己)。 -Permission262c=對項目無效(僅關於項目權限、可見性和分配事項的規則)。 +Permission262c=對項目無效(僅有關項目權限、可見性和使用者分配的規則很重要)。 Permission263=擴展對所有第三方的訪問權限,不包括其對象(不僅限於用户為銷售代表的第三方)。
對外部用户無效(對於報價單、訂單、發票、合同等總是僅限於他們自己)。
對於項目無效(僅適用於項目權限、可見性和分配規則)。 Permission271=查看 CA Permission272=查看發票 @@ -944,7 +945,7 @@ Permission776=支付費用報告 Permission777=查看所有費用報告(甚至包括非下屬的用戶) Permission778=創建 / 修改 所有人的費用報告 Permission779=匯出費用報告 -Permission1001=查看存貨 +Permission1001=查看倉庫和庫存 Permission1002=創建 / 修改 倉庫 Permission1003=刪除倉庫 Permission1004=查看存貨走勢 @@ -1235,7 +1236,7 @@ CompanyTown=鎮 CompanyCountry=國家 CompanyCurrency=主要貨幣 CompanyObject=公司的宗旨 -IDCountry=國家/地區代碼 +IDCountry=國家 / 地區 代碼 Logo=標識 LogoDesc=公司主標誌。將用於生成的文件 (PDF,...) 中 LogoSquarred=標誌(方形) @@ -1457,7 +1458,7 @@ HRMSetup=人力資源管理模組設置 CompanySetup=公司模塊設置 CompanyCodeChecker=自動生成 客戶 / 供應商 代碼的選項 AccountCodeManager=自動生成 客戶 / 供應商 會計代碼的選項 -NotificationsDesc=Email notifications can be sent automatically on certain events.
Recipients of notifications can be defined: +NotificationsDesc=某些事件可以自動發送電子郵件通知。
可以定義通知的收件者: NotificationsDescUser=* 每位用戶(在用戶的“通知”標籤上) NotificationsDescContact=* 每個第三方聯絡人(在第三方的「通知」標籤上) NotificationsDescGlobal=*或通過設置全域電子郵地址(在模組的設置頁面上)。 @@ -1993,10 +1994,10 @@ ExpenseReportsRulesSetup=費用報告模組設置 - 規則 ExpenseReportNumberingModules=費用報告編號模組 NoModueToManageStockIncrease=沒有能夠管理自動庫存增加的模組被啟用。庫存增加將僅通過手動輸入進行。 YouMayFindNotificationsFeaturesIntoModuleNotification=您可以通過啟用和配置“通知”模組找到電子郵件通知選項。 -TemplatesForNotifications=Emails templates for notifications +TemplatesForNotifications=用於通知的電子郵件模板 ListOfNotificationsPerUser=每位用戶*的自動通知列表 ListOfNotificationsPerUserOrContact=每位用戶*或每位連絡人**可用的(商務事件)自動通知列表 -ListOfFixedNotifications=Global recipients emails for automatic email notifications +ListOfFixedNotifications=自動電子郵件通知全球收件人電子郵件 GoOntoUserCardToAddMore=前往用戶的“通知”標籤新增或刪除用戶的通知 GoOntoContactCardToAddMore=前往第三方的「通知」選項卡,新增或刪除 聯絡人 / 地址 的通知 Threshold=閾值 @@ -2065,7 +2066,7 @@ MailToSendContract=合同 MailToSendReception=接待 MailToExpenseReport=費用報告 MailToThirdparty=第三方 -MailToContact=聯絡群 +MailToContact=聯絡 MailToMember=會員 MailToUser=用戶 MailToProject=項目 @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=用於清理值的正則表達式過濾器(COMPA DuplicateForbidden=禁止重複 RemoveSpecialWords=在為客戶或供應商生成子賬戶時清除某些字詞 RemoveSpecialWordsHelp=指定在計算客戶或供應商賬戶之前要清除的字詞。每個字詞之間使用“;”。 -GDPRContact=數據保護官(DPO,數據隱私或GDPR聯絡人) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=如果您將個人資料儲存在資訊系統中,您可以在此指定負責一般資料保護規範的聯絡人 HelpOnTooltip=工具提示顯示的說明文字 HelpOnTooltipDesc=在此處放入文字或翻譯鍵,以便在此字段出現在表單中時在工具提示中顯示文字。 @@ -2218,7 +2219,7 @@ CreateCandidature=創建工作申請 FormatZip=郵遞區號 MainMenuCode=選單條目代碼(主選單) ECMAutoTree=顯示自動ECM樹 -OperationParamDesc=定義用於提取某些資料或設定用於操作的值的規則。
\n
將電子郵件主題中的公司名稱提取到臨時變數中的範例:
tmp_var=EXTRACT:SUBJECT:來自公司的訊息 ([^]*)

設定要建立的物件的屬性的範例:
objproperty1=SET:硬編碼值
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:一個值(僅當屬性尚未定義時才設定該值)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5 =EXTRACT:BODY:我的公司名稱是\\s([^\\s]*)

使用新行提取或設定多個屬性。 +OperationParamDesc=定義用於提取某些資料或設定用於操作的值的規則。

從電子郵件標頭、主題或正文中提取字串到臨時變數的範例:
tmp_var1=EXTRACT:HEADER:My regex ([^]*)
tmp_var2=EXTRACT:SUBJECT:我的參考 ([^]*)
tmp_var3=EXTRACT:BODY:我的正規表示式 ([^]*)

設定要建立的物件的屬性的範例:
objproperty1=SET:硬編碼值
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:一個值(僅當屬性尚未定義時才設定該值)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5 =EXTRACT:BODY:我的公司名稱是\\s([^\\s]*)

使用新行提取或設定多個屬性。 OpeningHours=開放時間 OpeningHoursDesc=在此輸入您公司的常規開放時間。 ResourceSetup=資源模組配置 @@ -2264,7 +2265,7 @@ LargerThan=大於 IfTrackingIDFoundEventWillBeLinked=請注意,如果在電子郵件中找到物件的追踪 ID,或者電子郵件是已經收集和連接到物件的電子郵件的回答,則創建的事件將自動鏈接到已知相關物件。 WithGMailYouCanCreateADedicatedPassword=對於 GMail 帳戶,如果您啟用了兩步驟驗證,建議為應用程式建立專用的第2個密碼,而不是使用 https://myaccount.google.com/ 中您自己的帳戶密碼。 EmailCollectorTargetDir=當電子郵件成功處理後,將其移動到另一個標籤/目錄中可能是您所希望的行為。只需在此處設定目錄名稱即可使用此功能(不要在名稱中使用特殊字符)。請注意,您還必須使用讀寫登入帳戶。 -EmailCollectorLoadThirdPartyHelp=您可以使用此操作來使用電子郵件內容來尋找並載入資料庫中現有的第三方(搜尋將在「id」、「name」、「name_alias」、「email」之間定義的屬性上完成)。找到(或創建)的第三方將用於以下需要它的操作。
例如,如果您想建立一個第三方,其名稱是從正文中的字串「Name: name to find」中提取的,使用寄件者電子郵件作為電子郵件,您可以像這樣設定參數字段:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=您可以使用此操作來使用電子郵件內容來尋找並載入資料庫中現有的第三方(搜尋將在「id」、「name」、「name_alias」、「email」之間定義的屬性上完成)。找到(或創建)的第三方將用於以下需要它的操作。
例如,如果您想建立一個第三方,其名稱是從正文中的字串「Name: name to find」中提取的,使用寄件者電子郵件作為電子郵件,您可以像這樣設定參數字段:
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=警告:許多電子郵件伺服器(例如 Gmail)在搜索字串時會進行完整單字搜索,如果僅在單字中找到字串的一部分,則不會傳回結果。也由於這個原因,在搜尋條件中使用特殊字元將被忽略,因為它們不是現有單字的一部分。
要對某個單字進行排除搜尋(如果未找到該單字,則傳回電子郵件),您可以使用 !單字之前的字元(可能不適用於某些郵件伺服器)。 EndPointFor=%s 的端點:%s DeleteEmailCollector=刪除電子郵件收集器 @@ -2279,7 +2280,7 @@ NotAPublicIp=非公眾IP MakeAnonymousPing=對 Dolibarr 基金會伺服器進行匿名 Ping「+1」(僅在安裝後執行 1 次),以允許基金會計算 Dolibarr 安裝的數量。 FeatureNotAvailableWithReceptionModule=啟用接收模組時,不可用此功能 EmailTemplate=電子郵件模板 -EmailTemplateHelp=You can create emails templates from menu %s - %s +EmailTemplateHelp=您可以從選單 %s - %s 建立電子郵件模板 EMailsWillHaveMessageID=電子郵件將具有符合此語法的“Message-ID”標頭 PDF_SHOW_PROJECT=在文件上顯示項目 ShowProjectLabel=項目標籤 @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=第三方名稱 - 第三方別名 ALIAS_THIRDPARTY=第三方別名 - 第三方名稱 PDFIn2Languages=以 2 種不同語言顯示 PDF 中的標籤(此功能可能不適用於某些語言) PDF_USE_ALSO_LANGUAGE_CODE=如果您希望在同一個生成的PDF 中以2 種不同的語言複製PDF 中的某些文本,則必須在此處設定第二種語言,以便生成的PDF 將在同一頁面中包含2 種不同的語言,即生成PDF 時選擇的語言和該語言 (只有少數 PDF 模板支援此功能)。對於每個 PDF 的 1 種語言,請保留為空白。 -PDF_USE_A=產生 PDF/A 格式的 PDF 文檔,而不是預設格式 PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=在此輸入 FontAwesome 圖標的代碼。如果您不知道 FontAwesome 是什麼,可以使用通用值 fa-address-book。 RssNote=注意:每個 RSS 來源定義都提供一個小部件,您必須啟用該小部件才能在儀表板中使用它 JumpToBoxes=跳至設置 -> 小工具 @@ -2421,7 +2422,7 @@ MaxNumberOfImagesInGetPost=表單中提交的 HTML 欄位允許的最大圖片 MaxNumberOfPostOnPublicPagesByIP=每月具有相同 IP 地址的公共頁面上的最大帖子數量 CIDLookupURL=此模組提供一個 URL,外部工具可以使用該 URL 從第三方的電話號碼中取得第三方或聯絡人的姓名。使用的網址是: ScriptIsEmpty=腳本為空 -ShowHideTheNRequests=顯示 / 隱藏 %s SQL 請求(群) +ShowHideTheNRequests=顯示 / 隱藏 %s SQL 請求(或多個請求) DefinedAPathForAntivirusCommandIntoSetup=將防毒程式的路徑定義為 %s TriggerCodes=可觸發的事件 TriggerCodeInfo=在此輸入必須產生 Web 請求的觸發代碼(群)(僅允許外部 URL)。您可以輸入多個觸發代碼,並以逗號分隔。 @@ -2550,6 +2551,11 @@ ConfirmDeleteSocialNetwork= 您確定要刪除這筆記錄嗎? AnOwnerMustBeSetIfEmailTemplateIsPrivate=如果電子郵件模板設置為私人,則必須設置一個持有人 ContactsDefaultRoles=對於「個人」類型的第三方,可以同時建立聯絡人。在此定義將系統指派給該聯絡人的角色。 MenuDict=字典 -AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token +AddMoreParams=為連線新增更多參數(cookie、令牌等)
範例: token : value token ParamName=參數名稱 ParamValue=參數值 +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=您可以透過執行下列 SQL 命令來取得可能值的清單:%s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/zh_HK/agenda.lang b/htdocs/langs/zh_HK/agenda.lang index 80a56a6ce87..b1e9c41db65 100644 --- a/htdocs/langs/zh_HK/agenda.lang +++ b/htdocs/langs/zh_HK/agenda.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - agenda -IdAgenda=身份事件 +IdAgenda=事件 I D Actions=活動 Agenda=應辦事項 TMenuAgenda=應辦事項 @@ -37,20 +37,20 @@ EventRemindersByEmailNotEnabled=%s 模組設定中未啟用透過電子郵件進 NewCompanyToDolibarr=第三方%s 已創建 COMPANY_MODIFYInDolibarr=第三方 %s 已修改 COMPANY_DELETEInDolibarr=第三方 %s 已刪除 -ContractValidatedInDolibarr=合約 %s 已驗證 +ContractValidatedInDolibarr=%s 合約已驗證 CONTRACT_DELETEInDolibarr=合約 %s 已刪除 PropalClosedSignedInDolibarr=提案 %s 已簽署 PropalClosedRefusedInDolibarr=提案 %s 已拒絕 -PropalValidatedInDolibarr=提案%s 已驗證 +PropalValidatedInDolibarr=%s 提案已驗證 PropalBackToDraftInDolibarr=提案 %s 返回草稿狀態 PropalClassifiedBilledInDolibarr=提案 %s 已歸類為已開票 -InvoiceValidatedInDolibarr=發票%s 已驗證 -InvoiceValidatedInDolibarrFromPos=發票 %s 已從POS驗證 +InvoiceValidatedInDolibarr=%s 發票已驗證 +InvoiceValidatedInDolibarrFromPos=%s 發票已從POS驗證 InvoiceBackToDraftInDolibarr=發票%s 返回草稿狀態 InvoiceDeleteDolibarr=發票%s 已刪除 -InvoicePaidInDolibarr=發票 %s 已更改為已付款 +InvoicePaidInDolibarr=%s 發票已更改為已付款 InvoiceCanceledInDolibarr=發票 %s 已取消 -MemberValidatedInDolibarr=會員 %s 已驗證 +MemberValidatedInDolibarr=%s 會員已驗證 MemberModifiedInDolibarr=會員 %s 已修改 MemberResiliatedInDolibarr=會員 %s 已終止 MemberDeletedInDolibarr=會員 %s 已刪除 @@ -58,17 +58,17 @@ MemberExcludedInDolibarr=會員 %s 已排除 MemberSubscriptionAddedInDolibarr=已為會員 %s 添加訂閱 %s MemberSubscriptionModifiedInDolibarr=已為會員 %s 修改訂閱 %s MemberSubscriptionDeletedInDolibarr=會員 %s 的訂閱 %s 已刪除 -ShipmentValidatedInDolibarr=出貨 %s 已驗證 +ShipmentValidatedInDolibarr=%s 出貨已驗證 ShipmentClassifyClosedInDolibarr=出貨 %s 已歸類為已關閉 ShipmentUnClassifyCloseddInDolibarr=出貨 %s 已歸類為重新開啟 ShipmentBackToDraftInDolibarr=出貨 %s 返回草稿狀態 ShipmentDeletedInDolibarr=出貨 %s 已刪除 ShipmentCanceledInDolibarr=出貨 %s 已取消 -ReceptionValidatedInDolibarr=%s接收 已驗證 +ReceptionValidatedInDolibarr=%s 接收已驗證 ReceptionDeletedInDolibarr=接收 %s 已刪除 ReceptionClassifyClosedInDolibarr=接收 %s 已歸類為已關閉 OrderCreatedInDolibarr=訂單 %s 已創建 -OrderValidatedInDolibarr=訂購%s 已驗證 +OrderValidatedInDolibarr=%s 訂購已驗證 OrderDeliveredInDolibarr=訂單 %s 已歸類為已交付 OrderCanceledInDolibarr=訂購%s 取消 OrderBilledInDolibarr=訂單 %s 已歸類為已開票 @@ -83,7 +83,7 @@ SupplierOrderSentByEMail=採購訂單 %s 通過電子郵件發送 ORDER_SUPPLIER_DELETEInDolibarr=採購訂單 %s 已刪除 SupplierInvoiceSentByEMail=供應商發票 %s 通過電子郵件發送 ShippingSentByEMail=發貨 %s 通過電子郵件發送 -ShippingValidated= 發貨%s 已驗證 +ShippingValidated= %s 發貨已驗證 InterventionSentByEMail=干預 %s 已通過電郵發送 ProjectSentByEMail=項目 %s 已通過電郵發送 ProjectDeletedInDolibarr=項目 %s 已刪除 @@ -101,10 +101,10 @@ PRODUCT_DELETEInDolibarr=產品 %s 已刪除 HOLIDAY_CREATEInDolibarr=請假申請 %s 已創建 HOLIDAY_MODIFYInDolibarr=請假申請 %s 已修改 HOLIDAY_APPROVEInDolibarr=請假申請 %s 已批准 -HOLIDAY_VALIDATEInDolibarr=請假申請 %s 已驗證 +HOLIDAY_VALIDATEInDolibarr=%s 請假申請已驗證 HOLIDAY_DELETEInDolibarr=請假申請 %s 已刪除 EXPENSE_REPORT_CREATEInDolibarr=費用報告 %s 已創建 -EXPENSE_REPORT_VALIDATEInDolibarr=費用報告 %s 已驗證 +EXPENSE_REPORT_VALIDATEInDolibarr=%s 費用報告已驗證 EXPENSE_REPORT_APPROVEInDolibarr=費用報告 %s 已批准 EXPENSE_REPORT_DELETEInDolibarr=費用報告 %s 已刪除 EXPENSE_REPORT_REFUSEDInDolibarr=費用報告 %s 已拒絕 diff --git a/htdocs/langs/zh_HK/banks.lang b/htdocs/langs/zh_HK/banks.lang index f05e9e0c7b0..960aff69cab 100644 --- a/htdocs/langs/zh_HK/banks.lang +++ b/htdocs/langs/zh_HK/banks.lang @@ -72,7 +72,7 @@ BankTransactionForCategory=銀行記賬類別%s RemoveFromRubrique=刪除帶有類別的鏈接 RemoveFromRubriqueConfirm=您確定要刪除記項和類別之間的鏈接嗎? ListBankTransactions=銀行分錄清單 -IdTransaction=交易ID +IdTransaction=交易 ID BankTransactions=銀行分錄 BankTransaction=銀行記項 ListTransactions=列出記賬 @@ -192,6 +192,6 @@ NoBankAccountDefined=未定義銀行帳戶 NoRecordFoundIBankcAccount=銀行帳戶中未找到記錄。通常,這發生在手動從銀行帳戶的交易列表中刪除記錄時(例如在進行銀行帳戶對賬期間)。另一個原因是付款是在模塊 "%s" 被停用時記錄的。 AlreadyOneBankAccount=已定義一個銀行帳戶 SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=SEPA 文件不同 -SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=是 = 在 SEPA 文件

的“繳款轉賬”部分中存儲“付款類型”。在生成信用轉賬的 SEPA XML 文件時,“付款類型信息”部分現在可以放置在“繳款轉賬交易信息”部分內(而不是“付款”部分)。我們強烈建議保持未勾選狀態,以便將“付款類型信息”放置在付款層級,因為所有銀行不一定會在繳款轉賬交易信息層級接受它。在將“付款類型信息”放置在繳款轉賬交易信息層級前,請聯繫您的銀行。 +SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=是 = 在 SEPA 文件

的“繳款轉賬”部分中存儲“付款類型”。在生成信用轉賬的 SEPA XML 文件時,“付款類型信息”部分現在可以放置在“繳款轉賬交易信息”部分內(而不是“付款”部分)。我們強烈建議保持未勾選狀態,以便將“付款類型信息”放置在付款層級,因為所有銀行不一定會在繳款轉賬交易信息層級接受它。在將“付款類型信息”放置在繳款轉賬交易信息層級前,請聯絡您的銀行。 ToCreateRelatedRecordIntoBank=創建缺失的相關銀行記錄 XNewLinesConciliated=%s 新行列(或多行)對賬 diff --git a/htdocs/langs/zh_HK/bills.lang b/htdocs/langs/zh_HK/bills.lang index f85187335f0..5c9a25bed41 100644 --- a/htdocs/langs/zh_HK/bills.lang +++ b/htdocs/langs/zh_HK/bills.lang @@ -5,9 +5,9 @@ BillsCustomers=客戶發票 BillsCustomer=客戶發票 BillsSuppliers=供應商發票 BillsCustomersUnpaid=未付客戶發票 -BillsCustomersUnpaidForCompany=客戶發票%s 的未付 +BillsCustomersUnpaidForCompany=客戶發票 %s 的未付 BillsSuppliersUnpaid=未支付的供應商發票 -BillsSuppliersUnpaidForCompany=供應商發票 %s未支付 +BillsSuppliersUnpaidForCompany=供應商發票 %s 未支付 BillsLate=逾期付款 BillsStatistics=客戶發票統計 BillsStatisticsSuppliers=供應商發票統計 @@ -578,13 +578,13 @@ EarlyClosingReason=提前結算原因 EarlyClosingComment=提前結算備註 ##### Types de contacts ##### TypeContact_facture_internal_SALESREPFOLL=代表跟進客戶發票 -TypeContact_facture_external_BILLING=客戶發票聯繫方式 -TypeContact_facture_external_SHIPPING=客戶發貨聯繫方式 -TypeContact_facture_external_SERVICE=客服聯繫方式 +TypeContact_facture_external_BILLING=客戶發票聯絡方式 +TypeContact_facture_external_SHIPPING=客戶發貨聯絡方式 +TypeContact_facture_external_SERVICE=客服聯絡方式 TypeContact_invoice_supplier_internal_SALESREPFOLL=代表後續供應商發票 -TypeContact_invoice_supplier_external_BILLING=供應商發票聯繫方式 -TypeContact_invoice_supplier_external_SHIPPING=供應商運輸聯繫方式 -TypeContact_invoice_supplier_external_SERVICE=供應商服務聯繫方式 +TypeContact_invoice_supplier_external_BILLING=供應商發票聯絡方式 +TypeContact_invoice_supplier_external_SHIPPING=供應商運輸聯絡方式 +TypeContact_invoice_supplier_external_SERVICE=供應商服務聯絡方式 # Situation invoices WarningsObjectIsNotASituation=警告,此發票不是分期付款 InvoiceFirstSituationAsk=第一期分期付款發票 diff --git a/htdocs/langs/zh_HK/boxes.lang b/htdocs/langs/zh_HK/boxes.lang index e6cd2c5c5c6..8d9e1440ef4 100644 --- a/htdocs/langs/zh_HK/boxes.lang +++ b/htdocs/langs/zh_HK/boxes.lang @@ -16,7 +16,7 @@ BoxLastSuppliers=最新修改的供應商 BoxLastCustomerOrders=最新銷售訂單 BoxLastActions=最新行動 BoxLastContracts=最新合同 -BoxLastContacts=最新聯繫方式/地址 +BoxLastContacts=最新 聯絡方式 / 地址 BoxLastMembers=最新會員 BoxLastModifiedMembers=最後修改的成員 BoxLastMembersSubscriptions=最新成員訂閱 @@ -42,11 +42,11 @@ BoxTitleOldestUnpaidCustomerBills=客戶發票:最早的 %s 未付 BoxTitleOldestUnpaidSupplierBills=供應商發票:最早的 %s 未付 BoxTitleCurrentAccounts=開立賬戶:餘額 BoxTitleSupplierOrdersAwaitingReception=供應商訂單待收貨 -BoxTitleLastModifiedContacts=聯繫人/地址:最後 %s 修改的 +BoxTitleLastModifiedContacts=聯絡人 / 地址:最後 %s 修改的 BoxMyLastBookmarks=書籤:最新 %s BoxOldestExpiredServices=最舊的活動已過期服務 BoxOldestActions=最早的待辦事件 -BoxLastExpiredServices=最新 %s 與活動的過期服務最舊的聯繫人 +BoxLastExpiredServices=最新 %s 與活動的過期服務最舊的聯絡人 BoxTitleLastActionsToDo=最新 %s 要做的行動 BoxTitleOldestActionsToDo=最早的 %s 個待辦事件,未完成 BoxTitleFutureActions=接下來的 %s 個即將發生的事件 @@ -66,7 +66,7 @@ LastRefreshDate=最新刷新日期 NoRecordedBookmarks=沒有定義書籤。 ClickToAdd=單擊此處添加。 NoRecordedCustomers=無記錄客戶 -NoRecordedContacts=沒有記錄的聯繫人 +NoRecordedContacts=沒有記錄的聯絡人 NoActionsToDo=無需執行任何操作 NoRecordedOrders=無銷售訂單記錄 NoRecordedProposals=沒有報價記錄 @@ -74,9 +74,9 @@ NoRecordedInvoices=沒有記錄的客戶發票 NoUnpaidCustomerBills=沒有未付的客戶發票 NoUnpaidSupplierBills=沒有未付的供應商發票 NoModifiedSupplierBills=沒有記錄的供應商發票 -NoRecordedProducts=沒有記錄的產品/服務 +NoRecordedProducts=沒有記錄的 產品 / 服務 NoRecordedProspects=沒有記錄的潛在客戶 -NoContractedProducts=沒有簽約產品/服務 +NoContractedProducts=沒有簽約 產品 / 服務 NoRecordedContracts=沒有記錄的合同 NoRecordedInterventions=沒有乾預記錄 BoxLatestSupplierOrders=最新採購訂單 @@ -88,7 +88,7 @@ BoxCustomersOrdersPerMonth=每月銷售訂單 BoxSuppliersOrdersPerMonth=每月供應商訂單 BoxProposalsPerMonth=每月報價 NoTooLowStockProducts=沒有產品處於庫存下限 -BoxProductDistribution=產品/服務分佈 +BoxProductDistribution=產品 / 服務 分佈 ForObject=在 %s BoxTitleLastModifiedSupplierBills=供應商發票:最後 %s 修改 BoxTitleLatestModifiedSupplierOrders=供應商訂單:最後 %s 修改 diff --git a/htdocs/langs/zh_HK/commercial.lang b/htdocs/langs/zh_HK/commercial.lang index 3775bf72746..9eb1eb4d508 100644 --- a/htdocs/langs/zh_HK/commercial.lang +++ b/htdocs/langs/zh_HK/commercial.lang @@ -94,3 +94,9 @@ SignatureContractRef=簽署合同 %s SignatureFichinterRef=簽署介入文件 %s SignatureSociete_ribRef=簽署SEPA授權書 %s FeatureOnlineSignDisabled=線上簽名功能已停用或在該功能啟用之前產生文檔 +NoSignature=未簽名 +SignedSender=內部簽署 +SignedReceiver=由第三方簽署 +SignedReceiverOnline=由第三方線上簽署 +SignedAll=各方簽名 +SignStatus=各方簽名 diff --git a/htdocs/langs/zh_HK/companies.lang b/htdocs/langs/zh_HK/companies.lang index 6b3509c8f5b..374bf11b181 100644 --- a/htdocs/langs/zh_HK/companies.lang +++ b/htdocs/langs/zh_HK/companies.lang @@ -39,7 +39,7 @@ ThirdPartyProspects=潛在客戶 ThirdPartyProspectsStats=潛在客戶 ThirdPartyCustomers=顧客 ThirdPartyCustomersStats=顧客 -ThirdPartyCustomersWithIdProf12=Customers with %s or %s +ThirdPartyCustomersWithIdProf12=%s 或 %s 的客戶 ThirdPartySuppliers=供應商 ThirdPartyType=第三方類型 Individual=私人個體 @@ -50,7 +50,7 @@ ReportByMonth=每月報告 ReportByCustomers=每個客戶的報告 ReportByThirdparties=每個第三方報告 ReportByQuarter=按費率報告 -CivilityCode=文明守則 +CivilityCode=事務守則 RegisteredOffice=註冊辦事處 Lastname=姓 Firstname=名 @@ -75,9 +75,9 @@ PhoneShort=電話 Skype=Skype Call=稱呼 Chat=聊天 -PhonePro=公共汽車。電話 -PhonePerso=個人。電話 -PhoneMobile=移動的 +PhonePro=商業電話 +PhonePerso=個人電話 +PhoneMobile=手提電話 No_Email=拒絕大量電子郵件 Fax=傳真 Zip=郵政編碼 @@ -113,34 +113,34 @@ SupplierCodeModel=供應商代碼模型 Gencod=條碼 GencodBuyPrice=價格參考條碼 ##### Professional ID ##### -ProfId1Short=教授 ID 1 -ProfId2Short=教授 ID 2 -ProfId3Short=教授 ID 3 -ProfId4Short=教授 ID 4 -ProfId5Short=教授 ID 5 -ProfId6Short=教授 ID 6 +ProfId1Short=專業編號 1 +ProfId2Short=專業編號 2 +ProfId3Short=專業編號 3 +ProfId4Short=專業編號 4 +ProfId5Short=專業編號 5 +ProfId6Short=專業編號 6 ProfId7Short=專業編號 7 ProfId8Short=專業編號 8 ProfId9Short=專業編號 9 ProfId10Short=專業編號 10 -ProfId1=專業 ID 1 -ProfId2=專業 ID 2 -ProfId3=專業 ID 3 -ProfId4=專業 ID 4 -ProfId5=專業 ID 5 -ProfId6=專業 ID 6 -ProfId7=專業身份證 7 +ProfId1=專業編號 1 +ProfId2=專業編號 2 +ProfId3=專業編號 3 +ProfId4=專業編號 4 +ProfId5=專業編號 5 +ProfId6=專業編號 6 +ProfId7=專業編號 7 ProfId8=專業編號 8 -ProfId9=專業身份證 7 -ProfId10=專業身份證 7 -ProfId1AR=教授 ID 1 (CUIT/CUIL) -ProfId2AR=Prof Id 2(收入野蠻人) +ProfId9=專業編號 9 +ProfId10=專業編號 10 +ProfId1AR=專業編號 1 (CUIT/CUIL) +ProfId2AR=專業編號 2(Revenu brutes) ProfId1AT=增值稅號 1(美國-IdNr) ProfId2AT=增值稅編號 2(USt.-Nr) ProfId3AT=商業登記號 3(Handelsregister-Nr.) ProfId5AT=EORI 號碼 -ProfId1AU=教授 ID 1 (ABN) -ProfId1BE=Prof Id 1(專業編號) +ProfId1AU=專業編號 1 (ABN) +ProfId1BE=專業編號 1(專業編號) ProfId5BE=EORI號碼 ProfId1BR=CNPJ ProfId2BR=IE (Inscricao Estadual) @@ -150,21 +150,21 @@ ProfId4BR=公積金 #ProfId6BR=INSS ProfId1CA=註冊 ID ProfId1CH=UID號 -ProfId3CH=Prof Id 1(聯邦編號) -ProfId4CH=Prof Id 2(商業記錄號) +ProfId3CH=專業編號 1(聯邦編號) +ProfId4CH=專業編號 2(商業記錄號) ProfId5CH=EORI號碼 -ProfId1CL=教授 ID 1 (R.U.T.) -ProfId1CM=貿易登記 1 (Trade Register) +ProfId1CL=專業編號 1 (R.U.T.) +ProfId1CM=編號 專業 1 (Trade Register) ProfId2CM=專業編號 2(唯一稅務識別號碼) ProfId3CM=專業編號 3(創建法令號碼) ProfId4CM=專業編號 4(存款證明號碼) ProfId5CM=專業編號 5 (其他的) ProfId1CN=統一社會信用代碼 USCI -ProfId1ShortCM=商業登記 +ProfId1ShortCM=貿易登記 ProfId2ShortCM=統一識別號 UIN ProfId3ShortCM=成立法令號碼 ProfId4ShortCM=存款證明書號碼 -ProfId5ShortCM=EORI +ProfId5ShortCM=其他 ProfId1CO=專業編號 1 (R.U.T.) ProfId1DE=專業編號 1(美國-IdNr) ProfId2DE=專業編號 2(USt.-Nr) @@ -188,9 +188,9 @@ ProfId4ShortFR=商業法院登記號 RCS ProfId5ShortFR=EORI ProfId6ShortFR=國家協會登記號 RNA ProfId1GB=註冊號碼 -ProfId3GB=碳化矽 +ProfId3GB=SIC ProfId1HK=商業登記號 BRN -ProfId1HN=專業編號 2 (商業許可證RTN) +ProfId1HN=專業編號 1 (商業許可證RTN) ProfId1IN=專業編號 1 (TIN) ProfId2IN=專業編號 2 (PAN) ProfId3IN=專業編號 3(SRVC 稅務) @@ -198,12 +198,12 @@ ProfId4IN=專業編號 4 ProfId5IN=專業編號 5 ProfId5IT=EORI 號碼 ProfId1LU=盧森堡商業和公司註冊處 '專業編號. 1 (R.C.S. Luxembourg)' -ProfId2LU=專業編號 +ProfId2LU=專業編號 2(營業執照) ProfId5LU=EORI 號碼 ProfId1MA=專業編號 1(遙控) ProfId2MA=專業編號 2(專利) ProfId3MA=專業編號 3(中頻) -ProfId4MA=專業身份 ID 4 (社保號碼 C.N.S.S. ) +ProfId4MA=專業編號 4 (社保號碼 C.N.S.S. ) ProfId5MA=專業編號 5 ( I.C.E. ) ProfId1MX=專業編號 1 (R.F.C)。 ProfId2MX=專業編號 2 (R..P. IMSS) @@ -220,7 +220,7 @@ ProfId1SN=RC ProfId2SN=妮妮亞 ProfId1TN=專業編號 1 ( RC ) ProfId2TN=專業編號 2(財政矩陣) -ProfId3TN=專業身份 ID 3 ( 海關代碼 Doane code ) +ProfId3TN=專業編號 3 ( 海關代碼 Doane code ) ProfId4TN=專業編號 4 ( BAN ) ProfId1US=專業編號 ( 聯邦雇主身份號碼 FEIN ) ProfId1RO=專專業編號 1 (統一編碼識別 CUI ) @@ -230,7 +230,7 @@ ProfId4RO=專業編號 5 ( EUID ) ProfId5RO=專業編號 5(EORI) ProfId1RU=專業編號 1 (OGRN) ProfId2RU=專業編號 2 (納稅人識別號碼 INN) -ProfId3RU=教授 ID 3 (KPP) +ProfId3RU=專業編號 3 (KPP) ProfId4RU=專業編號 4 (OKP0) ProfId1SG=統一實體編號 UEN ProfId1UA=專業編號 1 (EDRPOU) @@ -247,7 +247,7 @@ VATIntra=增值稅號 VATIntraShort=增值稅號 VATIntraSyntaxIsValid=語法有效 VATPaymentFrequency=增值稅付款頻率 -ProspectCustomer=潛在客戶/客戶 +ProspectCustomer=潛在客戶 / 客戶 Prospect=潛在客戶 CustomerCard=客戶卡 Customer=顧客 @@ -277,9 +277,9 @@ Supplier=供應商 AddContact=創建聯絡人 AddContactAddress=創建聯絡人 / 地址 EditContact=更改聯絡資料 -EditContactAddress=編輯聯絡方式 / 地址 +EditContactAddress=編輯 聯絡方式 / 地址 Contact=聯絡地址 -Contacts=聯繫方式/地址 +Contacts=聯絡方式 / 地址 ContactNotes=備註 ContactPersonalData=個人資料 ContactRelatedItems=相關項目 @@ -290,7 +290,7 @@ ContactsAddresses=聯絡方式 / 地址 ContactsAddressesExt=共享聯絡方式 / 地址 FromContactName=名稱 NoContactDefinedForThirdParty=沒有為此第三方定義聯絡人 -NoContactDefined=未定義聯繫人 +NoContactDefined=未定義聯絡人 DefaultContact=默認聯絡人/地址 ContactByDefaultFor=預設聯絡人/地址 AddThirdParty=創建第三方 @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr 登入 NoDolibarrAccess=沒有 Dolibarr 訪問權限 ExportDataset_company_1=第三方(公司/基金會/自然人)及其財產 ExportDataset_company_2=聯絡人及其屬性 +ExportDataset_company_3=第三方銀行帳戶 ImportDataset_company_1=第三方及其財產 ImportDataset_company_2=第三方附加聯絡人/地址和屬性 ImportDataset_company_3=第三方銀行賬戶 diff --git a/htdocs/langs/zh_HK/compta.lang b/htdocs/langs/zh_HK/compta.lang index 559964f321a..2c96dc58cf2 100644 --- a/htdocs/langs/zh_HK/compta.lang +++ b/htdocs/langs/zh_HK/compta.lang @@ -13,8 +13,8 @@ LTReportBuildWithOptionDefinedInModule=此處顯示的金額是使用公司設 Param=設置 RemainingAmountPayment=剩餘付款金額: Account=帳戶 -Accountparent=家長帳戶 -Accountsparent=家長賬戶 +Accountparent=主帳戶 +Accountsparent=主賬戶 Income=收入 Outcome=費用 MenuReportInOut=收入 / 支出 @@ -294,7 +294,7 @@ PurchaseTurnover=採購營業額 PurchaseTurnoverCollected=已收取的採購營業額 RulesPurchaseTurnoverDue=- 它包括供應商的到期發票,無論是否已付款。
- 它基於這些發票的發票日期。
RulesPurchaseTurnoverIn=- 它包括已向供應商支付的所有有效發票付款。
- 它基於這些發票的付款日期。
-RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +RulesPurchaseTurnoverTotalPurchaseJournal=它包括採購日記帳中的所有借方行。 RulesPurchaseTurnoverOfExpenseAccounts=它包括費用組中產品帳戶的(借方 - 貸方)行 ReportPurchaseTurnover=已開立發票的採購營業額 ReportPurchaseTurnoverCollected=已收取的採購營業額 diff --git a/htdocs/langs/zh_HK/datapolicy.lang b/htdocs/langs/zh_HK/datapolicy.lang index 2634cb51a85..1247096ca6d 100644 --- a/htdocs/langs/zh_HK/datapolicy.lang +++ b/htdocs/langs/zh_HK/datapolicy.lang @@ -21,7 +21,7 @@ Deletion = 刪除資料 datapolicySetupPage = 取決於您所在國家/地區的法律(例GDPR 第 5 條),個人資料的保存期限不得超過收集資料的目的所需的期限,存檔目的除外。
在沒有事件發生的一段時間內(您將在下面指定的持續時間),刪除將自動完成。 NB_MONTHS = %s 月份 ONE_YEAR = 1 年 -NB_YEARS = 1%s 年 +NB_YEARS = %s 年 DATAPOLICY_TIERS_CLIENT = 顧客 DATAPOLICY_TIERS_PROSPECT = 潛在客戶 DATAPOLICY_TIERS_PROSPECT_CLIENT = 潛在客戶 / 顧客 @@ -29,11 +29,11 @@ DATAPOLICY_TIERS_NIPROSPECT_NICLIENT = 非潛在客戶 / 非顧客 DATAPOLICY_TIERS_FOURNISSEUR = 供應商 DATAPOLICY_CONTACT_CLIENT = 顧客 DATAPOLICY_CONTACT_PROSPECT = 潛在客戶 -DATAPOLICY_CONTACT_PROSPECT_CLIENT = 潛在客戶/客戶 -DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = 非潛在客戶/非顧客 +DATAPOLICY_CONTACT_PROSPECT_CLIENT = 潛在客戶 / 客戶 +DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = 非潛在客戶 / 非顧客 DATAPOLICY_CONTACT_FOURNISSEUR = 供應商 DATAPOLICY_ADHERENT = 會員 -DATAPOLICY_Tooltip_SETUP = 聯絡類型 - 展示你選擇的每種類型。 +DATAPOLICY_Tooltip_SETUP=定義沒有互動的延遲,在此之後您希望自動清除記錄。 SendAgreementText = 您可以向所有相關聯絡人(尚未收到電子郵件且您尚未為其註冊任何有關 GDPR 協議的聯絡人)發送 GDPR 電子郵件。為此,請使用以下按鈕。 SendAgreement = 發電郵 AllAgreementSend = 所有電郵已經發送 diff --git a/htdocs/langs/zh_HK/errors.lang b/htdocs/langs/zh_HK/errors.lang index 4fea26f47b5..b1efa339900 100644 --- a/htdocs/langs/zh_HK/errors.lang +++ b/htdocs/langs/zh_HK/errors.lang @@ -109,7 +109,7 @@ ErrorQtyTooLowForThisSupplier=該供應商的數量太少,或者沒有為該 ErrorOrdersNotCreatedQtyTooLow=由於數量太少,部分訂單尚未創建 ErrorOrderStatusCantBeSetToDelivered=訂單狀態無法設定為已送貨。 ErrorModuleSetupNotComplete=模組 %s 的設定似乎不完整。繼續主頁 - 設定 - 模組來完成。 -ErrorBadMask=面罩錯誤 +ErrorBadMask=掩碼錯誤 ErrorBadMaskFailedToLocatePosOfSequence=錯誤,掩碼沒有序列號 ErrorBadMaskBadRazMonth=錯誤,復位值錯誤 ErrorMaxNumberReachForThisMask=此遮罩已達到最大數量 @@ -222,7 +222,7 @@ ErrorUserNotAssignedToTask=必須將用戶分配到任務才能記錄工時 ErrorTaskAlreadyAssigned=任務已分配給用戶 ErrorModuleFileSeemsToHaveAWrongFormat=模組包的格式似乎錯誤。 ErrorModuleFileSeemsToHaveAWrongFormat2=模組的 zip 中必須至少存在一個強制目錄:%s%s -ErrorFilenameDosNotMatchDolibarrPackageRules=模組包的名稱 (%s) 與預期的名稱語法不符:%s +ErrorFilenameDosNotMatchDolibarrPackageRules=模組包的檔案名稱 (%s) 與預期的名稱語法不符:%s ErrorDuplicateTrigger=錯誤:重複的觸發器名稱 %s。已從 %s 載入。 ErrorNoWarehouseDefined=錯誤,未定義倉庫,請先設定倉庫信息。 ErrorBadLinkSourceSetButBadValueForRef=您使用的連結無效。已定義付款 ' 來源 ',但 ' ref ' 的值無效。 @@ -348,7 +348,7 @@ WarningEnableYourModulesApplications=點擊此處啟用您的模組和應用程 WarningSafeModeOnCheckExecDir=警告,PHP 選項 安全模式 因此命令必須存儲在 php 參數聲明的目錄中 safe_mode_exec_dir 。 WarningBookmarkAlreadyExists=具有此標題或此目標 (URL) 的書籤已存在。 WarningPassIsEmpty=警告,數據庫密碼為空。這是一個安全漏洞。您應該向數據庫添加密碼並更改conf.php 文件以反映這一點。 -WarningConfFileMustBeReadOnly=警告,您的配置文件 ( htdocs/conf/conf.php ) 可以被網絡服務器覆蓋。這是一個嚴重的安全漏洞。將文件的權限修改為Web 服務器使用的操作系統用戶的只讀模式。如果你的磁盤使用Windows和FAT格式,你必須知道這個文件系統不允許給文件添加權限,所以不能完全安全。 +WarningConfFileMustBeReadOnly=警告,您的設定檔 (htdocs/conf/conf.php) 可能會被 Web 伺服器覆寫。這是一個嚴重的安全漏洞。修改 Web 伺服器所使用的作業系統使用者對檔案的權限為唯讀模式。如果您使用Windows和FAT格式的磁碟,您必須知道該檔案系統不允許對檔案新增權限,因此無法完全安全。 WarningsOnXLines=關於 %s 來源記錄(或多個記錄)的警告 WarningNoDocumentModelActivated=尚未激活用於文檔生成的模型。在您檢查模塊設置之前,將默認選擇一個模型。 WarningLockFileDoesNotExists=警告,安裝完成後,您必須透過將檔案 install.lock 新增至目錄 %s 來停用安裝/遷移工具。忽略建立此文件會帶來嚴重的安全風險。 @@ -395,12 +395,12 @@ SwissQrIbanNotImplementedYet = QR-IBAN 尚未實作 SwissQrPaymentInformationInvalid = 總計 %s 的付款資訊無效:%s SwissQrDebitorAddressInvalid = 債務人資訊無效 (%s) # Validate -RequireValidValue = 值無效 +RequireValidValue = 無效值 RequireAtLeastXString = 至少需要 %s 個字元(或多個字元) RequireXStringMax = 最多需要 %s 個字元(或多個字元) RequireAtLeastXDigits = 至少需要 %s 個數字(或多個數字) RequireXDigitsMax = 最多需要 %s 個數字(或多個數字) -RequireValidNumeric = Requires a numeric value +RequireValidNumeric = 需要一個數值 RequireValidEmail = 電子郵件地址無效 RequireMaxLength = 長度必須少於 %s 個字元 RequireMinLength = 長度必須超過 %s 個字元(或多個字元) @@ -422,4 +422,4 @@ OperNotDefined=未定義付款方式 ErrorThisContactXIsAlreadyDefinedAsThisType=%s 已被定義為此類型的聯絡人。 ErrorThisGroupIsAlreadyDefinedAsThisType=該群組的聯絡人已定義為該類型的聯絡人。 EmptyMessageNotAllowedError=不允許空白訊息 -ErrorIsNotInError=%s is not in error +ErrorIsNotInError= %s 沒有錯誤 diff --git a/htdocs/langs/zh_HK/eventorganization.lang b/htdocs/langs/zh_HK/eventorganization.lang index d9e6a9e0aa3..1246a351e69 100644 --- a/htdocs/langs/zh_HK/eventorganization.lang +++ b/htdocs/langs/zh_HK/eventorganization.lang @@ -143,7 +143,7 @@ Attendee = 參加者 PaymentConferenceAttendee = 會議參加者付款 PaymentBoothLocation = 展位位置付款 DeleteConferenceOrBoothAttendee=移除參加者 -RegistrationAndPaymentWereAlreadyRecorder=電子郵件%s已經記錄了註冊和付款 +RegistrationAndPaymentWereAlreadyRecorder=電子郵件 %s 已經記錄了註冊和付款 EmailAttendee=參加者電子郵件 EmailCompany=公司電子郵件 EmailCompanyForInvoice=公司電子郵件(用于發票,如不同於參加者郵箱) diff --git a/htdocs/langs/zh_HK/hrm.lang b/htdocs/langs/zh_HK/hrm.lang index ee224e674a4..f4175073a77 100644 --- a/htdocs/langs/zh_HK/hrm.lang +++ b/htdocs/langs/zh_HK/hrm.lang @@ -1,7 +1,7 @@ # Dolibarr language file - en_US - hrm # Admin -HRM_EMAIL_EXTERNAL_SERVICE=禁用外部人力資源服務的電子郵件地址 +HRM_EMAIL_EXTERNAL_SERVICE=用於阻止 HRM 外部服務的電子郵件 Establishments=機構 Establishment=機構 NewEstablishment=新增機構 @@ -72,6 +72,9 @@ AddSkill=向職位描述添加技能 RequiredSkills=此職位描述所需的技能 UserRank=用戶等級 SkillList=技能列表 +SkillCreated=%s 技能已創建 +SkillRank=技能等級 +ShowSkillRank=展示技能等級 SaveRank=保存級別 TypeKnowHow=專業技能 TypeHowToBe=工作態度 diff --git a/htdocs/langs/zh_HK/interventions.lang b/htdocs/langs/zh_HK/interventions.lang index 18abb41d907..45fee604c04 100644 --- a/htdocs/langs/zh_HK/interventions.lang +++ b/htdocs/langs/zh_HK/interventions.lang @@ -13,11 +13,15 @@ CreateDraftIntervention=創建草稿 InterventionContact=聯絡介入 DeleteIntervention=刪除介入 ValidateIntervention=驗證介入措施 +SignIntervention=簽署介入 +UnsignIntervention=幹預未簽名 ModifyIntervention=修改介入措施 CloseIntervention=關閉介入 DeleteInterventionLine=刪除介入線 ConfirmDeleteIntervention=您確定要刪除此干預嗎? ConfirmValidateIntervention=您確定要以名稱 %s 驗證此介入嗎? +ConfirmSignIntervention=您確定要將此幹預設定為簽名嗎? +ConfirmUnsignIntervention=您確定要將此介入設定為未簽名嗎? ConfirmModifyIntervention=您確定要修改此干預措施嗎? ConfirmCloseIntervention=您確定要結束此干預嗎? ConfirmDeleteInterventionLine=您確定要刪除此干預行嗎? @@ -29,10 +33,15 @@ InterventionCardsAndInterventionLines=干預措施和乾預措施 InterventionClassifyBilled=分類為“已開單” InterventionClassifyUnBilled=分類為“未開單” InterventionClassifyDone=分類為“已完成” +InterventionSign=設定簽名 +InterventionUnsign=設定未簽名 SendInterventionRef=提交干預措施 %s SendInterventionByMail=通過電子郵件發送干預 InterventionCreatedInDolibarr=干預 %s 已創建 InterventionValidatedInDolibarr=干預 %s 已驗證 +InterventionSignedInDolibarr=介入已簽署 +InterventionSignedOnline=在線簽署幹預措施 +InterventionUnsignedInDolibarr=幹預未簽名 InterventionModifiedInDolibarr=干預 %s 已修改 InterventionClassifiedBilledInDolibarr=介入項目 %s 已設置為已開單 InterventionClassifiedUnbilledInDolibarr=干預 %s 已設置為未開單 diff --git a/htdocs/langs/zh_HK/ldap.lang b/htdocs/langs/zh_HK/ldap.lang index 7c8f0a903f8..338b2a6e595 100644 --- a/htdocs/langs/zh_HK/ldap.lang +++ b/htdocs/langs/zh_HK/ldap.lang @@ -21,7 +21,7 @@ UserSynchronized=用戶已同步 GroupSynchronized=群組同步 MemberSynchronized=會員已同步 MemberTypeSynchronized=成員類型已同步 -ContactSynchronized=聯繫人已同步 +ContactSynchronized=聯絡人已同步 ForceSynchronize=強制同步 Dolibarr -> LDAP ErrorFailedToReadLDAP=無法讀取 LDAP 數據庫。檢查 LDAP 模塊設置和數據庫可訪問性。 PasswordOfUserInLDAP=LDAP 用戶密碼 diff --git a/htdocs/langs/zh_HK/mails.lang b/htdocs/langs/zh_HK/mails.lang index 5ca1b5a23d6..6db20235db5 100644 --- a/htdocs/langs/zh_HK/mails.lang +++ b/htdocs/langs/zh_HK/mails.lang @@ -32,8 +32,8 @@ NewMailing=新的電子郵件 NewSMSing=新建短信群發 EditMailing=編輯電子郵件 ResetMailing=重新發送電子郵件 -ConfirmResetMailingTargetMassaction=批量目標重新發送確認 -ResetMailingTargetMassaction=重新發送目標 +ConfirmResetMailingTargetMassaction=確認目標狀態重置 +ResetMailingTargetMassaction=重置目標狀態 DeleteMailing=刪除電子郵件 PreviewMailing=預覽電子郵件發送 CreateMailing=創建電子郵件 @@ -69,9 +69,9 @@ EMailTestSubstitutionReplacedByGenericValues=使用測試模式時,替換變 MailingAddFile=附上此文件 NoAttachedFiles=無附加文件 BadEMail=電子郵件的價值不佳 -EMailNotDefined=未定義郵箱 -ConfirmCloneEMailing=您確定要克隆此電子郵件嗎? -CloneContent=克隆消息 +EMailNotDefined=未定義電子郵箱 +ConfirmCloneEMailing=您確定要複製此電子郵件嗎? +CloneContent=複製訊息 CloneReceivers=複製收件人 DateLastSend=最近發送日期 DateSending=發送日期 @@ -83,7 +83,7 @@ EMailSentToNRecipients=電子郵件已發送至 %s 收件人。 EMailSentForNElements=已發送 %s 封邮件。 XTargetsAdded=%s 收件人已添加到目標列表中 OnlyPDFattachmentSupported=如果已為要傳送的物件產生 PDF 文檔,它們將附加到電子郵件中。如果沒有,則不會發送電子郵件(另請注意,此版本中僅支援 pdf 文件作為批次發送的附件)。 -AllRecipientSelected=所選 %s 位 brecord 的收件者(如果知道他們的電子郵件)。 +AllRecipientSelected=所選 %s 記錄的收件者(如果他們的電子郵件已知)。 GroupEmails=群組電子郵件 OneEmailPerRecipient=每位收件者一封電子郵件(預設情況下,每個所選記錄一封電子郵件) WarningIfYouCheckOneRecipientPerEmail=警告,如果您勾選此框,則表示只會為選定的多個不同記錄發送一封電子郵件,因此,如果您的訊息包含引用記錄資料的替換變量,則無法替換它們。 @@ -141,8 +141,8 @@ NotificationsAuto=通知自動。 NoNotificationsWillBeSent=沒有計劃為此事件類型和公司提供自動電子郵件通知 ANotificationsWillBeSent=1 自動通知將通過電子郵件發送 SomeNotificationsWillBeSent=%s 自動通知將通過電子郵件發送 -AddNewNotification=訂閱新的自動電子郵件通知(目標/事件) -ListOfActiveNotifications=自動電子郵件通知的有效訂閱(目標/活動) +AddNewNotification=訂閱新的自動電子郵件通知(目標 / 事件) +ListOfActiveNotifications=自動電子郵件通知的有效訂閱(目標 / 活動) ListOfNotificationsDone=自動發送電子郵件通知 MailSendSetupIs=電子郵件發送配置已設定為“%s”。此模式不能用於傳送群發電子郵件。 MailSendSetupIs2=您必須先使用管理員帳戶進入選單 %sHome - 設定 - 電子郵件%s 將參數'%s'變更為使用模式「%s」。在此模式下,您可以進入網際網路服務供應商提供的 SMTP 伺服器設定並使用群發電子郵件功能。 @@ -190,10 +190,10 @@ DefaultBlacklistMailingStatus=建立新聯絡人時欄位「%s」的預設值 DefaultStatusEmptyMandatory=為空但必填 WarningLimitSendByDay=警告:您的實例的設定或合約將您每天的電子郵件數量限制為 %s。嘗試發送更多可能會導致您的實例變慢或暫停。如果您需要更高的配額,請聯絡您的支援人員。 NoMoreRecipientToSendTo=沒有更多收件人可以發送郵件 -EmailOptedOut=電子郵件所有者已要求不再使用此電子郵件與他聯繫 +EmailOptedOut=電子郵件所有者已要求不再使用此電子郵件與他聯絡 EvenUnsubscribe=包括選擇退出的郵件 EvenUnsubscribeDesc=當您選擇電子郵件作為目標時,請包含選擇退出的電子郵件。例如,對於強制性服務電子郵件很有用。 -XEmailsDoneYActionsDone=%s 封電子郵件已通過資格預審,%s 封電子郵件已成功處理(對於已完成的 %s 筆記錄/操作) +XEmailsDoneYActionsDone=%s 封電子郵件已通過資格預審,%s 封電子郵件已成功處理(已完成 %s 項操作) YouCanMakeSomeInstructionForEmail=您可以為您的電子郵件做一些說明(例如:在電子郵件範本中產生圖像...) ModelTemplate=電子郵件範本 YouCanChooseAModelForYouMailContent= 您可以選擇一種模板模型或使用 AI 產生一個 diff --git a/htdocs/langs/zh_HK/main.lang b/htdocs/langs/zh_HK/main.lang index 8efaaed779d..d9ec91bfd13 100644 --- a/htdocs/langs/zh_HK/main.lang +++ b/htdocs/langs/zh_HK/main.lang @@ -45,6 +45,7 @@ NoError=沒有錯誤 Error=錯誤 Errors=錯誤 ErrorFieldRequired=字段 '%s' 是必須的 +CustomMandatoryFieldRule=自訂「必填欄位」規則 ErrorFieldFormat=字段 '%s' 價值不高 ErrorFileDoesNotExists=文件 %s 不存在 ErrorFailedToOpenFile=無法打開文件 %s @@ -617,7 +618,7 @@ November=十一月 December=十二月 Month01=一月 Month02=二月 -Month03=行進 +Month03=三月 Month04=四月 Month05=五月 Month06=六月 @@ -929,7 +930,7 @@ RelatedObjects=相關對象 ClassifyBilled=歸類為已開票 ClassifyUnbilled=歸類為未開票 Progress=進度 -ProgressShort=進度表 +ProgressShort=進度 FrontOffice=前台 BackOffice=後台 Submit=提交 diff --git a/htdocs/langs/zh_HK/margins.lang b/htdocs/langs/zh_HK/margins.lang index 47aab50fd38..196d66a3418 100644 --- a/htdocs/langs/zh_HK/margins.lang +++ b/htdocs/langs/zh_HK/margins.lang @@ -17,7 +17,7 @@ MarginDetails=利潤明細 ProductMargins=產品利潤 CustomerMargins=客戶利潤 SalesRepresentativeMargins=銷售代表利潤 -ContactOfInvoice=發票聯繫人 +ContactOfInvoice=發票聯絡人 UserMargins=用戶利潤 ProductService=產品或服務 AllProducts=所有產品和服務 @@ -37,7 +37,7 @@ MarginTypeDesc=* 最佳購買價格利潤 = 銷售價格 - 產品卡上定義的 CostPrice=成本價 UnitCharges=單位收費 Charges=收費 -AgentContactType=商業代理聯繫方式 +AgentContactType=商業代理聯絡方式 AgentContactTypeDetails=定義將用於每個聯絡人/地址利潤報告的聯絡人類型(連接到發票上)。請注意,讀取聯絡人的統計數據不可靠,因為在大多數情況下,聯絡人可能不會在發票上明確定義。 rateMustBeNumeric=利率必須是數字值 markRateShouldBeLesserThan100=標記利率應低於100 diff --git a/htdocs/langs/zh_HK/modulebuilder.lang b/htdocs/langs/zh_HK/modulebuilder.lang index f42be53184b..6c2365399de 100644 --- a/htdocs/langs/zh_HK/modulebuilder.lang +++ b/htdocs/langs/zh_HK/modulebuilder.lang @@ -45,7 +45,7 @@ PageForCreateEditView=創建/編輯/查看記錄的 PHP 頁面 PageForAgendaTab=事件選項卡的 PHP 頁面 PageForDocumentTab=文件選項卡的 PHP 頁面 PageForNoteTab=備註選項卡的 PHP 頁面 -PageForContactTab=聯繫人選項卡的 PHP 頁面 +PageForContactTab=聯絡人選項卡的 PHP 頁面 PathToModulePackage=模組/應用程序包的 zip 文件路徑 PathToModuleDocumentation=模組/應用程序文檔文件路徑 (%s) SpaceOrSpecialCharAreNotAllowed=不允許使用空格或特殊字符。 diff --git a/htdocs/langs/zh_HK/oauth.lang b/htdocs/langs/zh_HK/oauth.lang index 08f3da63150..c0fd2eca15b 100644 --- a/htdocs/langs/zh_HK/oauth.lang +++ b/htdocs/langs/zh_HK/oauth.lang @@ -31,7 +31,7 @@ OAUTH_URL_FOR_CREDENTIAL=前往%s
。 +NewPartnershipRequestDesc=此表單允許您申請成為我們合作夥伴計劃的一員。如果您需要填寫此表單的協助,請通過電子郵件聯絡 %s。 ThisUrlMustContainsAtLeastOneLinkToWebsite=此頁面必須至少包含一個連接至以下其中一個域名:%s IPOfApplicant=申請者的IP地址 diff --git a/htdocs/langs/zh_HK/printing.lang b/htdocs/langs/zh_HK/printing.lang index 66a89bb1187..5718a053b97 100644 --- a/htdocs/langs/zh_HK/printing.lang +++ b/htdocs/langs/zh_HK/printing.lang @@ -22,7 +22,7 @@ PRINTGCP_TOKEN_ACCESS=Google 雲打印 OAuth 令牌 PrintGCPDesc=此驅動程序允許使用 Google 雲打印將文檔直接發送到打印機。 GCP_Name=名稱 GCP_displayName=顯示名稱 -GCP_Id=打印機 唯一編碼 +GCP_Id=打印機編碼 GCP_OwnerName=擁有者名稱 GCP_State=打印機狀態 GCP_connectionStatus=在線狀態 diff --git a/htdocs/langs/zh_HK/products.lang b/htdocs/langs/zh_HK/products.lang index 9917e6a9cff..2b942575c7c 100644 --- a/htdocs/langs/zh_HK/products.lang +++ b/htdocs/langs/zh_HK/products.lang @@ -12,7 +12,7 @@ Products=產品 Services=服務 Product=產品 Service=服務 -ProductId=產品/服務 ID +ProductId=產品 / 服務 ID Create=創造 Reference=參考 NewProduct=新產品 diff --git a/htdocs/langs/zh_HK/projects.lang b/htdocs/langs/zh_HK/projects.lang index 0fa816ebab3..3a10131b9a5 100644 --- a/htdocs/langs/zh_HK/projects.lang +++ b/htdocs/langs/zh_HK/projects.lang @@ -5,19 +5,19 @@ ProjectId=項目編號 ProjectLabel=項目標籤 ProjectsArea=項目區 ProjectStatus=項目狀態 -SharedProject=大家 -PrivateProject=指定聯繫人 -ProjectsImContactFor=我明確為聯絡人的項目 -AllAllowedProjects=我可以閱讀的所有項目(我的 + 公共的) +SharedProject=所有人 +PrivateProject=指定聯絡人 +ProjectsImContactFor=我是這些項目的明確聯絡人 +AllAllowedProjects=我可以查看的所有項目(我的 + 公共的) AllProjects=所有項目 -MyProjectsDesc=此視圖僅限於您作為聯繫人的項目 +MyProjectsDesc=此視圖僅限於您作為聯絡人的項目 ProjectsPublicDesc=此視圖顯示您可以閱讀的所有項目。 TasksOnProjectsPublicDesc=此視圖顯示您有權閱讀的項目的所有任務。 ProjectsPublicTaskDesc=此視圖顯示您有權閱讀的所有項目和任務。 ProjectsDesc=此視圖顯示所有項目(您的用戶權限授予您查看所有內容的權限)。 -TasksOnProjectsDesc=該視圖顯示所有項目的所有任務(您的用戶權限允許您查看所有內容)。 -MyTasksDesc=此視圖僅限於您作為聯繫人的項目或任務 -OnlyOpenedProject=僅顯示開放的項目(草稿或關閉狀態的項目不可見)。 +TasksOnProjectsDesc=此視圖顯示所有項目的所有任務(您的使用者權限授予您查看所有內容的權限)。 +MyTasksDesc=此視圖僅限於您作為聯絡人的項目或任務 +OnlyOpenedProject=僅顯示開始的項目(草稿或關閉狀態的項目不可見)。 ClosedProjectsAreHidden=關閉的項目不可見。 TasksPublicDesc=此視圖顯示您可以閱讀的所有項目和任務。 TasksDesc=此視圖顯示所有項目和任務(您的用戶權限授予您查看所有內容的權限)。 @@ -25,17 +25,17 @@ AllTaskVisibleButEditIfYouAreAssigned=合格項目的所有任務都是可見的 OnlyYourTaskAreVisible=只有分配給您的任務才可見。如果您需要在任務上記錄時間且此任務在此不可見,您需要自行分配該任務。 ImportDatasetProjects=項目或機會 ImportDatasetTasks=項目的任務 -ProjectCategories=項目標籤/類別 +ProjectCategories=項目 標式 / 類別 NewProject=新項目 AddProject=創建項目 DeleteAProject=刪除項目 DeleteATask=刪除任務 ConfirmDeleteAProject=您確定要刪除該項目嗎? ConfirmDeleteATask=您確定要刪除此任務嗎? -OpenedProjects=開放項目 -OpenedProjectsOpportunities=開放機會 -OpenedTasks=打開的任務 -OpportunitiesStatusForOpenedProjects=按狀態開放項目的潛在客戶數量 +OpenedProjects=開始項目 +OpenedProjectsOpportunities=開始機會 +OpenedTasks=開始任務 +OpportunitiesStatusForOpenedProjects=按狀態開始項目的潛在客戶數量 OpportunitiesStatusForProjects=按狀態的項目潛在客戶數量 ShowProject=展示項目 ShowTask=顯示任務 @@ -46,24 +46,24 @@ NoProject=沒有定義或擁有項目 NbOfProjects=項目數量 NbOfTasks=任務數量 TimeEntry=時間追蹤 -TimeSpent=所花費的時間 -TimeSpentSmall=花費時間 -TimeSpentByYou=您花費的時間 -TimeSpentByUser=使用者花費的時間 +TimeSpent=所需的時間 +TimeSpentSmall=所需的時間 +TimeSpentByYou=您所需的時間 +TimeSpentByUser=使用者所需的時間 TaskId=任務編號 RefTask=任務參考號 LabelTask=任務標籤 -TaskTimeSpent=花在任務上的時間 +TaskTimeSpent=任務上所需的時間 TaskTimeUser=用戶 TaskTimeNote=筆記 TaskTimeDate=日期 -TasksOnOpenedProject=開放項目的任務 +TasksOnOpenedProject=開始項目的任務 WorkloadNotDefined=工作負荷未定義 -NewTimeSpent=所花費的時間 -MyTimeSpent=我花費的時間 -BillTime=計費花費時間 -BillTimeShort=計費時間 -TimeToBill=未計費時間 +NewTimeSpent=所需的時間 +MyTimeSpent=我所需的時間 +BillTime=所需的時間收費 +BillTimeShort=收所需時間費 +TimeToBill=未收費時間 TimeBilled=已計費時間 Tasks=任務 Task=任務 @@ -83,7 +83,7 @@ MyProjectsArea=我的項目區域 DurationEffective=有效期限 ProgressDeclared=宣布真正的進展 TaskProgressSummary=任務進度 -CurentlyOpenedTasks=當前開放的任務 +CurentlyOpenedTasks=當前開始的任務 TheReportedProgressIsLessThanTheCalculatedProgressionByX=申報的實際進度比消費進度少%s TheReportedProgressIsMoreThanTheCalculatedProgressionByX=申報的實際進度比消費進度多%s ProgressCalculated=消費進展 @@ -107,7 +107,7 @@ ListFichinterAssociatedProject=與項目相關的干預措施清單 ListExpenseReportsAssociatedProject=與項目相關的費用報告清單 ListDonationsAssociatedProject=與項目相關的捐款清單 ListVariousPaymentsAssociatedProject=與項目相關的其他付款清單 -ListSalariesAssociatedProject=與項目相關的薪資支付清單 +ListSalariesAssociatedProject=與項目相關的薪金支付清單 ListActionsAssociatedProject=與項目相關的事件列表 ListMOAssociatedProject=與項目相關的製造訂單清單 ListTaskTimeUserProject=項目任務所耗費的時間清單 @@ -128,20 +128,20 @@ ConfirmValidateProject=您確定要驗證該項目嗎? CloseAProject=關閉項目 ConfirmCloseAProject=您確定要關閉該項目嗎? AlsoCloseAProject=同時關閉項目 -AlsoCloseAProjectTooltip=如仍需跟進生產任務,請保持開放 -ReOpenAProject=打開項目 -ConfirmReOpenAProject=您確定要重新打開該項目嗎? -ProjectContact=項目聯繫方式 +AlsoCloseAProjectTooltip=如仍需跟進生產任務,請保持開始 +ReOpenAProject=開始項目 +ConfirmReOpenAProject=您確定要重新開始該項目嗎? +ProjectContact=項目聯絡方式 ProjectContactTypeManager=指定我為該類型的聯絡人 -TaskContact=任務聯繫 +TaskContact=任務聯絡 ActionsOnProject=項目活動 -YouAreNotContactOfProject=您不是該私人項目的聯繫人 +YouAreNotContactOfProject=您不是該私人項目的聯絡人 UserIsNotContactOfProject=該用戶不是此私人項目的聯絡人 DeleteATimeSpent=刪除花費的時間 ConfirmDeleteATimeSpent=您確定要刪除這段花費的時間嗎? DoNotShowMyTasksOnly=另請參閱未分配給我的任務 ShowMyTasksOnly=僅查看分配給我的任務 -TaskRessourceLinks=任務聯繫人 +TaskRessourceLinks=任務聯絡人 ProjectsDedicatedToThisThirdParty=專用於該第三方的項目 ProjectsLinkedToThisThirdParty=擁有第三方聯絡人的項目 NoTasks=該項目沒有任務 @@ -224,29 +224,29 @@ ProjectNbProjectByMonth=每月創建的項目數量 ProjectNbTaskByMonth=每月創建任務的數量 ProjectOppAmountOfProjectsByMonth=每月的潛在客戶數量 ProjectWeightedOppAmountOfProjectsByMonth=每月加權的潛在客戶數量 -ProjectOpenedProjectByOppStatus=按狀態開啟 項目| 潛在客戶 +ProjectOpenedProjectByOppStatus=按狀態開啟 項目 | 潛在客戶 ProjectsStatistics=項目或潛在客戶的統計數據 TasksStatistics=項目或潛在客戶任務的統計數據 TaskAssignedToEnterTime=任務已分配。應該可以在此任務上輸入時間。 -IdTaskTime=時間任務ID +IdTaskTime=時間任務編號 YouCanCompleteRef=如果你想用一些後綴來完成參考,建議添加一個 - 字元來分隔它,這樣自動編號在接下來的專案中仍然可以正常工作。例如 %s-MYSUFFIX -OpenedProjectsByThirdparties=第三方開放的項目 +OpenedProjectsByThirdparties=第三方開始的項目 OnlyOpportunitiesShort=只有潛在客戶 -OpenedOpportunitiesShort=開放的潛在客戶 -NotOpenedOpportunitiesShort=不是開放的潛在客戶 +OpenedOpportunitiesShort=開始的潛在客戶 +NotOpenedOpportunitiesShort=不是開始的潛在客戶 NotAnOpportunityShort=不是潛在客戶 OpportunityTotalAmount=潛在客戶總數 OpportunityPonderatedAmount=加權的潛在客戶總數 OpportunityPonderatedAmountDesc=按機率加權的潛在客戶金額 -OppStatusPROSP=甄選 -OppStatusQUAL=資歷 -OppStatusPROPO=提案 +OppStatusPROSP=展望 +OppStatusQUAL=合資格 +OppStatusPROPO=報價 OppStatusNEGO=談判 OppStatusPENDING=待處理 -OppStatusWON=贏得 +OppStatusWON=獲得 OppStatusLOST=失去 Budget=預算 -AllowToLinkFromOtherCompany=允許將元素與其他公司的項目鏈接

支援的值:
- 保留為空:可以將元素與同一公司中的任何項目連結(預設)
-“all”:可以將元素與任何項目鏈接,甚至是其他公司的項目
- 以逗號分隔的第三方 ID 清單:可以將元素與這些第三方的任何項目連結(範例:123,4795,53)
+AllowToLinkFromOtherCompany=允許將部件與其他公司的項目連接

支援的值:
- 保留為空:可以將部件與同一公司中的任何項目連結(預設)
-“all”:可以將部件與任何項目連接,甚至是其他公司的項目
- 以逗號分隔的第三方 ID 清單:可以將部件與這些第三方的任何項目連結(範例:123,4795,53)
LatestProjects=最新的 %s 項目 LatestModifiedProjects=最新修改的 %s 項目 OtherFilteredTasks=其他篩選的任務 @@ -258,10 +258,10 @@ ChooseANotYetAssignedTask=選擇尚未分配給您的任務 AllowCommentOnTask=允許用戶對任務進行評論 AllowCommentOnProject=允許使用者對項目進行評論 DontHavePermissionForCloseProject=您沒有權限關閉項目 %s -DontHaveTheValidateStatus=項目 %s 必須處於開放狀態才能被關閉 -RecordsClosed=已關閉 %s 個項目(群) +DontHaveTheValidateStatus=項目 %s 必須處於開始狀態才能被關閉 +RecordsClosed=已關閉 %s 個項目(或多個項目) SendProjectRef=項目信息 %s -ModuleSalaryToDefineHourlyRateMustBeEnabled=必須啟用“薪酬”模組以便定義員工時薪以估價已花費的時間 +ModuleSalaryToDefineHourlyRateMustBeEnabled=必須啟用「薪水」模組來定義員工的小時費率,以評估所花費的時間 NewTaskRefSuggested=任務參考已使用,需要新的任務參考 NumberOfTasksCloned=%s 任務(或多項任務) 已被複製 TimeSpentInvoiced=計費的時間 @@ -271,9 +271,9 @@ OneLinePerUser=每個用戶一行 ServiceToUseOnLines=默認的行服務 InvoiceGeneratedFromTimeSpent=發票 %s 已根據項目投入的時間生成 InterventionGeneratedFromTimeSpent=干預 %s 已根據項目投入的時間生成 -ProjectBillTimeDescription=檢查您是否在項目的任務上輸入時間表,並且計劃通過使用該時間表來生成客戶發票(群)(如果您計劃生成不基於輸入的時間表的發票,請勿勾選)。注意:要生成發票,進入項目的“花費時間”選項卡,並選擇要包括的行。 +ProjectBillTimeDescription=檢查您是否在項目的任務上輸入時間表,並且計劃通過使用該時間表來生成客戶發票(或多張發票) (如果您計劃生成不基於輸入的時間表的發票,請勿勾選)。注意:要生成發票,進入項目的“花費時間”選項卡,並選擇要包括的行。 ProjectFollowOpportunity=跟進機會 -ProjectFollowTasks=跟踪任務或花費時間 +ProjectFollowTasks=跟進任務或花費時間 Usage=用途 UsageOpportunity=用途:機會 UsageTasks=用途:任務 @@ -286,29 +286,29 @@ OneLinePerTask=每個任務一行 OneLinePerPeriod=每個時期一行 OneLinePerTimeSpentLine=每個時間花費申報一行 AddDetailDateAndDuration=在行描述中包含日期和持續時間 -RefTaskParent=參考。母任務 +RefTaskParent=父任務參考號 ProfitIsCalculatedWith=利潤計算使用 AddPersonToTask=也添加到任務中 UsageOrganizeEvent=用途:活動組織 PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=當所有任務完成 ( 進度100%% )時將項目歸類為已關閉 -PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=注意:現有項目中所有任務已設定為100%%進度將不受影響:您需要手動關閉它們。此選項僅影響打開的項目。 +PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=注意:現有項目中所有任務已設定為100%%進度將不受影響:您需要手動關閉它們。此選項僅影響開始的項目。 SelectLinesOfTimeSpentToInvoice=選擇未計費的時間花費行,然後批量動作“生成發票”來計費 ProjectTasksWithoutTimeSpent=沒有投入時間的項目任務 FormForNewLeadDesc=謝謝您填寫以下表格以便聯絡我們。您也可以直接發送電子郵件至 %s。 ProjectsHavingThisContact=擁有此聯絡人的項目 StartDateCannotBeAfterEndDate=結束日期不能早於開始日期 -ErrorPROJECTLEADERRoleMissingRestoreIt=“項目負責人”角色缺失或已被禁用,請在聯繫人類型字典中恢復 -LeadPublicFormDesc=您可以在這裡啟動一個公眾網頁,以允許潛在客戶從公眾在線表單與您首次聯繫 -EnablePublicLeadForm=啟用聯繫的公眾表單 +ErrorPROJECTLEADERRoleMissingRestoreIt=“ 項目負責人”角色缺失或已被禁用,請在聯絡人類型字典中恢復 +LeadPublicFormDesc=您可以在此處啟用公開頁面,以便您的潛在客戶透過公開線上表單與您進行首次聯絡 +EnablePublicLeadForm=啟用公共表單以進行聯絡 NewLeadbyWeb=您的信息或請求已被記錄。我們將儘快回答或聯絡您。 NewLeadForm=新聯絡表格 -LeadFromPublicForm=來自公開表單的在線潛在客戶 +LeadFromPublicForm=來自公共表格的線上潛在客戶 ExportAccountingReportButtonLabel=獲取報告 MergeOriginTask=重複任務(要刪除的任務) SelectTask=選擇一個任務 -ConfirmMergeTasks=您確定要將選擇的任務與當前任務合併嗎?所有鏈接的對象(花費的時間、發票等)將被移動到當前任務, 之後選擇的任務將被刪除。 +ConfirmMergeTasks=您確定要將選擇的任務與當前任務合併嗎?所有連接的對象(花費的時間、發票等)將被移動到當前任務, 之後選擇的任務將被刪除。 MergeTasks=合併任務 TaskMergeSuccess=任務已合併 -ErrorTaskIdIsMandatory=錯誤:任務ID是必需的 +ErrorTaskIdIsMandatory=錯誤:需要任務編號 ErrorsTaskMerge=合並任務過程中發生錯誤 Billable = 可計費 diff --git a/htdocs/langs/zh_HK/propal.lang b/htdocs/langs/zh_HK/propal.lang index c5a62023e8a..bf0df6d3ffc 100644 --- a/htdocs/langs/zh_HK/propal.lang +++ b/htdocs/langs/zh_HK/propal.lang @@ -1,37 +1,37 @@ # Dolibarr language file - Source file is en_US - propal Proposals=報價 Proposal=報價 -ProposalShort=提議 +ProposalShort=報價 ProposalsDraft=報價 草案 ProposalsOpened=打開 報價 CommercialProposal=報價 -PdfCommercialProposalTitle=提案 -ProposalCard=求婚卡 +PdfCommercialProposalTitle=報價 +ProposalCard=報價卡 NewProp=新的報價 -NewPropal=新提案 +NewPropal=新報價 Prospect=前景 DeleteProp=刪除報價 ValidateProp=驗證報價 CancelPropal=取消 -AddProp=創建提案 +AddProp=創建報價 ConfirmDeleteProp=您確定要刪除此報價嗎? ConfirmValidateProp=您確定要驗證名為 %s 的報價嗎? ConfirmCancelPropal=您確定要取消編號為 %s 的報價單嗎? -LastPropals=最新%s 提案 -LastModifiedProposals=最新%s 修改後的提案 -AllPropals=所有提案 -SearchAProposal=搜索提案 +LastPropals=最新 %s 個報價 +LastModifiedProposals=最新 %s 個修改後的報價 +AllPropals=所有報價 +SearchAProposal=搜索報價 NoProposal=沒有報價單 ProposalsStatistics=報價統計 NumberOfProposalsByMonth=按月數 AmountOfProposalsByMonthHT=每月金額(不含稅) NbOfProposals=報價數量 -ShowPropal=顯示提案 +ShowPropal=顯示報價 PropalsDraft=草稿 PropalsOpened=打開 PropalStatusCanceled=已取消 (已放棄) PropalStatusDraft=草案(需要驗證) -PropalStatusValidated=已驗證(提案已開放) +PropalStatusValidated=已驗證(報價已開始) PropalStatusSigned=簽字(需要開具賬單) PropalStatusNotSigned=未簽署(已關閉) PropalStatusBilled=計費 @@ -45,26 +45,26 @@ PropalStatusBilledShort=計費 PropalsToClose=報價關閉 PropalsToBill=簽署報價以開具賬單 ListOfProposals=報價清單 -ActionsOnPropal=提案活動 +ActionsOnPropal=報價活動 RefProposal=報價參考 SendPropalByMail=通過郵件發送報價 -DatePropal=提案日期 +DatePropal=報價日期 DateEndPropal=有效期結束日期 ValidityDuration=有效期 SetAcceptedRefused=設定為已接受/已拒絕 ErrorPropalNotFound=Propal %s 未找到 -AddToDraftProposals=添加到提案草案 -NoDraftProposals=沒有提案草案 +AddToDraftProposals=添加到報價草案 +NoDraftProposals=沒有報價草案 CopyPropalFrom=通過複製現有報價創建報價 CreateEmptyPropal=創建空的報價或從產品/服務列表中創建 DefaultProposalDurationValidity=默認報價有效期(以天為單位) DefaultPuttingPricesUpToDate=複製報價單時,預設使用當前已知價格更新價格 DefaultPuttingDescUpToDate=複製報價單時,預設使用當前已知描述更新描述 -UseCustomerContactAsPropalRecipientIfExist=如果已定義,則使用類型為“聯繫後續提案”的聯繫人/地址,而不是第三方地址作為提案收件人地址 +UseCustomerContactAsPropalRecipientIfExist=如果已定義,則使用類型為“聯絡跟進報價”的聯絡人/地址,而不是第三方地址作為報價收件人地址 ConfirmClonePropal=您確定要複製報價 %s ? ConfirmReOpenProp=您確定要打開報價 %s ? -ProposalsAndProposalsLines=報價及線路 -ProposalLine=提案線 +ProposalsAndProposalsLines=報價及行 +ProposalLine=報價行 ProposalLines=報價單明細 AvailabilityPeriod=可用性延遲 SetAvailability=設置可用性延遲 @@ -78,9 +78,9 @@ AvailabilityTypeAV_2W=2週 AvailabilityTypeAV_3W=3週 AvailabilityTypeAV_1M=1個月 ##### Types ofe contacts ##### -TypeContact_propal_internal_SALESREPFOLL=代表後續提案 -TypeContact_propal_external_BILLING=客戶發票聯繫方式 -TypeContact_propal_external_CUSTOMER=客戶聯繫後續提案 +TypeContact_propal_internal_SALESREPFOLL=跟進報價代表 +TypeContact_propal_external_BILLING=客戶發票聯絡方式 +TypeContact_propal_external_CUSTOMER=客戶聯絡跟進報價 TypeContact_propal_external_SHIPPING=客戶收貨聯絡人 # Document models CantBeNoSign=無法設定為未簽署 @@ -93,10 +93,10 @@ ConfirmMassValidation=批量驗證確認 ConfirmMassValidationQuestion=您確定要驗證所選記錄嗎? ConfirmRefusePropal=您確定要拒絕此報價單嗎? ContractSigned=合約已簽署 -DefaultModelPropalClosed=關閉業務提案時的默認模板(未開票) +DefaultModelPropalClosed=關閉業務報價時的默認模板(未開票) DefaultModelPropalCreate=默認模型創建 -DefaultModelPropalToBill=關閉業務提案時的默認模板(需開具發票) -DocModelAzurDescription=完整的提案模型(Cyan 模板的舊實現) +DefaultModelPropalToBill=關閉業務報價時的默認模板(需開具發票) +DocModelAzurDescription=完整的報價模型(Cyan 模板的舊實現) DocModelCyanDescription=完整的報價單範本 FichinterSigned=介入已簽署 IdProduct=產品編號 diff --git a/htdocs/langs/zh_HK/sendings.lang b/htdocs/langs/zh_HK/sendings.lang index ccb21617bca..46cfc297eda 100644 --- a/htdocs/langs/zh_HK/sendings.lang +++ b/htdocs/langs/zh_HK/sendings.lang @@ -41,7 +41,7 @@ SendingSheet=發貨單 ConfirmDeleteSending=您確定要刪除此貨件嗎? ConfirmValidateSending=您確定要驗證此參考為 %s 的發貨嗎? ConfirmCancelSending=您確定要取消這批貨件嗎? -DocumentModelMerou=梅魯A5車型 +DocumentModelMerou=MerouA5車型 WarningNoQtyLeftToSend=警告,沒有等待發貨的產品。 StatsOnShipmentsOnlyValidated=統計數據僅適用於經過驗證的發貨。使用的日期是發貨驗證日期(計劃發貨日期並不總是已知) DateDeliveryPlanned=計劃交貨日期 @@ -63,7 +63,7 @@ NoProductToShipFoundIntoStock=在倉庫 %s 中未找到可發貨產品。 WeightVolShort=重量 / 體積 ValidateOrderFirstBeforeShipment=您必須先驗證訂單才能進行發貨。 NoLineGoOnTabToAddSome=無行列,請轉到標籤 “%s” 以添加 -CreateInvoiceForThisCustomerFromSendings=發貨開票 +CreateInvoiceForThisCustomerFromSendings=建立帳單 IfValidateInvoiceIsNoSendingStayUnbilled=如果發票驗證為“否”,則發貨狀態將保持為“未開票”直到發票驗證完成。 OptionToSetSendingBilledNotEnabled=未啟用於工作流程模組中啟動的發票驗證後自動將發貨設為“已開票”的選項,因此您將需在發票生成後手動設置發貨狀態。 diff --git a/htdocs/langs/zh_HK/stripe.lang b/htdocs/langs/zh_HK/stripe.lang index 82ec99d42f1..68aa0716601 100644 --- a/htdocs/langs/zh_HK/stripe.lang +++ b/htdocs/langs/zh_HK/stripe.lang @@ -22,7 +22,7 @@ ToOfferALinkForOnlinePaymentOnContractLine=為合同行提供 %s 線上付款頁 ToOfferALinkForOnlinePaymentOnFreeAmount=提供無現有對象的任何金額 %s 線上付款頁面的網址 ToOfferALinkForOnlinePaymentOnMemberSubscription=為會員訂閱提供 %s 線上付款頁面的網址 ToOfferALinkForOnlinePaymentOnDonation=為捐款提供 %s 線上付款頁面的網址 -YouCanAddTagOnUrl=還可以添加url參數&tag=value 到任何這些 URL(僅適用於未連結到物件的付款)以新增您自己的付款評論標籤。
對於沒有物件的付款URL,您也可以新增參數&noidempotency=1,這樣同一個標籤的同一個連結可以多次使用(某些付款方式可能會限制付款次數 1對於每個不帶此參數的不同連結) +YouCanAddTagOnUrl=您也可以將 url 參數 &tag=value 新增至任何這些 URL(僅對於未連結到物件的付款是必需的),以新增您自己的付款評論標籤。
對於沒有現有物件的付款網址,您也可以新增參數&noidempotency=1,這樣同一個標籤的同一個連結可以多次使用(有些支付方式如果不加此參數可能會限制每個不同連結的支付次數為1次) YouCanEmbedOnWebsite=如果您想將付款頁面整合到Dolibarr網站中,您可以包含以下參數:&ws=website_ref
此外,還有兩個頁面名為付款確定和必須在網站中建立 paymentko才能接收線上付款成功或失敗後的重定向。 SetupStripeToHavePaymentCreatedAutomatically=使用 url 設定 Stripe%s在 Stripe 驗證後自動建立付款。 AccountParameter=帳戶參數 diff --git a/htdocs/langs/zh_HK/ticket.lang b/htdocs/langs/zh_HK/ticket.lang index 7d8683c20f4..af7694d58d0 100644 --- a/htdocs/langs/zh_HK/ticket.lang +++ b/htdocs/langs/zh_HK/ticket.lang @@ -36,21 +36,21 @@ TicketTypeShortOTHER=其他 TicketSeverityShortLOW=低 TicketSeverityShortNORMAL=普通 TicketSeverityShortHIGH=高 -TicketSeverityShortBLOCKING=關鍵,阻塞 +TicketSeverityShortBLOCKING=關鍵, 阻塞 TicketCategoryShortOTHER=其他 -ErrorBadEmailAddress=欄位 ' %s' 不正確 +ErrorBadEmailAddress=欄位 '%s' 不正確 MenuTicketMyAssign=我的工作單 MenuTicketMyAssignNonClosed=我完成的工作單 MenuListNonClosed=未完成的工作單 TypeContact_ticket_internal_CONTRIBUTOR=貢獻者 TypeContact_ticket_internal_SUPPORTTEC=指派用戶 -TypeContact_ticket_external_SUPPORTCLI=客戶聯繫 / 事件追蹤 +TypeContact_ticket_external_SUPPORTCLI=客戶聯絡 / 事件追蹤 TypeContact_ticket_external_CONTRIBUTOR=外部貢獻者 OriginEmail=報告人電子郵件 EmailReplyto=在電子郵件中回覆 EmailReferences=電子郵件中的引用 Notify_TICKET_SENTBYMAIL=通過電子郵件發送工單信息 -ExportDataset_ticket_1=多組工作單 +ExportDataset_ticket_1=工作單 # Status Read=閱讀 Assigned=已分配 @@ -61,8 +61,8 @@ SolvedClosed=已解決 Deleted=已刪除 # Dict Severity=嚴重程度 -TicketGroupIsPublic=群組為公開 -TicketGroupIsPublicDesc=如果票據群組是公開的,則在從公共界面創建票據時將在表單中可見 +TicketGroupIsPublic=是公開群組 +TicketGroupIsPublicDesc=如果票據是公開的群組,則在從公共界面創建票據時將在表單中可見 # Email templates MailToSendTicketMessage=從工單消息發送電子郵件 # Admin page @@ -115,40 +115,40 @@ TicketsActivatePublicInterfaceHelp=公共界面允許任何訪客創建工作單 TicketsAutoAssignTicket=自動分配創建工作單的用戶 TicketsAutoAssignTicketHelp=在創建工作單時,用戶可以自動分配到工作單。 TicketAutoChangeStatusOnAnswer=回覆工單時自動分配狀態 -TicketAutoChangeStatusOnAnswerHelp=When a user answers to a ticket, the status will automatically be applied to the ticket +TicketAutoChangeStatusOnAnswerHelp=當使用者回答工作單時,狀態將自動套用於工作單 TicketNumberingModules=工作單編號模組 TicketsModelModule=工作單的文件範本 TicketNotifyTiersAtCreation=在創建時通知第三方 TicketsDisableCustomerEmail=當從公眾介面建立工作單時,請始終停用電子郵件通知 -TicketsPublicNotificationNewMessage=當新增訊息/評論到工作單時發送電子郵件(s)。 -TicketsPublicNotificationNewMessageHelp=當從公共界面添加新消息時發送電子郵件(s)(給指定用戶或通知電郵至(更新)和/或通知電郵至) -TicketPublicNotificationNewMessageDefaultEmail=通知電郵至(更新) +TicketsPublicNotificationNewMessage=當新增 訊息 / 評論 到工作單時發送電子郵件(或多個電子郵件)。 +TicketsPublicNotificationNewMessageHelp=當從公共界面添加新消息時發送電子郵件(或多個電子郵件)(給指定用戶或通知電郵至(更新)和/或通知電郵至) +TicketPublicNotificationNewMessageDefaultEmail=通知電郵去(更新) TicketPublicNotificationNewMessageDefaultEmailHelp=如果工作單沒有指派使用者,或者使用者沒有已知的電子郵件地址,請將每條新消息通知發送到此地址。 TicketsAutoReadTicket=自動將工作單標記為已讀(從後台創建時) -TicketsAutoReadTicketHelp=當從後台創建工單時,會自動將其標記為已讀。當從公共界面創建工作單時,  狀態保持為「未讀」。 +TicketsAutoReadTicketHelp=當從後台創建工作單時,會自動將其標記為已讀。當從公共界面創建工作單時, 狀態保持為「未讀」。 TicketsDelayBeforeFirstAnswer=新工作單應該在(小時)內收到第一次回覆: TicketsDelayBeforeFirstAnswerHelp=如果新工作單在此時間段(小時)內沒有收到回覆,列表視圖中將顯示重要警告圖標。 TicketsDelayBetweenAnswers=未解決的工作單在(多個小時)內不應該處於不活動狀態: TicketsDelayBetweenAnswersHelp=如果已經收到回覆的未解決工單在此時間段(小時)內沒有進一步互動,列表視圖中將顯示警告圖標。 TicketsAutoNotifyClose=在關閉工作單時自動通知第三方 -TicketsAutoNotifyCloseHelp=當關閉工作單時,將提示您向第三方聯繫人發送信息。對於批量關閉,消息將發送給與工作單相關的第三方聯繫人之一。 -TicketWrongContact=提供的聯繫人不屬於當前工作單聯繫人範圍。電子郵件未發送。 +TicketsAutoNotifyCloseHelp=當關閉工作單時,將提示您向第三方聯絡人發送信息。對於批量關閉,消息將發送給與工作單相關的第三方聯絡人之一。 +TicketWrongContact=提供的聯絡人不屬於當前工作單聯絡人範圍。電子郵件未發送。 TicketChooseProductCategory=工作單支持的產品類別 TicketChooseProductCategoryHelp=選擇工作單支持的產品類別。這將用於自動將合同連結到工作單。 TicketUseCaptchaCode=創建工作單時使用圖形代碼(CAPTCHA) TicketUseCaptchaCodeHelp=新增創建新工作單時的 CAPTCHA 驗證。 TicketsAllowClassificationModificationIfClosed=允許修改已關閉工作單的分類 TicketsAllowClassificationModificationIfClosedHelp=允許修改已關閉工作單的分類(類型、工單組、嚴重程度)。 -TicketAutoCheckNotifyThirdParty=Check by default “Notify third party” when creating a ticket -TicketAutoCheckNotifyThirdPartyHelp=創建工單時,系統會自動勾選「通知第三方」選項 -TicketAssignContactToMessage=將外部聯繫人分配給訊息 -TicketAssignContactToMessageHelp=當已知聯繫人回覆訊息時,他的姓名會顯示在工單訊息列表中 +TicketAutoCheckNotifyThirdParty=建立工作單時預設勾選「通知第三方」 +TicketAutoCheckNotifyThirdPartyHelp=創建工作單時,系統會自動勾選「通知第三方」選項 +TicketAssignContactToMessage=將外部聯絡人分配給訊息 +TicketAssignContactToMessageHelp=當已知聯絡人回覆訊息時,他的姓名會顯示在工作單訊息列表中 # Index & list page -TicketsIndex=工單區域 -TicketList=工單列表 -TicketAssignedToMeInfos=此頁面顯示創建或分配給當前用戶的工單列表 -NoTicketsFound=未找到工單 -NoUnreadTicketsFound=未找到未讀工單 +TicketsIndex=工作單區域 +TicketList=工作單列表 +TicketAssignedToMeInfos=此頁面顯示創建或分配給當前用戶的工作單列表 +NoTicketsFound=未找到工作單 +NoUnreadTicketsFound=未找到未讀工作單 TicketViewAllTickets=查看所有工單 TicketViewNonClosedOnly=只查看未解決的工單 TicketStatByStatus=按狀態分類工單 @@ -159,24 +159,24 @@ MessageListViewType=顯示為表格列表 ConfirmMassTicketClosingSendEmail=關閉工單時自動發送電子郵件 ConfirmMassTicketClosingSendEmailQuestion=在關閉這些工單時是否通知第三方? # Ticket card -Ticket=工單 -TicketCard=工單卡 -CreateTicket=創建工單 -EditTicket=編輯工單 -TicketsManagement=工單管理 +Ticket=工作單 +TicketCard=工作單卡 +CreateTicket=創建工作單 +EditTicket=編輯工作單 +TicketsManagement=工作單管理 CreatedBy=創建者 -NewTicket=新工單 -SubjectAnswerToTicket=工單回覆 +NewTicket=新工作單 +SubjectAnswerToTicket=工作單回覆 TicketTypeRequest=請求類型 -TicketCategory=工單組 -SeeTicket=查看工單 -TicketMarkedAsRead=工單已標記為已讀 +TicketCategory=工作單組 +SeeTicket=查看工作單 +TicketMarkedAsRead=工作單已標記為已讀 TicketReadOn=閱讀于 TicketCloseOn=關閉日期 -MarkAsRead=標記工單為已讀 -TicketHistory=工單歷史 +MarkAsRead=標記工作單為已讀 +TicketHistory=工作單歷史 AssignUser=指派給用戶 -TicketAssigned=工單已被指派 +TicketAssigned=工作單已被指派 TicketChangeType=更改類型 TicketChangeCategory=更改分析代碼 TicketChangeSeverity=更改嚴重性 @@ -192,9 +192,9 @@ TicketSeverity=嚴重程度 ShowTicket=查看工作單 RelatedTickets=相關工作單 TicketAddIntervention=創建幹預 -CloseTicket= 關閉 / 解決 +CloseTicket=關閉 | 解決 AbandonTicket=放棄 -CloseATicket=關閉 / 解決票 +CloseATicket=關閉 | 解決 工作單 ConfirmCloseAticket=確認關閉工作單 ConfirmAbandonTicket=您是否確認將工作單關閉至狀態‘已放棄’ ConfirmDeleteTicket=請確認刪除工作單 @@ -207,7 +207,7 @@ SendMessageByEmail=通過電子郵件發送消息 TicketNewMessage=新消息 ErrorMailRecipientIsEmptyForSendTicketMessage=收件人為空。未發送任何電子郵件 TicketGoIntoContactTab=請進入「聯絡人」選項卡以選擇他們 -TicketMessageMailIntro=息標題 +TicketMessageMailIntro=訊息標題 TicketMessageMailIntroHelp=此文本只添加在電子郵件的開頭,不會被保存。 TicketMessageMailIntroText=您好
您關注的工作單有新的回覆。以下是消息內容:
TicketMessageMailIntroHelpAdmin=在從Dolibarr回覆工作單時,此文本將插入在回覆之前。 @@ -218,10 +218,10 @@ TicketMessageMailFooterHelpAdmin=此文本將在回覆消息後插入。 TicketMessageHelp=只有此文本會被保存在工作單卡上的消息列表中。 TicketMessageSubstitutionReplacedByGenericValues=替換變量將被通用值取代。 ForEmailMessageWillBeCompletedWith=對於發送給外部用戶的電子郵件消息,消息將補充以下內容: -TimeElapsedSince=自...經過的時間 +TimeElapsedSince=自此之後經過的時間 TicketTimeToRead=閱讀之前經過的時間 -TicketTimeElapsedBeforeSince=之前 / 自...經過的時間 -TicketContacts=聯繫人工作單 +TicketTimeElapsedBeforeSince=之前 / 自此 之後經過的時間 +TicketContacts=聯絡人工作單 TicketDocumentsLinked=與工作單相關的文件 ConfirmReOpenTicket=確認重開此工作單? TicketMessageMailIntroAutoNewPublicMessage=在主題為 %s 的工作單上發佈了一條新消息: diff --git a/htdocs/langs/zh_HK/users.lang b/htdocs/langs/zh_HK/users.lang index 4ee328745f9..5b902d52828 100644 --- a/htdocs/langs/zh_HK/users.lang +++ b/htdocs/langs/zh_HK/users.lang @@ -36,7 +36,7 @@ SuperAdministrator=多公司管理員 SuperAdministratorDesc=多公司系統管理員(可以更改設置和用戶) DefaultRights=默認權限 DefaultRightsDesc=此處定義自動授予使用者的預設權限(若要修改現有使用者的權限,請前往使用者卡)。 -DolibarrUsers=多利巴爾用戶 +DolibarrUsers=Dolibarr用戶 LastName=姓 FirstName=名 ListOfGroups=群組名單 diff --git a/htdocs/langs/zh_HK/website.lang b/htdocs/langs/zh_HK/website.lang index 864946f03e8..1bcf42b789a 100644 --- a/htdocs/langs/zh_HK/website.lang +++ b/htdocs/langs/zh_HK/website.lang @@ -62,7 +62,7 @@ NoPageYet=尚未建立任何頁面 YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template SyntaxHelp=特定語法提示的幫助 YouCanEditHtmlSourceckeditor=您可以使用編輯器中的「來源」按鈕編輯 HTML 原始碼。 -YouCanEditHtmlSource=
\n您可以使用標籤<?php ?>將 PHP 程式碼包含到此原始程式碼中。可以使用以下全域變數:$conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

您也可以使用以下語法包含另一個頁面/容器的內容:
<?php includeContainer('alias_of_container_to_include'); ?>

您可以使用以下語法重定向到另一個頁面/容器(注意:重定向前不要輸出任何內容):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>
您也可以使用 GET 參數進行重定向:
<?php redirectToContainer('alias_of_container_to_redirect_to', '', 0, 0, $array_of_get_params); ?>

\n要添加到另一個頁面的鏈接,請使用以下語法:
<a href="alias_of_page_to_link_to.php">mylink<a>

若要包含儲存在 documents 目錄中的檔案的下載連結,請使用 document.php 包裝器:
例如,對於一個檔案到documents/ecm(需要被記錄),語法是:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
對於文件到documents/medias(供公眾訪問的開放目錄),語法是:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
對於透過共享連結共享的檔案(使用檔案的共享雜湊鍵開啟存取),語法為:
<a href="/document.php?hashp=publicsharekeyoffile">
+YouCanEditHtmlSource=
您可以使用標籤 將 PHP 程式碼包含到此原始程式碼中。可以使用以下全域變數:$conf、$db、$mysoc、$user、$website、$websitepage、$weblangs、$pagelangs。

您也可以使用下列語法包含另一個頁面/容器的內容:

您可以使用以下語法重定向到另一個頁面/容器(注意:重定向前不要輸出任何內容):
您也可以使用 GET 參數進行重定向:

要添加到另一個頁面的鏈接,請使用以下語法:
<ahref="alias_of_page_to_link_to.php">mylink<a>

您可以動態設定頁面標題和SEO元標記(標題、關鍵字、描述)。只需定義以下變數:
$__PAGE__TITLE__ = "標題值...";
$__PAGE__KEYWORDS__ = "關鍵字1, 關鍵字2, 關鍵字3 …"; // 逗號分隔
$__PAGE__DESC__ = "描述...";


包含下載連結儲存在 documents 目錄中的文件,使用 document.php 包裝器:
例如,對於一個檔案到documents/ecm(需要被記錄),語法是:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
對於文件/媒體(供公眾存取的開放目錄)中的文件,語法為:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
對於透過共享連結共享的文件(使用檔案的共享哈希鍵開放存取),語法為:
<a href="/document.php?hashp=publicsharekeyofile">
YouCanEditHtmlSource1=
\n若要包含儲存在 documents 目錄中的映像,請使用viewimage.php 包裝器。
例如,對於將圖像放入文件/媒體(開放目錄以供公共存取),語法為:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir /]檔名.ext">
YouCanEditHtmlSource2=對於透過共享連結共享的圖像(使用檔案的共享哈希鍵進行開放存取),語法為:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource3=若要取得 PHP 物件圖像的 URL,請使用
<img src="<?php printgetImagePublicURLOfObject($object, 1, "_small") ?>">
diff --git a/htdocs/langs/zh_TW/admin.lang b/htdocs/langs/zh_TW/admin.lang index 13bbc05d1ee..f961abbe67b 100644 --- a/htdocs/langs/zh_TW/admin.lang +++ b/htdocs/langs/zh_TW/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=數值清單必須為含有關鍵字的行,數值 (關 ExtrafieldParamHelpcheckbox=數值清單必須為含有關鍵字的行,數值 (關鍵字不能為 '0')

範例:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=數值清單必須為含有關鍵字的行,數值 (關鍵字不能為 '0')

範例:
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 necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode 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=參數必須為ObjectName:Classpath
語法 ObjectName:Classpath ExtrafieldParamHelpSeparator=保持空白以使用簡單的分隔符號
對於折疊分隔符號,將此值設定為1(預設情況下,對於新程序打開,然後為每個用戶程序保留狀態)
將其設定為2可折疊分隔符號(預設情況下,新程序已折疊,然後在每個用戶程序中保持狀態) LibraryToBuildPDF=PDF產生器程式庫 @@ -514,15 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s依照被截斷並帶有字元數的客戶 ModuleCompanyCodeSupplierDigitaria=%s依照被截斷並帶有字元數的供應商名稱追蹤:%s用於供應商會計代碼。 Use3StepsApproval=預設情況下,採購訂單需要由2個不同的用戶建立和批准(一個步驟/一個用戶建立,一個步驟/一個用戶批准。請注意,如果用戶同時具有建立和批准的權限,則一個步驟/用戶就足夠了) 。如果金額高於專用值,則可以使用此選項進行三步/用戶批准(如果需要,則需要3個步驟:1 =驗證,2 =第一次批准和3 =第二次批准)。
如果一個批准(2個步驟)就足夠,則將其設定為空白;如果永遠需要第二個批准(3個步驟),則將其設定為非常低的值(0.1)。 UseDoubleApproval=當金額(未稅)大於以下金額時使用3步驟核准 -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. This choice needs no technical knowledge to complete the setup.
However, 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: +WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") 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 trustworthiness of your email, so it increases the deliverability without being flagged as SPAM -WarningPHPMailB=- 一些電子郵件服務提供商(如雅虎)不允許您從其他伺服器而不是他們自己的伺服器發送電子郵件。您當前的設定是使用程式的伺服器而不是您的電子郵件提供商的伺服器來發送電子郵件,因此某些收件人(與限制性 DMARC 協議兼容的那個)會詢問您的電子郵件提供商他們是否可以接受您的電子郵件而某些電子郵件供應商(如雅虎)可能會回答“否”,因為伺服器不是他們的,所以您發送的電子郵件中有可能少部份不被接受(還要注意您的電子郵件供應商的發送配額)。 +WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. WarningPHPMailC=- 使用您自己的電子郵件服務提供商的 SMTP 伺服器發送電子郵件也很好,因此從應用程式發送的所有電子郵件也將保存到您電子郵件的“已發送”資料夾中。 WarningPHPMailD=在此建議您可將電子郵件寄送方式變更為“SMTP”。 WarningPHPMailDbis=如果您確實想使用預設的“PHP”模式寄送電子郵件,請忽略此警告或是%s點我移除%s。 WarningPHPMail2=如果您的電子郵件SMTP程式需要將電子郵件客戶端限制為某些IP地址(非常罕見),則這是ERP CRM應用程式的郵件用戶代理(MUA)的IP地址: %s 。 -WarningPHPMailSPF=如果您的寄件人電子郵件地址中的網域名稱受到SPF 記錄保護(詢問您的網域名稱註冊商),您必須在您的網域 DNS 的 SPF 記錄中增加以下 IP: %s 。 -ActualMailSPFRecordFound=找到的實際 SPF 記錄(Email%s):%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 or entry in the SPF record of the DNS of your domain: %s. +WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s ClickToShowDescription=點選顯示描述 DependsOn=此模組需要此模組 RequiredBy=模組需要此模組 @@ -867,7 +868,7 @@ Permission255=修改其他用戶密碼 Permission256=刪除或停用其他用戶 Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is linked as a sale representative). Permission262b=Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). Permission263=將訪問權限擴展到所有自己沒有項目的合作方(不僅是用戶作為業務代表的合作方)。
對外部用戶無效(對於提案/建議書、訂單、發票、合約等,始終僅限於他們自己)。
對專案無效(僅關於專案權限、可見性和分配事項的規則)。 Permission271=讀取 CA Permission272=讀取發票 @@ -944,7 +945,7 @@ Permission776=支付費用報表 Permission777=讀取所有費用報表(即使是非下屬的用戶) Permission778=建立/修改每個人的費用報表 Permission779=匯出費用報表 -Permission1001=讀取庫存資訊 +Permission1001=Read warehouses and stocks Permission1002=建立/修改倉庫 Permission1003=刪除倉庫 Permission1004=讀取庫存轉讓資訊 @@ -2145,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=用正則表達式篩選器清除值(COMPANY_DIG DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=為客戶或供應商產生子帳戶時清除特定文字 RemoveSpecialWordsHelp=在計算客戶或供應商帳戶之前指定要清除的文字。在每個字之間使用”;” -GDPRContact=資料保護官(DPO,資料隱私或GDPR聯絡人) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=如果您儲存個人資料於您的資訊系統,則可以在此處指定負責《通用數據保護條例》的聯絡人 HelpOnTooltip=工具提示上的幫助文字 HelpOnTooltipDesc=在這裡放入文字或是翻譯鍵以便此欄位顯示在表單時可以顯示在工具提示 @@ -2218,7 +2219,7 @@ CreateCandidature=建立工作應用程式 FormatZip=Zip MainMenuCode=選單輸入代碼(主選單) ECMAutoTree=顯示自動ECM樹狀圖 -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 new line 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 string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\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 new line to extract or set several properties. OpeningHours=營業時間 OpeningHoursDesc=在此處輸入貴公司的正常營業時間。 ResourceSetup=資源模組的設定 @@ -2264,7 +2265,7 @@ LargerThan=大於 IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into email, or if the email is an answer of an email already 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 recommended to create a dedicated second password for the application instead of using your own account password from https://myaccount.google.com/. EmailCollectorTargetDir=It may be a desired behavior 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 third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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;'
+EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party 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=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Warning: a lot of email servers (like Gmail) are doing full word searches when searching on a string and will not return a result if the string is only found partially into a word. For this reason too, use special characters into a search criteria will be ignored are they are not part of existing words.
To make an exclude search on a word (return email if word is not found), you can use the ! character before the word (may not work on some mail servers). EndPointFor=%s的端點:%s DeleteEmailCollector=刪除電子郵件收集器 @@ -2288,7 +2289,7 @@ THIRDPARTY_ALIAS=合作方名稱 - 合作方別名 ALIAS_THIRDPARTY=合作方別名 - 合作方名稱 PDFIn2Languages=於PDF的標籤顯示兩種不同的語言(這個功能可能對某些語言無法正常運作) PDF_USE_ALSO_LANGUAGE_CODE=如果您要在生成同一的PDF中以兩種不同的語言複製一些文字,則必須在此處設置第二種語言讓生成的PDF在同一頁中包含兩種不同的語言,選擇的可以用來生成PDF跟另一種語言(只有少數PDF模板支援此功能)。PDF只有一種語言則留空。 -PDF_USE_A=產生使用PDF/A格式的PDF文件而不是預設格式的PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=在此處輸入FontAwesome圖示的代碼。如果您不知道什麼是FontAwesome,則可以使用通用值fa-address-book。 RssNote=注意:每個RSS訂閱的定義都提供一個小工具,您必須啟用該小工具才能使其在資訊板中看到 JumpToBoxes=跳至設定 -> 小工具 @@ -2553,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/zh_TW/commercial.lang b/htdocs/langs/zh_TW/commercial.lang index f7cc5f0e63e..0513d7551ed 100644 --- a/htdocs/langs/zh_TW/commercial.lang +++ b/htdocs/langs/zh_TW/commercial.lang @@ -14,6 +14,7 @@ ConfirmDeleteAction=您確定要刪除此事件嗎? CardAction=事件卡 ActionOnCompany=相關的公司 ActionOnContact=相關的聯絡人 +ActionOnUser=Related user TaskRDVWith=與%s開會 ShowTask=顯示任務 ShowAction=顯示事件 @@ -47,7 +48,6 @@ LastProspectToContact=待聯絡 LastProspectContactInProcess=聯絡中 LastProspectContactDone=完成連絡 ActionAffectedTo=事件分配給 -ActionDoneBy=由誰完成事件 ActionAC_TEL=電話 ActionAC_FAX=發送傳真 ActionAC_PROP=以郵件發送提案/建議書 @@ -65,8 +65,8 @@ ActionAC_SUP_ORD=以郵件發送採購訂單 ActionAC_SUP_INV=以郵件發送供應商發票 ActionAC_OTH=其他 ActionAC_OTH_AUTO=其他自動項目 -ActionAC_MANUAL=Events inserted manually (by a user) -ActionAC_AUTO=Events inserted automatically +ActionAC_MANUAL=手動插入的事件(用戶) +ActionAC_AUTO=自動插入事件 ActionAC_OTH_AUTOShort=其他 ActionAC_EVENTORGANIZATION=事件組織的事件 Stats=銷售統計 @@ -77,13 +77,26 @@ ToOfferALinkForOnlineSignature=線上簽名連結 WelcomeOnOnlineSignaturePageProposal=歡迎來到%s的商業計劃書/提案 WelcomeOnOnlineSignaturePageContract=歡迎來到 %s 合約的PDF 簽署頁面 WelcomeOnOnlineSignaturePageFichinter=歡迎來到 %s 干預 的PDF 簽署頁面 +WelcomeOnOnlineSignaturePageSociete_rib=歡迎來到%sSEPA授權書PDF簽署頁面。 +WelcomeOnOnlineSignaturePageExpedition=Welcome to %s Shipment PDF Signing Page ThisScreenAllowsYouToSignDocFromProposal=此畫面可允許您接受並簽署或者是拒絕報價/商業提案/建議書 ThisScreenAllowsYouToSignDocFromContract=此畫面允許您於線上簽署 PDF 格式的合約。 ThisScreenAllowsYouToSignDocFromFichinter=此畫面允許您於線上簽署 PDF 格式的干預。 +ThisScreenAllowsYouToSignDocFromSociete_rib=此畫面允許您在線上以PDF格式簽署SEPA授權書。 +ThisScreenAllowsYouToSignDocFromExpedition=This screen allow you to sign shipment on PDF format online. ThisIsInformationOnDocumentToSignProposal=此為文件資訊 ThisIsInformationOnDocumentToSignContract=這是關於簽署合約的訊息 ThisIsInformationOnDocumentToSignFichinter=這是關於簽署干預的訊息 +ThisIsInformationOnDocumentToSignSociete_rib=這是有關SEPA授權書的簽署資訊。 +ThisIsInformationOnDocumentToSignExpedition= This is information on shipment to sign SignatureProposalRef=報價單/商業提案/建議書的簽名%s SignatureContractRef=合約%s的簽名 SignatureFichinterRef=干預 %s的簽名 +SignatureSociete_ribRef=SEPA授權書%s的簽署 FeatureOnlineSignDisabled=已停用線上簽名功能或在啟用該功能之前已產生文件 +NoSignature=未簽名 +SignedSender=Signed internally +SignedReceiver=Signed by third party +SignedReceiverOnline=Signed by third party online +SignedAll=Signed by all parties +SignStatus=Signature status diff --git a/htdocs/langs/zh_TW/companies.lang b/htdocs/langs/zh_TW/companies.lang index c00e44858cb..4c6814aa383 100644 --- a/htdocs/langs/zh_TW/companies.lang +++ b/htdocs/langs/zh_TW/companies.lang @@ -384,6 +384,7 @@ DolibarrLogin=Dolibarr 登入 NoDolibarrAccess=無Dolibarr存取 ExportDataset_company_1=合作方(公司/基金會/自然人)及屬性 ExportDataset_company_2=聯絡人及其屬性 +ExportDataset_company_3=合作方銀行帳戶 ImportDataset_company_1=合作方及其屬性 ImportDataset_company_2=合作方其他聯絡人/地址和屬性 ImportDataset_company_3=合作方銀行帳戶 diff --git a/htdocs/langs/zh_TW/datapolicy.lang b/htdocs/langs/zh_TW/datapolicy.lang index 8052bcaf559..8ac2178051f 100644 --- a/htdocs/langs/zh_TW/datapolicy.lang +++ b/htdocs/langs/zh_TW/datapolicy.lang @@ -4,12 +4,10 @@ # 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 . @@ -17,10 +15,7 @@ Module4100Name = 資料數據隱私政策 # Module description 'ModuledatapolicyDesc' Module4100Desc = 管理資料數據隱私的模組(符合 GDPR) - -# # Administration page -# datapolicySetup = 資料數據隱私政策模組設定 Deletion = 刪除資料 datapolicySetupPage = Depending on the laws of your countries (Example
Article 5 of the GDPR), personal data must be kept for a period not exceeding the duration the data is needed for the purpose for which it was collected, except for archival purposes.
The deletion will be done automatically after a certain duration without events (the duration which you will have indicated below). @@ -38,51 +33,19 @@ DATAPOLICY_CONTACT_PROSPECT_CLIENT = 潛在方/客戶 DATAPOLICY_CONTACT_NIPROSPECT_NICLIENT = 非潛在方或客戶 DATAPOLICY_CONTACT_FOURNISSEUR = 供應商 DATAPOLICY_ADHERENT = 會員 -DATAPOLICY_Tooltip_SETUP = 聯絡方式 - 說明您對每種類型的選擇。 -DATAPOLICYMail = 電子郵件設定 -DATAPOLICYSUBJECTMAIL = Subject of the email -DATAPOLICYCONTENTMAIL = 電子郵件的內容 -DATAPOLICYSUBSITUTION = 您可以在電子郵件中使用以下變數(LINKACCEPT 允許建立一個連結以記錄個人的同意,LINKREFUSED 可以記錄個人的拒絕): -DATAPOLICYACCEPT = 同意後的訊息 -DATAPOLICYREFUSE = Message after disagreement +DATAPOLICY_Tooltip_SETUP=Define the delay with no interaction after which you want the record to be automatically purged. SendAgreementText = 您可以向所有相關的聯絡人發送 GDPR 電子郵件(尚未收到過電子郵件且您尚未記錄有關其 GDPR 協議的任何信息)。要執行此操作,請使用以下按鈕。 SendAgreement = 發送電子郵件 AllAgreementSend = 所有電子郵件已發送 TXTLINKDATAPOLICYACCEPT = “同意”的超連結文字 TXTLINKDATAPOLICYREFUSE = Text for the link "disagreement" - - -# # Extrafields -# DATAPOLICY_BLOCKCHECKBOX = GDPR:個人數資料處理 DATAPOLICY_consentement = 同意個人數據處理 DATAPOLICY_opposition_traitement = Opposes to the processing of his personal data DATAPOLICY_opposition_prospection = Opposes to the processing of his personal data for the purposes of prospecting - -# -# Popup -# -DATAPOLICY_POPUP_ANONYME_TITLE = 匿名化合作方 -DATAPOLICY_POPUP_ANONYME_TEXTE = 您無法從 Dolibarr 刪除此聯絡人,因為已有相關項目。根據 GDPR,您將使這些所有資料匿名,以遵從您的義務。您想繼續嗎 ? - -# -# Button for portability -# -DATAPOLICY_PORTABILITE = 可攜性 GDPR -DATAPOLICY_PORTABILITE_TITLE = 匯出個人資料 -DATAPOLICY_PORTABILITE_CONFIRMATION = 您要匯出此聯絡人的個人資料。您確定嗎 ? - -# # Notes added during an anonymization -# -ANONYMISER_AT = %s已匿名處理 - DATAPOLICY_date = Date of agreement/disagreement GDPR DATAPOLICY_send = Date agreement email sent -DATAPOLICY_SEND = 發送 GDPR 電子郵件 MailSent = 郵件已發送 - -# ERROR -=Due to a technical problem, we were unable to register your choice. We apologize for that. Contact us to notify us your choice. NUMBER_MONTH_BEFORE_DELETION = Number of months before deletion diff --git a/htdocs/langs/zh_TW/dict.lang b/htdocs/langs/zh_TW/dict.lang index e518c9d4927..2a106fc876b 100644 --- a/htdocs/langs/zh_TW/dict.lang +++ b/htdocs/langs/zh_TW/dict.lang @@ -158,7 +158,7 @@ CountryMX=墨西哥 CountryFM=密克羅尼西亞 CountryMD=摩爾多瓦 CountryMN=蒙古 -CountryMS=蒙特塞拉特 +CountryMS=Montserrat CountryMZ=莫桑比克 CountryMM=緬甸 CountryNA=納米比亞 @@ -233,7 +233,7 @@ CountryUY=烏拉圭 CountryUZ=烏茲別克 CountryVU=萬那杜 CountryVE=委內瑞拉 -CountryVN=越南 +CountryVN=Vietnam CountryVG=英屬維京群島 CountryVI=美屬維京群島 CountryWF=瓦利斯群島和富圖那群島 diff --git a/htdocs/langs/zh_TW/errors.lang b/htdocs/langs/zh_TW/errors.lang index eb379feff0a..94e7e9c51ee 100644 --- a/htdocs/langs/zh_TW/errors.lang +++ b/htdocs/langs/zh_TW/errors.lang @@ -4,17 +4,17 @@ NoErrorCommitIsDone=我們保證沒有錯誤 # Errors ErrorButCommitIsDone=發現錯誤,但儘管如此我們仍進行驗證 -ErrorBadEMail=Email address %s is incorrect +ErrorBadEMail=電子郵件 %s 不正確 ErrorBadMXDomain=電子郵件 %s 似乎不正確(網域沒有有效的 MX 記錄) ErrorBadUrl=網址 %s 不正確 ErrorBadValueForParamNotAString=您的參數值錯誤。一般在轉譯遺失時產生。 -ErrorRefAlreadyExists=Reference %s used for creation already exists. +ErrorRefAlreadyExists=參考%s已經存在。 ErrorTitleAlreadyExists=標題 %s 已經存在。 ErrorLoginAlreadyExists=登入者%s已經存在。 ErrorGroupAlreadyExists=群組%s已經存在。 ErrorEmailAlreadyExists=電子郵件 %s 已存在。 ErrorRecordNotFound=記錄沒有找到。 -ErrorRecordNotFoundShort=Not found +ErrorRecordNotFoundShort=未發現 ErrorFailToCopyFile=無法將檔案'%s'複製到'%s' ErrorFailToCopyDir=無法將資料夾'%s' 複製到'%s'. ErrorFailToRenameFile=無法將檔案 '%s' 重新命名成'%s'. @@ -32,7 +32,7 @@ ErrorBadThirdPartyName=合作方名稱的值不正確 ForbiddenBySetupRules=已被設定中的規則禁止 ErrorProdIdIsMandatory=%s是強制性的 ErrorAccountancyCodeCustomerIsMandatory=客戶%s的會計科目代號是必需的 -ErrorAccountancyCodeSupplierIsMandatory=The accountancy code of supplier %s is mandatory +ErrorAccountancyCodeSupplierIsMandatory=供應商會計科目代號%s是必要的 ErrorBadCustomerCodeSyntax=客戶代碼語法錯誤 ErrorBadBarCodeSyntax=條碼語法錯誤。可能是您設定了錯誤的條碼類型,或者您定義了與掃描值不匹配的條碼遮罩編號。 ErrorCustomerCodeRequired=需要客戶代碼 @@ -50,11 +50,13 @@ ErrorBadImageFormat=圖片檔案格式不支援(您的PHP不支援轉換此格 ErrorBadDateFormat="%s"日期格式錯誤 ErrorWrongDate=日期不正確! ErrorFailedToWriteInDir=無法寫入資料夾%s -ErrorFailedToBuildArchive=Failed to build archive file %s +ErrorFailedToBuildArchive=無法建立壓縮檔案%s ErrorFoundBadEmailInFile=找到電子郵件文件中的%s行語法不正確(例如電子郵件%s行 =%s) ErrorUserCannotBeDelete=無法刪除用戶。也許它與Dolibarr實體相關。 ErrorFieldsRequired=一些必填欄位已留空。 ErrorSubjectIsRequired=電子郵件主題為必填 +ErrorInAddAttachmentsImageBaseOnMedia=在媒體資料夾建立附件影像檔案時發生錯誤 +ErrorInAddAttachmentsImageBaseIsSrcData=Error in creating image files (found as data:) into temp directory for attachment ErrorFailedToCreateDir=無法建立資料夾。檢查網頁伺服器中的用戶有權限寫入Dolibarr檔案資料夾。如果PHP使用了參數safe_mode,檢查網頁伺服器的用戶(或群組)擁有Dolibarr php檔案。 ErrorNoMailDefinedForThisUser=沒有此用戶的定義郵件 ErrorSetupOfEmailsNotComplete=電子郵件設定未完成 @@ -220,7 +222,7 @@ ErrorUserNotAssignedToTask=必須為用戶分配任務才能輸入花費的時 ErrorTaskAlreadyAssigned=任務已分配給用戶 ErrorModuleFileSeemsToHaveAWrongFormat=模組軟體包的格式似乎錯誤。 ErrorModuleFileSeemsToHaveAWrongFormat2=模組的zip檔案中必須至少存在一個強制性資料夾: %s%s -ErrorFilenameDosNotMatchDolibarrPackageRules=模組軟體包的名稱( %s )與預期的名稱語法不匹配: %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The file name of the module package (%s) does not match the expected name syntax: %s ErrorDuplicateTrigger=錯誤,觸發器名稱%s已重複。已從%s載入。 ErrorNoWarehouseDefined=錯誤,未定義倉庫。 ErrorBadLinkSourceSetButBadValueForRef=您使用的連結接無效。定義了付款的“來源”,但“參考”的值無效。 @@ -263,7 +265,7 @@ ErrorReplaceStringEmpty=錯誤,要替換的字串為空 ErrorProductNeedBatchNumber=錯誤,產品“ %s ”需要批號/序號 ErrorProductDoesNotNeedBatchNumber=錯誤,產品“ %s ”不接受批號/序號 ErrorFailedToReadObject=錯誤,無法讀取 %s 類型的項目 -ErrorParameterMustBeEnabledToAllwoThisFeature=Error, parameter %s must be enabled into conf/conf.php<> to allow use of Command Line Interface by the internal job scheduler +ErrorParameterMustBeEnabledToAllwoThisFeature=Error, parameter %s must be enabled into conf/conf.php to allow use of Command Line Interface by the internal job scheduler ErrorLoginDateValidity=錯誤,此登錄超過有效日期範圍 ErrorValueLength=欄位“ %s ”的長度必須大於“ %s" ErrorReservedKeyword=單詞“ %s ”是保留關鍵字 @@ -301,7 +303,8 @@ ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is man ErrorFailedToWriteInTempDirectory=Failed to write in temp directory ErrorQuantityIsLimitedTo=Quantity is limited to %s ErrorFailedToLoadThirdParty=Failed to find/load third party from id=%s, email=%s, name=%s -ErrorThisPaymentModeIsNotSepa=This payment mode is not a bank account +ErrorThisPaymentModeIsNotDirectDebit=The payment mode is not direct debit +ErrorThisPaymentModeIsNotCreditTransfer=The payment mode is not credit transfer ErrorStripeCustomerNotFoundCreateFirst=Stripe customer is not set for this third party (or set to a value deleted on Stripe side). Create (or re-attach) it first. ErrorCharPlusNotSupportedByImapForSearch=IMAP search is not able to search into sender or recipient for a string containing the character + ErrorTableNotFound=Table %s not found @@ -322,16 +325,21 @@ ErrorFixThisHere=Fix this here ErrorTheUrlOfYourDolInstanceDoesNotMatchURLIntoOAuthSetup=Error: The URL of you current instance (%s) does not match the URL defined into your OAuth2 login setup (%s). Doing OAuth2 login in such a configuration is not allowed. ErrorMenuExistValue=A Menu already exist with this Title or URL ErrorSVGFilesNotAllowedAsLinksWithout=SVG files are not allowed as external links without the option %s -ErrorTypeMenu=Impossible to add another menu for the same module on the navbar, not handle yet +ErrorTypeMenu=Impossible to add another menu for the same module on the navbar, not handled yet +ErrorGeneratingBarcode=Error while generating the barcode (probably invalid code shape) ErrorObjectNotFound = The object %s is not found, please check your url ErrorCountryCodeMustBe2Char=Country code must be a 2 character string ErrorABatchShouldNotContainsSpaces=A lot or serial number should not contains spaces - ErrorTableExist=Table %s already exist ErrorDictionaryNotFound=Dictionary %s not found ErrorFailedToCreateSymLinkToMedias=Failed to create the symbolic link %s to point to %s ErrorCheckTheCommandInsideTheAdvancedOptions=Check the command used for the export into the Advanced options of the export - +ErrorEndTimeMustBeGreaterThanStartTime=End time must be greater than start time +ErrorIncoherentDates=Start date must be earlier than end date +ErrorEndHourIsNull=End date field cannot be empty +ErrorStartHourIsNull=Start date field cannot be empty +ErrorTooManyLinesToProcessPleaseUseAMoreSelectiveFilter=Too many lines to process. Please use a more selective filter. +ErrorEmptyValueForQty=Quantity cannot be zero. # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=您的PHP參數upload_max_filesize(%s)高於PHP參數post_max_size(%s)。這不是相同的設定。 WarningPasswordSetWithNoAccount=為此會員設定了密碼。但是,沒有建立用戶帳戶。因此,雖然密碼已儲存,但不能用於登入Dolibarr。外部模組/界面可以使用它,但是如果您不需要為會員定義任何登入名稱或密碼,則可以從會員模組設定中關閉選項“管理每個會員的登入名稱”。如果您需要管理登入名稱但不需要任何密碼,則可以將此欄位保留為空白以避免此警告。注意:如果會員連結到用戶,電子郵件也可以用作登入名稱。 @@ -344,6 +352,7 @@ WarningConfFileMustBeReadOnly=警告,您的設定檔案( htdocs / conf / WarningsOnXLines=關於%s來源記錄的警告 WarningNoDocumentModelActivated=沒有啟動用於產生文件的模型。預設情況下將選擇一個模型直到您檢查模組設定。 WarningLockFileDoesNotExists=警告,安裝設定完成後,必須在資料夾%s中增加檔案install.lock來停用安裝/遷移工具。忽略此檔案的建立會帶來嚴重的安全風險。 +WarningUpgradeHasBeenUnlocked=Warning, upgrade process has been unlocked for everybody WarningUntilDirRemoved=This security warning will remain active as long as the vulnerability is present. WarningCloseAlways=警告,即使來源元件和目標元件之間的數量不同,也將關閉。請謹慎啟用此功能。 WarningUsingThisBoxSlowDown=警告,使用此框會嚴重降低顯示此框所有頁面的速度。 @@ -373,16 +382,18 @@ WarningModuleNeedRefresh = Module %s has been disabled. Don't forget to e WarningPermissionAlreadyExist=Existing permissions for this object WarningGoOnAccountancySetupToAddAccounts=If this list is empty, go into menu %s - %s - %s to load or create accounts for your chart of account. WarningCorrectedInvoiceNotFound=Corrected invoice not found -WarningCommentNotFound=Please check placement of start and end comments for %s section in file %s before submitting your action +WarningCommentNotFound=Warning: Can't find the start and/or end comments for the section %s into the file %s WarningAlreadyReverse=Stock movement already reversed - +WarningParentIDDoesNotExistAnymore=This parent ID does not exists anymore +WarningReadBankAlsoAllowedIfUserHasPermission=Warning, reading bank account is also allowed with the permission to Manage chart of account +WarningNoDataTransferedInAccountancyYet=Please note, there is no data in the accounting table. Please transfer your data recorded in the application to the accounting section or change the calculation mode to analyze the data recorded outside of accounting. +WarningChangingThisMayBreakStopTaskScheduler=Warning, changing this value may disable the scheduler SwissQrOnlyVIR = SwissQR invoice can only be added on invoices set to be paid with credit transfer payments. SwissQrCreditorAddressInvalid = Creditor address is invalid (are ZIP and city set? (%s) SwissQrCreditorInformationInvalid = Creditor information is invalid for IBAN (%s): %s SwissQrIbanNotImplementedYet = QR-IBAN not implemented yet SwissQrPaymentInformationInvalid = Payment information was invalid for total %s : %s SwissQrDebitorAddressInvalid = Debitor information was invalid (%s) - # Validate RequireValidValue = 數值無效 RequireAtLeastXString = 至少需要%s個字元 @@ -404,10 +415,11 @@ BadSetupOfFieldClassNotFoundForValidation = 欄位設定錯誤:沒有發現可 BadSetupOfFieldFileNotFound = 欄位設定錯誤:未找到要包含的檔案 BadSetupOfFieldFetchNotCallable = 欄位設定錯誤:無法在Class上調用獲取 ErrorTooManyAttempts= Too many attempts, please try again later - TotalAmountEmpty=Total Amount Empty FailedToFoundTheConversionRateForInvoice=Failed to found the conversion rate for invoice ThisIdNotDefined=Id not defined OperNotDefined=Payment method not defined ErrorThisContactXIsAlreadyDefinedAsThisType=%s is already defined as contact for this type. ErrorThisGroupIsAlreadyDefinedAsThisType=The contacts with this group are already defined as contact for this type. +EmptyMessageNotAllowedError=Empty message is not allowed +ErrorIsNotInError=%s is not in error diff --git a/htdocs/langs/zh_TW/interventions.lang b/htdocs/langs/zh_TW/interventions.lang index af9a37b2b12..d3b9d87f7f6 100644 --- a/htdocs/langs/zh_TW/interventions.lang +++ b/htdocs/langs/zh_TW/interventions.lang @@ -13,11 +13,17 @@ CreateDraftIntervention=建立草稿 InterventionContact=干預聯絡人 DeleteIntervention=刪除干預 ValidateIntervention=驗證干預 +SignIntervention=Sign intervention +UnsignIntervention=Unsign intervention ModifyIntervention=修改干預 +CloseIntervention=Close intervention DeleteInterventionLine=刪除干預行 ConfirmDeleteIntervention=您確定要刪除此干預措施嗎? ConfirmValidateIntervention=您確定要以名稱%s驗證此干預嗎? +ConfirmSignIntervention=Are you sure you want to set this intervention as signed ? +ConfirmUnsignIntervention=Are you sure you want to set this intervention as unsigned ? ConfirmModifyIntervention=您確定要修改此干預措施嗎? +ConfirmCloseIntervention=Are you sure you want to close this intervention? ConfirmDeleteInterventionLine=您確定要刪除此干預行嗎? ConfirmCloneIntervention=您確定要複製此干預措施嗎? NameAndSignatureOfInternalContact=干預的名稱和簽名: @@ -27,21 +33,25 @@ InterventionCardsAndInterventionLines=干預措施和干預措施行 InterventionClassifyBilled=分類“已開票” InterventionClassifyUnBilled=分類為“未開票” InterventionClassifyDone=分類“完成” -StatusInterInvoiced=已開票 +InterventionSign=Set Signed +InterventionUnsign=Set Unsigned SendInterventionRef=提交干預措施%s SendInterventionByMail=通過電子郵件發送干預 InterventionCreatedInDolibarr=干預%s已建立 InterventionValidatedInDolibarr=干預%s已驗證 +InterventionSignedInDolibarr=干預已簽名 +InterventionSignedOnline=Intervention signed online +InterventionUnsignedInDolibarr=Intervention unsigned InterventionModifiedInDolibarr=干預%s已修改 InterventionClassifiedBilledInDolibarr=干預%s設定為已開票 InterventionClassifiedUnbilledInDolibarr=干預%s設定為未開票 InterventionSentByEMail=以電子郵件發送的干預%s +InterventionClosedInDolibarr= Intervention %s closed InterventionDeletedInDolibarr=干預%s已刪除 InterventionsArea=干預區 DraftFichinter=干預草案 LastModifiedInterventions=最新%s已修改干預 FichinterToProcess=進行干預 -TypeContact_fichinter_external_CUSTOMER=後續追蹤客戶聯絡人 PrintProductsOnFichinter=在干預卡上也列印“產品”類型的行(不僅是服務) PrintProductsOnFichinterDetails=訂單產生的干預 UseServicesDurationOnFichinter=將服務期限用於訂單產生的干預 @@ -70,3 +80,8 @@ FichinterNoContractLinked=干預 %s 已在沒有連結合約的情況下建立 ErrorFicheinterCompanyDoesNotExist=公司不存在。干預尚未產生。 NextDateToIntervention=Date for next intervention generation NoIntervention=No intervention +TypeContact_fichinter_internal_INTERREPFOLL=Responsible for intervention follow-up +TypeContact_fichinter_internal_INTERVENING=Intervenant +TypeContact_fichinter_external_BILLING=Customer contact of intervention billing +TypeContact_fichinter_external_CUSTOMER=Customer contact of intervention follow-up +NotARecurringInterventionalTemplate=Not a recurring intervention template diff --git a/htdocs/langs/zh_TW/stripe.lang b/htdocs/langs/zh_TW/stripe.lang index 6b3597352d5..8ff489476b0 100644 --- a/htdocs/langs/zh_TW/stripe.lang +++ b/htdocs/langs/zh_TW/stripe.lang @@ -22,7 +22,8 @@ ToOfferALinkForOnlinePaymentOnContractLine=提供%s合約行線上支付頁面 ToOfferALinkForOnlinePaymentOnFreeAmount=提供%s沒有現有項目的任意金額線上支付頁面網址 ToOfferALinkForOnlinePaymentOnMemberSubscription=提供%s會員訂閱線上支付頁面的網址 ToOfferALinkForOnlinePaymentOnDonation=提供%s捐款支付的線上支付頁面網址 -YouCanAddTagOnUrl=您還可以將網址參數&tag=value 加到任何這些網址中(僅對於未連結到項目的付款有強制性),以增加您自己的付款註釋標籤。
對於沒有現有項目的支付網址,您還可以增加參數&noidempotency=1,因此具有相同標籤的同一連結可以多次使用(某些付款方式可能會將每個沒有這個參數的不同連結支付限制為1) +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) +YouCanEmbedOnWebsite=If you want to integrate the payment page into a Dolibarr website, you can include the parameter: &ws=website_ref.
Additionally, two pages named paymentok and paymentko must be created in the website to receive the redirect after a successful of failed online payment. SetupStripeToHavePaymentCreatedAutomatically=使用網址 %s 設定您的Stripe,以便在Stripe驗證後自動建立付款。 AccountParameter=帳戶參數 UsageParameter=使用參數 @@ -41,7 +42,7 @@ STRIPE_LIVE_WEBHOOK_KEY=Webhook live金鑰 ONLINE_PAYMENT_WAREHOUSE=完成線上支付時用於減少庫存的庫存
(待辦事項 如果針對發票操作完成了減少庫存的選項,線上支付也同時產生發票?) StripeLiveEnabled=啟用Stripe live模式(否則為測試/沙盒模式) StripeImportPayment=匯入Stripe付款 -ExampleOfTestCreditCard=Example of credit card for SEPA test: %s => valid, %s => error CVC, %s => expired, %s => charge fails +ExampleOfTestCreditCard=Example of credit card for a test payment: %s => valid, %s => error CVC, %s => expired, %s => charge fails ExampleOfTestBankAcountForSEPA=Example of bank account BAN for direct debit test: %s StripeGateways=Stripe閘道 OAUTH_STRIPE_TEST_ID=Stripe Connect客戶端ID(ca _...) @@ -51,6 +52,7 @@ StripeAccount=Stripe帳戶 StripeChargeList=Stripe加值清單 StripeTransactionList=Stripe交易清單 StripeCustomerId=Stripe客戶編號 +StripePaymentId=Stripe payment id StripePaymentModes=Stripe付款方式 LocalID=本地ID StripeID=Stripe ID @@ -70,9 +72,19 @@ ToOfferALinkForTestWebhook=連結到Stripe WebHook設定以呼叫IPN(測試模 ToOfferALinkForLiveWebhook=連結到Stripe WebHook設定以呼叫IPN(live模式) PaymentWillBeRecordedForNextPeriod=付款將記錄在下一個期間。 ClickHereToTryAgain=點擊此處重試... -CreationOfPaymentModeMustBeDoneFromStripeInterface=由於嚴格的客戶身份驗證規則,必須在Stripe後台進行卡的建立。您可以點擊此處打開Stripe客戶記錄:%s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe back office. You can click here to switch on Stripe customer record: %s STRIPE_CARD_PRESENT=Card Present for Stripe Terminals TERMINAL_LOCATION=Location (address) for Stripe Terminals RequestDirectDebitWithStripe=Request Direct Debit with Stripe +RequesCreditTransferWithStripe=Request Credit Transfer with Stripe STRIPE_SEPA_DIRECT_DEBIT=Enable the Direct Debit payments through Stripe - +STRIPE_KLARNA=Enable the payments using Klarna +STRIPE_BANCONTACT=Enable the payments using BANCONTACT +STRIPE_IDEAL=Enable the payments using IDEAL +STRIPE_GIROPAY=Enable the payments using GIROPAY +STRIPE_SOFORT=Enable the payments using SOFORT +StripeConnect_Mode=Stripe Connect mode +ExampleOnlyForBECustomers=Only for belgium customers +ExampleOnlyForDECustomers=Only for german customers +ExampleOnlyForNLCustomers=Only for dutch customers +ExampleOnlyForATBEDEITNLESCustomers=Only for customers from Austria, Belgium, Germany, Italy, Netherlands, Spain diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 803717ae085..61f0823560d 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -447,6 +447,7 @@ if ($id > 0) { $morehtmlref .= ''.img_edit($langs->transnoentitiesnoconv('SetProject')).' : '; } if ($action == 'classify') { + $maxlength = 0; //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); $morehtmlref .= ''; $morehtmlref .= ''; diff --git a/htdocs/loan/document.php b/htdocs/loan/document.php index 74b96bf0877..825d1cf6249 100644 --- a/htdocs/loan/document.php +++ b/htdocs/loan/document.php @@ -87,6 +87,7 @@ include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; * View */ +$morehtmlright = ''; $form = new Form($db); $title = $langs->trans("Loan").' - '.$langs->trans("Documents"); diff --git a/htdocs/loan/info.php b/htdocs/loan/info.php index b437a73b845..1489868f19b 100644 --- a/htdocs/loan/info.php +++ b/htdocs/loan/info.php @@ -50,6 +50,7 @@ $result = restrictedArea($user, 'loan', $id, '', ''); * View */ +$morehtmlright = ''; $form = new Form($db); $title = $langs->trans("Loan").' - '.$langs->trans("Info"); diff --git a/htdocs/loan/list.php b/htdocs/loan/list.php index f215ac15497..524b2125abd 100644 --- a/htdocs/loan/list.php +++ b/htdocs/loan/list.php @@ -314,9 +314,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/loan/note.php b/htdocs/loan/note.php index 62d84a1adbc..6cfe6089b19 100644 --- a/htdocs/loan/note.php +++ b/htdocs/loan/note.php @@ -73,6 +73,7 @@ if (empty($reshook)) { * View */ +$morehtmlright = ''; $form = new Form($db); $title = $langs->trans("Loan").' - '.$langs->trans("Notes"); diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 55ef7eebb06..a748db69ea2 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -510,7 +510,7 @@ if (GETPOST('theme', 'aZ09')) { } // Set global MAIN_OPTIMIZEFORTEXTBROWSER (must be before login part) -if (GETPOSTINT('textbrowser') || (!empty($conf->browser->name) && $conf->browser->name == 'lynxlinks')) { // If we must enable text browser +if (GETPOSTINT('textbrowser') || (!empty($conf->browser->name) && $conf->browser->name == 'textbrowser')) { // If we must enable text browser $conf->global->MAIN_OPTIMIZEFORTEXTBROWSER = 2; } @@ -628,7 +628,7 @@ if ((!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && getDolGlobalInt( $sensitiveget = false; if ((GETPOSTISSET('massaction') || GETPOST('action', 'aZ09')) && getDolGlobalInt('MAIN_SECURITY_CSRF_WITH_TOKEN') >= 3) { // All GET actions (except the listed exceptions that are usually post for pre-actions and not real action) and mass actions are processed as sensitive. - if (GETPOSTISSET('massaction') || !in_array(GETPOST('action', 'aZ09'), array('create', 'createsite', 'createcard', 'edit', 'editvalidator', 'file_manager', 'presend', 'presend_addmessage', 'preview', 'specimen'))) { // We exclude some action that are not sensitive so legitimate + if (GETPOSTISSET('massaction') || !in_array(GETPOST('action', 'aZ09'), array('create', 'createsite', 'createcard', 'edit', 'editcontract', 'editvalidator', 'file_manager', 'presend', 'presend_addmessage', 'preview', 'reconcile', 'specimen'))) { // We exclude some action that are not sensitive so legitimate $sensitiveget = true; } } elseif (getDolGlobalInt('MAIN_SECURITY_CSRF_WITH_TOKEN') >= 2) { @@ -1617,13 +1617,13 @@ if (!function_exists("llxHeader")) { } if (getDolGlobalString('MAIN_OPTIMIZEFORCOLORBLIND')) { - $tmpcsstouse .= ' colorblind-'.strip_tags($conf->global->MAIN_OPTIMIZEFORCOLORBLIND); + $tmpcsstouse .= ' colorblind-'.strip_tags(getDolGlobalString('MAIN_OPTIMIZEFORCOLORBLIND')); } print ''."\n"; // top menu and left menu area - if ((empty($conf->dol_hide_topmenu) || GETPOSTINT('dol_invisible_topmenu')) && !GETPOSTINT('dol_openinpopup')) { + if ((empty($conf->dol_hide_topmenu) || GETPOSTINT('dol_invisible_topmenu')) && !GETPOST('dol_openinpopup', 'aZ09')) { top_menu($head, $title, $target, $disablejs, $disablehead, $arrayofjs, $arrayofcss, $morequerystring, $help_url); } @@ -1909,6 +1909,9 @@ function top_htmlhead($head, $title = '', $disablejs = 0, $disablehead = 0, $arr if (GETPOSTISSET('dol_hide_leftmenu')) { $themeparam .= '&dol_hide_leftmenu='.GETPOSTINT('dol_hide_leftmenu'); } + if (GETPOSTISSET('dol_openinpopup')) { + $themeparam .= '&dol_openinpopup='.GETPOST('dol_openinpopup', 'aZ09'); + } if (GETPOSTISSET('dol_optimize_smallscreen')) { $themeparam .= '&dol_optimize_smallscreen='.GETPOSTINT('dol_optimize_smallscreen'); } @@ -3536,7 +3539,7 @@ function main_area($title = '') { global $conf, $langs, $hookmanager; - if (empty($conf->dol_hide_leftmenu) && !GETPOST('dol_openinpopup')) { + if (empty($conf->dol_hide_leftmenu) && !GETPOST('dol_openinpopup', 'aZ09')) { print '
'; } @@ -3790,7 +3793,7 @@ if (!function_exists("llxFooter")) { print '
'."\n"; // End div fiche - if (empty($conf->dol_hide_leftmenu) && !GETPOST('dol_openinpopup')) { + if (empty($conf->dol_hide_leftmenu) && !GETPOST('dol_openinpopup', 'aZ09')) { print '
'."\n"; // End div id-right } diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index 9ab22172df3..377f7157689 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -215,6 +215,25 @@ foreach ($dirsrootforscan as $tmpdirread) { $i++; } +/** + * Add management to catch fatal errors - shutdown handler + * + * @return void + */ +function moduleBuilderShutdownFunction() +{ + $error = error_get_last(); + if ($error && ($error['type'] & (E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR))) { + // Handle the fatal error + echo "Fatal error occurred: {$error['message']} in {$error['file']} on line {$error['line']}"; + // If a header was already send, we suppose it is the llx_Header() so we call the llxFooter() + if (headers_sent()) { + llxFooter(); + } + } +} +register_shutdown_function("moduleBuilderShutdownFunction"); + /* * Actions @@ -1240,6 +1259,7 @@ if ($dirins && $action == 'initobject' && $module && $objectname) { $position = 900; } // $alwayseditable + $alwayseditable=0; if ($fieldname == 'label') { $alwayseditable = 1; } @@ -1267,7 +1287,9 @@ if ($dirins && $action == 'initobject' && $module && $objectname) { } // type - $picto = $obj->Picto; + if (isset($obj->Picto)) { + $picto = $obj->Picto; + } if ($obj->Field == 'fk_soc') { $picto = 'company'; } @@ -3027,6 +3049,7 @@ if ($dirins && $action == "update_props_module" && !empty(GETPOST('keydescriptio } } + /* * View */ @@ -3562,8 +3585,17 @@ if ($module == 'initmodule') { print ''; print ''; } else { - print $moduleobj->getDesc(); + print $moduleobj->description; print ''.img_edit().''; + + $moduledescritpionautotrans = $moduleobj->getDesc(); + if ($moduledescritpionautotrans != "Module".$moduleobj->name."Desc") { + // $moduledescritpionautotrans has been found into a translation file + print ' '.$form->textwithpicto('', $langs->trans("ModuleTranslatedIntoLangForKeyInto", "Module".$moduleobj->name."Desc", $moduledescritpionautotrans)); + } elseif ($moduledescritpionautotrans != "Module".$moduleobj->numero."Desc") { + // $moduledescritpionautotrans has been found into a translation file + print ' '.$form->textwithpicto('', $langs->trans("ModuleTranslatedIntoLangForKeyInto", "Module".$moduleobj->numero."Desc", $moduledescritpionautotrans)); + } } print ''; @@ -4106,9 +4138,10 @@ if ($module == 'initmodule') { $result = dol_include_once($pathtoclass); $stringofinclude = "dol_include_once(".$pathtoclass.")"; } else { - $result = @include_once $dirread.'/'.$pathtoclass; + $result = include_once $dirread.'/'.$pathtoclass; $stringofinclude = "@include_once ".$dirread.'/'.$pathtoclass; } + if (class_exists($tabobj)) { try { $tmpobject = @new $tabobj($db); @@ -4680,7 +4713,9 @@ if ($module == 'initmodule') { print ''.$langs->trans('Failed to init the object with the new %s (%s)', $tabobj, (string) $db).''; } } catch (Exception $e) { + print 'ee'; print $e->getMessage(); + print 'ff'; } } else { if (empty($forceddirread)) { 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 7b7c9b3e99c..1506e58d4e0 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 @@ -358,10 +358,10 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $odfHandler = new Odf( $srctemplatepath, array( - 'PATH_TO_TMP' => $conf->mymodule->dir_temp, - 'ZIP_PROXY' => 'PclZipProxy', // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. - 'DELIMITER_LEFT' => '{', - 'DELIMITER_RIGHT' => '}' + 'PATH_TO_TMP' => $conf->mymodule->dir_temp, + 'ZIP_PROXY' => getDolGlobalString('MAIN_ODF_ZIP_PROXY', 'PclZipProxy'), // PhpZipProxy or PclZipProxy. Got "bad compression method" error when using PhpZipProxy. + 'DELIMITER_LEFT' => '{', + 'DELIMITER_RIGHT' => '}' ) ); } catch (Exception $e) { diff --git a/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php b/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php index 0cf8868d5cf..095f9cd318f 100644 --- a/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php +++ b/htdocs/modulebuilder/template/core/triggers/interface_99_modMyModule_MyModuleTriggers.class.php @@ -143,7 +143,7 @@ class InterfaceMyModuleTriggers extends DolibarrTriggers //case 'ORDER_CLASSIFY_UNBILLED': // TODO Replace it with ORDER_UNBILLED //case 'ORDER_SETDRAFT': //case 'LINEORDER_INSERT': - //case 'LINEORDER_UPDATE': + //case 'LINEORDER_MODIFY': //case 'LINEORDER_DELETE': // Supplier orders @@ -160,7 +160,7 @@ class InterfaceMyModuleTriggers extends DolibarrTriggers //case 'ORDER_SUPPLIER_RECEIVE': //case 'LINEORDER_SUPPLIER_DISPATCH': //case 'LINEORDER_SUPPLIER_CREATE': - //case 'LINEORDER_SUPPLIER_UPDATE': + //case 'LINEORDER_SUPPLIER_MODIFY': //case 'LINEORDER_SUPPLIER_DELETE': // Proposals @@ -174,7 +174,7 @@ class InterfaceMyModuleTriggers extends DolibarrTriggers //case 'PROPAL_CLOSE_REFUSED': //case 'PROPAL_DELETE': //case 'LINEPROPAL_INSERT': - //case 'LINEPROPAL_UPDATE': + //case 'LINEPROPAL_MODIFY': //case 'LINEPROPAL_DELETE': // SupplierProposal @@ -186,7 +186,7 @@ class InterfaceMyModuleTriggers extends DolibarrTriggers //case 'SUPPLIER_PROPOSAL_CLOSE_REFUSED': //case 'SUPPLIER_PROPOSAL_DELETE': //case 'LINESUPPLIER_PROPOSAL_INSERT': - //case 'LINESUPPLIER_PROPOSAL_UPDATE': + //case 'LINESUPPLIER_PROPOSAL_MODIFY': //case 'LINESUPPLIER_PROPOSAL_DELETE': // Contracts @@ -197,7 +197,7 @@ class InterfaceMyModuleTriggers extends DolibarrTriggers //case 'CONTRACT_CLOSE': //case 'CONTRACT_DELETE': //case 'LINECONTRACT_INSERT': - //case 'LINECONTRACT_UPDATE': + //case 'LINECONTRACT_MODIFY': //case 'LINECONTRACT_DELETE': // Bills @@ -210,7 +210,7 @@ class InterfaceMyModuleTriggers extends DolibarrTriggers //case 'BILL_DELETE': //case 'BILL_PAYED': //case 'LINEBILL_INSERT': - //case 'LINEBILL_UPDATE': + //case 'LINEBILL_MODIFY': //case 'LINEBILL_DELETE': // Recurring Bills @@ -222,14 +222,14 @@ class InterfaceMyModuleTriggers extends DolibarrTriggers //Supplier Bill //case 'BILL_SUPPLIER_CREATE': - //case 'BILL_SUPPLIER_UPDATE': + //case 'BILL_SUPPLIER_MODIFY': //case 'BILL_SUPPLIER_DELETE': //case 'BILL_SUPPLIER_PAYED': //case 'BILL_SUPPLIER_UNPAYED': //case 'BILL_SUPPLIER_VALIDATE': //case 'BILL_SUPPLIER_UNVALIDATE': //case 'LINEBILL_SUPPLIER_CREATE': - //case 'LINEBILL_SUPPLIER_UPDATE': + //case 'LINEBILL_SUPPLIER_MODIFY': //case 'LINEBILL_SUPPLIER_DELETE': // Payments @@ -245,7 +245,7 @@ class InterfaceMyModuleTriggers extends DolibarrTriggers // Donation //case 'DON_CREATE': - //case 'DON_UPDATE': + //case 'DON_MODIFY': //case 'DON_DELETE': // Interventions @@ -256,7 +256,7 @@ class InterfaceMyModuleTriggers extends DolibarrTriggers //case 'FICHINTER_CLASSIFY_UNBILLED': // TODO Replace it with FICHINTER_UNBILLED //case 'FICHINTER_DELETE': //case 'LINEFICHINTER_CREATE': - //case 'LINEFICHINTER_UPDATE': + //case 'LINEFICHINTER_MODIFY': //case 'LINEFICHINTER_DELETE': // Members diff --git a/htdocs/modulebuilder/template/langs/en_US/mymodule.lang b/htdocs/modulebuilder/template/langs/en_US/mymodule.lang index 8677fa58069..add75190d91 100644 --- a/htdocs/modulebuilder/template/langs/en_US/mymodule.lang +++ b/htdocs/modulebuilder/template/langs/en_US/mymodule.lang @@ -1,17 +1,4 @@ -# Copyright (C) ---Put here your own copyright and developer email--- -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# Translation file # # Generic diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index 1cca16368ea..ee78e549082 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -98,6 +98,7 @@ $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str $backtopage = GETPOST('backtopage', 'alpha'); // if not set, a default page will be used $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); // if not set, $backtopage will be used $backtopagejsfields = GETPOST('backtopagejsfields', 'alpha'); +$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') $dol_openinpopup = GETPOST('dol_openinpopup', 'aZ09'); if (!empty($backtopagejsfields)) { diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 322ffd0cb58..a7ef4bd6315 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -91,7 +91,7 @@ $langs->loadLangs(array("mymodule@mymodule", "other")); // Get parameters $action = GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'; // The action 'create'/'add', '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 ? +$show_files = GETPOSTINT('show_files'); // 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:int'); // Array of ids of elements selected into a list @@ -229,7 +229,7 @@ if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massa $massaction = ''; } -$parameters = array(); +$parameters = array('arrayfields' => &$arrayfields); $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'); @@ -492,9 +492,9 @@ foreach ($search as $key => $val) { } } } elseif (preg_match('/(_dtstart|_dtend)$/', $key) && !empty($val)) { - $param .= '&search_'.$key.'month='.((int) GETPOST('search_'.$key.'month', 'int')); - $param .= '&search_'.$key.'day='.((int) GETPOST('search_'.$key.'day', 'int')); - $param .= '&search_'.$key.'year='.((int) GETPOST('search_'.$key.'year', 'int')); + $param .= '&search_'.$key.'month='.(GETPOSTINT('search_'.$key.'month')); + $param .= '&search_'.$key.'day='.(GETPOSTINT('search_'.$key.'day')); + $param .= '&search_'.$key.'year='.(GETPOSTINT('search_'.$key.'year')); } elseif ($search[$key] != '') { $param .= '&search_'.$key.'='.urlencode($search[$key]); } @@ -558,7 +558,7 @@ if ($search_all) { $setupstring .= $key."=".$val.";"; } print ''."\n"; - print '
'.$langs->trans("FilterOnInto", $search_all).join(', ', $fieldstosearchall).'
'."\n"; + print '
'.$langs->trans("FilterOnInto", $search_all).implode(', ', $fieldstosearchall).'
'."\n"; } $moreforfilter = ''; @@ -577,9 +577,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 565339953d2..1249a181bad 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -767,6 +767,7 @@ class Mo extends CommonObject if ($moline->qty <= 0) { $error++; $this->error = "BadValueForquantityToConsume"; + $this->errors[] = $this->error; break; } else { $moline->fk_product = $line->fk_product; @@ -782,7 +783,8 @@ class Mo extends CommonObject if ($resultline <= 0) { $error++; $this->error = $moline->error; - $this->errors = $moline->errors; + $this->errors[] = $moline->error; + $this->errors = array_merge($this->errors, $moline->errors); dol_print_error($this->db, $moline->error, $moline->errors); break; } diff --git a/htdocs/mrp/mo_list.php b/htdocs/mrp/mo_list.php index 7a5a15ebd65..4a8afa2eb38 100644 --- a/htdocs/mrp/mo_list.php +++ b/htdocs/mrp/mo_list.php @@ -476,9 +476,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/mrp/mo_movements.php b/htdocs/mrp/mo_movements.php index 0553230c5ea..923a28df591 100644 --- a/htdocs/mrp/mo_movements.php +++ b/htdocs/mrp/mo_movements.php @@ -588,7 +588,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $moreforfilter = ''; $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook + $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $moreforfilter .= $hookmanager->resPrint; } else { diff --git a/htdocs/mrp/mo_production.php b/htdocs/mrp/mo_production.php index 789dfe604cc..32a72dbccaa 100644 --- a/htdocs/mrp/mo_production.php +++ b/htdocs/mrp/mo_production.php @@ -188,7 +188,7 @@ if (empty($reshook)) { // Line to produce $moline->fk_mo = $object->id; - $moline->qty = GETPOSTINT('qtytoadd'); + $moline->qty = GETPOSTFLOAT('qtytoadd'); $moline->fk_product = GETPOSTINT('productidtoadd'); if (GETPOST('addconsumelinebutton')) { $moline->role = 'toconsume'; @@ -484,7 +484,7 @@ if (empty($reshook)) { $value = GETPOST('options_'.$key, 'alphanohtml'); $moline->array_options["options_".$key] = $value; } - $moline->qty = GETPOSTINT('qty_lineProduce'); + $moline->qty = GETPOSTFLOAT('qty_lineProduce'); $res = $moline->update($user); if ($res < 0) { setEventMessages($moline->error, $moline->errors, 'errors'); @@ -835,6 +835,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print '
'; print ''; + print ''."\n"; print ''; // Product print ''; @@ -883,10 +884,6 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea } print ''; } - // Action - if ($permissiontodelete) { - print ''; - } // Split print ''; @@ -899,6 +896,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; } + // Action + if ($permissiontodelete) { + print ''; + } + print ''; if ($action == 'addconsumeline') { @@ -928,10 +930,6 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if (isModEnabled('productbatch')) { print ''; } - // Action - if ($permissiontodelete) { - print ''; - } // Split print ''; // SplitAll @@ -940,6 +938,10 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($object->status == Mo::STATUS_DRAFT) { print ''; } + // Action + if ($permissiontodelete) { + print ''; + } print ''; // Extrafields Line @@ -1059,6 +1061,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea } print ''; + // Cost price + if ($permissiontoupdatecost && getDolGlobalString('MRP_SHOW_COST_FOR_CONSUMPTION')) { + print ''; + } + // Qty consumed print ''; // Stock - print ''; } - print ''; - // Batch - /* - print ''; - */ - - // Action delete line - print ''; + } + // Split + SplitAll + Edit line + Delete + print ''; @@ -1097,9 +1104,10 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $line->fetch_optionals(); $temps = $line->showOptionals($extrafields, 'edit', array(), '', '', 1, 'line'); if (!empty($temps)) { - print ''; + print ''; } } } else { @@ -1174,6 +1182,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea } print ' ' . price2num($alreadyconsumed, 'MS'); print ''; + // Warehouse and/or workstation print ''; + // Stock if (isModEnabled('stock')) { print ''; } + // Lot if (isModEnabled('productbatch')) { print ''; @@ -1239,17 +1250,20 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea } print ''; + // Extrafields Line if (!empty($extrafields)) { $line->fetch_optionals(); $temps = $line->showOptionals($extrafields, 'view', array(), '', '', 1, 'line'); if (!empty($temps)) { - print ''; + print ''; } } } + // Show detailed of already consumed with js code to collapse foreach ($arrayoflines as $line2) { print ''; @@ -1261,17 +1275,20 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print dol_print_date($line2['date'], 'dayhour', 'tzuserrel'); print ''; - // Already consumed + // Qty print ''; - // Qty - print ''; + // Unit + print ''; // Cost price if ($permissiontoupdatecost && getDolGlobalString('MRP_SHOW_COST_FOR_CONSUMPTION')) { print ''; } + //Already consumed + print ''; + // Warehouse print ''; // Unit - if (getDolGlobalInt('PRODUCT_USE_UNITS')) { - print ''; - } + print ''; // Cost if ($permissiontoupdatecost && getDolGlobalString('MRP_SHOW_COST_FOR_CONSUMPTION')) { @@ -1671,6 +1686,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $href = $_SERVER["PHP_SELF"]; $href .= '?id='.$object->id; $href .= '&action=deleteline'; + $href .= '&token='.newToken(); $href .= '&lineid='.$line->id; print ''; echo ''; @@ -102,7 +102,7 @@ if ($object->element == 'mo') { print ''; diff --git a/htdocs/multicurrency/multicurrency_rate.php b/htdocs/multicurrency/multicurrency_rate.php index 22791f2cb55..ef05976018e 100644 --- a/htdocs/multicurrency/multicurrency_rate.php +++ b/htdocs/multicurrency/multicurrency_rate.php @@ -455,7 +455,7 @@ if ($resql) { $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook + $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $moreforfilter .= $hookmanager->resPrint; } else { diff --git a/htdocs/opensurvey/list.php b/htdocs/opensurvey/list.php index f265c665cc1..5eb0479fd21 100644 --- a/htdocs/opensurvey/list.php +++ b/htdocs/opensurvey/list.php @@ -311,7 +311,7 @@ $moreforfilter.= $langs->trans('MyFilter') . ': '; print $moreforfilter; - $parameters = array('type' => $type); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print ''; } @@ -723,7 +720,7 @@ $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfi $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); print '
'; // You can use div-table-responsive-no-min if you don't need reserved height for your table -print '
'.$langs->trans("Product").'
'; print ' ' . price2num($alreadyconsumed, 'MS'); @@ -1069,23 +1076,23 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; - if ($tmpproduct->isStockManaged()) { - if ($tmpproduct->stock_reel < ($line->qty - $alreadyconsumed)) { - print img_warning($langs->trans('StockTooLow')).' '; + if (isModEnabled('stock')) { + print ''; + if ($tmpproduct->isStockManaged()) { + if ($tmpproduct->stock_reel < ($line->qty - $alreadyconsumed)) { + print img_warning($langs->trans('StockTooLow')).' '; + } + print ''. $tmpproduct->stock_reel .' '; } - print ''. $tmpproduct->stock_reel .' '; + print ''; - print ''; + // Lot - serial + if (isModEnabled('productbatch')) { + print ''; print ''; print ''; print '
'; + $colspan = 10; + print '
'; print $temps; - print '
'; if (getDolGlobalString('STOCK_CONSUMPTION_FROM_MANUFACTURING_WAREHOUSE') && $tmpwarehouse->id > 0) { @@ -1185,6 +1194,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print $tmpworkstation->getNomUrl(1); } print ''; @@ -1207,6 +1217,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea } print '
'; + $colspan = 10; + print '
'; print $temps; - print '
'.$line2['qty'].''.$line2['qty'].''; if ($line2['fk_warehouse'] > 0) { @@ -1350,9 +1367,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; print ''; @@ -1887,9 +1903,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $.each(data, function (key, value) { if(selectwarehouse.val() == -1) { - var label = " (trans('Stock total') ?> : " + value + ")"; + var label = key + " (trans('Stock total') ?> : " + value + ")"; } else { - var label = " (trans('Stock') ?> : " + value + ")"; + var label = key + " (trans('Stock') ?> : " + value + ")"; } if(key === selectedbatch) { diff --git a/htdocs/mrp/tpl/linkedobjectblock.tpl.php b/htdocs/mrp/tpl/linkedobjectblock.tpl.php index 094a6b0c21f..1d20906b0f1 100644 --- a/htdocs/mrp/tpl/linkedobjectblock.tpl.php +++ b/htdocs/mrp/tpl/linkedobjectblock.tpl.php @@ -56,7 +56,7 @@ if ($object->element == 'mo') { echo '
' . $langs->trans("ManufacturingOrder"); if (!empty($showImportButton) && $conf->global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES) { - print ' '; echo '' . $objectlink->getNomUrl(1) . ''.$langs->trans("ManufacturingOrder"); if (!empty($showImportButton) && $conf->global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES) { $url = DOL_URL_ROOT.'/mrp/mo_card.php?id='.$objectlink->id; - print ' '; + print ' '; } print '
'."\n"; +print '
'."\n"; if ($managedfor == 'member') { diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 53d67d84693..05843b55d90 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -20,7 +20,7 @@ * Copyright (C) 2019-2020 Thibault FOUCART * Copyright (C) 2020 Pierre Ardoin * Copyright (C) 2022 Vincent de Grandpré - * Copyright (C) 2024 MDW + * Copyright (C) 2024 MDW * * 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 @@ -201,7 +201,7 @@ if ($object->id > 0) { $hookmanager->initHooks(array('productcard', 'globalcard')); // Permissions -$usercanread = (($object->type == Product::TYPE_PRODUCT && $user->hasRight('produit', 'read')) || ($object->type == Product::TYPE_SERVICE && $user->hasRight('service', 'lire'))); +$usercanread = (($object->type == Product::TYPE_PRODUCT && $user->hasRight('produit', 'lire')) || ($object->type == Product::TYPE_SERVICE && $user->hasRight('service', 'lire'))); $usercancreate = (($object->type == Product::TYPE_PRODUCT && $user->hasRight('produit', 'creer')) || ($object->type == Product::TYPE_SERVICE && $user->hasRight('service', 'creer'))); $usercandelete = (($object->type == Product::TYPE_PRODUCT && $user->hasRight('produit', 'supprimer')) || ($object->type == Product::TYPE_SERVICE && $user->hasRight('service', 'supprimer'))); @@ -1325,6 +1325,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio print ''."\n"; + } + + // Create/Edit object - print ''; + print ''; print ''; print ''; @@ -249,55 +262,10 @@ if ($action == 'create' || $object->fetch($id, $ref) > 0) { print ''; print ''; - // Address - print ''; - print ''; - - // Zip / Town - print 'browser->layout == 'phone' ? ' colspan="3"' : '').'>'; - print $formresource->select_ziptown($object->zip, 'zipcode', array('town', 'selectcountry_id', 'state_id'), 0, 0, '', 'maxwidth100'); - print ''; - if ($conf->browser->layout == 'phone') { - print ''; - } - print 'browser->layout == 'phone' ? ' colspan="3"' : '').'>'; - print $formresource->select_ziptown($object->town, 'town', array('zipcode', 'selectcountry_id', 'state_id')); - print $form->widgetForTranslation("town", $object, $permissiontoadd, 'string', 'alphanohtml', 'maxwidth100 quatrevingtpercent'); - print ''; - - // Origin country - print ''; - - // State - if (!getDolGlobalString('SOCIETE_DISABLE_STATE')) { - if ((getDolGlobalInt('MAIN_SHOW_REGION_IN_STATE_SELECT') == 1 || getDolGlobalInt('MAIN_SHOW_REGION_IN_STATE_SELECT') == 2)) { - print ''; - } - // Type print ''; print ''; // Description @@ -308,6 +276,53 @@ if ($action == 'create' || $object->fetch($id, $ref) > 0) { $doleditor->Create(); print ''; + // Address + print ''; + print ''; + + // Zip + print ''; + print ''; + + // Town + print ''; + print ''; + + // Origin country + print ''; + + // State + $countryid = GETPOSTISSET('country_id') ? GETPOSTINT('country_id') : $object->country_id; + if (!getDolGlobalString('SOCIETE_DISABLE_STATE') && $countryid > 0) { + if ((getDolGlobalInt('MAIN_SHOW_REGION_IN_STATE_SELECT') == 1 || getDolGlobalInt('MAIN_SHOW_REGION_IN_STATE_SELECT') == 2)) { + print ''; + } + // Phone print ''; print ''; print ''; + print ''; print ''; // URL diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index cb106b7afeb..14578eecf8f 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -51,17 +51,17 @@ class Dolresource extends CommonObject public $picto = 'resource'; /** - * @var string description + * @var string Description */ public $description; /** - * @var string telephone number + * @var string Phone number */ public $phone; /** - * @var int Maximum users + * @var int|null Maximum users */ public $max_users; @@ -375,9 +375,6 @@ class Dolresource extends CommonObject if (isset($this->email)) { $this->email = trim($this->email); } - if (!is_numeric($this->max_users)) { - $this->max_users = 0; - } if (isset($this->url)) { $this->url = trim($this->url); } diff --git a/htdocs/resource/class/html.formresource.class.php b/htdocs/resource/class/html.formresource.class.php index 5471287c9f7..5edb677e850 100644 --- a/htdocs/resource/class/html.formresource.class.php +++ b/htdocs/resource/class/html.formresource.class.php @@ -174,9 +174,11 @@ class FormResource * @param int $empty 1=peut etre vide, 0 sinon * @param int $noadmininfo 0=Add admin info, 1=Disable admin info * @param int $maxlength Max length of label + * @param int $usejscombo 1=Use jscombo, 0=No js combo + * @param string $morecss Add more css * @return void */ - public function select_types_resource($selected = '', $htmlname = 'type_resource', $filtertype = '', $format = 0, $empty = 0, $noadmininfo = 0, $maxlength = 0) + public function select_types_resource($selected = '', $htmlname = 'type_resource', $filtertype = '', $format = 0, $empty = 0, $noadmininfo = 0, $maxlength = 0, $usejscombo = 0, $morecss = 'minwidth100') { // phpcs:enable global $langs, $user; @@ -192,7 +194,7 @@ class FormResource } $resourcestat->loadCacheCodeTypeResource(); - print ''; if ($empty) { print ''; } @@ -236,6 +238,10 @@ class FormResource } } print ''; + if ($usejscombo) { + print ajax_combobox("select".$htmlname); + } + if ($user->admin && !$noadmininfo) { print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); } diff --git a/htdocs/salaries/card.php b/htdocs/salaries/card.php index bbfacb08097..63a01b4903e 100644 --- a/htdocs/salaries/card.php +++ b/htdocs/salaries/card.php @@ -762,8 +762,18 @@ if ($id > 0) { $('#fill_end_of_month').click(function(){ var clone_date_startmonth = +$('#clone_date_startmonth').val(); var clone_date_startyear = +$('#clone_date_startyear').val(); - var end_date = new Date(clone_date_startyear, clone_date_startmonth, 0); - end_date.setMonth(clone_date_startmonth - 1); + var end_date; + if (clone_date_startmonth && clone_date_startyear) { + end_date = new Date(clone_date_startyear, clone_date_startmonth , 0); + } else { + var currentDate = new Date(); + var currentDay = currentDate.getDate(); + if (currentDay <= 15) { + end_date = new Date(currentDate.getFullYear(), currentDate.getMonth(), 0); + } else { + end_date = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0); + } + } $('#clone_date_end').val(formatDate(end_date,'".$langs->trans("FormatDateShortJavaInput")."')); $('#clone_date_endday').val(end_date.getDate()); $('#clone_date_endmonth').val(end_date.getMonth() + 1); diff --git a/htdocs/salaries/class/paymentsalary.class.php b/htdocs/salaries/class/paymentsalary.class.php index 96d414b1d12..cea7ce1948f 100644 --- a/htdocs/salaries/class/paymentsalary.class.php +++ b/htdocs/salaries/class/paymentsalary.class.php @@ -1,8 +1,8 @@ - * Copyright (C) 2014 Juanjo Menent - * Copyright (C) 2021 Gauthier VERDOL - * Copyright (C) 2024 Frédéric France +/* Copyright (C) 2011-2024 Alexandre Spangaro + * Copyright (C) 2014 Juanjo Menent + * Copyright (C) 2021 Gauthier VERDOL + * Copyright (C) 2024 Frédéric France * Copyright (C) 2024 MDW * * This program is free software; you can redistribute it and/or modify @@ -343,6 +343,7 @@ class PaymentSalary extends CommonObject $this->datec = $this->db->jdate($obj->datec); $this->tms = $this->db->jdate($obj->tms); $this->datepaye = $this->db->jdate($obj->datep); + $this->datep = $this->db->jdate($obj->datep); $this->amount = $obj->amount; $this->fk_typepayment = $obj->fk_typepayment; $this->num_paiement = $obj->num_payment; diff --git a/htdocs/salaries/list.php b/htdocs/salaries/list.php index 290b66bab30..ccf6882aa4a 100644 --- a/htdocs/salaries/list.php +++ b/htdocs/salaries/list.php @@ -3,6 +3,7 @@ * Copyright (C) 2015-2016 Laurent Destailleur * Copyright (C) 2015 Jean-François Ferry * Copyright (C) 2021 Gauthier VERDOL + * Copyright (C) 2024 Nick Fragoulis * * 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 @@ -67,7 +68,7 @@ if (!$sortorder) { } // Initialize technical objects -$object = new PaymentSalary($db); +$object = new Salary($db); $extrafields = new ExtraFields($db); $diroutputmassaction = $conf->user->dir_output.'/temp/massgeneration/'.$user->id; $hookmanager->initHooks(array('salarieslist')); // Note that conf->hooks_modules contains array @@ -339,6 +340,9 @@ $sql = preg_replace('/,\s*$/', '', $sql); $sqlfields = $sql; // $sql fields to remove for count total $sql .= " FROM ".MAIN_DB_PREFIX."salary as s"; +if (!empty($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) { + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (s.rowid = ef.fk_object)"; +} $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."payment_salary as ps ON (ps.fk_salary = s.rowid) "; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as pst ON (s.fk_typepayment = pst.id) "; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."bank_account ba ON (ba.rowid = s.fk_account), "; @@ -386,6 +390,8 @@ if ($search_status != '' && $search_status >= 0) { if ($search_type_id) { $sql .= " AND s.fk_typepayment=".((int) $search_type_id); } +// Add where from extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; $sql .= " GROUP BY u.rowid, u.lastname, u.firstname, u.login, u.email, u.admin, u.photo, u.salary, u.fk_soc, u.statut,"; $sql .= " s.rowid, s.fk_account, s.paye, s.fk_user, s.amount, s.salary, s.label, s.datesp, s.dateep, s.fk_typepayment, s.fk_bank,"; $sql .= " ba.rowid, ba.ref, ba.number, ba.account_number, ba.fk_accountancy_journal, ba.label, ba.iban_prefix, ba.bic, ba.currency_code, ba.clos,"; @@ -431,7 +437,7 @@ $num = $db->num_rows($resql); if ($num == 1 && getDolGlobalString('MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all && !$page) { $obj = $db->fetch_object($resql); $id = $obj->rowid; - header("Location: ".dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.$id); + header("Location: ".DOL_URL_ROOT.'/salaries/card.php?id='.$id); exit; } @@ -559,9 +565,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } @@ -627,6 +630,9 @@ if (isModEnabled("bank")) { print ''; } +// Extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php'; + // Amount print '
'; @@ -637,9 +643,6 @@ $liststatus = array('0' => $langs->trans("Unpaid"), '1' => $langs->trans("Paid") print $form->selectarray('search_status', $liststatus, $search_status, 1, 0, 0, '', 0, 0, 0, '', 'search_status width100 onrightofpage'); print ''; -// Extra fields -include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php'; - // Fields from hook $parameters = array('arrayfields' => $arrayfields); $reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $object, $action); // Note that $action and $object may have been modified by hook @@ -680,12 +683,15 @@ if (isModEnabled("bank")) { print_liste_field_titre("DefaultBankAccount", $_SERVER["PHP_SELF"], "ba.label", "", $param, "", $sortfield, $sortorder); $totalarray['nbfield']++; } -print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "s.amount", "", $param, '', $sortfield, $sortorder, 'right '); + +// Extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; + +print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "s.amount", "", $param, 'class="right"', $sortfield, $sortorder); $totalarray['nbfield']++; print_liste_field_titre('Status', $_SERVER["PHP_SELF"], "s.paye", '', $param, '', $sortfield, $sortorder, 'center '); $totalarray['nbfield']++; -// 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, 'totalarray' => &$totalarray); $reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook @@ -863,6 +869,9 @@ while ($i < $imaxinloop) { // if (!$i) $totalarray['pos'][$totalarray['nbfield']] = 'totalttcfield'; + // Extra fields + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; + // Amount print ''; if (!$i) { @@ -879,8 +888,6 @@ while ($i < $imaxinloop) { $totalarray['nbfield']++; } - // 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, $action); // Note that $action and $object may have been modified by hook diff --git a/htdocs/salaries/payment_salary/card.php b/htdocs/salaries/payment_salary/card.php index 5f30b4fb118..a15fb006e10 100644 --- a/htdocs/salaries/payment_salary/card.php +++ b/htdocs/salaries/payment_salary/card.php @@ -4,7 +4,9 @@ * Copyright (C) 2005 Marc Barilley / Ocebo * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2021 Gauthier VERDOL + * Copyright (C) 2024 MDW * Copyright (C) 2024 Alexandre SPANGARO + * Copyright (C) 2024 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 diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 73a841345e9..cbf4e637cba 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -320,7 +320,7 @@ if (empty($reshook)) { } else { $object->name = GETPOST('name', 'alphanohtml'); } - $object->entity = (GETPOSTISSET('entity') ? GETPOSTINT('entity') : $conf->entity); + $object->entity = ((GETPOSTISSET('entity') && GETPOST('entity') != '') ? GETPOSTINT('entity') : $conf->entity); $object->name_alias = GETPOST('name_alias', 'alphanohtml'); $object->parent = GETPOSTISSET('parent_company_id') ? GETPOSTINT('parent_company_id') : $object->parent; $object->address = GETPOST('address', 'alphanohtml'); @@ -810,7 +810,7 @@ if (empty($reshook)) { // Set incoterm if ($action == 'set_incoterms' && $user->hasRight('societe', 'creer') && isModEnabled('incoterm')) { $object->fetch($socid); - $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOSTINT('location_incoterms')); + $result = $object->setIncoterms(GETPOSTINT('incoterm_id'), GETPOST('location_incoterms')); } // Set parent company @@ -1193,6 +1193,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio } $("#selectcountry_id").change(function() { + console.log("selectcountry_id change"); document.formsoc.action.value="create"; document.formsoc.submit(); }); @@ -1202,7 +1203,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio dol_htmloutput_mesg(is_numeric($error) ? '' : $error, $errors, 'error'); - print ''; // Chrome ignor autocomplete + print ''; // Chrome ignores autocomplete print ''; print ''; @@ -1387,7 +1388,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio if (getDolGlobalString('THIRDPARTY_SUPPLIER_BY_DEFAULT')) { $default = 1; } - print $form->selectyesno("fournisseur", (GETPOSTINT('fournisseur') != '' ? GETPOSTINT('fournisseur') : (GETPOST("type") == '' ? $default : $object->fournisseur)), 1, 0, (GETPOST("type") == '' ? 1 : 0), 1); + print $form->selectyesno("fournisseur", ((GETPOST("type") == '' ? $default : $object->fournisseur)), 1, 0, (GETPOST("type") == '' ? 1 : 0), 1); print ''; @@ -2036,6 +2037,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio } $("#selectcountry_id").change(function() { + console.log("selectcountry_id change"); document.formsoc.action.value="edit"; document.formsoc.submit(); }); @@ -2571,7 +2573,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio if (isModEnabled('accounting')) { // Accountancy_code_sell - print ''; + print ''; print ''; @@ -2583,7 +2585,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio print ''; } else { // For external software // Accountancy_code_sell - print ''; + print ''; print ''; @@ -2920,7 +2922,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio if (isModEnabled('category') && $user->hasRight('categorie', 'lire')) { // Customer if ($object->prospect || $object->client || getDolGlobalString('THIRDPARTY_CAN_HAVE_CUSTOMER_CATEGORY_EVEN_IF_NOT_CUSTOMER_PROSPECT')) { - print ''; + print ''; print '"; @@ -2928,7 +2930,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio // Supplier if (((isModEnabled("fournisseur") && $user->hasRight('fournisseur', 'lire') && !getDolGlobalString('MAIN_USE_NEW_SUPPLIERMOD')) || (isModEnabled("supplier_order") && $user->hasRight('supplier_order', 'lire')) || (isModEnabled("supplier_invoice") && $user->hasRight('supplier_invoice', 'lire'))) && $object->fournisseur) { - print ''; + print ''; print '"; @@ -2937,7 +2939,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio // Third-Party Type - print ''; $url = 'https://www.takepos.com'; print ''."\n"; -print ''; +print ''; print ''; -print ''; +print ''; print ''; print "
'.$langs->trans("ResourceFormLabel_ref").'
'.$form->editfieldkey('Address', 'address', '', $object, 0).''; - print $form->widgetForTranslation("address", $object, $permissiontoadd, 'textarea', 'alphanohtml', 'quatrevingtpercent'); - print '
'.$form->editfieldkey('Zip', 'zipcode', '', $object, 0).'
'.$form->editfieldkey('Town', 'town', '', $object, 0).'
'.$langs->trans("CountryOrigin").''; - print $form->select_country($object->country_id); - if ($user->admin) { - print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); - } - print '
'.$form->editfieldkey('Region-State', 'state_id', '', $object, 0).''; - } else { - print '
'.$form->editfieldkey('State', 'state_id', '', $object, 0).''; - } - - if ($object->country_id) { - print img_picto('', 'state', 'class="pictofixedwidth"'); - print $formresource->select_state($object->state_id, $object->country_code); - } else { - print $langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')'; - } - print '
'.$langs->trans("ResourceType").''; - $formresource->select_types_resource($object->fk_code_type_resource, 'fk_code_type_resource', '', 2); + $formresource->select_types_resource($object->fk_code_type_resource, 'fk_code_type_resource', '', 2, 0, 0, 0, 1, 'minwidth200'); print '
'.$form->editfieldkey('Address', 'address', '', $object, 0).''; + print $form->widgetForTranslation("address", $object, $permissiontoadd, 'textarea', 'alphanohtml', 'quatrevingtpercent'); + print '
'.$form->editfieldkey('Zip', 'zipcode', '', $object, 0).''; + print $formresource->select_ziptown(GETPOSTISSET('zipcode') ? GETPOST('zipcode') : $object->zip, 'zipcode', array('town', 'selectcountry_id', 'state_id'), 0, 0, '', 'maxwidth100'); + print '
'.$form->editfieldkey('Town', 'town', '', $object, 0).''; + print $formresource->select_ziptown(GETPOSTISSET('town') ? GETPOST('town') : $object->town, 'town', array('zipcode', 'selectcountry_id', 'state_id')); + print $form->widgetForTranslation("town", $object, $permissiontoadd, 'string', 'alphanohtml', 'maxwidth100 quatrevingtpercent'); + print '
'.$langs->trans("CountryOrigin").''; + print $form->select_country(GETPOSTISSET('country_id') ? GETPOSTINT('country_id') : $object->country_id, 'country_id'); + if ($user->admin) { + print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); + } + print '
'.$form->editfieldkey('Region-State', 'state_id', '', $object, 0).''; + } else { + print '
'.$form->editfieldkey('State', 'state_id', '', $object, 0).''; + } + + if ($country_id > 0) { + print img_picto('', 'state', 'class="pictofixedwidth"'); + print $formresource->select_state($countryid, $country_id); + } else { + print ''.$langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')'; + } + print '
'.$form->editfieldkey('Phone', 'phone', '', $object, 0).''; @@ -326,7 +341,7 @@ if ($action == 'create' || $object->fetch($id, $ref) > 0) { print '
'.$form->editfieldkey('MaxUsers', 'max_users', '', $object, 0).''; print img_picto('', 'object_user', 'class="pictofixedwidth"'); - print '
'.price($obj->amount).'
'.$langs->trans("ProductAccountancySellCode").'
'.$langs->trans("ProductAccountancySellCode").''; print $formaccounting->select_account($object->accountancy_code_sell, 'accountancy_code_sell', 1, '', 1, 1); print '
'.$langs->trans("ProductAccountancySellCode").'
'.$langs->trans("ProductAccountancySellCode").''; print '
'.$langs->trans("CustomersCategoriesShort").'
'.$langs->trans("CustomersCategoriesShort").''; print $form->showCategories($object->id, Categorie::TYPE_CUSTOMER, 1); print "
'.$langs->trans("SuppliersCategoriesShort").'
'.$langs->trans("SuppliersCategoriesShort").''; print $form->showCategories($object->id, Categorie::TYPE_SUPPLIER, 1); print "
'; + print '
'; print ''; if ($action != 'editthirdpartytype' && $user->hasRight('societe', 'creer')) { print ''; @@ -2954,7 +2956,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio } // Legal - print ''; + print ''; // Capital print ''; - /* - print ''; - */ + // Doc gen print ''; + // Online sign + if (!getDolGlobalInt('SOCIETE_DISABLE_BANKACCOUNT') && getDolGlobalInt("SOCIETE_RIB_ALLOW_ONLINESIGN")) { + print ''; + } + // Fields from hook $parameters = array('arrayfields' => array(), 'stripe_card_ref' => $rib->stripe_card_ref, 'stripe_account' => $rib->stripe_account, 'linetype' => 'stripebanremoteonly'); $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook diff --git a/htdocs/societe/project.php b/htdocs/societe/project.php index bad74c4d944..289599289ba 100644 --- a/htdocs/societe/project.php +++ b/htdocs/societe/project.php @@ -85,6 +85,7 @@ if ($reshook < 0) { $parameters = array('id'=>$socid); // List of mass actions available +$arrayofmassactions = array(); if (!empty($permissiontodelete)) { $arrayofmassactions['predelete'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Delete"); } diff --git a/htdocs/societe/tpl/linesalesrepresentative.tpl.php b/htdocs/societe/tpl/linesalesrepresentative.tpl.php index fa766a17d5c..4891798d398 100644 --- a/htdocs/societe/tpl/linesalesrepresentative.tpl.php +++ b/htdocs/societe/tpl/linesalesrepresentative.tpl.php @@ -34,7 +34,7 @@ if ($action != 'editsalesrepresentatives' && $user->hasRight('societe', 'creer') print ''; } print '
'.$langs->trans('ThirdPartyType').'id.'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'
'.$langs->trans('JuridicalStatus').''.$object->forme_juridique.'
'.$langs->trans('JuridicalStatus').''.dolPrintHTML($object->forme_juridique).'
'.$langs->trans('Capital').''; diff --git a/htdocs/societe/class/api_contacts.class.php b/htdocs/societe/class/api_contacts.class.php index 95e7de8d649..a103c6e991b 100644 --- a/htdocs/societe/class/api_contacts.class.php +++ b/htdocs/societe/class/api_contacts.class.php @@ -192,9 +192,11 @@ class Contacts extends DolibarrApi } $sql = "SELECT t.rowid"; - $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as t"; if ($category > 0) { - $sql .= ", ".MAIN_DB_PREFIX."categorie_contact as c"; + $sql .= " FROM (".MAIN_DB_PREFIX."socpeople as t"; + $sql .= ", ".MAIN_DB_PREFIX."categorie_contact as c)"; + } else { + $sql .= " FROM ".MAIN_DB_PREFIX."socpeople as t"; } $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople_extrafields as te ON te.fk_object = t.rowid"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON t.fk_soc = s.rowid"; @@ -369,7 +371,7 @@ class Contacts extends DolibarrApi * Delete contact * * @param int $id Contact ID - * @return integer + * @return array[] */ public function delete($id) { @@ -385,7 +387,17 @@ class Contacts extends DolibarrApi throw new RestException(403, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } $this->contact->oldcopy = clone $this->contact; - return $this->contact->delete(DolibarrApiAccess::$user); + + if ($this->contact->delete(DolibarrApiAccess::$user) <= 0) { + throw new RestException(500, 'Error when delete contact ' . $this->contact->error); + } + + return array( + 'success' => array( + 'code' => 200, + 'message' => 'Contact deleted' + ) + ); } /** diff --git a/htdocs/societe/class/api_thirdparties.class.php b/htdocs/societe/class/api_thirdparties.class.php index 15614c538a2..f7d70a6d473 100644 --- a/htdocs/societe/class/api_thirdparties.class.php +++ b/htdocs/societe/class/api_thirdparties.class.php @@ -321,7 +321,7 @@ class Thirdparties extends DolibarrApi $this->company->setNoEmail($this->company->no_email); } - if ($this->company->update($id, DolibarrApiAccess::$user, 1, '', '', 'update', 1) > 0) { + if ($this->company->update($id, DolibarrApiAccess::$user, 1, 1, 1, 'update', 1) > 0) { return $this->get($id); } else { throw new RestException(500, $this->company->error); diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 3bed18d74c8..df3bfd91a5d 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -920,6 +920,7 @@ class Societe extends CommonObject $this->name = $this->name ? trim($this->name) : trim((string) $this->nom); $this->setUpperOrLowerCase(); $this->nom = $this->name; // For backward compatibility + if (empty($this->client)) { $this->client = 0; } @@ -1372,7 +1373,7 @@ class Societe extends CommonObject $this->address = trim((string) $this->address); $this->zip = trim((string) $this->zip); $this->town = trim((string) $this->town); - $this->state_id = (is_numeric($this->state_id)) ? (int) trim((string) $this->state_id) : 0; + $this->state_id = (is_numeric($this->state_id)) ? (int) $this->state_id : 0; $this->country_id = ($this->country_id > 0) ? $this->country_id : 0; $this->phone = trim((string) $this->phone); $this->phone = preg_replace("/\s/", "", $this->phone); @@ -2077,7 +2078,7 @@ class Societe extends CommonObject $this->model_pdf = $obj->model_pdf; $this->last_main_doc = $obj->last_main_doc; - $result = 1; + $result = $this->id; // fetch optionals attributes and labels $this->fetch_optionals(); @@ -2100,6 +2101,45 @@ class Societe extends CommonObject return $result; } + /** + * Search the thirdparty that match the most the provided parameters. + * Searching rules try to find the existing third party. + * + * @param int $rowid Id of third party + * @param string $ref Reference of third party, name (Warning, this can return several records) + * @param string $ref_ext External reference of third party (Warning, this information is a free field not provided by Dolibarr) + * @param string $barcode Barcode of third party to load + * @param string $idprof1 Prof id 1 of third party (Warning, this can return several records) + * @param string $idprof2 Prof id 2 of third party (Warning, this can return several records) + * @param string $idprof3 Prof id 3 of third party (Warning, this can return several records) + * @param string $idprof4 Prof id 4 of third party (Warning, this can return several records) + * @param string $idprof5 Prof id 5 of third party (Warning, this can return several records) + * @param string $idprof6 Prof id 6 of third party (Warning, this can return several records) + * @param string $email Email of third party (Warning, this can return several records) + * @param string $ref_alias Name_alias of third party (Warning, this can return several records) + * @param int $is_client Only client third party + * @param int $is_supplier Only supplier third party + * @return int ID of thirdparty found if OK, <0 if KO or if two records found, 0 if not found. + */ + public function findNearest($rowid = 0, $ref = '', $ref_ext = '', $barcode = '', $idprof1 = '', $idprof2 = '', $idprof3 = '', $idprof4 = '', $idprof5 = '', $idprof6 = '', $email = '', $ref_alias = '', $is_client = 0, $is_supplier = 0) + { + // A rowid is known, it is a unique key so we found it + if ($rowid) { + return $rowid; + } + + // We try to find the thirdparty with exact matching on all fields + // TODO Replace this with step by step search + // Then search on barcode if we have it (+ restriction on is_client and is_supplier) + // Then search on profids with a OR (+ restriction on is_client and is_supplier) + // Then search on email (+ restriction on is_client and is_supplier) + // Then search ref, ref_ext or alias with a OR (+ restriction on is_client and is_supplier) + $tmpthirdparty = new Societe($this->db); + $result = $tmpthirdparty->fetch($rowid, $ref, $ref_ext, $barcode, $idprof1, $idprof2, $idprof3, $idprof4, $idprof5, $idprof6, $email, $ref_alias, $is_client, $is_supplier); + + return $result; + } + /** * Delete a third party from database and all its dependencies (contacts, rib...) * @@ -2335,7 +2375,7 @@ class Societe extends CommonObject // Writes trace in discount history $sql = "INSERT INTO ".MAIN_DB_PREFIX."societe_remise"; $sql .= " (entity, datec, fk_soc, remise_client, note, fk_user_author)"; - $sql .= " VALUES (".$conf->entity.", '".$this->db->idate($now)."', ".((int) $this->id).", '".$this->db->escape($remise)."',"; + $sql .= " VALUES (".((int) $conf->entity).", '".$this->db->idate($now)."', ".((int) $this->id).", '".$this->db->escape($remise)."',"; $sql .= " '".$this->db->escape($note)."',"; $sql .= " ".((int) $user->id); $sql .= ")"; @@ -2396,7 +2436,7 @@ class Societe extends CommonObject // Writes trace in discount history $sql = "INSERT INTO ".MAIN_DB_PREFIX."societe_remise_supplier"; $sql .= " (entity, datec, fk_soc, remise_supplier, note, fk_user_author)"; - $sql .= " VALUES (".$conf->entity.", '".$this->db->idate($now)."', ".((int) $this->id).", '".$this->db->escape($remise)."',"; + $sql .= " VALUES (".((int) $conf->entity).", '".$this->db->idate($now)."', ".((int) $this->id).", '".$this->db->escape($remise)."',"; $sql .= " '".$this->db->escape($note)."',"; $sql .= " ".((int) $user->id); $sql .= ")"; diff --git a/htdocs/societe/contact.php b/htdocs/societe/contact.php index 21f2105d94a..c499fad5ae9 100644 --- a/htdocs/societe/contact.php +++ b/htdocs/societe/contact.php @@ -138,23 +138,22 @@ if (empty($reshook)) { if ($action == 'confirm_delete' && $user->hasRight('societe', 'contact', 'delete')) { $id = GETPOST('id', 'int'); if (!empty($id) && $socid > 0) { - $db->begin(); - - $sql = "DELETE t, et FROM ".MAIN_DB_PREFIX."socpeople AS t"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople_extrafields AS et ON t.rowid = et.fk_object"; - $sql .= " WHERE t.fk_soc = ".((int) $socid); - $sql .= " AND t.rowid = ".((int) $id); - $sql .= " AND ((t.fk_user_creat = ".((int) $user->id)." AND t.priv = 1) OR t.priv = 0)"; - - $result = $db->query($sql); - if (!$result) { - setEventMessages($db->lasterror(), null, 'errors'); - $db->rollback(); + $contact = new Contact($db); + $ret = $contact->fetch($id); + if ($ret > 0) { + if ($contact->priv == 0 || ($contact->user_modification_id == ((int) $user->id) && $contact->priv == 1)) { + $contact->oldcopy = clone $contact; // @phan-suppress-current-line PhanTypeMismatchProperty + $result = $contact->delete($user); + if ($result > 0) { + setEventMessages('RecordDeleted', null, 'mesgs'); + header("Location: ".$_SERVER['PHP_SELF']."?id=".$socid); + exit(); + } else { + setEventMessages($contact->error, $contact->errors, 'errors'); + } + } } else { - $db->commit(); - setEventMessages('ContactDeleted', null, 'mesgs'); - header("Location: ".$_SERVER['PHP_SELF']."?id=".$socid); - exit(); + setEventMessages($contact->error, $contact->errors, 'errors'); } } } diff --git a/htdocs/societe/index.php b/htdocs/societe/index.php index 83089a617ff..e1b6c050347 100644 --- a/htdocs/societe/index.php +++ b/htdocs/societe/index.php @@ -422,7 +422,8 @@ if (getDolGlobalString('MAIN_COMPANY_PERENTITY_SHARED')) { if (!$user->hasRight('societe', 'client', 'voir')) { $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; } -$sql .= ' WHERE s.entity IN ('.getEntity('societe').') AND sp.fk_soc = s.rowid'; +$sql .= " WHERE s.entity IN (".getEntity('societe').") AND sp.fk_soc = s.rowid"; +$sql .= " AND ((sp.fk_user_creat = ".((int) $user->id)." AND sp.priv = 1) OR sp.priv = 0)"; // check if this is a private contact if (!$user->hasRight('societe', 'client', 'voir')) { $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".((int) $user->id); } diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index 1764c93a830..6ca82d69fbb 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -590,6 +590,11 @@ $sql .= " WHERE s.entity IN (".getEntity('societe').")"; if (!$user->hasRight('fournisseur', 'lire')) { $sql .= " AND (s.fournisseur <> 1 OR s.client <> 0)"; // client=0, fournisseur=0 must be visible } + +//Force the sales representative if they don't have permissions +if (!$user->hasRight('societe', 'client', 'voir') && !$socid) { + $search_sale = $user->id; +} // Search on sale representative if ($search_sale && $search_sale != '-1') { if ($search_sale == -2) { @@ -1626,7 +1631,8 @@ if (!empty($arrayfields['staff.code']['checked'])) { $totalarray['nbfield']++; } if (!empty($arrayfields['legalform.code']['checked'])) { - print_liste_field_titre($arrayfields['legalform.code']['label'], $_SERVER["PHP_SELF"], "legalform.code", "", $param, '', $sortfield, $sortorder); + // s.fk_forme_juridique as legalform_code + print_liste_field_titre($arrayfields['legalform.code']['label'], $_SERVER["PHP_SELF"], "legalform_code", "", $param, '', $sortfield, $sortorder); $totalarray['nbfield']++; } if (!empty($arrayfields['s.price_level']['checked'])) { @@ -1902,6 +1908,7 @@ while ($i < $imaxinloop) { $userstatic->user_mobile = $val['user_mobile']; $userstatic->job = $val['job']; $userstatic->gender = $val['gender']; + $userstatic->statut = $val['statut']; print ($nbofsalesrepresentative < 2) ? $userstatic->getNomUrl(-1, '', 0, 0, 12) : $userstatic->getNomUrl(-2); $j++; if ($j < $nbofsalesrepresentative) { diff --git a/htdocs/societe/paymentmodes.php b/htdocs/societe/paymentmodes.php index f8f220e73dd..8bd95f38448 100644 --- a/htdocs/societe/paymentmodes.php +++ b/htdocs/societe/paymentmodes.php @@ -1534,6 +1534,7 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' print '
'; } + // List of bank accounts if ($permissiontoaddupdatepaymentinformation) { $morehtmlright = dolGetButtonTitle($langs->trans('Add'), '', 'fa fa-plus-circle', $_SERVER["PHP_SELF"] . '?socid=' . $object->id . '&action=create'); @@ -1729,8 +1730,8 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; + // Show online signature link if (!getDolGlobalInt('SOCIETE_DISABLE_BANKACCOUNT') && getDolGlobalInt("SOCIETE_RIB_ALLOW_ONLINESIGN")) { - // Show online signature link print '
'; $useonlinesignature = 1; if ($useonlinesignature) { @@ -1848,16 +1849,17 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' print img_picto($langs->trans("Default"), 'on'); } print ''; - print $langs->trans("Remote"); - //if ($src->cvc_check == 'fail') print ' - CVC check fail'; - print ''; print ''; + print '
'; -print '
'; +print ''; if ($action == 'editsalesrepresentatives') { print ''; diff --git a/htdocs/societe/website.php b/htdocs/societe/website.php index 21bdeab9e85..3be228414e9 100644 --- a/htdocs/societe/website.php +++ b/htdocs/societe/website.php @@ -327,7 +327,7 @@ llxHeader('', $title); $arrayofselected = is_array($toselect) ? $toselect : array(); -$param = ''; +$param = 'id='.$object->id; if (!empty($mode)) { $param .= '&mode='.urlencode($mode); } @@ -479,9 +479,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/stripe/class/stripe.class.php b/htdocs/stripe/class/stripe.class.php index 46376458198..e93609d8882 100644 --- a/htdocs/stripe/class/stripe.class.php +++ b/htdocs/stripe/class/stripe.class.php @@ -344,7 +344,7 @@ class Stripe extends CommonObject /** * Get the Stripe payment intent. Create it with confirmnow=false * 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), reusing same payment intent is not allowed by Stripe. + * But if we change something on object to pay (amount or other), 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 after a delay), * that's why i comment the part of code to retrieve a payment intent with object id (never mind if we cumulate payment intent with old ones that will not be used) * Note: This is used when option STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION is on when making a payment from the public/payment/newpayment.php page @@ -371,7 +371,7 @@ class Stripe extends CommonObject { global $conf, $user; - dol_syslog(get_class($this)."::getPaymentIntent", LOG_INFO, 1); + dol_syslog(get_class($this)."::getPaymentIntent description=".$description, LOG_INFO, 1); $error = 0; @@ -407,7 +407,7 @@ class Stripe extends CommonObject if (is_object($object) && getDolGlobalInt('STRIPE_REUSE_EXISTING_INTENT_IF_FOUND') && !getDolGlobalInt('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. + // 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 // automatically return the existing payment intent if idempotency is provided when we try to create the new one. // That's why we can comment the part of code to retrieve a payment intent with object id (never mind if we cumulate payment intent with old ones that will not be used) @@ -450,7 +450,7 @@ class Stripe extends CommonObject if (empty($paymentintent)) { // Try to create intent. See https://stripe.com/docs/api/payment_intents/create $ipaddress = getUserRemoteIP(); - $metadata = array('dol_version' => DOL_VERSION, 'dol_entity' => $conf->entity, 'ipaddress' => $ipaddress); + $metadata = array('dol_version' => DOL_VERSION, 'dol_entity' => $conf->entity, 'ipaddress' => $ipaddress, 'dol_noidempotency' => (int) $noidempotency_key); if (is_object($object)) { $metadata['dol_type'] = $object->element; $metadata['dol_id'] = $object->id; @@ -487,6 +487,8 @@ class Stripe extends CommonObject global $dolibarr_main_url_root; + $descriptioninpaymentintent = $description; + $dataforintent = array( "confirm" => $confirmnow, // try to confirm immediately after create (if conditions are ok) "confirmation_method" => $mode, @@ -500,7 +502,7 @@ class Stripe extends CommonObject 'allow_redirects' => 'never', ), */ - "description" => $description, + "description" => $descriptioninpaymentintent, //"save_payment_method" => true, "setup_future_usage" => "on_session", "metadata" => $metadata @@ -552,14 +554,15 @@ class Stripe extends CommonObject $arrayofoptions = array(); if (empty($noidempotency_key)) { - $arrayofoptions["idempotency_key"] = $description; + $arrayofoptions["idempotency_key"] = $descriptioninpaymentintent; } // Note: If all data for payment intent are same than a previous on, even if we use 'create', Stripe will return ID of the old existing payment intent. if (!empty($key)) { // If the Stripe connect account not set, we use common API usage $arrayofoptions["stripe_account"] = $key; } - dol_syslog("dataforintent to create paymentintent = ".var_export($dataforintent, true)); + dol_syslog(get_class($this)."::getPaymentIntent ".$stripearrayofkeysbyenv[$status]['publishable_key'], LOG_DEBUG); + dol_syslog(get_class($this)."::getPaymentIntent dataforintent to create paymentintent = ".var_export($dataforintent, true)); $paymentintent = \Stripe\PaymentIntent::create($dataforintent, $arrayofoptions); @@ -673,6 +676,8 @@ class Stripe extends CommonObject { global $conf; + $noidempotency_key = 1; + dol_syslog("getSetupIntent description=".$description.' confirmnow='.json_encode($confirmnow), LOG_INFO, 1); $error = 0; @@ -687,7 +692,7 @@ class Stripe extends CommonObject if (empty($setupintent)) { $ipaddress = getUserRemoteIP(); - $metadata = array('dol_version' => DOL_VERSION, 'dol_entity' => $conf->entity, 'ipaddress' => $ipaddress); + $metadata = array('dol_version' => DOL_VERSION, 'dol_entity' => $conf->entity, 'ipaddress' => $ipaddress, 'dol_noidempotency' => (int) $noidempotency_key); if (is_object($object)) { $metadata['dol_type'] = $object->element; $metadata['dol_id'] = $object->id; @@ -714,6 +719,8 @@ class Stripe extends CommonObject global $dolibarr_main_url_root; + $descriptioninsetupintent = $description; + $dataforintent = array( "confirm" => $confirmnow, // Do not confirm immediately during creation of intent "payment_method_types" => $paymentmethodtypes, // When payment_method_types is set, return_url is not required but payment mode can't be managed from dashboard @@ -731,7 +738,7 @@ class Stripe extends CommonObject $dataforintent["customer"] = $customer; } if (!is_null($description)) { - $dataforintent["description"] = $description; + $dataforintent["description"] = $descriptioninsetupintent; } // payment_method = // payment_method_types = array('card') @@ -746,7 +753,8 @@ class Stripe extends CommonObject global $stripearrayofkeysbyenv; \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']); - dol_syslog("getSetupIntent ".$stripearrayofkeysbyenv[$status]['publishable_key'], LOG_DEBUG); + dol_syslog(get_class($this)."::getSetupIntent ".$stripearrayofkeysbyenv[$status]['publishable_key'], LOG_DEBUG); + dol_syslog(get_class($this)."::getSetupIntent dataforintent to create setupintent = ".var_export($dataforintent, true)); // Note: If all data for payment intent are same than a previous one, even if we use 'create', Stripe will return ID of the old existing payment intent. if (empty($key)) { // If the Stripe connect account not set, we use common API usage diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 97af0c4d022..ed793371f70 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -1694,7 +1694,7 @@ if ($action == 'create') { print ''; - if ($action != 'editdate_livraison' && $object->statut == SupplierProposal::STATUS_VALIDATED) { + if ($action != 'editdate_livraison' && $object->statut != SupplierProposal::STATUS_NOTSIGNED) { print ''; } print '
'; print $langs->trans('DeliveryDate'); print 'id.'">'.img_edit($langs->transnoentitiesnoconv('SetDeliveryDate'), 1).'
'; diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index be52049971a..959533d131d 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -3003,57 +3003,58 @@ class SupplierProposalLine extends CommonObjectLine $result = $this->db->query($sql); if ($result) { - $objp = $this->db->fetch_object($result); + if ($objp = $this->db->fetch_object($result)) { + $this->id = $objp->rowid; + $this->fk_supplier_proposal = $objp->fk_supplier_proposal; + $this->fk_parent_line = $objp->fk_parent_line; + $this->label = $objp->custom_label; + $this->desc = $objp->description; + $this->qty = $objp->qty; + $this->subprice = $objp->subprice; + $this->tva_tx = $objp->tva_tx; + $this->remise_percent = $objp->remise_percent; + $this->fk_remise_except = $objp->fk_remise_except; + $this->fk_product = $objp->fk_product; + $this->info_bits = $objp->info_bits; + $this->date_start = $this->db->jdate($objp->date_start); + $this->date_end = $this->db->jdate($objp->date_end); - $this->id = $objp->rowid; - $this->fk_supplier_proposal = $objp->fk_supplier_proposal; - $this->fk_parent_line = $objp->fk_parent_line; - $this->label = $objp->custom_label; - $this->desc = $objp->description; - $this->qty = $objp->qty; - $this->subprice = $objp->subprice; - $this->tva_tx = $objp->tva_tx; - $this->remise_percent = $objp->remise_percent; - $this->fk_remise_except = $objp->fk_remise_except; - $this->fk_product = $objp->fk_product; - $this->info_bits = $objp->info_bits; - $this->date_start = $this->db->jdate($objp->date_start); - $this->date_end = $this->db->jdate($objp->date_end); + $this->total_ht = $objp->total_ht; + $this->total_tva = $objp->total_tva; + $this->total_ttc = $objp->total_ttc; - $this->total_ht = $objp->total_ht; - $this->total_tva = $objp->total_tva; - $this->total_ttc = $objp->total_ttc; + $this->fk_fournprice = $objp->fk_fournprice; - $this->fk_fournprice = $objp->fk_fournprice; + $marginInfos = getMarginInfos($objp->subprice, $objp->remise_percent, $objp->tva_tx, $objp->localtax1_tx, $objp->localtax2_tx, $this->fk_fournprice, $objp->pa_ht); + $this->pa_ht = $marginInfos[0]; + $this->marge_tx = $marginInfos[1]; + $this->marque_tx = $marginInfos[2]; - $marginInfos = getMarginInfos($objp->subprice, $objp->remise_percent, $objp->tva_tx, $objp->localtax1_tx, $objp->localtax2_tx, $this->fk_fournprice, $objp->pa_ht); - $this->pa_ht = $marginInfos[0]; - $this->marge_tx = $marginInfos[1]; - $this->marque_tx = $marginInfos[2]; + $this->special_code = $objp->special_code; + $this->product_type = $objp->product_type; + $this->rang = $objp->rang; - $this->special_code = $objp->special_code; - $this->product_type = $objp->product_type; - $this->rang = $objp->rang; + $this->ref = $objp->product_ref; // deprecated + $this->product_ref = $objp->product_ref; + $this->libelle = $objp->product_label; // deprecated + $this->product_label = $objp->product_label; + $this->product_desc = $objp->product_desc; - $this->ref = $objp->product_ref; // deprecated - $this->product_ref = $objp->product_ref; - $this->libelle = $objp->product_label; // deprecated - $this->product_label = $objp->product_label; - $this->product_desc = $objp->product_desc; + $this->ref_fourn = $objp->ref_produit_fourn; - $this->ref_fourn = $objp->ref_produit_fourn; + // Multicurrency + $this->fk_multicurrency = $objp->fk_multicurrency; + $this->multicurrency_code = $objp->multicurrency_code; + $this->multicurrency_subprice = $objp->multicurrency_subprice; + $this->multicurrency_total_ht = $objp->multicurrency_total_ht; + $this->multicurrency_total_tva = $objp->multicurrency_total_tva; + $this->multicurrency_total_ttc = $objp->multicurrency_total_ttc; + $this->fk_unit = $objp->fk_unit; - // Multicurrency - $this->fk_multicurrency = $objp->fk_multicurrency; - $this->multicurrency_code = $objp->multicurrency_code; - $this->multicurrency_subprice = $objp->multicurrency_subprice; - $this->multicurrency_total_ht = $objp->multicurrency_total_ht; - $this->multicurrency_total_tva = $objp->multicurrency_total_tva; - $this->multicurrency_total_ttc = $objp->multicurrency_total_ttc; - $this->fk_unit = $objp->fk_unit; - - $this->db->free($result); - return 1; + $this->db->free($result); + return 1; + } + return 0; } else { dol_print_error($this->db); return -1; diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index 70afd2b4b76..6622a28fec3 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -705,7 +705,7 @@ if ($resql) { $moreforfilter .= ''; } $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters); // Note that $action and $object may have been modified by hook + $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $moreforfilter .= $hookmanager->resPrint; } else { diff --git a/htdocs/takepos/admin/appearance.php b/htdocs/takepos/admin/appearance.php index 7445c7f5dee..1fbe8a52b62 100644 --- a/htdocs/takepos/admin/appearance.php +++ b/htdocs/takepos/admin/appearance.php @@ -84,9 +84,11 @@ print ''; print ''; +print '
'; + print ''; print ''; -print ''; +print ''; print "\n"; // Color theme diff --git a/htdocs/takepos/admin/bar.php b/htdocs/takepos/admin/bar.php index 86cfa143985..4ed707de669 100644 --- a/htdocs/takepos/admin/bar.php +++ b/htdocs/takepos/admin/bar.php @@ -123,7 +123,7 @@ if (getDolGlobalInt('TAKEPOS_BAR_RESTAURANT')) { print '
'; print '
'.$langs->trans("Parameters").''.$langs->trans("Value").''.$langs->trans("Parameters").'
'; print ''; - print ''; + print ''; print "\n"; print ''."\n"; print ''; print ''; -print ''; +print ''; print ''; print "
'.$langs->trans("Parameters").''.$langs->trans("Value").''.$langs->trans("Parameters").'
'; diff --git a/htdocs/takepos/admin/other.php b/htdocs/takepos/admin/other.php index 6576f1207a5..f88f72fc447 100644 --- a/htdocs/takepos/admin/other.php +++ b/htdocs/takepos/admin/other.php @@ -96,7 +96,10 @@ $url = 'https://www.dolistore.com/45-pos'; print '
'.$langs->trans("DolistorePosCategory").''.$url.''; +print ''; +print img_picto('', 'url', 'class="pictofixedwidth"'); +print $url.'
\n"; @@ -118,9 +121,12 @@ print '
TakePOS original developers'.$url.''; +print ''; +print img_picto('', 'url', 'class="pictofixedwidth"'); +print $url.'
\n"; diff --git a/htdocs/takepos/admin/receipt.php b/htdocs/takepos/admin/receipt.php index 8eb37b306d6..eb0d3ef1fce 100644 --- a/htdocs/takepos/admin/receipt.php +++ b/htdocs/takepos/admin/receipt.php @@ -211,12 +211,14 @@ print "\n"; print ''; print '
'; -print '
'; - print $form->buttonsSaveCancel("Save", ''); print "\n"; + +print '
'; + + print load_fiche_titre($langs->trans("Preview"), '', ''); print '
'; print '
'; diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index dc46e17e717..5f7c2320e66 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -248,6 +248,9 @@ print "\n"; print '
'; + +print load_fiche_titre($langs->trans('Options'), '', ''); + // Mode print '
'; print ''; @@ -257,7 +260,7 @@ print '
'; print ''; print ''; -print ''; +print ''; print "\n"; // Terminals @@ -477,7 +480,7 @@ if (getDolGlobalInt('TAKEPOS_ENABLE_SUMUP')) { print '
'.$langs->trans("Parameters").''.$langs->trans("Value").''.$langs->trans("Parameters").'
'; print ''; - print ''; + print ''; print "\n"; print ''; print ''; - print ''; + print ''; print '
'.$langs->trans("Sumup").''.$langs->trans("Value").''.$langs->trans("Sumup").'
'; @@ -495,8 +498,6 @@ if (getDolGlobalInt('TAKEPOS_ENABLE_SUMUP')) { print ''; } -print '
'; - print $form->buttonsSaveCancel("Save", ''); print "\n"; diff --git a/htdocs/takepos/admin/terminal.php b/htdocs/takepos/admin/terminal.php index f2efe2c6d45..596f14c6698 100644 --- a/htdocs/takepos/admin/terminal.php +++ b/htdocs/takepos/admin/terminal.php @@ -184,7 +184,7 @@ print ''; print '
'; print ''; print ''; -print ''; +print ''; print "\n"; print ''; @@ -477,6 +477,9 @@ if (getDolGlobalString('TAKEPOS_ADDON') == "terminal") { } print '
'.$langs->trans("Parameters").''.$langs->trans("Value").''.$langs->trans("Parameters").'
'.$langs->trans("TerminalNameDesc").'
'; + +print $form->buttonsSaveCancel("Save", ''); + print '
'; // add free text on each terminal of cash desk @@ -536,8 +539,6 @@ if ($atleastonefound == 0 && isModEnabled("bank")) { print info_admin($langs->trans("AtLeastOneDefaultBankAccountMandatory"), 0, 0, 'error'); } -print '
'; - print $form->buttonsSaveCancel("Save", ''); print "\n"; diff --git a/htdocs/takepos/ajax/ajax.php b/htdocs/takepos/ajax/ajax.php index cb4b489206c..d10c3ef88b0 100644 --- a/htdocs/takepos/ajax/ajax.php +++ b/htdocs/takepos/ajax/ajax.php @@ -241,7 +241,7 @@ if ($action == 'getProducts') { 'label' => $obj->label, 'tosell' => $obj->tosell, 'tobuy' => $obj->tobuy, - 'barcode' => $obj->barcode, + 'barcode' => $term, // there is only one product matches the barcode rule and so the term is considered as the barcode of this product, 'price' => empty($objProd->multiprices[$pricelevel]) ? $obj->price : $objProd->multiprices[$pricelevel], 'price_ttc' => empty($objProd->multiprices_ttc[$pricelevel]) ? $obj->price_ttc : $objProd->multiprices_ttc[$pricelevel], 'object' => 'product', diff --git a/htdocs/takepos/freezone.php b/htdocs/takepos/freezone.php index 793dd261d0b..f1036645ef9 100644 --- a/htdocs/takepos/freezone.php +++ b/htdocs/takepos/freezone.php @@ -112,7 +112,7 @@ top_htmlhead('', '', 0, 0, $arrayofjs, $arrayofcss); */ function Save() { console.log("We click so we call page invoice.php with invoiceid=, place=, amount="+$("#number").val()+", tva_tx="+vatRate); - parent.$("#poslines").load("invoice.php?action=freezone&token=&invoiceid=&place=&number="+$("#number").val()+"&tva_tx="+vatRate, {desc:$("#desc").val()}); + parent.$("#poslines").load("/takepos/invoice.php?action=freezone&token=&invoiceid=&place=&number="+$("#number").val()+"&tva_tx="+vatRate, {desc:$("#desc").val()}); parent.$.colorbox.close(); } diff --git a/htdocs/takepos/index.php b/htdocs/takepos/index.php index 74efda87a5a..baa290337f1 100644 --- a/htdocs/takepos/index.php +++ b/htdocs/takepos/index.php @@ -537,10 +537,12 @@ function ClickProduct(position, qty = 1) { console.log($('#prodiv4').data('rowid')); invoiceid = $("#invoiceid").val(); idproduct=$('#prodiv'+position).data('rowid'); - console.log("Click on product at position "+position+" for idproduct "+idproduct+", qty="+qty+" invoicdeid="+invoiceid); - if (idproduct=="") return; + console.log("Click on product at position "+position+" for idproduct "+idproduct+", qty="+qty+" invoiceid="+invoiceid); + if (idproduct == "") { + return; + } // Call page invoice.php to generate the section with product lines - $("#poslines").load("invoice.php?action=addline&token=&place="+place+"&idproduct="+idproduct+"&qty="+qty+"&invoiceid="+invoiceid, function() { + $("#poslines").load("invoice.php?action=addline&token=&place="+place+"&idproduct="+idproduct+"&qty="+qty+"&invoiceid="+invoiceid, function() { @@ -595,7 +597,7 @@ function CloseBill() { if (!empty($conf->global->TAKEPOS_FORBID_SALES_TO_DEFAULT_CUSTOMER)) { echo "customerAnchorTag = document.querySelector('a[id=\"customer\"]'); "; echo "if (customerAnchorTag && customerAnchorTag.innerText.trim() === '".$langs->trans("Customer")."') { "; - echo "alert('".$langs->trans("NoClientErrorMessage")."'); "; + echo "alert('".dol_escape_js($langs->trans("NoClientErrorMessage"))."'); "; echo "return; } \n"; } ?> @@ -805,7 +807,7 @@ function Search2(keyCodeForEnter, moreorless) { console.log("There is only 1 answer with barcode matching the search, so we change the thirdparty "+data[0]['rowid']); ChangeThirdparty(data[0]['rowid']); } - else if ($('#search').val() == data[0]['barcode'] && 'product' == data[0]['object']) { + else if ('product' == data[0]['object'] && $('#search').val() == data[0]['barcode']) { console.log("There is only 1 answer and we found search on a barcode, so we add the product in basket, qty="+data[0]['qty']); ClickProduct(0, data[0]['qty']); } diff --git a/htdocs/takepos/invoice.php b/htdocs/takepos/invoice.php index 70321b50850..e67a86309bc 100644 --- a/htdocs/takepos/invoice.php +++ b/htdocs/takepos/invoice.php @@ -233,6 +233,8 @@ if (empty($reshook)) { } $constantforkey = 'CASHDESK_NO_DECREASE_STOCK'.(isset($_SESSION["takeposterminal"]) ? $_SESSION["takeposterminal"] : ''); + $allowstockchange = (getDolGlobalString($constantforkey) != "1"); + if ($error) { dol_htmloutput_errors($errormsg, null, 1); } elseif ($invoice->status != Facture::STATUS_DRAFT) { @@ -247,31 +249,25 @@ if (empty($reshook)) { $error++; dol_syslog('Sale without lines'); dol_htmloutput_errors($langs->trans("NoLinesToBill", "TakePos"), null, 1); - } elseif (isModEnabled('stock') && !isModEnabled('productbatch') && getDolGlobalString($constantforkey) != "1") { - // Validation of invoice with change into stock when produt/lot module is not enabled and stock change not disabled. + } elseif (isModEnabled('stock') && !isModEnabled('productbatch') && $allowstockchange) { + // Validation of invoice with change into stock when produt/lot module is NOT enabled and stock change NOT disabled. // The case for isModEnabled('productbatch') is processed few lines later. $savconst = getDolGlobalString('STOCK_CALCULATE_ON_BILL'); - if (isModEnabled('productbatch') && !getDolGlobalInt('CASHDESK_FORCE_DECREASE_STOCK')) { - $conf->global->STOCK_CALCULATE_ON_BILL = 0; // To not change the stock (this will be done later) - } else { - // Deprecated: CASHDESK_FORCE_DECREASE_STOCK is now always false. No more required/used. - $conf->global->STOCK_CALCULATE_ON_BILL = 1; // To force the change of stock - } + $conf->global->STOCK_CALCULATE_ON_BILL = 1; // To force the change of stock during invoice validation $constantforkey = 'CASHDESK_ID_WAREHOUSE'.$_SESSION["takeposterminal"]; - dol_syslog("Validate invoice with stock change into warehouse defined into constant ".$constantforkey." = ".getDolGlobalString($constantforkey)); + dol_syslog("Validate invoice with stock change. Warehouse defined into constant ".$constantforkey." = ".getDolGlobalString($constantforkey)); - $batch_rule = 0; - if (isModEnabled('productbatch') && getDolGlobalString('CASHDESK_FORCE_DECREASE_STOCK')) { - require_once DOL_DOCUMENT_ROOT.'/product/class/productbatch.class.php'; - $batch_rule = Productbatch::BATCH_RULE_SELLBY_EATBY_DATES_FIRST; - } + // Validate invoice with stock change into warehouse getDolGlobalInt($constantforkey) + // Label of stock movement will be the same as when we validate invoice "Invoice XXXX validated" + $batch_rule = 0; // Module productbatch is disabled here, so no need for a batch_rule. $res = $invoice->validate($user, '', getDolGlobalInt($constantforkey), 0, $batch_rule); + // Restore setup $conf->global->STOCK_CALCULATE_ON_BILL = $savconst; } else { - // Validation of invoice with no change into stock + // Validation of invoice with no change into stock (because param $idwarehouse is not fill) $res = $invoice->validate($user); if ($res < 0) { $error++; @@ -331,32 +327,41 @@ if (empty($reshook)) { // Update stock for batch products if (!$error && $res >= 0) { - if (isModEnabled('stock') && isModEnabled('productbatch')) { // The case !isModEnabled('productbatch') was processed few lines before. + if (isModEnabled('stock') && isModEnabled('productbatch') && $allowstockchange) { + // Update stocks + dol_syslog("Now we record the stock movement for each qualified line"); + + // The case !isModEnabled('productbatch') was processed few lines before. require_once DOL_DOCUMENT_ROOT . "/product/stock/class/mouvementstock.class.php"; $constantforkey = 'CASHDESK_ID_WAREHOUSE'.$_SESSION["takeposterminal"]; $inventorycode = dol_print_date(dol_now(), 'dayhourlog'); + // Label of stock movement will be "TakePOS - Invoice XXXX" $labeltakeposmovement = 'TakePOS - '.$langs->trans("Invoice").' '.$invoice->ref; foreach ($invoice->lines as $line) { + // Use the warehouse id defined on invoice line else in the setup $warehouseid = ($line->fk_warehouse ? $line->fk_warehouse : getDolGlobalInt($constantforkey)); // var_dump('fk_product='.$line->fk_product.' batch='.$line->batch.' warehouse='.$line->fk_warehouse.' qty='.$line->qty); if ($line->batch != '' && $warehouseid > 0) { $prod_batch = new Productbatch($db); $prod_batch->find(0, '', '', $line->batch, $warehouseid); + $mouvP = new MouvementStock($db); - $mouvP->origin = $invoice; + $mouvP->setOrigin($invoice->element, $invoice->id); + $res = $mouvP->livraison($user, $line->fk_product, $warehouseid, $line->qty, $line->price, $labeltakeposmovement, '', '', '', $prod_batch->batch, $prod_batch->id, $inventorycode); if ($res < 0) { - setEventMessages($mouvP->error, $mouvP->errors, 'errors'); + dol_htmloutput_errors($mouvP->error, $mouvP->errors, 1); $error++; } } else { $mouvP = new MouvementStock($db); - $mouvP->origin = $invoice; + $mouvP->setOrigin($invoice->element, $invoice->id); + $res = $mouvP->livraison($user, $line->fk_product, $warehouseid, $line->qty, $line->price, $labeltakeposmovement, '', '', '', '', 0, $inventorycode); if ($res < 0) { - setEventMessages($mouvP->error, $mouvP->errors, 'errors'); + dol_htmloutput_errors($mouvP->error, $mouvP->errors, 1); $error++; } } @@ -385,11 +390,6 @@ if (empty($reshook)) { $creditnote->create($user); foreach ($invoice->lines as $line) { - // Extrafields - if (method_exists($line, 'fetch_optionals')) { - // load extrafields - $line->fetch_optionals(); - } // Reset fk_parent_line for no child products and special product if (($line->product_type != 9 && empty($line->fk_parent_line)) || $line->product_type == 9) { $fk_parent_line = 0; @@ -470,6 +470,7 @@ if (empty($reshook)) { } } + // We update field for credit notes $line->fk_facture = $creditnote->id; $line->fk_parent_line = $fk_parent_line; @@ -497,36 +498,95 @@ if (empty($reshook)) { } $creditnote->update_price(1); + // The credit note is create here. We must now validate it. + $constantforkey = 'CASHDESK_NO_DECREASE_STOCK'.(isset($_SESSION["takeposterminal"]) ? $_SESSION["takeposterminal"] : ''); - if (isModEnabled('stock') && getDolGlobalString($constantforkey) != "1") { + $allowstockchange = getDolGlobalString($constantforkey) != "1"; + + if (isModEnabled('stock') && !isModEnabled('productbatch') && $allowstockchange) { + // If module stock is enabled and we do not setup takepo to disable stock decrease + // The case for isModEnabled('productbatch') is processed few lines later. $savconst = getDolGlobalString('STOCK_CALCULATE_ON_BILL'); - $conf->global->STOCK_CALCULATE_ON_BILL = 1; + $conf->global->STOCK_CALCULATE_ON_BILL = 1; // We force setup to have update of stock on invoice validation/unvalidation + $constantforkey = 'CASHDESK_ID_WAREHOUSE'.(isset($_SESSION["takeposterminal"]) ? $_SESSION["takeposterminal"] : ''); - dol_syslog("Validate invoice with stock change into warehouse defined into constant ".$constantforkey." = ".getDolGlobalString($constantforkey)); - $batch_rule = 0; - if (isModEnabled('productbatch') && getDolGlobalString('CASHDESK_FORCE_DECREASE_STOCK')) { - require_once DOL_DOCUMENT_ROOT.'/product/class/productbatch.class.php'; - $batch_rule = Productbatch::BATCH_RULE_SELLBY_EATBY_DATES_FIRST; - } + + dol_syslog("Validate invoice with stock change into warehouse defined into constant ".$constantforkey." = ".getDolGlobalString($constantforkey)." or warehouseid= ".$warehouseid." if defined."); + + // Validate invoice with stock change into warehouse getDolGlobalInt($constantforkey) + // Label of stock movement will be the same as when we validate invoice "Invoice XXXX validated" + $batch_rule = 0; // Module productbatch is disabled here, so no need for a batch_rule. $res = $creditnote->validate($user, '', getDolGlobalString($constantforkey), 0, $batch_rule); + if ($res < 0) { + $error++; + dol_htmloutput_errors($creditnote->error, $creditnote->errors, 1); + } + + // Restore setup $conf->global->STOCK_CALCULATE_ON_BILL = $savconst; } else { $res = $creditnote->validate($user); } + // Update stock for batch products + if (!$error && $res >= 0) { + if (isModEnabled('stock') && isModEnabled('productbatch') && $allowstockchange) { + // Update stocks + dol_syslog("Now we record the stock movement for each qualified line"); + + // The case !isModEnabled('productbatch') was processed few lines before. + require_once DOL_DOCUMENT_ROOT . "/product/stock/class/mouvementstock.class.php"; + $constantforkey = 'CASHDESK_ID_WAREHOUSE'.$_SESSION["takeposterminal"]; + $inventorycode = dol_print_date(dol_now(), 'dayhourlog'); + // Label of stock movement will be "TakePOS - Invoice XXXX" + $labeltakeposmovement = 'TakePOS - '.$langs->trans("CreditNote").' '.$creditnote->ref; + + foreach ($creditnote->lines as $line) { + // Use the warehouse id defined on invoice line else in the setup + $warehouseid = ($line->fk_warehouse ? $line->fk_warehouse : getDolGlobalInt($constantforkey)); + //var_dump('fk_product='.$line->fk_product.' batch='.$line->batch.' warehouse='.$line->fk_warehouse.' qty='.$line->qty);exit; + + if ($line->batch != '' && $warehouseid > 0) { + //$prod_batch = new Productbatch($db); + //$prod_batch->find(0, '', '', $line->batch, $warehouseid); + + $mouvP = new MouvementStock($db); + $mouvP->setOrigin($creditnote->element, $creditnote->id); + + $res = $mouvP->reception($user, $line->fk_product, $warehouseid, $line->qty, $line->price, $labeltakeposmovement, '', '', $line->batch, '', 0, $inventorycode); + if ($res < 0) { + dol_htmloutput_errors($mouvP->error, $mouvP->errors, 1); + $error++; + } + } else { + $mouvP = new MouvementStock($db); + $mouvP->setOrigin($creditnote->element, $creditnote->id); + + $res = $mouvP->reception($user, $line->fk_product, $warehouseid, $line->qty, $line->price, $labeltakeposmovement, '', '', '', '', 0, $inventorycode); + if ($res < 0) { + dol_htmloutput_errors($mouvP->error, $mouvP->errors, 1); + $error++; + } + } + } + } + } + if (!$error && $res >= 0) { $db->commit(); } else { + $creditnote->id = $placeid; // Creation has failed, we reset to ID of source invoice so we go back to this one in action=history $db->rollback(); } } if (($action == 'history' || $action == 'creditnote') && $user->hasRight('takepos', 'run')) { - if ($action == 'creditnote') { + if ($action == 'creditnote' && $creditnote->id > 0) { $placeid = $creditnote->id; } else { $placeid = GETPOSTINT('placeid'); } + $invoice = new Facture($db); $invoice->fetch($placeid); } @@ -593,7 +653,7 @@ if (empty($reshook)) { if (isModEnabled('productbatch') && isModEnabled('stock')) { $batch = GETPOST('batch', 'alpha'); - if (!empty($batch)) { // We have just clicked on the batch number + if (!empty($batch)) { // We have just clicked on a batch number, we will execute action=setbatch later... $action = "setbatch"; } elseif ($prod->status_batch > 0) { // If product need a lot/serial, we show the list of lot/serial available for the product... @@ -608,7 +668,7 @@ if (empty($reshook)) { //var_dump($prod->stock_warehouse); foreach ($prod->stock_warehouse as $tmpwarehouseid => $tmpval) { if (getDolGlobalInt($constantforkey) && $tmpwarehouseid != getDolGlobalInt($constantforkey)) { - // Not on the forced warehous, so we ignore this warehous + // Product to select is not on the warehouse configured for terminal, so we ignore this warehouse continue; } if (!empty($prod->stock_warehouse[$tmpwarehouseid]) && is_array($prod->stock_warehouse[$tmpwarehouseid]->detail_batch)) { @@ -624,7 +684,7 @@ if (empty($reshook)) { echo "\n"; @@ -642,7 +702,7 @@ if (empty($reshook)) { $deliverableQty = min($quantityToBeDelivered, $batchStock); print '
'; $detail = ''; $detail .= ''.$langs->trans("LotSerial").': '.$dbatch->batch; @@ -908,7 +968,12 @@ if (empty($reshook)) { if (!$permissiontoupdateline) { dol_htmloutput_errors($langs->trans("NotEnoughPermissions", "TakePos").' - No permission to updateqty', null, 1); } else { - $result = $invoice->updateline($line->id, $line->desc, $line->subprice, $number, $line->remise_percent, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); + $vatratecode = $line->tva_tx; + if ($line->vat_src_code) { + $vatratecode .= ' ('.$line->vat_src_code.')'; + } + + $result = $invoice->updateline($line->id, $line->desc, $line->subprice, $number, $line->remise_percent, $line->date_start, $line->date_end, $vatratecode, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); } } } @@ -942,12 +1007,18 @@ if (empty($reshook)) { // TODO Check also that invoice->ref is (PROV-POS1-2) with 1 = terminal and 2, the invoice ID } } + + $vatratecode = $line->tva_tx; + if ($line->vat_src_code) { + $vatratecode .= ' ('.$line->vat_src_code.')'; + } + if (!$permissiontoupdateline) { dol_htmloutput_errors($langs->trans("NotEnoughPermissions", "TakePos").' - No permission to updateprice', null, 1); } elseif (getDolGlobalInt('TAKEPOS_CHANGE_PRICE_HT') == 1) { - $result = $invoice->updateline($line->id, $line->desc, $number, $line->qty, $line->remise_percent, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); + $result = $invoice->updateline($line->id, $line->desc, $number, $line->qty, $line->remise_percent, $line->date_start, $line->date_end, $vatratecode, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); } else { - $result = $invoice->updateline($line->id, $line->desc, $number, $line->qty, $line->remise_percent, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'TTC', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); + $result = $invoice->updateline($line->id, $line->desc, $number, $line->qty, $line->remise_percent, $line->date_start, $line->date_end, $vatratecode, $line->localtax1_tx, $line->localtax2_tx, 'TTC', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); } } } @@ -990,7 +1061,11 @@ if (empty($reshook)) { if (!$permissiontoupdateline) { dol_htmloutput_errors($langs->trans("NotEnoughPermissions", "TakePos"), null, 1); } else { - $result = $invoice->updateline($line->id, $line->desc, $line->subprice, $line->qty, $number, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); + $vatratecode = $line->tva_tx; + if ($line->vat_src_code) { + $vatratecode .= ' ('.$line->vat_src_code.')'; + } + $result = $invoice->updateline($line->id, $line->desc, $line->subprice, $line->qty, $number, $line->date_start, $line->date_end, $vatratecode, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); } } } @@ -1000,7 +1075,11 @@ if (empty($reshook)) { $invoice->fetch($placeid); } elseif ($action == 'update_reduction_global' && $user->hasRight('takepos', 'editlines')) { foreach ($invoice->lines as $line) { - $result = $invoice->updateline($line->id, $line->desc, $line->subprice, $line->qty, $number, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); + $vatratecode = $line->tva_tx; + if ($line->vat_src_code) { + $vatratecode .= ' ('.$line->vat_src_code.')'; + } + $result = $invoice->updateline($line->id, $line->desc, $line->subprice, $line->qty, $number, $line->date_start, $line->date_end, $vatratecode, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, 0, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit); } $invoice->fetch($placeid); @@ -1008,7 +1087,7 @@ if (empty($reshook)) { if ($action == "setbatch" && ($user->hasRight('takepos', 'run') || defined('INCLUDE_PHONEPAGE_FROM_PUBLIC_PAGE'))) { $constantforkey = 'CASHDESK_ID_WAREHOUSE'.$_SESSION["takeposterminal"]; - $warehouseid = getDolGlobalInt($constantforkey); // TODO Get the wrehouse id from GETPOSTINT('warehouseid'); + $warehouseid = (GETPOSTINT('warehouseid') > 0 ? GETPOSTINT('warehouseid') : getDolGlobalInt($constantforkey)); // Get the warehouse id from GETPOSTINT('warehouseid'), otherwise use default setup. $sql = "UPDATE ".MAIN_DB_PREFIX."facturedet SET batch = '".$db->escape($batch)."', fk_warehouse = ".((int) $warehouseid); $sql .= " WHERE rowid=".((int) $idoflineadded); $db->query($sql); @@ -1396,13 +1475,15 @@ function DolibarrTakeposPrinting(id) { return true; } +// Call url to generate a credit note (with same lines) from existing invoice function CreditNote() { - $("#poslines").load("invoice.php?action=creditnote&token=&invoiceid="+placeid, function() { }); + $("#poslines").load("/takepos/invoice.php?action=creditnote&token=&invoiceid="+placeid, function() { }); return true; } +// Call url to add notes function SetNote() { - $("#poslines").load("invoice.php?action=addnote&token=&invoiceid="+placeid+"&idline="+selectedline, { "addnote": $("#textinput").val() }); + $("#poslines").load("/takepos/invoice.php?action=addnote&token=&invoiceid="+placeid+"&idline="+selectedline, { "addnote": $("#textinput").val() }); return true; } @@ -1942,13 +2023,18 @@ if ($placeid > 0) { $stock_real = price2num($obj->reel, 'MS'); } $htmlforlines .= $line->qty; + $htmlforlines .= '  '; + $htmlforlines .= ''; + $htmlforlines .= '('; if ($line->qty && $line->qty > $stock_real) { $htmlforlines .= ''; } - $htmlforlines .= ' ('.$langs->trans("Stock").' '.$stock_real.')'; + $htmlforlines .= img_picto('', 'stock', 'class="pictofixedwidth"').price($stock_real, 1, '', 1, 0); if ($line->qty && $line->qty > $stock_real) { $htmlforlines .= ""; } + $htmlforlines .= ')'; + $htmlforlines .= ''; } else { dol_print_error($db); } diff --git a/htdocs/takepos/pay.php b/htdocs/takepos/pay.php index c8786128687..d2ee2999100 100644 --- a/htdocs/takepos/pay.php +++ b/htdocs/takepos/pay.php @@ -82,10 +82,11 @@ top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss); : dol_optimize_smallscreen) ? '42' : '6')); ?>px; margin-: dol_optimize_smallscreen) ? '38' : '6')); ?>px; - - + } body.onlinepaymentbody div.fiche { /* For online payment page */ margin: 20px !important; @@ -4209,6 +4230,9 @@ table.liste tr, table.noborder tr, div.noborder form { table.liste th, table.noborder th, table.noborder tr.liste_titre td, table.noborder tr.box_titre td { padding: 6px 10px 6px 12px; /* t r b l */ } +table.tableforfield td, .tagtr.table-border-row .tagtd { + padding: 2px 4px 2px 10px; /* t r b l */ +} table.liste td, table.noborder td, div.noborder form div, table.tableforservicepart1 td, table.tableforservicepart2 td { padding: 6px 10px 6px 12px; /* t r b l */ /* line-height: 22px; This create trouble on cell login on list of last events of a contract*/ @@ -6167,8 +6191,9 @@ a.cke_dialog_ui_button_ok span { a.cke_button, a.cke_combo_button { height: 18px !important; } -/* .cke_notifications_area { display: none; } */ - +div.cke_notifications_area .cke_notification_warning { + visibility: hidden; +} /* ============================================================================== */ /* ACE editor */ @@ -6468,6 +6493,7 @@ div.ecmjqft { float: ; right:4px; clear: both; + height: 16px; } #ecm-layout-north { min-height: 40px; diff --git a/htdocs/theme/md/btn.inc.php b/htdocs/theme/md/btn.inc.php index 500a3dc9d36..6c94fd4890a 100644 --- a/htdocs/theme/md/btn.inc.php +++ b/htdocs/theme/md/btn.inc.php @@ -317,7 +317,7 @@ div.pagination li:first-child a.btnTitle { margin: 0 0 0 10px; min-width: 80px; text-align: center; - color: rgb(); + color: var(--btncolortext); border: none; font-size: 12px; font-weight: 300; diff --git a/htdocs/theme/md/dropdown.inc.php b/htdocs/theme/md/dropdown.inc.php index a501c7c8747..07747b34a03 100644 --- a/htdocs/theme/md/dropdown.inc.php +++ b/htdocs/theme/md/dropdown.inc.php @@ -156,6 +156,7 @@ div#topmenu-global-search-dropdown a::after, div#topmenu-quickadd-dropdown a::af /* font part */ font-family: ""; font-size: 0.7em; + line-height: 1.7em; font-weight: 900; font-style: normal; font-variant: normal; diff --git a/htdocs/theme/md/flags-sprite.inc.php b/htdocs/theme/md/flags-sprite.inc.php index 56300e37e3f..dbc1328a902 100644 --- a/htdocs/theme/md/flags-sprite.inc.php +++ b/htdocs/theme/md/flags-sprite.inc.php @@ -717,6 +717,11 @@ if (!defined('ISLOADEDBYSTEELSHEET')) { width: 16px; height: 12px; } +.flag-sprite.mf { + background-position:0 -847px; + width: 16px; + height: 12px; +} .flag-sprite.mg { background-position:0 -1563px; width: 16px; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index eb9c7ccff12..09de0954513 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1847,6 +1847,11 @@ select.flat.selectlimit { .fa-15 { font-size: 1.5em; } + +.fa-map-marked-alt:before { + font-size: 0.85em; +} + .text-security { -webkit-text-security: disc; } @@ -2547,7 +2552,7 @@ div.fiche { div.fiche { margin-: dol_optimize_smallscreen) ? '35' : '6')); ?>px; margin-: dol_optimize_smallscreen) ? '33' : '6')); ?>px; - margin-bottom: 15px; @@ -3498,10 +3503,10 @@ img.login, img.printer, img.entity { } .userimg.atoplogin img.userphoto, .userimgatoplogin img.userphoto { /* size for user photo in login bar */ /* border-radius: 8px; */ - width: 20px; - height: 20px; + width: px; + height: px; + border-radius: 50%; background-size: contain; - vertical-align: text-bottom; background-color: #FFF; } img.userphoto { /* size for user photo in lists */ @@ -6154,6 +6159,9 @@ a.cke_dialog_ui_button_ok span { a.cke_button, a.cke_combo_button { height: 18px !important; } +div.cke_notifications_area .cke_notification_warning { + visibility: hidden; +} /* ============================================================================== */ diff --git a/htdocs/ticket/agenda.php b/htdocs/ticket/agenda.php index 81f1d0b0ac6..fe770fbe413 100644 --- a/htdocs/ticket/agenda.php +++ b/htdocs/ticket/agenda.php @@ -77,6 +77,7 @@ if (GETPOST('actioncode', 'array')) { $search_rowid = GETPOST('search_rowid'); $search_agenda_label = GETPOST('search_agenda_label'); +$hookmanager->initHooks(array('ticketagenda', 'globalcard')); // Note that conf->hooks_modules contains array $object = new Ticket($db); $object->fetch($id, $ref, $track_id); diff --git a/htdocs/ticket/card.php b/htdocs/ticket/card.php index 89ddb7179c7..43824ba9fab 100644 --- a/htdocs/ticket/card.php +++ b/htdocs/ticket/card.php @@ -419,7 +419,7 @@ if (empty($reshook)) { // Action to add a message (private or not, with email or not). // This may also send an email (concatenated with email_intro and email footer if checkbox was selected) if ($action == 'add_message' && GETPOSTISSET('btn_add_message') && $permissiontoread) { - $ret = $object->newMessage($user, $action, (GETPOST('private_message', 'alpha') == "on" ? 1 : 0), 0); + $ret = $object->newMessage($user, $action, (GETPOST('private_message', 'alpha') == "1" ? 1 : 0), 0); if ($ret > 0) { if (!empty($backtopage)) { @@ -544,9 +544,9 @@ if (empty($reshook)) { // prevent browser refresh from reopening ticket several times if ($object->status == Ticket::STATUS_CLOSED || $object->status == Ticket::STATUS_CANCELED) { if ($object->fk_user_assign != null) { - $res = $object->setStatut(Ticket::STATUS_ASSIGNED); + $res = $object->setStatut(Ticket::STATUS_ASSIGNED, null, '', 'TICKET_MODIFY'); } else { - $res = $object->setStatut(Ticket::STATUS_NOT_READ); + $res = $object->setStatut(Ticket::STATUS_NOT_READ, null, '', 'TICKET_MODIFY'); } if ($res) { $url = 'card.php?track_id=' . $object->track_id; @@ -716,10 +716,15 @@ if ($action == 'create' || $action == 'presend') { $formticket->withcancel = 1; + // Init list of files + if (GETPOST("mode", "aZ09") == 'init') { + $formticket->clear_attached_files(); + } + $formticket->showForm(1, 'create', 0, null, $action, $object); print dol_get_fiche_end(); -} elseif ($action == 'edit' && $object->status < Ticket::STATUS_CLOSED) { +} elseif ($action == 'edit' && $user->rights->ticket->write && $object->status < Ticket::STATUS_CLOSED) { if (empty($permissiontoadd)) { accessforbidden('NotEnoughPermissions', 0, 1); } @@ -897,15 +902,25 @@ if ($action == 'create' || $action == 'presend') { $createdbyshown++; } + $createdfrompublicticket = 0; + $createdfromemailcollector = 0; + if (!empty($object->origin_email) && (empty($object->email_msgid) || preg_match('/dolibarr\-tic\d+/', $object->email_msgid))) { + // If ticket create from public interface - TODO Add a more robust test to know if created by public interface + $createdfrompublicticket = 1; + } elseif (!empty($object->email_msgid)) { + // If ticket create by emailcollector - TODO Add a more robust test to know if created by email collector (using import ky ?) + $createdfromemailcollector = 1; + } + //var_dump($object); - if (!empty($object->origin_email)) { // If ticket create from public interface - TODO Add a more robust test to know if created by pubic interface + if ($createdfrompublicticket) { $htmltooptip = $langs->trans("OriginEmail").': '.$object->origin_email; $htmltooptip .= '
'.$langs->trans("IP").': '.$object->ip; $morehtmlref .= ($createdbyshown ? ' - ' : '
'); $morehtmlref .= ($createdbyshown ? '' : $langs->trans("CreatedBy").' : '); $morehtmlref .= img_picto('', 'email', 'class="paddingrightonly"'); $morehtmlref .= dol_escape_htmltag($object->origin_email).' - '.$form->textwithpicto($langs->trans("CreatedByPublicPortal"), $htmltooptip, 1, 'help', '', 0, 3, 'tooltip').''; - } elseif (!empty($object->email_msgid)) { // If ticket create by emailcollector - TODO Add a more robust test to know if created by email collector (using import ky ?) + } elseif ($createdfromemailcollector) { $langs->load("mails"); $htmltooltip = $langs->trans("EmailMsgID").': '.$object->email_msgid; $htmltooltip .= '
'.$langs->trans("EmailDate").': '.dol_print_date($object->email_date, 'dayhour'); @@ -1139,9 +1154,6 @@ if ($action == 'create' || $action == 'presend') { print '
'; - - - print '
'; print ''; print ''; @@ -1425,7 +1437,7 @@ if ($action == 'create' || $action == 'presend') { } // Close ticket if status is read - if (isset($object->status) && $object->status > 0 && $object->status < Ticket::STATUS_CLOSED && $user->hasRight('ticket', 'write')) { + if (isset($object->status) && $object->status >= 0 && $object->status < Ticket::STATUS_CLOSED && $user->hasRight('ticket', 'write')) { print dolGetButtonAction('', $langs->trans('CloseTicket'), 'default', $_SERVER["PHP_SELF"].'?action=close&token='.newToken().'&track_id='.$object->track_id, ''); } diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index cb401228e66..4791136e400 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -223,7 +223,7 @@ class Ticket extends CommonObject public $cache_msgs_ticket; /** - * @var int Notify thirdparty at create + * @var int Save if a thirdparty was notified at creation at ticket or not */ public $notify_tiers_at_create; @@ -233,7 +233,7 @@ class Ticket extends CommonObject public $email_msgid; /** - * @var string Email Date + * @var null|int|'' Email Date */ public $email_date; @@ -328,7 +328,7 @@ class Ticket extends CommonObject 'progress' => array('type' => 'integer', 'label' => 'Progression', 'visible' => -1, 'enabled' => 1, 'position' => 540, 'notnull' => -1, 'css' => 'right', 'help' => "", 'isameasure' => 2, 'csslist' => 'width50'), 'resolution' => array('type' => 'integer', 'label' => 'Resolution', 'visible' => -1, 'enabled' => 'getDolGlobalString("TICKET_ENABLE_RESOLUTION")', 'position' => 550, 'notnull' => 1), 'model_pdf' => array('type' => 'varchar(255)', 'label' => 'PDFTemplate', 'enabled' => 1, 'visible' => 0, 'position' => 560), - 'extraparams' => array('type' => 'varchar(255)', 'label' => 'Extraparams', 'enabled' => 1, 'visible' => -1, 'position' => 570), + 'extraparams' => array('type' => 'varchar(255)', 'label' => 'Extraparams', 'enabled' => 1, 'visible' => 0, 'position' => 570), 'fk_statut' => array('type' => 'integer', 'label' => 'Status', 'visible' => 1, 'enabled' => 1, 'position' => 600, 'notnull' => 1, 'index' => 1, 'arrayofkeyval' => array(0 => 'Unread', 1 => 'Read', 2 => 'Assigned', 3 => 'InProgress', 5 => 'NeedMoreInformation', 7 => 'OnHold', 8 => 'SolvedClosed', 9 => 'Deleted')), 'import_key' => array('type' => 'varchar(14)', 'label' => 'ImportId', 'enabled' => 1, 'visible' => -2, 'position' => 900), ); @@ -1711,6 +1711,8 @@ class Ticket extends CommonObject $this->db->begin(); + $this->status = Ticket::STATUS_READ; + $sql = "UPDATE ".MAIN_DB_PREFIX."ticket"; $sql .= " SET fk_statut = ".Ticket::STATUS_READ.", date_read = '".$this->db->idate(dol_now())."'"; $sql .= " WHERE rowid = ".((int) $this->id); @@ -1721,7 +1723,7 @@ class Ticket extends CommonObject $this->context['actionmsg'] = $langs->trans('TicketLogMesgReadBy', $this->ref, $user->getFullName($langs)); $this->context['actionmsg2'] = $langs->trans('TicketLogMesgReadBy', $this->ref, $user->getFullName($langs)); - if (!$error && !$notrigger) { + if (!$notrigger) { // Call trigger $result = $this->call_trigger('TICKET_MODIFY', $user); if ($result < 0) { @@ -1734,12 +1736,16 @@ class Ticket extends CommonObject $this->db->commit(); return 1; } else { + $this->status = $this->oldcopy->status; + $this->db->rollback(); $this->error = implode(',', $this->errors); dol_syslog(get_class($this)."::markAsRead ".$this->error, LOG_ERR); return -1; } } else { + $this->status = $this->oldcopy->status; + $this->db->rollback(); $this->error = $this->db->lasterror(); dol_syslog(get_class($this)."::markAsRead ".$this->error, LOG_ERR); @@ -1894,26 +1900,37 @@ class Ticket extends CommonObject if ($actionid > 0) { if (is_array($attachedfiles) && array_key_exists('paths', $attachedfiles) && count($attachedfiles['paths']) > 0) { + // If there is some files, we must now link them to the event, so we can show them per event. foreach ($attachedfiles['paths'] as $key => $filespath) { - $destdir = $conf->agenda->dir_output.'/'.$actionid; - $destfile = $destdir.'/'.$attachedfiles['names'][$key]; - if (dol_mkdir($destdir) >= 0) { + // Disabled the move into another directory, Files for a ticket should be stored into ticket directory. It generates too much troubles. + $destdir = $conf->ticket->dir_output.'/'.$this->ref; + //$destfile = $destdir.'/'.$attachedfiles['names'][$key]; + //if (dol_mkdir($destdir) >= 0) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - dol_move($filespath, $destfile); - if (in_array($actioncomm->code, array('TICKET_MSG', 'TICKET_MSG_SENTBYMAIL'))) { - $ecmfile = new EcmFiles($this->db); - $destdir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $destdir); - $destdir = preg_replace('/[\\/]$/', '', $destdir); - $destdir = preg_replace('/^[\\/]/', '', $destdir); - $ecmfile->fetch(0, '', $destdir.'/'.$attachedfiles['names'][$key]); - require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; - $ecmfile->share = getRandomPassword(true); + //dol_move($filespath, $destfile); // Disabled, a file for a ticket should be stored into ticket directory. It generates big trouble. + if (in_array($actioncomm->code, array('TICKET_MSG', 'TICKET_MSG_SENTBYMAIL'))) { + $ecmfile = new EcmFiles($this->db); + $destdir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $destdir); + $destdir = preg_replace('/[\\/]$/', '', $destdir); + $destdir = preg_replace('/^[\\/]/', '', $destdir); + + $result = $ecmfile->fetch(0, '', $destdir.'/'.$attachedfiles['names'][$key]); + + // TODO We must add a column into ecm_files table agenda_id to store the ID of event. + // $ecmfile->agenda_id = $actionid; + + // Disabled, serious security hole. A file published into the ERP should not become public for everybody. + //require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; + //$ecmfile->share = getRandomPassword(true); + + if ($result > 0) { $result = $ecmfile->update($user); if ($result < 0) { setEventMessages($ecmfile->error, $ecmfile->errors, 'warnings'); } } } + //} } } } @@ -2573,7 +2590,9 @@ class Ticket extends CommonObject } $moreinfo = array('description' => 'File saved by copyFilesForTicket', 'src_object_type' => $this->element, 'src_object_id' => $this->id); + $res = dol_move($filepath[$i], $destfile, 0, 1, 0, 1, $moreinfo); + if (!$res) { // Move has failed $this->error = "Failed to move file ".dirbasename($filepath[$i])." into ".dirbasename($destfile); @@ -2760,10 +2779,10 @@ class Ticket extends CommonObject } // Add global email address recipient - if (getDolGlobalString('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS') && - getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO') && !array_key_exists(getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO'), $sendto) - ) { - $sendto[getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO')] = getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO'); + if (getDolGlobalString('TICKET_NOTIFICATION_ALSO_MAIN_ADDRESS') && !array_key_exists(getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO'), $sendto)) { + if (getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO')) { + $sendto[getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO')] = getDolGlobalString('TICKET_NOTIFICATION_EMAIL_TO'); + } } if (!empty($sendto)) { diff --git a/htdocs/ticket/document.php b/htdocs/ticket/document.php index ffecc4e9197..b6e107e6588 100644 --- a/htdocs/ticket/document.php +++ b/htdocs/ticket/document.php @@ -211,7 +211,9 @@ if ($object->id) { // Build file list $filearray = dol_dir_list($upload_dir, "files", 0, '', '\.meta$', $sortfield, (strtolower($sortorder) == 'desc' ? SORT_DESC : SORT_ASC), 1); + // same as above for every messages + /* disabled. Too many bugs. All file of a ticket must be stored into ticket. File must be linked to an event by column agenda_id into llx_ecmfiles. $sql = 'SELECT id FROM '.MAIN_DB_PREFIX.'actioncomm'; $sql .= " WHERE fk_element = ".(int) $object->id." AND elementtype = 'ticket'"; $resql = $db->query($sql); @@ -229,6 +231,7 @@ if ($object->id) { $filearray = array_merge($filearray, $file_msg_array); } } + */ $totalsize = 0; foreach ($filearray as $key => $file) { diff --git a/htdocs/ticket/list.php b/htdocs/ticket/list.php index d39b1fe9dc4..8e800a841db 100644 --- a/htdocs/ticket/list.php +++ b/htdocs/ticket/list.php @@ -384,6 +384,7 @@ if ($socid > 0) { } foreach ($search as $key => $val) { + $tmpkey = 't.' . $key; if ($key == 'fk_statut' && !empty($search['fk_statut'])) { $newarrayofstatus = array(); foreach ($search['fk_statut'] as $key2 => $val2) { @@ -405,18 +406,18 @@ foreach ($search as $key => $val) { $newarrayofstatus[] = Ticket::STATUS_CANCELED; } if (count($newarrayofstatus)) { - $sql .= natural_search($key, implode(',', $newarrayofstatus), 2); + $sql .= natural_search($tmpkey, implode(',', $newarrayofstatus), 2); } continue; } elseif ($key == 'fk_user_assign' || $key == 'fk_user_create' || $key == 'fk_project' || $key == 'fk_contract') { if ($search[$key] > 0) { - $sql .= natural_search($key, $search[$key], 2); + $sql .= natural_search($tmpkey, $search[$key], 2); } continue; } elseif ($key == 'type_code') { $newarrayoftypecodes = is_array($search[$key]) ? $search[$key] : (!empty($search[$key]) ? explode(',', $search[$key]) : array()); if (count($newarrayoftypecodes)) { - $sql .= natural_search($key, implode(',', $newarrayoftypecodes), 3); + $sql .= natural_search($tmpkey, implode(',', $newarrayoftypecodes), 3); } continue; } @@ -424,7 +425,7 @@ foreach ($search as $key => $val) { $mode_search = ((!empty($object->fields[$key]) && ($object->isInt($object->fields[$key]) || $object->isFloat($object->fields[$key]))) ? 1 : 0); // $search[$key] can be an array of values, or a string. We add filter if array not empty or if it is a string. if ((is_array($search[$key]) && !empty($search[$key])) || (!is_array($search[$key]) && $search[$key] != '')) { - $sql .= natural_search($key, $search[$key], $mode_search); + $sql .= natural_search($tmpkey, $search[$key], $mode_search); } } if ($search_all) { @@ -434,7 +435,7 @@ if ($search_societe) { $sql .= natural_search('s.nom', $search_societe); } if ($search_fk_project > 0) { - $sql .= natural_search('fk_project', $search_fk_project, 2); + $sql .= natural_search('t.fk_project', $search_fk_project, 2); } if ($search_fk_contract > 0) { $sql .= natural_search('fk_contract', $search_fk_contract, 2); @@ -820,7 +821,7 @@ $moreforfilter.= $langs->trans('MyFilter') . ': '; // You can use div-table-responsive-no-min if you don't need reserved height for your table print '
'; -print ''."\n"; +print '
'."\n"; // Fields title search diff --git a/htdocs/ticket/messaging.php b/htdocs/ticket/messaging.php index 024637664a3..d2b2d6688cc 100644 --- a/htdocs/ticket/messaging.php +++ b/htdocs/ticket/messaging.php @@ -76,6 +76,8 @@ if (GETPOST('actioncode', 'array')) { $search_rowid = GETPOST('search_rowid'); $search_agenda_label = GETPOST('search_agenda_label'); + +$hookmanager->initHooks(array('ticketmessaging', 'globalcard')); // Note that conf->hooks_modules contains array $object = new Ticket($db); $object->fetch($id, $ref, $track_id); diff --git a/htdocs/ticket/tpl/linkedobjectblock.tpl.php b/htdocs/ticket/tpl/linkedobjectblock.tpl.php index e70395eb79b..902c00ae5a0 100644 --- a/htdocs/ticket/tpl/linkedobjectblock.tpl.php +++ b/htdocs/ticket/tpl/linkedobjectblock.tpl.php @@ -47,7 +47,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) { diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 32fbeac19cd..c09ae7c6985 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -1125,7 +1125,7 @@ if ($action == 'create' || $action == 'adduserldap') { } // Other form for user password - $parameters = array('valuetoshow' => $valuetoshow, 'password' => $password); + $parameters = array('valuetoshow' => $valuetoshow, 'password' => $password, 'caneditpasswordandsee' => $caneditpasswordandsee, 'caneditpasswordandsend' => $caneditpasswordandsend); $reshook = $hookmanager->executeHooks('printUserPasswordField', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if ($reshook > 0) { $valuetoshow = $hookmanager->resPrint; // to replace @@ -1746,7 +1746,7 @@ if ($action == 'create' || $action == 'adduserldap') { // Color user if (isModEnabled('agenda')) { - print ''; + print ''; print ''; @@ -1755,8 +1755,8 @@ if ($action == 'create' || $action == 'adduserldap') { // Categories if (isModEnabled('category') && $user->hasRight("categorie", "read")) { - print ''; - print ''; + print ''; } @@ -1765,7 +1765,7 @@ if ($action == 'create' || $action == 'adduserldap') { if (getDolGlobalInt('MAIN_MULTILANGS')) { $langs->load("languages"); require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - print '
trans("Ticket"); ?> getNomUrl(0, '', 0, 1).'&action=selectlines" data-element="'.$objectlink->element.'" data-id="'.$objectlink->id.'" > getNomUrl(1); ?>
'.$langs->trans("ColorUser").'
'.$langs->trans("ColorUser").''; print $formother->showColor($object->color, ''); print '
'.$langs->trans("Categories").''; + print '
'.$langs->trans("Categories").''; print $form->showCategories($object->id, Categorie::TYPE_USER, 1); print '
'; + print '
'; print $form->textwithpicto($langs->trans("DefaultLang"), $langs->trans("WarningNotLangOfInterface", $langs->transnoentitiesnoconv("UserGUISetup"))); print ''; //$s=picto_from_langcode($object->default_lang); @@ -1862,16 +1862,16 @@ if ($action == 'create' || $action == 'adduserldap') { print '
'; print '
'; - print ''; + print '
'; - print ''; - print ''; + print ''; + print ''; print ''; // Date login validity - print ''; + print ''; print ''; + print ''; print ''; @@ -1932,7 +1932,7 @@ if ($action == 'create' || $action == 'adduserldap') { */ // Other form for user password - $parameters = array('valuetoshow' => $valuetoshow); + $parameters = array('valuetoshow' => $valuetoshow, 'caneditpasswordandsee' => $caneditpasswordandsee, 'caneditpasswordandsend' => $caneditpasswordandsend); $reshook = $hookmanager->executeHooks('printUserPasswordField', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if ($reshook > 0) { $valuetoshow = $hookmanager->resPrint; // to replace @@ -1941,7 +1941,7 @@ if ($action == 'create' || $action == 'adduserldap') { } if (dol_string_nohtmltag($valuetoshow)) { // If there is a real visible content to show - print ''; + print ''; print '"; diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index e266212b5ab..3508a114c7b 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -971,7 +971,7 @@ class User extends CommonObject if (!empty($subperms)) { $whereforadd .= " OR (module='".$this->db->escape($module)."' AND perms='".$this->db->escape($perms)."' AND (subperms='lire' OR subperms='read'))"; } elseif (!empty($perms)) { - $whereforadd .= " OR (module='".$this->db->escape($module)."' AND (perms='lire' OR perms='read') AND subperms IS NULL)"; + $whereforadd .= " OR (module='".$this->db->escape($module)."' AND (perms='lire' OR perms='read') AND (subperms IS NULL or subperms = ''))"; } } else { // A list of permission was requested (not a single specific permission) diff --git a/htdocs/user/class/usergroup.class.php b/htdocs/user/class/usergroup.class.php index 46d0f1645e0..5d8d08792ec 100644 --- a/htdocs/user/class/usergroup.class.php +++ b/htdocs/user/class/usergroup.class.php @@ -152,7 +152,7 @@ class UserGroup extends CommonObject /** - * Charge un object group avec toutes ses caracteristiques (except ->members array) + * Load a group object with all properties (except ->members array that is array of users in group) * * @param int $id Id of group to load * @param string $groupname Name of group to load @@ -161,8 +161,6 @@ class UserGroup extends CommonObject */ public function fetch($id = 0, $groupname = '', $load_members = false) { - global $conf; - dol_syslog(get_class($this)."::fetch", LOG_DEBUG); if (!empty($groupname)) { $result = $this->fetchCommon(0, '', ' AND nom = \''.$this->db->escape($groupname).'\''); @@ -174,7 +172,8 @@ class UserGroup extends CommonObject if ($result) { if ($load_members) { - $this->members = $this->listUsersForGroup(); // This make a lot of subrequests + $excludefilter = ''; + $this->members = $this->listUsersForGroup($excludefilter, 0); // This make a request to get list of users but may also do subrequest to fetch each users on some versions } return 1; diff --git a/htdocs/user/group/card.php b/htdocs/user/group/card.php index 6a1030ab8c6..fdcfe655bc4 100644 --- a/htdocs/user/group/card.php +++ b/htdocs/user/group/card.php @@ -77,7 +77,7 @@ $hookmanager->initHooks(array('groupcard', 'globalcard')); $result = restrictedArea($user, 'user', $id, 'usergroup&usergroup', $feature2); // Users/Groups management only in master entity if transverse mode -if (isModEnabled('multicompany') && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE) { +if (isModEnabled('multicompany') && $conf->entity > 1 && getDolGlobalString('MULTICOMPANY_TRANSVERSE_MODE')) { accessforbidden(); } diff --git a/htdocs/user/group/list.php b/htdocs/user/group/list.php index 774657348c1..f527529d9d1 100644 --- a/htdocs/user/group/list.php +++ b/htdocs/user/group/list.php @@ -192,7 +192,7 @@ $sql .= " GROUP BY g.rowid, g.nom, g.note, g.entity, g.datec, g.tms"; $nbtotalofrecords = ''; if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) { /* The fast and low memory method to get and count full list converts the sql into a sql count */ - $sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(*) as nbtotalofrecords', $sql); + $sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(DISTINCT g.rowid) as nbtotalofrecords', $sql); $sqlforcount = preg_replace('/GROUP BY .*$/', '', $sqlforcount); $resql = $db->query($sqlforcount); if ($resql) { @@ -335,9 +335,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/user/list.php b/htdocs/user/list.php index bcd8b1ffa9f..072555e4e73 100644 --- a/htdocs/user/list.php +++ b/htdocs/user/list.php @@ -719,7 +719,7 @@ if (isModEnabled('stock') && getDolGlobalString('MAIN_DEFAULT_WAREHOUSE_USER')) } $parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $moreforfilter .= $hookmanager->resPrint; } else { diff --git a/htdocs/user/virtualcard.php b/htdocs/user/virtualcard.php index b519b6d67bf..0e7c67735fe 100644 --- a/htdocs/user/virtualcard.php +++ b/htdocs/user/virtualcard.php @@ -109,11 +109,13 @@ $title = $langs->trans("User"); //print dol_get_fiche_head($head, 'info', $title, -1, 'user'); +/* $linkback = ''; if ($user->hasRight('user', 'user', 'lire') || $user->admin) { $linkback = ''.$langs->trans("BackToList").''; } +*/ $morehtmlref = ''; $morehtmlref .= img_picto($langs->trans("Download").' '.$langs->trans("VCard"), 'vcard.png', 'class="valignmiddle marginleftonly paddingrightonly"'); @@ -128,7 +130,9 @@ print '
'; print '
'; $param = '&id='.((int) $object->id); -$param .= '&dol_openinpopup=1'; +if (GETPOSTISSET('dol_openinpopup')) { + $param .= '&dol_openinpopup='.urlencode(GETPOST('dol_openinpopup', 'aZ09')); +} $enabledisablehtml = $langs->trans("EnablePublicVirtualCard").' '; if (!getDolUserInt('USER_ENABLE_PUBLIC', 0, $object)) { diff --git a/htdocs/variants/class/ProductAttribute.class.php b/htdocs/variants/class/ProductAttribute.class.php index 821b3e2da3e..1096dd1a27c 100644 --- a/htdocs/variants/class/ProductAttribute.class.php +++ b/htdocs/variants/class/ProductAttribute.class.php @@ -370,7 +370,7 @@ class ProductAttribute extends CommonObject * Updates a product attribute * * @param User $user User who updates the attribute - * @param int $notrigger 1 = Do not execute trigger (0 by default) + * @param int $notrigger If 1 = Do not execute trigger (0 by default) * @return int Return <0 if KO, 1 if OK */ public function update(User $user, $notrigger = 0) @@ -1222,6 +1222,45 @@ class ProductAttribute extends CommonObject return $result; } + /** + * Return a thumb for kanban views + * + * @param string $option Where point the link (0=> main card, 1,2 => shipment, 'nolink'=>No link) + * @param ?array $arraydata Array of data + * @return string HTML Code for Kanban thumb. + */ + public function getKanbanView($option = '', $arraydata = null) + { + global $conf, $langs; + + $selected = (empty($arraydata['selected']) ? 0 : $arraydata['selected']); + + $return = '
'; + $return .= '
'; + $return .= ''; + $return .= img_picto('', $this->picto); + $return .= ''; + $return .= '
'; + $return .= ''.(method_exists($this, 'getNomUrl') ? $this->getNomUrl() : $this->ref).''; + if ($selected >= 0) { + $return .= ''; + } + if (property_exists($this, 'label')) { + $return .= '
'.$this->label.'
'; + } + if (property_exists($this, 'thirdparty') && is_object($this->thirdparty)) { + $return .= '
'.$this->thirdparty->getNomUrl(1).'
'; + } + if (method_exists($this, 'getLibStatut')) { + $return .= '
'.$this->getLibStatut(3).'
'; + } + $return .= '
'; + $return .= '
'; + $return .= '
'; + + return $return; + } + /** * Return the label of the status * diff --git a/htdocs/variants/class/ProductAttributeValue.class.php b/htdocs/variants/class/ProductAttributeValue.class.php index b3a2cb71b38..dde942c1bcf 100644 --- a/htdocs/variants/class/ProductAttributeValue.class.php +++ b/htdocs/variants/class/ProductAttributeValue.class.php @@ -287,43 +287,37 @@ class ProductAttributeValue extends CommonObjectLine { $return = array(); - $sql = "SELECT "; - - if ($only_used) { - $sql .= "DISTINCT "; - } - - $sql .= "v.fk_product_attribute, v.rowid, v.ref, v.value FROM " . MAIN_DB_PREFIX . "product_attribute_value v "; - - if ($only_used) { - $sql .= "LEFT JOIN " . MAIN_DB_PREFIX . "product_attribute_combination2val c2v ON c2v.fk_prod_attr_val = v.rowid "; - $sql .= "LEFT JOIN " . MAIN_DB_PREFIX . "product_attribute_combination c ON c.rowid = c2v.fk_prod_combination "; - $sql .= "LEFT JOIN " . MAIN_DB_PREFIX . "product p ON p.rowid = c.fk_product_child "; - } + $sql = "SELECT v.fk_product_attribute, v.rowid, v.ref, v.value FROM " . MAIN_DB_PREFIX . "product_attribute_value v "; $sql .= "WHERE v.fk_product_attribute = " . ((int) $prodattr_id); if ($only_used) { - $sql .= " AND c2v.rowid IS NOT NULL AND p.tosell = 1"; + $sql .= " AND EXISTS (SELECT c2v.fk_prod_attr_val "; + $sql .= "FROM " . MAIN_DB_PREFIX . "product_attribute_combination2val c2v "; + $sql .= "LEFT JOIN " . MAIN_DB_PREFIX . "product_attribute_combination c ON c.rowid = c2v.fk_prod_combination "; + $sql .= "LEFT JOIN " . MAIN_DB_PREFIX . "product p ON p.rowid = c.fk_product_child"; + $sql .= " WHERE c2v.rowid IS NOT NULL AND p.tosell = 1 AND c2v.fk_prod_attr_val = v.rowid)"; } $sql .= " ORDER BY v.position ASC"; $query = $this->db->query($sql); - while ($result = $this->db->fetch_object($query)) { - if (empty($returnonlydata)) { - $tmp = new ProductAttributeValue($this->db); - } else { - $tmp = new stdClass(); + if ($query) { + while ($result = $this->db->fetch_object($query)) { + if (empty($returnonlydata)) { + $tmp = new ProductAttributeValue($this->db); + } else { + $tmp = new stdClass(); + } + + $tmp->fk_product_attribute = $result->fk_product_attribute; + $tmp->id = $result->rowid; + $tmp->ref = $result->ref; + $tmp->value = $result->value; + + $return[] = $tmp; } - - $tmp->fk_product_attribute = $result->fk_product_attribute; - $tmp->id = $result->rowid; - $tmp->ref = $result->ref; - $tmp->value = $result->value; - - $return[] = $tmp; } return $return; diff --git a/htdocs/variants/class/ProductCombination.class.php b/htdocs/variants/class/ProductCombination.class.php index 56f30d8f3b2..339e9f84934 100644 --- a/htdocs/variants/class/ProductCombination.class.php +++ b/htdocs/variants/class/ProductCombination.class.php @@ -551,12 +551,13 @@ class ProductCombination // MultiPrix if (getDolGlobalString('PRODUIT_MULTIPRICES')) { - for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) { + $maxi = getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); + for ($i = 1; $i <= $maxi; $i++) { if ($parent->multiprices[$i] != '' || isset($this->combination_price_levels[$i]->variation_price)) { $new_type = empty($parent->multiprices_base_type[$i]) ? 'HT' : $parent->multiprices_base_type[$i]; $new_min_price = $parent->multiprices_min[$i]; $variation_price = (float) (!isset($this->combination_price_levels[$i]->variation_price) ? $this->variation_price : $this->combination_price_levels[$i]->variation_price); - $variation_price_percentage = (float) (!isset($this->combination_price_levels[$i]->variation_price_percentage) ? $this->variation_price_percentage : $this->combination_price_levels[$i]->variation_price_percentage); + $variation_price_percentage = (bool) (!isset($this->combination_price_levels[$i]->variation_price_percentage) ? $this->variation_price_percentage : $this->combination_price_levels[$i]->variation_price_percentage); if ($parent->prices_by_qty_list[$i]) { $new_psq = 1; @@ -782,6 +783,9 @@ class ProductCombination $newproduct = clone $product; } + // To avoid warning with unique extrafields values + $newproduct->context['createproductcombination'] = 'createproductcombination'; + //Final weight impact $weight_impact = (float) $forced_weightvar; // If false, return 0 @@ -866,21 +870,22 @@ class ProductCombination $newproduct->description .= ''.$prodattr->label.': '.$prodattrval->value; } - $newcomb->variation_price_percentage = $price_var_percent[1]; + $newcomb->variation_price_percentage = (bool) $price_var_percent[1]; $newcomb->variation_price = $price_impact[1]; $newcomb->variation_weight = $weight_impact; $newcomb->variation_ref_ext = $this->db->escape($ref_ext); // Init price level - if ($conf->global->PRODUIT_MULTIPRICES) { - for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) { + if (getDolGlobalString('PRODUIT_MULTIPRICES')) { + $maxi = getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); + for ($i = 1; $i <= $maxi; $i++) { $productCombinationLevel = new ProductCombinationLevel($this->db); $productCombinationLevel->fk_product_attribute_combination = $newcomb->id; $productCombinationLevel->fk_price_level = $i; $productCombinationLevel->variation_price = $price_impact[$i]; if (is_array($price_var_percent)) { - $productCombinationLevel->variation_price_percentage = (empty($price_var_percent[$i]) ? false : $price_var_percent[$i]); + $productCombinationLevel->variation_price_percentage = (bool) $price_var_percent[$i] ; } else { $productCombinationLevel->variation_price_percentage = $price_var_percent; } diff --git a/htdocs/variants/combinations.php b/htdocs/variants/combinations.php index 39c40a40816..31370562bef 100644 --- a/htdocs/variants/combinations.php +++ b/htdocs/variants/combinations.php @@ -109,11 +109,11 @@ if (!$object->isProduct() && !$object->isService()) { header('Location: '.dol_buildpath('/product/card.php?id='.$object->id, 2)); exit(); } -if ($action == 'add') { +if ($action == 'add') { // Test on permission not required unset($selectedvariant); unset($_SESSION['addvariant_'.$object->id]); } -if ($action == 'create' && GETPOST('selectvariant', 'alpha')) { // We click on select combination +if ($action == 'create' && GETPOST('selectvariant', 'alpha') && $usercancreate) { // We click on select combination $action = 'add'; $attribute_id = GETPOSTINT('attribute'); $attribute_value_id = GETPOSTINT('value'); @@ -123,7 +123,7 @@ if ($action == 'create' && GETPOST('selectvariant', 'alpha')) { // We click on s $_SESSION['addvariant_'.$object->id] = $selectedvariant; } } -if ($action == 'create' && $subaction == 'delete') { // We click on select combination +if ($action == 'create' && $subaction == 'delete' && $usercancreate) { // We click on select combination $action = 'add'; $feature = GETPOST('feature', 'intcomma'); if (isset($selectedvariant[$feature])) { @@ -138,12 +138,12 @@ $prodcomb2val = new ProductCombination2ValuePair($db); $productCombination2ValuePairs1 = array(); -if (($action == 'add' || $action == 'create') && empty($massaction) && !GETPOST('selectvariant', 'alpha') && empty($subaction)) { // We click on Create all defined combinations +if (($action == 'add' || $action == 'create') && $usercancreate && empty($massaction) && !GETPOST('selectvariant', 'alpha') && empty($subaction)) { // We click on Create all defined combinations //$features = GETPOST('features', 'array'); $features = !empty($_SESSION['addvariant_'.$object->id]) ? $_SESSION['addvariant_'.$object->id] : array(); if (!$features) { - if ($action == 'create') { + if ($action == 'create') { // Test on permission already done setEventMessages($langs->trans('ErrorFieldsRequired'), null, 'errors'); } } else { @@ -270,7 +270,7 @@ if (($action == 'add' || $action == 'create') && empty($massaction) && !GETPOST( $db->commit(); setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); } -} elseif ($action === 'update' && $combination_id > 0) { +} elseif ($action === 'update' && $combination_id > 0 && $usercancreate) { if ($prodcomb->fetch($combination_id) < 0) { dol_print_error($db, $langs->trans('ErrorRecordNotFound')); exit(); @@ -294,7 +294,8 @@ if (($action == 'add' || $action == 'create') && empty($massaction) && !GETPOST( if (getDolGlobalString('PRODUIT_MULTIPRICES')) { $prodcomb->combination_price_levels = array(); - for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) { + $maxi = getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); + for ($i = 1; $i <= $maxi; $i++) { $productCombinationLevel = new ProductCombinationLevel($db); $productCombinationLevel->fk_product_attribute_combination = $prodcomb->id; $productCombinationLevel->fk_price_level = $i; @@ -342,7 +343,7 @@ if (($action == 'add' || $action == 'create') && empty($massaction) && !GETPOST( // Reload variants $productCombinations = $prodcomb->fetchAllByFkProductParent($object->id, true); -if ($action === 'confirm_deletecombination') { +if ($action === 'confirm_deletecombination' && $usercancreate) { if ($prodcomb->fetch($combination_id) > 0) { $db->begin(); @@ -357,7 +358,7 @@ if ($action === 'confirm_deletecombination') { setEventMessages($langs->trans('ProductCombinationAlreadyUsed'), null, 'errors'); $action = ''; } -} elseif ($action === 'edit') { +} elseif ($action === 'edit' && $usercancreate) { if ($prodcomb->fetch($combination_id) < 0) { dol_print_error($db, $langs->trans('ErrorRecordNotFound')); exit(); @@ -371,7 +372,7 @@ if ($action === 'confirm_deletecombination') { $price_impact_percent = $prodcomb->variation_price_percentage; $productCombination2ValuePairs1 = $prodcomb2val->fetchByFkCombination($combination_id); -} elseif ($action === 'confirm_copycombination') { +} elseif ($action === 'confirm_copycombination' && $usercancreate) { //Check destination product $dest_product = GETPOST('dest_product'); @@ -715,14 +716,16 @@ if (!empty($id) || !empty($ref)) {
fetchCombinationPriceLevels(); - for ($i = 1; $i <= $conf->global->PRODUIT_MULTIPRICES_LIMIT; $i++) { + $maxi = getDolGlobalInt('PRODUIT_MULTIPRICES_LIMIT'); + for ($i = 1; $i <= $maxi; $i++) { $keyforlabel = 'PRODUIT_MULTIPRICES_LABEL'.$i; $text = $langs->trans('ImpactOnPriceLevel', $i).' - '.getDolGlobalString($keyforlabel); print ''; @@ -732,7 +735,7 @@ if (!empty($id) || !empty($ref)) { } print ''; print ''; print ''; @@ -759,7 +762,7 @@ if (!empty($id) || !empty($ref)) { let priceImpact = $( "#level_price_impact_1" ).val(); let priceImpactPrecent = $( "#level_price_impact_percent_1" ).prop("checked"); - var multipricelimit = global->PRODUIT_MULTIPRICES_LIMIT); ?> + let multipricelimit = for (let i = 2; i <= multipricelimit; i++) { $( "#level_price_impact_" + i ).val(priceImpact); diff --git a/htdocs/variants/list.php b/htdocs/variants/list.php index 943571e4432..aa1d37e788e 100644 --- a/htdocs/variants/list.php +++ b/htdocs/variants/list.php @@ -34,14 +34,14 @@ $langs->loadLangs(array("products", "other")); $action = GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'; // The action 'create'/'add', 'edit'/'update', 'view', ... $massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists) -$show_files = GETPOSTINT('show_files'); // Show files area generated by bulk actions ? +$show_files = GETPOSTINT('show_files'); // 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 +$toselect = GETPOST('toselect', 'array:int'); // Array of ids of elements selected into a list $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'); // The output mode ('list', 'kanban', 'hierarchy', 'calendar', ...) +$mode = GETPOST('mode', 'aZ'); // The display mode ('list', 'kanban', 'hierarchy', 'calendar', 'gantt', ...) $id = GETPOSTINT('id'); @@ -49,7 +49,7 @@ $id = GETPOSTINT('id'); $limit = GETPOSTINT('limit') ? GETPOSTINT('limit') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'aZ09comma'); $sortorder = GETPOST('sortorder', 'aZ09comma'); -$page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT("page"); +$page = GETPOSTISSET('pageplusone') ? (GETPOSTINT('pageplusone') - 1) : GETPOSTINT('page'); 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; @@ -78,7 +78,7 @@ if (!$sortorder) { } // Initialize array of search criteria -$search_all = GETPOST('search_all', 'alphanohtml'); +$search_all = trim(GETPOST('search_all', 'alphanohtml')); $search = array(); foreach ($object->fields as $key => $val) { if (GETPOST('search_'.$key, 'alpha') !== '') { @@ -92,8 +92,8 @@ foreach ($object->fields as $key => $val) { $search['nb_of_values'] = GETPOST('search_nb_of_values', 'alpha'); $search['nb_products'] = GETPOST('search_nb_products', 'alpha'); -// List of fields to search into when doing a "search in all" $fieldstosearchall = array(); +// List of fields to search into when doing a "search in all" foreach ($object->fields as $key => $val) { if (!empty($val['searchall'])) { $fieldstosearchall['t.'.$key] = $val['label']; @@ -231,8 +231,8 @@ $form = new Form($db); $now = dol_now(); -$help_url = ''; $title = $langs->trans("ProductAttributes"); +$help_url = ''; $morejs = array(); $morecss = array(); @@ -252,6 +252,9 @@ $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters, $object, $action); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; $sql = preg_replace('/,\s*$/', '', $sql); + +$sqlfields = $sql; // $sql fields to remove for count total + $sql .= " FROM ".MAIN_DB_PREFIX.$object->table_element." as t"; //if (isset($extrafields->attributes[$object->table_element]['label']) && is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) { // $sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (t.rowid = ef.fk_object)"; @@ -263,7 +266,7 @@ $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListFrom', $parameters, $object, $action); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; if ($object->ismultientitymanaged == 1) { - $sql .= " WHERE t.entity IN (".getEntity($object->element).")"; + $sql .= " WHERE t.entity IN (".getEntity($object->element, (GETPOST('search_current_entity', 'int') ? 0 : 1)).")"; } else { $sql .= " WHERE 1 = 1"; } @@ -280,17 +283,17 @@ foreach ($search as $key => $val) { $mode_search = 2; } if ($search[$key] != '') { - $sql .= natural_search("t.".$db->escape($key), $search[$key], (($key == 'status') ? 2 : $mode_search)); + $sql .= natural_search("t.".$db->sanitize($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.".$db->escape($columnName)." >= '".$db->idate($search[$key])."'"; + $sql .= " AND t.".$db->sanitize($columnName)." >= '".$db->idate($search[$key])."'"; } if (preg_match('/_dtend$/', $key)) { - $sql .= " AND t.".$db->escape($columnName)." <= '".$db->idate($search[$key])."'"; + $sql .= " AND t.".$db->sanitize($columnName)." <= '".$db->idate($search[$key])."'"; } } } @@ -310,7 +313,7 @@ $sql .= $hookmanager->resPrint; $hasgroupby = true; $sql .= " GROUP BY "; foreach ($object->fields as $key => $val) { - $sql .= "t." . $key . ", "; + $sql .= "t.".$db->sanitize($key).", "; } // Add fields from extrafields //if (!empty($extrafields->attributes[$object->table_element]['label'])) { @@ -320,7 +323,7 @@ foreach ($object->fields as $key => $val) { //} // Add where from hooks $parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListGroupBy', $parameters, $object); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('printFieldListGroupBy', $parameters, $object, $action); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; $sql = preg_replace("/,\s*$/", "", $sql); @@ -333,7 +336,7 @@ if ($search['nb_products'] != '') { } // Add HAVING from hooks $parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListHaving', $parameters, $object); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('printFieldListHaving', $parameters, $object, $action); // Note that $action and $object may have been modified by hook $sql .= empty($hookmanager->resPrint) ? "" : " ".$hookmanager->resPrint; // Count total nb of records @@ -349,7 +352,9 @@ if (!getDolGlobalInt('MAIN_DISABLE_FULL_SCANLIST')) { $nbtotalofrecords++; }*/ /* The fast and low memory method to get and count full list converts the sql into a sql count */ - $sqlforcount = preg_replace("/^SELECT[a-z0-9\._\s\(\),]+FROM/i", "SELECT COUNT(*) as nbtotalofrecords FROM", $sql); + $sqlforcount = preg_replace('/^'.preg_quote($sqlfields, '/').'/', 'SELECT COUNT(*) as nbtotalofrecords', $sql); + $sqlforcount = preg_replace('/GROUP BY .*$/', '', $sqlforcount); + $resql = $db->query($sqlforcount); if ($resql) { if ($hasgroupby) { @@ -382,10 +387,10 @@ $num = $db->num_rows($resql); // Direct jump if only one record found -if ($num == 1 && getDolGlobalString('MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all && !$page) { +if ($num == 1 && getDolGlobalInt('MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE') && $search_all && !$page) { $obj = $db->fetch_object($resql); $id = $obj->rowid; - header("Location: " . dol_buildpath('/variants/card.php', 2) . '?id=' . $id); + header("Location: " . dol_buildpath('/variants/card.php', 2) . '?id='.((int) $id)); exit; } @@ -407,6 +412,12 @@ if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { if ($limit > 0 && $limit != $conf->liste_limit) { $param .= '&limit='.((int) $limit); } +if ($optioncss != '') { + $param .= '&optioncss='.urlencode($optioncss); +} +if ($groupby != '') { + $param .= '&groupby='.urlencode($groupby); +} foreach ($search as $key => $val) { if (is_array($search[$key])) { foreach ($search[$key] as $skey) { @@ -422,9 +433,6 @@ foreach ($search as $key => $val) { $param .= '&search_'.$key.'='.urlencode($search[$key]); } } -if ($optioncss != '') { - $param .= '&optioncss='.urlencode($optioncss); -} // Add $param from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; // Add $param from hooks @@ -502,9 +510,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } @@ -528,7 +533,7 @@ if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { print ''; } foreach ($object->fields as $key => $val) { - $searchkey = empty($search[$key]) ? '' : $search[$key]; + //$searchkey = empty($search[$key]) ? '' : $search[$key]; $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); if ($key == 'status') { $cssforfield .= ($cssforfield ? ' ' : '').'center'; @@ -542,7 +547,7 @@ foreach ($object->fields as $key => $val) { if (!empty($arrayfields['t.'.$key]['checked'])) { print '
'; +// Action column if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n"; $totalarray['nbfield']++; @@ -629,10 +635,12 @@ print $hookmanager->resPrint; $key = 'nb_of_values'; if (!empty($arrayfields[$key]['checked'])) { print getTitleFieldOfList($arrayfields[$key]['label'], 0, $_SERVER['PHP_SELF'], $key, '', $param, 'class="center"', $sortfield, $sortorder, 'center ')."\n"; + $totalarray['nbfield']++; } $key = 'nb_products'; if (!empty($arrayfields[$key]['checked'])) { print getTitleFieldOfList($arrayfields[$key]['label'], 0, $_SERVER['PHP_SELF'], $key, '', $param, 'class="center"', $sortfield, $sortorder, 'center ')."\n"; + $totalarray['nbfield']++; } // Action column if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { @@ -641,6 +649,7 @@ if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { } // Move print getTitleFieldOfList('', 0, '', '', '', '', '', '', '', 'linecolmove ')."\n"; +$totalarray['nbfield']++; print ''."\n"; @@ -690,7 +699,7 @@ while ($i < $imaxinloop) { print ''; } } else { - // Show here line of result + // Show line of result $j = 0; print ''; // Action column @@ -708,6 +717,7 @@ while ($i < $imaxinloop) { $totalarray['nbfield']++; } } + // Fields 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'))) { @@ -717,19 +727,19 @@ while ($i < $imaxinloop) { } if (in_array($val['type'], array('timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '') . 'nowrap'; + $cssforfield .= ($cssforfield ? ' ' : '') . 'nowraponall'; } elseif ($key == 'ref') { - $cssforfield .= ($cssforfield ? ' ' : '') . 'nowrap'; + $cssforfield .= ($cssforfield ? ' ' : '') . 'nowraponall'; } - if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'status')) && empty($val['arrayofkeyval'])) { + if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('id', 'rowid', 'ref', '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 '$key)) { + print '$key)) { print ' title="'.dol_escape_htmltag($object->$key).'"'; } print '>'; @@ -807,6 +817,9 @@ while ($i < $imaxinloop) { print '' . img_down('default', 0, 'imgdownforline') . ''; } print ''; + if (!$i) { + $totalarray['nbfield']++; + } print '' . "\n"; } @@ -819,12 +832,13 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/list_print_total.tpl.php'; // If no record found if ($num == 0) { - $colspan = 3; + $colspan = 1; foreach ($arrayfields as $key => $val) { if (!empty($val['checked'])) { $colspan++; } } + $colspan++; // For the move column print ''; } diff --git a/htdocs/variants/tpl/productattributevalueline_view.tpl.php b/htdocs/variants/tpl/productattributevalueline_view.tpl.php index 825c3639a3f..1a550d443d4 100644 --- a/htdocs/variants/tpl/productattributevalueline_view.tpl.php +++ b/htdocs/variants/tpl/productattributevalueline_view.tpl.php @@ -64,8 +64,9 @@ if (!empty($object_rights->write) && $action != 'selectlines') { $coldisplay++; if (empty($disableedit)) { ?> id.'#line_'.$line->id; ?>"> - '; - } + + + '; print ' + \n"; diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index b5f508ddffa..38bdefbd9b4 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -2,6 +2,7 @@ /* Copyright (C) 2004-2005 Rodolphe Quiedeville * Copyright (C) 2005-2016 Laurent Destailleur * Copyright (C) 2005-2016 Regis Houssin + * Copyright (C) 2024 MDW * * 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 @@ -320,6 +321,22 @@ if ($modulepart == 'barcode') { $code = GETPOST("code", 'restricthtml'); // This can be rich content (qrcode, datamatrix, ...) } + // If $code is virtualcard_xxx_999.vcf, it is a file to read to get code + $reg = array(); + if (preg_match('/^virtualcard_([^_]+)_(\d+)\.vcf$/', $code, $reg)) { + $vcffile = ''; + if ($reg[1] == 'user') { + $vcffile = $conf->user->dir_temp.'/'.$code; + } elseif ($reg[1] == 'contact') { + $vcffile = $conf->contact->dir_temp.'/'.$code; + } + + if ($vcffile) { + $code = file_get_contents($vcffile); + } + } + + if (empty($generator) || empty($encoding)) { print 'Error: Parameter "generator" or "encoding" not defined'; exit; diff --git a/htdocs/webhook/target_list.php b/htdocs/webhook/target_list.php index b93ec16b5b2..2307eecf954 100644 --- a/htdocs/webhook/target_list.php +++ b/htdocs/webhook/target_list.php @@ -507,9 +507,6 @@ if (empty($reshook)) { if (!empty($moreforfilter)) { print '
'; print $moreforfilter; - $parameters = array(); - $reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; print '
'; } diff --git a/htdocs/webportal/admin/setup.php b/htdocs/webportal/admin/setup.php index b5d02d8065d..8cb68dedde8 100644 --- a/htdocs/webportal/admin/setup.php +++ b/htdocs/webportal/admin/setup.php @@ -62,6 +62,18 @@ if (!class_exists('FormSetup')) { $formSetup = new FormSetup($db); +// Add logged user +//$formSetup->newItem('WEBPORTAL_USER_LOGGED2')->setAsSelectUser(); +// only enabled users +$userList = $formSetup->form->select_dolusers(getDolGlobalInt('WEBPORTAL_USER_LOGGED'), 'WEBPORTAL_USER_LOGGED', 1, null, 0, '', '', '0', 0, 0, '', 0, '', '', 1, 2); + +$item = $formSetup->newItem('WEBPORTAL_USER_LOGGED'); +$item->setAsSelect($userList); +$item->picto = 'user'; +$item->helpText = $langs->transnoentities('WebPortalUserLoggedHelp'); +// TODO Add a property mandatory to set style to "fieldrequired" and to add a check in submit + + // root url // @var FormSetupItem $item @@ -115,15 +127,6 @@ if (isModEnabled('member')) { $item->helpText = $langs->transnoentities('WebPortalMemberCardAccessHelp'); } -// Add logged user -//$formSetup->newItem('WEBPORTAL_USER_LOGGED2')->setAsSelectUser(); -// only enabled users -$userList = $formSetup->form->select_dolusers(getDolGlobalInt('WEBPORTAL_USER_LOGGED'), 'WEBPORTAL_USER_LOGGED', 0, null, 0, '', '', '0', 0, 0, '', 0, '', '', 1, 1); - -$item = $formSetup->newItem('WEBPORTAL_USER_LOGGED'); -$item->setAsSelect($userList); -$item->picto = 'user'; -$item->helpText = $langs->transnoentities('WebPortalUserLoggedHelp'); $setupnotempty += count($formSetup->items); diff --git a/htdocs/webportal/class/controller.class.php b/htdocs/webportal/class/controller.class.php index ddc3ae103df..b81ee646ca1 100644 --- a/htdocs/webportal/class/controller.class.php +++ b/htdocs/webportal/class/controller.class.php @@ -27,7 +27,6 @@ */ class Controller { - /** * if this controller need logged user or not * @var bool diff --git a/htdocs/webportal/class/html.formlistwebportal.class.php b/htdocs/webportal/class/html.formlistwebportal.class.php index 8dee9bb347b..3457eff8e24 100644 --- a/htdocs/webportal/class/html.formlistwebportal.class.php +++ b/htdocs/webportal/class/html.formlistwebportal.class.php @@ -48,7 +48,7 @@ class FormListWebPortal public $db; /** - * @var Form Instance of the Form + * @var FormWebPortal Instance of the Form */ public $form; @@ -158,6 +158,7 @@ class FormListWebPortal $search[$key] = GETPOST('search_' . $key, 'alpha'); } if (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { + /* Fix: this is not compatible with multilangage date format, replaced with dolibarr method $postDateStart = GETPOST('search_' . $key . '_dtstart', 'alphanohtml'); $postDateEnd = GETPOST('search_' . $key . '_dtend', 'alphanohtml'); // extract date YYYY-MM-DD for year, month and day @@ -175,6 +176,13 @@ class FormListWebPortal $dateEndDay = (int) $dateEndArr[2]; $search[$key . '_dtend'] = dol_mktime(23, 59, 59, $dateEndMonth, $dateEndDay, $dateEndYear); } + */ + $search[$key . '_dtstartmonth'] = GETPOSTINT('search_' . $key . '_dtstartmonth'); + $search[$key . '_dtstartday'] = GETPOSTINT('search_' . $key . '_dtstartday'); + $search[$key . '_dtstartyear'] = GETPOSTINT('search_' . $key . '_dtstartyear'); + $search[$key . '_dtendmonth'] = GETPOSTINT('search_' . $key . '_dtendmonth'); + $search[$key . '_dtendday'] = GETPOSTINT('search_' . $key . '_dtendday'); + $search[$key . '_dtendyear'] = GETPOSTINT('search_' . $key . '_dtendyear'); } } $this->search = $search; @@ -224,8 +232,14 @@ class FormListWebPortal foreach ($object->fields as $key => $val) { $search[$key] = ''; if (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { - $search[$key . '_dtstart'] = ''; - $search[$key . '_dtend'] = ''; + //$search[$key . '_dtstart'] = ''; + //$search[$key . '_dtend'] = ''; + $search[$key . '_dtstartmonth'] = ''; + $search[$key . '_dtendmonth'] = ''; + $search[$key . '_dtstartday'] = ''; + $search[$key . '_dtendday'] = ''; + $search[$key . '_dtstartyear'] = ''; + $search[$key . '_dtendyear'] = ''; } } $this->search = $search; @@ -484,13 +498,13 @@ class FormListWebPortal if (!empty($val['arrayofkeyval']) && is_array($val['arrayofkeyval'])) { $html .= $this->form->selectarray('search_' . $key, $val['arrayofkeyval'], (isset($search[$key]) ? $search[$key] : ''), $val['notnull'], 0, 0, '', 1, 0, 0, '', ''); } elseif (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { - $postDateStart = GETPOST('search_' . $key . '_dtstart', 'alphanohtml'); - $postDateEnd = GETPOST('search_' . $key . '_dtend', 'alphanohtml'); + $postDateStart = dol_mktime(0, 0, 0, $search[$key . '_dtstartmonth'], $search[$key . '_dtstartday'], $search[$key . '_dtstartyear']); + $postDateEnd = dol_mktime(0, 0, 0, $search[$key . '_dtendmonth'], $search[$key . '_dtendday'], $search[$key . '_dtendyear']); - $html .= '
'; + $html .= '
'; $html .= $this->form->inputDate('search_' . $key . '_dtstart', $postDateStart ? $postDateStart : '', $langs->trans('From')); $html .= '
'; - $html .= '
'; + $html .= '
'; $html .= $this->form->inputDate('search_' . $key . '_dtend', $postDateEnd ? $postDateEnd : '', $langs->trans('to')); $html .= '
'; } else { diff --git a/htdocs/webportal/class/html.formwebportal.class.php b/htdocs/webportal/class/html.formwebportal.class.php index ab98fecb7a8..59cc07a8f40 100644 --- a/htdocs/webportal/class/html.formwebportal.class.php +++ b/htdocs/webportal/class/html.formwebportal.class.php @@ -93,18 +93,21 @@ class FormWebPortal extends Form /** * Input for date * - * @param string $name Name of html input - * @param string $value [=''] Value of input (format : YYYY-MM-DD) - * @param string $placeholder [=''] Placeholder for input (keep empty for no label) - * @param string $id [=''] Id - * @param string $morecss [=''] Class - * @param string $moreparam [=''] Add attributes (checked, required, etc) - * @return string Html for input date + * @param string $name Name of html input + * @param string|int $value [=''] Value of input (format : YYYY-MM-DD) + * @param string $placeholder [=''] Placeholder for input (keep empty for no label) + * @param string $id [=''] Id + * @param string $morecss [=''] Class + * @param string $moreparam [=''] Add attributes (checked, required, etc) + * @return string Html for input date */ public function inputDate($name, $value = '', $placeholder = '', $id = '', $morecss = '', $moreparam = '') { $out = ''; + // Disabled: Use of native browser date input field as it is not compliant with multilanguagedate format, + // nor with timezone management. + /* $out .= 'selectDate($value === '' ? -1 : $value, $name, 0, 0, 0, "", 1, 0, 0, ''); return $out; } diff --git a/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN b/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN index 2650b696a75..f3822202b7e 100644 --- a/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN +++ b/htdocs/webservices/demo_wsclient_thirdparty.php-NORUN @@ -61,7 +61,7 @@ $authentication=array( // Test URL -if ($action=='get') +if ($action == 'get') { $parameters = array('authentication'=>$authentication,'id'=>1,'name'=>'','ref_ext'=>''); dol_syslog("Call method ".$WS_METHOD_GETTHIRDSPARTY); @@ -78,7 +78,7 @@ if ($action=='get') } // Test URL -if ($action=='getList') +if ($action == 'getList') { $filterthirdparty=array('category'=>'3'); $parameters = array('authentication'=>$authentication,$filterthirdparty); @@ -96,7 +96,7 @@ if ($action=='getList') } // Test URL -if ($action=='create') +if ($action == 'create') { $newthirdparty=array( 'ref'=>'Test WS Create Client', @@ -109,7 +109,7 @@ if ($action=='create') 'zip'=>'75000', 'town'=>'Paris', 'country_id'=>'1',//France - 'customer_code'=>'-1',//Generate code regarding module configuration + 'customer_code'=>'-1',//Generate code regarding module configuration 'supplier_code'=>'0', 'phone'=>'0141414141', 'fax'=>'0121212121', @@ -127,8 +127,8 @@ if ($action=='create') //,'options_attr1'=>'Attr1 balbal', //Extra field example where field code is attr1 //'options_attr2'=>'Attr2 balbal' //Extra field example where field code is attr2 ); - - + + $parameters = array('authentication'=>$authentication,'thirdparty'=>$newthirdparty); dol_syslog("Call method ".$WS_METHOD_CREATETHIRDSPARTY); $result = $soapclient->call($WS_METHOD_CREATETHIRDSPARTY,$parameters,$ns,''); @@ -144,7 +144,7 @@ if ($action=='create') } // Test URL -if ($action=='update') +if ($action == 'update') { $thirdparty=array( 'id'=>'1', diff --git a/htdocs/website/class/website.class.php b/htdocs/website/class/website.class.php index dd3d8eb48df..6a045bbfc4d 100644 --- a/htdocs/website/class/website.class.php +++ b/htdocs/website/class/website.class.php @@ -669,7 +669,7 @@ class Website extends CommonObject $newref = dol_sanitizeFileName($newref); if (empty($newref)) { - $this->error = 'ErrorBadParameter'; + $this->error = 'ErrorBadParameter newref'; return -1; } @@ -678,7 +678,7 @@ class Website extends CommonObject // Check no site with ref exists if ($object->fetch(0, $newref) > 0) { $this->error = 'ErrorNewRefIsAlreadyUsed'; - return -1; + return -2; } $this->db->begin(); @@ -812,7 +812,7 @@ class Website extends CommonObject } else { $this->db->rollback(); - return -1; + return -3; } } diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php index 6797af1bbbe..bdeb6e734db 100644 --- a/htdocs/website/class/websitepage.class.php +++ b/htdocs/website/class/websitepage.class.php @@ -504,12 +504,13 @@ class WebsitePage extends CommonObject /** * Count objects in the database. * - * @param string $websiteid Web site - * @param array $filter Filter array - * @param string $filtermode Filter mode (AND or OR) - * @return int int <0 if KO, array of pages if OK + * @param string $websiteid Web site + * @param string|array $filter Filter as an Universal Search string. + * Example: '((client:=:1) OR ((client:>=:2) AND (client:<=:3))) AND (client:!=:8) AND (nom:like:'a%')' + * @param string $filtermode Filter mode (AND or OR) + * @return int int <0 if KO, array of pages if OK */ - public function countAll($websiteid, array $filter = array(), $filtermode = 'AND') + public function countAll($websiteid, $filter = '', $filtermode = 'AND') { dol_syslog(__METHOD__, LOG_DEBUG); @@ -519,36 +520,53 @@ class WebsitePage extends CommonObject $sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; $sql .= ' WHERE t.fk_website = '.((int) $websiteid); - // Manage filter (same than into fetchAll) - $sqlwhere = array(); - if (count($filter) > 0) { - foreach ($filter as $key => $value) { - if ($key == 't.rowid' || $key == 't.fk_website' || $key == 'status') { - $sqlwhere[] = $key." = ".((int) $value); - } elseif ($key == 'type_container') { - $sqlwhere[] = $key." = '".$this->db->escape($value)."'"; - } elseif ($key == 'lang' || $key == 't.lang') { - $listoflang = array(); - $foundnull = 0; - foreach (explode(',', $value) as $tmpvalue) { - if ($tmpvalue == 'null') { - $foundnull++; - continue; + // Deprecated. If we receive an array, we use it. Prefer using the USF syntax. + if (is_array($filter)) { + $sqlwhere = array(); + + if (count($filter) > 0) { + foreach ($filter as $key => $value) { + if ($key == 't.rowid' || $key == 'rowid' || $key == 't.fk_website' || $key == 'fk_website' || $key == 'status' || $key == 't.status') { + $sqlwhere[] = $key." = ".((int) $value); + } elseif ($key == 'type_container' || $key == 't.type_container') { + $sqlwhere[] = $key." = '".$this->db->escape($value)."'"; + } elseif ($key == 'lang' || $key == 't.lang') { + $listoflang = array(); + $foundnull = 0; + foreach (explode(',', $value) as $tmpvalue) { + if ($tmpvalue == 'null') { + $foundnull++; + continue; + } + $listoflang[] = "'".$this->db->escape(substr(str_replace("'", '', $tmpvalue), 0, 2))."'"; } - $listoflang[] = "'".$this->db->escape(substr(str_replace("'", '', $tmpvalue), 0, 2))."'"; + $stringtouse = $this->db->sanitize($key)." IN (".$this->db->sanitize(implode(',', $listoflang), 1).")"; + if ($foundnull) { + $stringtouse = "(".$stringtouse." OR ".$this->db->sanitize($key)." IS NULL)"; + } + $sqlwhere[] = $stringtouse; + } else { + $sqlwhere[] = $this->db->sanitize($key)." LIKE '%".$this->db->escape($value)."%'"; } - $stringtouse = $key." IN (".$this->db->sanitize(implode(',', $listoflang), 1).")"; - if ($foundnull) { - $stringtouse = "(".$stringtouse." OR ".$key." IS NULL)"; - } - $sqlwhere[] = $stringtouse; - } else { - $sqlwhere[] = $key." LIKE '%".$this->db->escape($value)."%'"; } } + if (count($sqlwhere) > 0) { + if (!empty($websiteid)) { + $sql .= " AND (".implode(' '.$this->db->escape($filtermode).' ', $sqlwhere).')'; + } else { + $sql .= " WHERE ".implode(' '.$this->db->escape($filtermode).' ', $sqlwhere); + } + } + + $filter = ''; } - if (count($sqlwhere) > 0) { - $sql .= ' AND ('.implode(' '.$this->db->escape($filtermode).' ', $sqlwhere).')'; + + $errormessage = ''; + $sql .= forgeSQLFromUniversalSearchCriteria($filter, $errormessage); + if ($errormessage) { + $this->errors[] = $errormessage; + dol_syslog(__METHOD__.' '.implode(',', $this->errors), LOG_ERR); + return -1; } $resql = $this->db->query($sql); @@ -707,7 +725,7 @@ class WebsitePage extends CommonObject if ($istranslation) { if (is_null($website)) { - $website = new Website($db); + $website = new Website($this->db); } $website->fetch($object->fk_website); diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 2bdef06401f..b17f0e6f92c 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -140,7 +140,7 @@ if (GETPOST('createpagefromclone', 'alpha')) { if (empty($action) && $file_manager) { $action = 'file_manager'; } -if ($action == 'replacesite' || (empty($action) && $replacesite)) { +if ($action == 'replacesite' || (empty($action) && $replacesite)) { // Test on permission not required $mode = 'replacesite'; } if (GETPOST('refreshsite') || GETPOST('refreshsite_x') || GETPOST('refreshsite.x')) { @@ -333,7 +333,7 @@ if (GETPOST('optionsitefiles')) { } if (empty($sortfield)) { - if ($action == 'file_manager') { + if ($action == 'file_manager') { // Test on permission not required $sortfield = 'name'; $sortorder = 'ASC'; } else { @@ -342,9 +342,9 @@ if (empty($sortfield)) { } } -$searchkey = GETPOST('searchstring', 'restricthtml'); +$searchkey = GETPOST('searchstring', 'restricthtmlallowunvalid'); // or 'none', must be same then $searchstring -if ($action == 'replacesite' || $mode == 'replacesite') { +if ($action == 'replacesite' || $mode == 'replacesite') { // Test on permission not required $containertype = GETPOST('optioncontainertype', 'aZ09') != '-1' ? GETPOST('optioncontainertype', 'aZ09') : ''; $langcode = GETPOST('optionlanguage', 'aZ09'); $otherfilters = array(); @@ -584,7 +584,7 @@ if ($massaction == 'delcategory' && GETPOST('confirmmassaction', 'alpha') && $us // Replacement of string into pages if ($massaction == 'replace' && GETPOST('confirmmassaction', 'alpha') && $usercanedit) { - $replacestring = GETPOST('replacestring', 'none'); + $replacestring = GETPOST('replacestring', 'restricthtmlallowunvalid'); // or 'none', must be same then $searchstring $dolibarrdataroot = preg_replace('/([\\/]+)$/i', '', DOL_DATA_ROOT); $allowimportsite = true; @@ -2199,7 +2199,7 @@ if ($usercanedit && (($action == 'updatesource' || $action == 'updatecontent' || $db->begin(); $objectnew = new Website($db); - $result = $objectnew->createFromClone($user, GETPOSTINT('id'), GETPOSTINT('siteref'), (GETPOSTINT('newlang') ? GETPOSTINT('newlang') : '')); + $result = $objectnew->createFromClone($user, GETPOSTINT('id'), GETPOST('siteref'), (GETPOSTINT('newlang') ? GETPOSTINT('newlang') : '')); if ($result < 0) { $error++; @@ -2208,6 +2208,7 @@ if ($usercanedit && (($action == 'updatesource' || $action == 'updatecontent' || $db->rollback(); } else { + setEventMessages("ObjectClonedSuccessfuly", null, 'mesgs'); $object = $objectnew; $id = $object->id; $pageid = $object->fk_default_home; @@ -3114,7 +3115,7 @@ if (!GETPOST('hide_websitemenu')) { print 'ref).'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("GenerateSitemaps")).'">'; // Find / replace tool - print 'ref).'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("ReplaceWebsiteContent")).'">'; + print 'ref).'" class="button bordertransp"'.$disabled.' title="'.dol_escape_htmltag($langs->trans("ReplaceWebsiteContent")).'">'; } print ''; @@ -3294,7 +3295,7 @@ if (!GETPOST('hide_websitemenu')) { print ''.img_picto($langs->trans($text_off), 'switch_on').''; } } else { - print ajax_object_onoff($websitepage, 'status', 'status', 'Online', 'Offline', array(), 'valignmiddle inline-block'.(empty($websitepage->id) ? ' opacitymedium disabled' : ''), 'statuswebsitepage', 1, 'pageid='.$websitepage->id); + print ajax_object_onoff($websitepage, 'status', 'status', 'Online', 'Offline', array(), 'valignmiddle inline-block'.(empty($websitepage->id) ? ' opacitymedium disabled' : ''), 'statuswebsitepage', 1, 'website='.urlencode($website->ref).'&pageid='.((int) $websitepage->id)); } //print '
'; print ''; @@ -3431,6 +3432,8 @@ if (!GETPOST('hide_websitemenu')) { // Edit CKEditor if (getDolGlobalInt('WEBSITE_ALLOW_CKEDITOR')) { print ''.dol_escape_htmltag("CKEditor").''; + } else { + print ''; } print ''; @@ -3978,7 +3981,7 @@ if ($action == 'editcss') { print '
'; - print img_picto('', 'security', 'class="paddingleft pictofixedwidth"').$langs->trans("Credentials"); - print '
'; + print img_picto('', 'security', 'class="paddingleft pictofixedwidth"').$langs->trans("Security"); + print '
'.$langs->trans("RangeOfLoginValidity").'
'.$langs->trans("RangeOfLoginValidity").''; if ($object->datestartvalidity) { print ''.$langs->trans("FromDate").' '; @@ -1886,7 +1886,7 @@ if ($action == 'create' || $action == 'adduserldap') { // Alternative email for OAUth2 login if (!empty($object->email_oauth2) && preg_match('/googleoauth/', $dolibarr_main_authentication)) { - print '
'.$langs->trans("AlternativeEmailForOAuth2").'
'.$langs->trans("AlternativeEmailForOAuth2").''; print dol_print_email($object->email_oauth2); print '
'.$langs->trans("Password").'
'.$langs->trans("Password").''; print $valuetoshow; print "
- > + + >
'; - print 'combination_price_levels[$i]->variation_price_percentage) ? ' checked' : '').'> '; + print 'combination_price_levels[$i]->variation_price_percentage ? ' checked' : '').'> '; print '
'; if (!empty($val['arrayofkeyval']) && is_array($val['arrayofkeyval'])) { - print $form->selectarray('search_'.$key, $val['arrayofkeyval'], (isset($search[$key]) ? $search[$key] : ''), $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100'.($key == 'status' ? ' search_status width100 onrightofpage' : ''), 1); + print $form->selectarray('search_'.$key, $val['arrayofkeyval'], (isset($search[$key]) ? $search[$key] : ''), 1, 0, 0, '', 1, 0, 0, '', 'maxwidth100'.($key == 'status' ? ' search_status width100 onrightofpage' : ''), 1); } elseif ((strpos($val['type'], 'integer:') === 0) || (strpos($val['type'], 'sellist:') === 0)) { print $object->showInputField($val, $key, (isset($search[$key]) ? $search[$key] : ''), '', '', 'search_', $cssforfield.' maxwidth250', 1); } elseif (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { @@ -555,7 +560,7 @@ foreach ($object->fields as $key => $val) { } 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, 'minwidth100imp maxwidth125', 2); + print $formadmin->select_language((isset($search[$key]) ? $search[$key] : ''), 'search_lang', 0, null, 1, 0, 0, 'minwidth100imp maxwidth125', 2); } else { print ''; } @@ -598,6 +603,7 @@ $totalarray['nbfield'] = 0; // Fields title label // -------------------------------------------------------------------- print '
'.$langs->trans("NoRecordFound").'
'; @@ -101,7 +102,7 @@ if (!empty($object_rights->write) && $action != 'selectlines') { } if ($action == 'selectlines') { ?> -
'; print $langs->trans('WEBSITE_HTML_HEADER'); $htmlhelp = $langs->trans("Example").' :
'; - $htmlhelp .= dol_htmlentitiesbr($htmlheadercontentdefault); + $htmlhelp .= dol_nl2br(dol_htmlentities($htmlheadercontentdefault)); // do not use dol_htmlentitiesbr here, $htmlheadercontentdefault is HTML with content like and '; @@ -4712,8 +4718,8 @@ if ($action == 'editmeta' || $action == 'createcontainer') { // Edit properties print '
'; $htmlhelp = $langs->trans("EditTheWebSiteForACommonHeader").'

'; $htmlhelp .= $langs->trans("Example").' :
'; - $htmlhelp .= dol_htmlentitiesbr($htmlheadercontentdefault); - print $form->textwithpicto($langs->trans('HtmlHeaderPage'), $htmlhelp, 1, 'help', '', 0, 2, 'htmlheadertooltip'); + $htmlhelp .= dol_nl2br(dol_htmlentities($htmlheadercontentdefault)); // do not use dol_htmlentitiesbr here, $htmlheadercontentdefault is HTML with content like and