diff --git a/locale/sources/administration.pot b/locale/sources/administration.pot index e187b0363a..3387f3b9ef 100644 --- a/locale/sources/administration.pot +++ b/locale/sources/administration.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 18.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-17 08:58+0000\n" +"POT-Creation-Date: 2025-11-18 11:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -151,7 +151,7 @@ msgstr "" #: ../../content/administration/hosting.rst:42 #: ../../content/administration/hosting.rst:85 -msgid "Follow the instructions found in :ref:`the Import your database section ` of the Odoo.sh *Create your project* documentation." +msgid "Follow the instructions found in :ref:`the Import a database section ` of the Odoo.sh *Create a project* documentation." msgstr "" #: ../../content/administration/hosting.rst:46 @@ -234,7 +234,7 @@ msgid "Databases are **not reachable** during their migration." msgstr "" #: ../../content/administration/hosting.rst:122 -msgid "Download a :ref:`backup of your Odoo.sh production database `." +msgid "Download a :ref:`backup of your Odoo.sh production database `." msgstr "" #: ../../content/administration/mobile.rst:3 @@ -522,6 +522,7 @@ msgid ":guilabel:`My Apps Dashboard`" msgstr "" #: ../../content/administration/odoo_online.rst:3 +#: ../../content/administration/odoo_sh/getting_started/create.rst:121 #: ../../content/administration/supported_versions.rst:29 #: ../../content/administration/upgrade.rst:14 #: ../../content/administration/upgrade.rst:109 @@ -598,7 +599,7 @@ msgid ":ref:`odoo_online/web-services`" msgstr "" #: ../../content/administration/odoo_online.rst:46 -#: ../../content/administration/odoo_sh/getting_started/branches.rst:293 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:521 #: ../../content/administration/odoo_sh/getting_started/settings.rst:123 #: ../../content/administration/odoo_sh/getting_started/settings.rst:168 #: ../../content/administration/upgrade.rst:3 @@ -682,7 +683,7 @@ msgid "You can search for tags in the search bar." msgstr "" #: ../../content/administration/odoo_online.rst:114 -#: ../../content/administration/odoo_sh/getting_started/branches.rst:550 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:803 msgid "Delete" msgstr "" @@ -762,7 +763,7 @@ msgstr "" msgid "And here is the equivalent example with JSON-RPC::" msgstr "" -#: ../../content/administration/odoo_sh.rst:5 +#: ../../content/administration/odoo_sh.rst:6 #: ../../content/administration/supported_versions.rst:30 #: ../../content/administration/upgrade.rst:22 #: ../../content/administration/upgrade.rst:139 @@ -770,6 +771,10 @@ msgstr "" msgid "Odoo.sh" msgstr "" +#: ../../content/administration/odoo_sh.rst:8 +msgid "Odoo.sh is the official cloud platform for hosting and managing Odoo applications. It offers a range of features such as web shell, module dependencies, continuous integration, and SSH access." +msgstr "" + #: ../../content/administration/odoo_sh/advanced.rst:5 msgid "Advanced" msgstr "" @@ -780,13 +785,11 @@ msgstr "" #: ../../content/administration/odoo_sh/advanced/containers.rst:7 #: ../../content/administration/odoo_sh/advanced/submodules.rst:9 -#: ../../content/administration/odoo_sh/getting_started/branches.rst:6 +#: ../../content/administration/odoo_sh/first_module.rst:6 #: ../../content/administration/odoo_sh/getting_started/builds.rst:9 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:6 #: ../../content/administration/odoo_sh/getting_started/online-editor.rst:9 #: ../../content/administration/odoo_sh/getting_started/settings.rst:6 #: ../../content/administration/odoo_sh/getting_started/status.rst:6 -#: ../../content/administration/odoo_sh/overview.rst:5 msgid "Overview" msgstr "" @@ -1113,8 +1116,8 @@ msgstr "" #: ../../content/administration/odoo_sh/advanced/submodules.rst:82 #: ../../content/administration/odoo_sh/advanced/submodules.rst:94 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:360 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:498 +#: ../../content/administration/odoo_sh/first_module.rst:362 +#: ../../content/administration/odoo_sh/first_module.rst:500 msgid "Replace" msgstr "" @@ -1154,1508 +1157,2032 @@ msgstr "" msgid "If you're adding a repository that contains a lot of modules, you may want to ignore some of them in case there are any that are installed automatically. To do so, you can prefix your submodule folder with a :code:`.`. The platform will ignore this folder and you can hand pick your modules by creating symlinks to them from another folder." msgstr "" -#: ../../content/administration/odoo_sh/getting_started.rst:5 -msgid "Get started" +#: ../../content/administration/odoo_sh/first_module.rst:3 +msgid "Your first module" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:3 -msgid "Branches" +#: ../../content/administration/odoo_sh/first_module.rst:8 +msgid "This chapter helps you to create your first Odoo module and deploy it in your Odoo.sh project." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:8 -msgid "The branches view gives you an overview of the different branches your repository has." +#: ../../content/administration/odoo_sh/first_module.rst:10 +msgid "This tutorial requires you created a project on Odoo.sh, and you know your Github repository's URL." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:16 -#: ../../content/administration/odoo_sh/getting_started/builds.rst:41 -msgid "Stages" +#: ../../content/administration/odoo_sh/first_module.rst:13 +msgid "Basic use of Git and Github is explained." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:18 -msgid "Odoo.sh offers three different stages for your branches: production, staging and development." +#: ../../content/administration/odoo_sh/first_module.rst:15 +msgid "The below assumptions are made:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:20 -msgid "You can change the stage of a branch by drag and dropping it into the stage section title." +#: ../../content/administration/odoo_sh/first_module.rst:17 +msgid "*~/src* is the directory where are located the Git repositories related to your Odoo projects," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:28 -#: ../../content/administration/odoo_sh/getting_started/builds.rst:44 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:132 -msgid "Production" +#: ../../content/administration/odoo_sh/first_module.rst:18 +msgid "*odoo* is the Github user," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:30 -msgid "This is the branch holding the code on which your production database runs. There can be only one production branch." +#: ../../content/administration/odoo_sh/first_module.rst:19 +msgid "*odoo-addons* is the Github repository," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:33 -msgid "When you push a new commit in this branch, your production server is updated with the code of the new revision and is then restarted." +#: ../../content/administration/odoo_sh/first_module.rst:20 +msgid "*feature-1* is the name of a development branch," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:36 -msgid "If your changes require the update of a module, such as a change in a form view, and you want it to be performed automatically, increase the version number of the module in its manifest (*__manifest__.py*). The platform will then take care to perform the update during which the instance will be held temporarily unavailable for maintenance reason." +#: ../../content/administration/odoo_sh/first_module.rst:21 +msgid "*master* is the name of the production branch," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:43 -msgid "This method is equivalent to perform an upgrade of the module through the Apps menu, or through the :code:`-u` switch of :doc:`the command line `." +#: ../../content/administration/odoo_sh/first_module.rst:22 +msgid "*my_module* is the name of the module." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:47 -msgid "In the case the changes in the commit prevent the server to restart, or if the modules update fails, the server is automatically reverted to the previous successful code revision and the database is roll-backed as it was before the update. You still have access to the log of the failed update, so you can troubleshoot it." +#: ../../content/administration/odoo_sh/first_module.rst:24 +msgid "Replace these by the values of your choice." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:53 -msgid "The demo data is not loaded, as it is not meant to be used in a production database. The unit tests are not performed, as it would increase the unavailability time of the production database during the updates." +#: ../../content/administration/odoo_sh/first_module.rst:27 +msgid "Create the development branch" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:57 -msgid "Partners using trial projects should be aware their production branch, along with all the staging branches, will automatically be set back to the development stage after 30 days." +#: ../../content/administration/odoo_sh/first_module.rst:30 +msgid "From Odoo.sh" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:61 -#: ../../content/administration/odoo_sh/getting_started/builds.rst:63 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:87 -msgid "Staging" +#: ../../content/administration/odoo_sh/first_module.rst:32 +msgid "In the branches view:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:63 -msgid "Staging branches are meant to test your new features using the production data without compromising the actual production database with test records. They will create databases that are neutralized duplicates of the production database." +#: ../../content/administration/odoo_sh/first_module.rst:34 +msgid "hit the :code:`+` button next to the development stage," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:67 -msgid "The neutralization includes:" +#: ../../content/administration/odoo_sh/first_module.rst:35 +msgid "choose the branch *master* in the *Fork* selection," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:69 -msgid "Disabling scheduled actions. If you want to test them, you can trigger their action manually or re-enable them. Be aware that the platform will trigger them less often if no one is using the database in order to save up resources." +#: ../../content/administration/odoo_sh/first_module.rst:36 +msgid "type *feature-1* in the *To* input." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:72 -msgid "Disabling outgoing emails by intercepting them with a mailcatcher. An :ref:`interface to view ` the emails sent by your database is provided. That way, you do not have to worry about sending test emails to your contacts." +#: ../../content/administration/odoo_sh/first_module.rst:38 +msgid "|pic1| |pic2|" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:75 -msgid "Setting payment providers and shipping providers in test mode." +#: ../../content/administration/odoo_sh/first_module.rst:40 +#: ../../content/administration/odoo_sh/first_module.rst:40 +msgid "pic1" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:76 -msgid "Disabling IAP services" +#: ../../content/administration/odoo_sh/first_module.rst:43 +#: ../../content/administration/odoo_sh/first_module.rst:43 +msgid "pic2" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:78 -msgid "The latest database will be kept alive indefinitely, older ones from the same branch may get garbage collected to make room for new ones. It will be valid for 3 months, after which you will be expected to rebuild the branch. If you make configuration or view changes in these databases, make sure to document them or write them directly in the modules of the branch, using XML data files overriding the default configuration or views." +#: ../../content/administration/odoo_sh/first_module.rst:46 +msgid "Once the build created, you can access the editor and browse to the folder *~/src/user* to access to the code of your development branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:83 -msgid "The unit tests are not performed as, in Odoo, they currently rely on the demo data, which is not loaded in the production database. In the future, if Odoo supports to run the unit tests without the demo data, Odoo.sh will then consider running the tests on staging databases." +#: ../../content/administration/odoo_sh/first_module.rst:56 +msgid "From your computer" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:88 -#: ../../content/administration/odoo_sh/getting_started/builds.rst:81 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:57 -msgid "Development" +#: ../../content/administration/odoo_sh/first_module.rst:58 +msgid "Clone your Github repository on your computer:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:90 -msgid "Development branches create new databases using the demo data to run the unit tests. The installed modules are the ones included in your branches. You can change this list of modules to install in your :ref:`project Settings `." +#: ../../content/administration/odoo_sh/first_module.rst:67 +msgid "Create a new branch:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:94 -msgid "When you push a new commit in one of these branches, a new server is started, with a database created from scratch and the new revision of the branch. The demo data is loaded, and the unit tests are performed by default. This verifies your changes do not break any of the features tested by them. If you wish, you can disable the tests or allow specific tests to be run with custom tags in the :ref:`branch's settings `." +#: ../../content/administration/odoo_sh/first_module.rst:74 +msgid "Create the module structure" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:101 -msgid "Similar to staging branches, the emails are not sent but are intercepted by a mailcatcher and scheduled actions are not triggered as long as the database is not in use." +#: ../../content/administration/odoo_sh/first_module.rst:77 +msgid "Scaffolding the module" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:104 -msgid "The databases created for development branches are meant to live around three days. After that, they can be automatically garbage collected to make room for new databases without prior notice." +#: ../../content/administration/odoo_sh/first_module.rst:79 +msgid "While not necessary, scaffolding avoids the tedium of setting the basic Odoo module structure. You can scaffold a new module using the executable *odoo-bin*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:110 -msgid "Merging your branches" +#: ../../content/administration/odoo_sh/first_module.rst:82 +msgid "From the Odoo.sh editor, in a terminal:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:112 -msgid "You can merge your branches easily by drag and dropping them into each other." +#: ../../content/administration/odoo_sh/first_module.rst:88 +msgid "Or, from your computer, if you have an installation of Odoo:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:117 -msgid "When you want to test the changes of your development branches with the production data, you can either:" +#: ../../content/administration/odoo_sh/first_module.rst:94 +msgid "If you do not want to bother installing Odoo on your computer, you can also :download:`download this module structure template ` in which you replace every occurrences of *my_module* to the name of your choice." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:120 -msgid "merge the development branch into your staging branch, by drag and dropping it onto the desired staging branch," +#: ../../content/administration/odoo_sh/first_module.rst:98 +msgid "The below structure will be generated:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:121 -msgid "drag and dropping the development branch on the staging section title, to make it become a staging branch." +#: ../../content/administration/odoo_sh/first_module.rst:121 +msgid "Do not use special characters other than the underscore ( _ ) for your module name, not even an hyphen ( - ). This name is used for the Python classes of your module, and having classes name with special characters other than the underscore is not valid in Python." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:123 -msgid "When your latest changes are ready for production, you can drag and drop your staging branch onto your production branch to merge and deploy in production your newest features." +#: ../../content/administration/odoo_sh/first_module.rst:125 +msgid "Uncomment the content of the files:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:127 -msgid "If you are bold enough, you can merge your development branches into your production branch as well. It just means you skip the validation of your changes with the production data through a staging branch." +#: ../../content/administration/odoo_sh/first_module.rst:127 +msgid "*models/models.py*, an example of model with its fields," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:131 -msgid "You can merge your development branches into each other, and your staging branches into each other." +#: ../../content/administration/odoo_sh/first_module.rst:129 +msgid "*views/views.xml*, a tree and a form view, with the menus opening them," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:133 -msgid "Of course, you can also use :code:`git merge` directly on your workstation to merge your branches. Odoo.sh will be notified when new revisions have been pushed in your branches." +#: ../../content/administration/odoo_sh/first_module.rst:131 +msgid "*demo/demo.xml*, demo records for the above example model," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:136 -msgid "Merging a staging branch in the production branch only merges the source code: Any configuration changes you made in the staging databases are not passed to the production database." +#: ../../content/administration/odoo_sh/first_module.rst:133 +msgid "*controllers/controllers.py*, an example of controller implementing some routes," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:139 -msgid "If you test configuration changes in staging branches, and want them to be applied in the production, you have to either:" +#: ../../content/administration/odoo_sh/first_module.rst:135 +msgid "*views/templates.xml*, two example qweb views used by the above controller routes," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:141 -msgid "write the configuration changes in XML data files overriding the default configuration or views in your branches, and then increase the version of your module in its manifest (*__manifest__.py*) to trigger the update of the module when you merge your staging branch in your production branch. This is the best practice for a better scalability of your developments as you will use the Git versioning features for all your configuration changes, and therefore have a traceability for your changes." +#: ../../content/administration/odoo_sh/first_module.rst:137 +msgid "*__manifest__.py*, the manifest of your module, including for instance its title, description and data files to load. You just need to uncomment the access control list data file:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:147 -msgid "pass them manually from your staging to your production database, by copy/pasting them." +#: ../../content/administration/odoo_sh/first_module.rst:146 +msgid "Manually" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:152 -msgid "Tabs" +#: ../../content/administration/odoo_sh/first_module.rst:148 +msgid "If you want to create your module structure manually, you can follow the :doc:`/developer/tutorials/server_framework_101` tutorial to understand the structure of a module and the content of each file." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:155 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:58 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:88 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:133 -msgid "History" +#: ../../content/administration/odoo_sh/first_module.rst:153 +msgid "Push the development branch" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:157 -msgid "An overview of your branch history:" +#: ../../content/administration/odoo_sh/first_module.rst:155 +msgid "Stage the changes to be committed" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:159 -msgid "The messages of the commits and their authors," +#: ../../content/administration/odoo_sh/first_module.rst:161 +#: ../../content/administration/odoo_sh/first_module.rst:397 +msgid "Commit your changes" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:160 -msgid "The various events linked to the platform, such as stage changes, database imports, backup restores." +#: ../../content/administration/odoo_sh/first_module.rst:167 +msgid "Push your changes to your remote repository" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:165 -msgid "For each event, a status is displayed in the top right-hand corner. It can provide information about the ongoing operation on the database (installation, update, backup import, ...), or its result (tests feedback, successful backup import, ...). When an operation is successful, you can access the database thanks to the *connect* button." +#: ../../content/administration/odoo_sh/first_module.rst:169 +msgid "From an Odoo.sh editor terminal:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:173 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:78 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:108 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:153 -msgid "Mails" +#: ../../content/administration/odoo_sh/first_module.rst:175 +msgid "The above command is explained in the section :ref:`Commit & Push your changes ` of the :ref:`Online Editor ` chapter. It includes the explanation regarding the fact you will be prompted to type your username and password, and what to do if you use the two-factor authentication." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:175 -msgid "This tab contains the mail catcher. It displays an overview of the emails sent by your database. The mail catcher is available for your development and staging branches as the emails of your production database are really sent instead of being intercepted." +#: ../../content/administration/odoo_sh/first_module.rst:183 +#: ../../content/administration/odoo_sh/first_module.rst:385 +#: ../../content/administration/odoo_sh/first_module.rst:411 +msgid "Or, from your computer terminal:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:184 -msgid "Shell" +#: ../../content/administration/odoo_sh/first_module.rst:189 +msgid "You need to specify *-u origin feature-1* for the first push only. From that point, to push your future changes from your computer, you can simply use" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:186 -msgid "A shell access to your container. You can perform basic linux commands (:code:`ls`, :code:`top`) and open a shell on your database by typing :code:`psql`." +#: ../../content/administration/odoo_sh/first_module.rst:197 +msgid "Test your module" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:192 -#: ../../content/administration/odoo_sh/getting_started/branches.rst:208 -msgid "You can open multiple tabs and drag-and-drop them to arrange the layout as you wish, for instance side by side." +#: ../../content/administration/odoo_sh/first_module.rst:199 +msgid "Your branch should appear in your development branches in your project." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:196 -msgid "Long running shell instances are not guaranteed. Idle shells can be disconnected at anytime in order to free up resources." +#: ../../content/administration/odoo_sh/first_module.rst:204 +msgid "In the branches view of your project, you can click on your branch name in the left navigation panel to access its history." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:200 -msgid "Editor" +#: ../../content/administration/odoo_sh/first_module.rst:210 +msgid "You can see here the changes you just pushed, including the comment you set. Once the database ready, you can access it by clicking the *Connect* button." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:202 -msgid "An online integrated development environment (IDE) to edit the source code. You can also open terminals, Python consoles and even Odoo Shell consoles." +#: ../../content/administration/odoo_sh/first_module.rst:216 +msgid "If your Odoo.sh project is configured to install your module automatically, you will directly see it amongst the database apps. Otherwise, it will be available in the apps to install." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:212 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:113 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:158 -msgid "Monitoring" +#: ../../content/administration/odoo_sh/first_module.rst:220 +msgid "You can then play around with your module, create new records and test your features and buttons." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:214 -msgid "This link contains various monitoring metrics of the current build." +#: ../../content/administration/odoo_sh/first_module.rst:223 +msgid "Test with the production data" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:219 -msgid "You can zoom, change the time range or select a specific metric on each graph. On the graphs, annotations help you relate to changes on the build (database import, git push, etc...)." +#: ../../content/administration/odoo_sh/first_module.rst:225 +msgid "You need to have a production database for this step. You can create it if you do not have it yet." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:225 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:68 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:98 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:143 -msgid "Logs" +#: ../../content/administration/odoo_sh/first_module.rst:227 +msgid "Once you tested your module in a development build with the demo data and believe it is ready, you can test it with the production data using a staging branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:227 -msgid "A viewer to have a look to your server logs." +#: ../../content/administration/odoo_sh/first_module.rst:230 +msgid "You can either:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:232 -msgid "Different logs are available:" +#: ../../content/administration/odoo_sh/first_module.rst:232 +msgid "Make your development branch a staging branch, by drag and dropping it onto the *staging* section title." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:234 -msgid "install.log: The logs of the database installation. In a development branch, the logs of the tests are included." +#: ../../content/administration/odoo_sh/first_module.rst:238 +msgid "Merge it in an existing staging branch, by drag and dropping it onto the given staging branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:235 -msgid "pip.log: The logs of the Python dependencies installation." +#: ../../content/administration/odoo_sh/first_module.rst:243 +#: ../../content/administration/odoo_sh/first_module.rst:289 +msgid "You can also use the :code:`git merge` command to merge your branches." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:236 -msgid "odoo.log: The logs of the running server." +#: ../../content/administration/odoo_sh/first_module.rst:245 +msgid "This will create a new staging build, which will duplicate the production database and make it run using a server updated with your latest changes of your branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:237 -msgid "update.log: The logs of the database updates." +#: ../../content/administration/odoo_sh/first_module.rst:251 +#: ../../content/administration/odoo_sh/first_module.rst:297 +msgid "Once the database ready, you can access it using the *Connect* button." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:238 -msgid "pg_long_queries.log: The logs of psql queries that take an unusual amount of time." +#: ../../content/administration/odoo_sh/first_module.rst:256 +#: ../../content/administration/odoo_sh/first_module.rst:300 +msgid "Install your module" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:240 -msgid "If new lines are added in the logs, they will be displayed automatically. If you scroll to the bottom, the browser will scroll automatically each time a new line is added." +#: ../../content/administration/odoo_sh/first_module.rst:258 +msgid "Your module will not be installed automatically, you have to install it from the apps menu. Indeed, the purpose of the staging build is to test the behavior of your changes as it would be on your production, and on your production you would not like your module to be installed automatically, but on demand." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:243 -msgid "You can pause the logs fetching by clicking on the according button in the upper right corner of the view. The fetching is automatically stopped after 5 minutes. You can restart it using the play button." +#: ../../content/administration/odoo_sh/first_module.rst:263 +msgid "Your module may not appear directly in your apps to install either, you need to update your apps list first:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:249 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:118 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:163 -msgid "Backups" +#: ../../content/administration/odoo_sh/first_module.rst:266 +msgid "Activate the :ref:`developer mode `" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:251 -msgid "A list of the backups available for download and restore, the ability to perform a manual backup and to import a database." +#: ../../content/administration/odoo_sh/first_module.rst:267 +msgid "in the apps menu, click the *Update Apps List* button," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:257 -msgid "Odoo.sh makes daily backups of the production database. It keeps 7 daily, 4 weekly and 3 monthly backups. Each backup includes the database dump, the filestore (attachments, binary fields), logs and sessions." +#: ../../content/administration/odoo_sh/first_module.rst:268 +msgid "in the dialog that appears, click the *Update* button." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:260 -msgid "Staging and development databases are not backed up. You nevertheless have the possibility to restore a backup of the production database in your staging branches, for testing purposes, or to manually recover data that has been deleted by accident from the production database." +#: ../../content/administration/odoo_sh/first_module.rst:273 +msgid "Your module will then appear in the list of available apps." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:264 -msgid "The list contains the backups kept on the server your production database is hosted on. This server only keeps one month of backups: 7 daily and 4 weekly backups." +#: ../../content/administration/odoo_sh/first_module.rst:279 +msgid "Deploy in production" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:267 -msgid "Dedicated backup servers keep the same backups, as well as 3 additional monthly backups. To restore or download one of these monthly backups, please `contact us `_." +#: ../../content/administration/odoo_sh/first_module.rst:281 +msgid "Once you tested your module in a staging branch with your production data, and believe it is ready for production, you can merge your branch in the production branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:270 -msgid "If you merge a commit updating the version of one or several modules (in :file:`__manifest__.py`), or their linked python dependencies (in :file:`requirements.txt`), then Odoo.sh performs a backup automatically (flagged with type Update in the list), as either the container will be changed by the installation of new pip packages, either the database itself will be changed with the module update triggered afterwards. In these two cases, we are doing a backup as it may potentially break things." +#: ../../content/administration/odoo_sh/first_module.rst:284 +msgid "Drag and drop your staging branch on the production branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:276 -msgid "If you merge a commit that only changes some code without the above-mentioned modifications, then no backup is done by Odoo.sh, as neither the container nor the database is modified so the platform considers this safe enough. Of course, as an extra precaution, you can make a backup manually before making big changes in your production sources in case something goes wrong (those manual backups are available for about one week). To avoid abuse, we limit manual backups to 5 per day." +#: ../../content/administration/odoo_sh/first_module.rst:291 +msgid "This will merge the latest changes of your staging branch in the production branch, and update your production server with these latest changes." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:282 -msgid "The *import database* feature accepts database archives in the format provided by:" +#: ../../content/administration/odoo_sh/first_module.rst:302 +msgid "Your module will not be installed automatically, you have to install it manually as explained in the :ref:`above section about installing your module in staging databases `." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:284 -msgid "the standard Odoo databases manager, (available for on-premise Odoo servers under :code:`/web/database/manager`)" +#: ../../content/administration/odoo_sh/first_module.rst:310 +msgid "Add a change" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:286 -msgid "the Odoo online databases manager," +#: ../../content/administration/odoo_sh/first_module.rst:312 +msgid "This section explains how to add a change in your module by adding a new field in a model and deploy it." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:287 -msgid "the Odoo.sh backup download button of this *Backups* tab," +#: ../../content/administration/odoo_sh/first_module.rst:317 +msgid "From the Odoo.sh editor," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:288 -msgid "the Odoo.sh dump download button in the :ref:`Builds view `." +#: ../../content/administration/odoo_sh/first_module.rst:316 +msgid "browse to your module folder *~/src/user/my_module*," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:295 -msgid "Available for production and staging branches for valid projects." +#: ../../content/administration/odoo_sh/first_module.rst:317 +msgid "then, open the file *models/models.py*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:298 -msgid ":doc:`Upgrade documentation <../../upgrade>`" +#: ../../content/administration/odoo_sh/first_module.rst:323 +msgid "Or, from your computer," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:303 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:3 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:83 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:128 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:173 -#: ../../content/administration/odoo_sh/getting_started/settings.rst:182 -msgid "Settings" +#: ../../content/administration/odoo_sh/first_module.rst:320 +msgid "use the file browser of your choice to browse to your module folder *~/src/odoo-addons/my_module*," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:305 -msgid "Here you can find a couple of settings that only apply to the currently selected branch." +#: ../../content/administration/odoo_sh/first_module.rst:322 +msgid "then, open the file *models/models.py* using the editor of your choice, such as *Atom*, *Sublime Text*, *PyCharm*, *vim*, ..." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:310 -msgid "**Behaviour upon new commit**" +#: ../../content/administration/odoo_sh/first_module.rst:325 +msgid "Then, after the description field" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:312 -msgid "For development and staging branches, you can change the branch's behavior upon receiving a new commit. By default, a development branch will create a new build and a staging branch will update the previous build (see the :ref:`Production Stage `). This is especially useful should the feature you're working on require a particular setup or configuration, to avoid having to manually set it up again on every commit. If you choose new build for a staging branch, it will make a fresh copy from the production build every time a commit is pushed. A branch that is put back from staging to development will automatically be set to 'Do nothing'." +#: ../../content/administration/odoo_sh/first_module.rst:331 +msgid "Add a datetime field" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:320 -msgid "**Modules installation**" +#: ../../content/administration/odoo_sh/first_module.rst:337 +msgid "Then, open the file *views/views.xml*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:322 -msgid "Choose the modules to install automatically for your development builds." +#: ../../content/administration/odoo_sh/first_module.rst:339 +#: ../../content/administration/odoo_sh/first_module.rst:475 +msgid "After" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:327 -msgid "*Install only my modules* will install the modules of the branch only. This is the default option. The :ref:`submodules ` are excluded." +#: ../../content/administration/odoo_sh/first_module.rst:345 +#: ../../content/administration/odoo_sh/first_module.rst:452 +#: ../../content/administration/odoo_sh/first_module.rst:469 +#: ../../content/administration/odoo_sh/first_module.rst:481 +msgid "Add" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:329 -msgid "*Full installation (all modules)* will install the modules of the branch, the modules included in the submodules and all standard modules of Odoo. When running the full installation, the test suite is disabled." +#: ../../content/administration/odoo_sh/first_module.rst:351 +msgid "These changes alter the database structure by adding a column in a table, and modify a view stored in database." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:331 -msgid "*Install a list of modules* will install the modules specified in the input just below this option. The names are the technical name of the modules, and they must be comma-separated." +#: ../../content/administration/odoo_sh/first_module.rst:354 +msgid "In order to be applied in existing databases, such as your production database, these changes requires the module to be updated." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:334 -msgid "If the tests are enabled, the standard Odoo modules suite can take up to 1 hour. This setting applies to development builds only. Staging builds duplicate the production build and the production build only installs base." +#: ../../content/administration/odoo_sh/first_module.rst:357 +msgid "If you would like the update to be performed automatically by the Odoo.sh platform when you push your changes, increase your module version in its manifest." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:339 -msgid "**Test suite**" +#: ../../content/administration/odoo_sh/first_module.rst:360 +msgid "Open the module manifest *__manifest__.py*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:341 -msgid "For development branches, you can choose to enable or disable the test suite. It's enabled by default. When the test suite is enabled, you can restrict them by specifying test tags :ref:`test tags `." +#: ../../content/administration/odoo_sh/first_module.rst:368 +#: ../../content/administration/odoo_sh/first_module.rst:506 +msgid "with" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:345 -msgid "**Odoo Version**" +#: ../../content/administration/odoo_sh/first_module.rst:374 +msgid "The platform will detect the change of version and trigger the update of the module upon the new revision deployment." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:347 -msgid "For development branches only, you can change the version of Odoo, should you want to test upgraded code or develop features while your production database is in the process of being upgraded to a newer version." +#: ../../content/administration/odoo_sh/first_module.rst:377 +msgid "Browse to your Git folder." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:350 -msgid "In addition, for each version you have two options regarding the code update." +#: ../../content/administration/odoo_sh/first_module.rst:379 +msgid "Then, from an Odoo.sh terminal:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:352 -msgid "You can choose to benefit from the latest bug, security and performance fixes automatically. The sources of your Odoo server will be updated weekly. This is the 'Latest' option." +#: ../../content/administration/odoo_sh/first_module.rst:391 +msgid "Then, stage your changes to be committed" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:354 -msgid "You can choose to pin the Odoo sources to a specific revision by selecting them from a list of dates. Revisions will expire after 3 months. You will be notified by mail when the expiration date approaches and if you don't take action afterwards, you will automatically be set to the latest revision." +#: ../../content/administration/odoo_sh/first_module.rst:403 +msgid "Push your changes:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:359 -msgid "**Custom domains**" +#: ../../content/administration/odoo_sh/first_module.rst:405 +msgid "From an Odoo.sh terminal:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:361 -msgid "Here you can configure additional domains for the selected branch. It's possible to add other *.odoo.com* domains or your own custom domains. For the latter you have to:" +#: ../../content/administration/odoo_sh/first_module.rst:417 +msgid "The platform will then create a new build for the branch *feature-1*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:364 -msgid "own or purchase the domain name," +#: ../../content/administration/odoo_sh/first_module.rst:422 +msgid "Once you tested your changes, you can merge your changes in the production branch, for instance by drag-and-dropping the branch on the production branch in the Odoo.sh interface. As you increased the module version in the manifest, the platform will update the module automatically and your new field will be directly available. Otherwise you can manually update the module within the apps list." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:365 -msgid "add the domain name in this list," +#: ../../content/administration/odoo_sh/first_module.rst:428 +msgid "Use an external Python library" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:366 -msgid "in your registrar's domain name manager, configure the domain name with a ``CNAME`` record set to your production database domain name." +#: ../../content/administration/odoo_sh/first_module.rst:430 +msgid "If you would like to use an external Python library which is not installed by default, you can define a *requirements.txt* file listing the external libraries your modules depends on." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:369 -msgid "For instance, to associate *www.mycompany.com* to your database *mycompany.odoo.com*:" +#: ../../content/administration/odoo_sh/first_module.rst:434 +msgid "It is not possible to install or upgrade system packages on an Odoo.sh database (e.g., apt packages). However, under specific conditions, packages can be considered for installation. This also applies to **Python modules** requiring system packages for their compilation, and **third-party Odoo modules**." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:371 -msgid "in Odoo.sh, add *www.mycompany.com* in the custom domains of your project settings," +#: ../../content/administration/odoo_sh/first_module.rst:438 +msgid "**PostgreSQL extensions** are not supported on Odoo.sh." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:372 -msgid "in your domain name manager (e.g. *godaddy.com*, *gandi.net*, *ovh.com*), configure *www.mycompany.com* with a ``CNAME`` record with as value *mycompany.odoo.com*." +#: ../../content/administration/odoo_sh/first_module.rst:439 +msgid "For more information, consult our `FAQ `_." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:375 -msgid "Bare domains (e.g. *mycompany.com*) are not accepted:" +#: ../../content/administration/odoo_sh/first_module.rst:441 +msgid "The platform will use this file to automatically install the Python libraries your project needs." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:377 -msgid "they can only be configured using ``A`` records," +#: ../../content/administration/odoo_sh/first_module.rst:443 +msgid "The feature is explained in this section by using the `Unidecode library `_ in your module." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:378 -msgid "``A`` records only accept IP addresses as value," +#: ../../content/administration/odoo_sh/first_module.rst:446 +msgid "Create a file *requirements.txt* in the root folder of your repository" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:379 -msgid "the IP address of your database can change, following an upgrade, a hardware failure or your wish to host your database in another country or continent." +#: ../../content/administration/odoo_sh/first_module.rst:448 +msgid "From the Odoo.sh editor, create and open the file ~/src/user/requirements.txt." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:382 -msgid "Therefore, bare domains could suddenly no longer work because of this change of IP address." +#: ../../content/administration/odoo_sh/first_module.rst:450 +msgid "Or, from your computer, create and open the file ~/src/odoo-addons/requirements.txt." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:384 -msgid "In addition, if you would like both *mycompany.com* and *www.mycompany.com* to work with your database, having the first redirecting to the second is amongst the `SEO best practices `_ (See *Provide one version of a URL to reach a document*) in order to have one dominant URL. You can therefore just configure *mycompany.com* to redirect to *www.mycompany.com*. Most domain managers have the feature to configure this redirection. This is commonly called a web redirection." +#: ../../content/administration/odoo_sh/first_module.rst:458 +msgid "Then use the library in your module, for instance to remove accents from characters in the name field of your model." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:391 -msgid "**HTTPS/SSL**" +#: ../../content/administration/odoo_sh/first_module.rst:461 +msgid "Open the file *models/models.py*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:393 -msgid "If the redirection is correctly set up, the platform will automatically generate an SSL certificate with `Let's Encrypt `_ within the hour and your domain will be accessible through HTTPS." +#: ../../content/administration/odoo_sh/first_module.rst:463 +msgid "Before" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:397 -msgid "While it is currently not possible to configure your own SSL certificates on the Odoo.sh platform we are considering the feature if there is enough demand." +#: ../../content/administration/odoo_sh/first_module.rst:496 +msgid "Adding a Python dependency requires a module version increase for the platform to install it." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:401 -msgid "**SPF and DKIM compliance**" +#: ../../content/administration/odoo_sh/first_module.rst:498 +msgid "Edit the module manifest *__manifest__.py*" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:403 -msgid "In case the domain of your users email addresses use SPF (Sender Policy Framework) or DKIM (DomainKeys Identified Mail), don't forget to authorize Odoo as a sending host in your domain name settings to increase the deliverability of your outgoing emails. The configuration steps are explained in the documentation about :ref:`SPF ` and :ref:`DKIM `." +#: ../../content/administration/odoo_sh/first_module.rst:512 +msgid "Stage and commit your changes:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:410 -msgid "Forgetting to configure your SPF or DKIM to authorize Odoo as a sending host can lead to the delivery of your emails as spam in your contacts inbox." +#: ../../content/administration/odoo_sh/first_module.rst:520 +msgid "Then, push your changes:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:414 -msgid "Shell commands" +#: ../../content/administration/odoo_sh/first_module.rst:522 +msgid "In an Odoo.sh terminal:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:416 -msgid "In the top right-hand corner of the view, different shell commands are available." +#: ../../content/administration/odoo_sh/first_module.rst:528 +msgid "In your computer terminal:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:421 -msgid "Each command can be copied in the clipboard to be used in a terminal, and some of them can be used directly from Odoo.sh by clicking the *run* button in such case a popup will prompt the user in order to define eventual placeholders such as ````, ````, ..." +#: ../../content/administration/odoo_sh/getting_started.rst:5 +msgid "Getting started" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:427 -msgid "Clone" +#: ../../content/administration/odoo_sh/getting_started.rst:8 +msgid "Main components" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:429 -msgid "Download the Git repository." +#: ../../content/administration/odoo_sh/getting_started.rst:10 +msgid "When working with Odoo.sh, it is important to understand the main components involved. While they are all interconnected, each one plays a distinct role in the development and deployment of Odoo applications:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:435 -msgid "Clones the repository *odoo/odoo*." +#: ../../content/administration/odoo_sh/getting_started.rst:14 +msgid "**GitHub repository**: a version-controlled space where the Odoo applications' source code is stored. It tracks every change, supports collaboration, and can be either public or private." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:437 -msgid ":code:`--recurse-submodules`: Downloads the submodules of your repository. Submodules included in the submodules are downloaded as well." +#: ../../content/administration/odoo_sh/getting_started.rst:0 +msgid "Example of a GitHub repository" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:438 -msgid ":code:`--branch`: checks out a specific branch of the repository, in this case *master*." +#: ../../content/administration/odoo_sh/getting_started.rst:20 +msgid "**Odoo.sh project**: a Platform as a Service (PaaS) that integrates with GitHub and enables streamlined development, testing, and deployment of Odoo applications. It includes tools such as automated backups, staging environments, and continuous integration pipelines." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:440 -msgid "The *run* button is not available for this command, as it is meant to be used on your machines." +#: ../../content/administration/odoo_sh/getting_started.rst:0 +msgid "Example of an Odoo.sh project" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:443 -msgid "Fork" +#: ../../content/administration/odoo_sh/getting_started.rst:27 +msgid "**Odoo database**: a database stores all the operational data used and generated by Odoo applications, such as business records, configurations, and user data." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:445 -msgid "Create a new branch based on the current branch." +#: ../../content/administration/odoo_sh/getting_started.rst:0 +msgid "Example of an Odoo database" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:451 -msgid "Creates a new branch called *feature-1* based on the branch *master*, and then checkouts it." +#: ../../content/administration/odoo_sh/getting_started.rst:33 +msgid "Together, they form a cohesive pipeline from code development to a live business use." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:457 -msgid "Uploads the new branch *feature-1* on your remote repository." +#: ../../content/administration/odoo_sh/getting_started.rst:36 +msgid "User types" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:460 -msgid "Merge" +#: ../../content/administration/odoo_sh/getting_started.rst:38 +msgid "Odoo.sh involves different types of users, each with a specific role in the project lifecycle:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:462 -msgid "Merge the current branch in another branch." +#: ../../content/administration/odoo_sh/getting_started.rst:40 +msgid "GitHub users: developers with access to the GitHub repository linked to the Odoo.sh project. Access to the repository does not automatically make someone a collaborator on the Odoo.sh project." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:468 -msgid "Merges the branch *staging-1* in the current branch." +#: ../../content/administration/odoo_sh/getting_started.rst:44 +msgid "Odoo.sh collaborators: individuals managing the Odoo.sh project. Each collaborator must be linked to a GitHub user. However, collaborators are not the same as database users." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:474 -#: ../../content/administration/odoo_sh/getting_started/branches.rst:547 -msgid "Uploads the changes you just added in the *master* branch on your remote repository." +#: ../../content/administration/odoo_sh/getting_started.rst:47 +msgid "Database users: end-users of the deployed Odoo database. They interact with the live system but are not involved in development or project management." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:477 -msgid "SSH" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:3 +msgid "Branches" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:480 -msgid "Setup" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:5 +msgid "The branches view provides an overview of the different branches in your repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:482 -msgid "In order to use SSH, you have to set up your profile SSH public key (if it is not already done). To do so, follow these steps:" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:10 +#: ../../content/administration/odoo_sh/getting_started/builds.rst:41 +msgid "Stages" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:485 -msgid "`Generate a new SSH key `_" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:12 +msgid "Odoo.sh offers three different branch stages:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:487 -msgid "`Copy the SSH key to your clipboard `_ (only apply the step 1)" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:14 +msgid ":ref:`Production `" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:490 -msgid "Paste the copied content to your profile SSH keys and press \"Add\"" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:15 +msgid ":ref:`Staging `" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:495 -msgid "The key should appear below" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:16 +msgid ":ref:`Development `" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:501 -msgid "Connection" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:18 +msgid "You can change the stage of a branch by dragging and dropping it under the desired stage." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:503 -msgid "To connect to your builds using ssh use the following command in a terminal:" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "Changing the stage of a branch" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:509 -msgid "You will find a shortcut for this command into the SSH tab in the upper right corner." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:24 +msgid "Development branches can be moved under :guilabel:`Staging`. If you try to move a development branch under :guilabel:`Production`, a warning message will be displayed explaining that you can only have one production branch per project." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:514 -msgid "Provided you have the :ref:`correct access rights ` on the project, you'll be granted ssh access to the build." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:27 +msgid "Staging branches can be moved under :guilabel:`Development`, but it is not possible to move them under :guilabel:`Production`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:518 -msgid "Long running ssh connections are not guaranteed. Idle connections will be disconnected in order to free up resources." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:29 +msgid "The production branch can only be moved under :guilabel:`Development`. If you try to move it under :guilabel:`Staging`, you can only perform a merge. Refer to the :ref:`merging ` section for a detailed explanation of this process." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:522 -msgid "Submodule" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:37 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:499 +#: ../../content/administration/odoo_sh/getting_started/builds.rst:44 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:132 +msgid "Production" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:524 -msgid "Add a branch from another repository in your current branch as a *submodule*." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:39 +msgid "The production branch contains the code used to run the production database. There can be only one production branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:526 -msgid "*Submodules* allows you to use modules from other repositories in your project." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:42 +msgid "When you push a new commit to this branch, the production server is updated with the revised code and restarted." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:528 -msgid "The submodules feature is detailed in the chapter :ref:`Submodules ` of this documentation." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:45 +msgid "If the changes require a module update, such as changing a form view, and you want the update to be performed automatically, you can increase the module's version number in its manifest file (:file:`__manifest__.py`). The platform then performs the update, during which the instance will be held temporarily unavailable for maintenance reasons." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:535 -msgid "Adds the branch *master* of the repository ** as a submodule under the path ** in your current branch." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:50 +msgid "This method is equivalent to upgrading the module using the :guilabel:`Apps` menu or the `-u` switch on :doc:`the command line <../../../developer/reference/cli>`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:541 -msgid "Commits all your current changes." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:54 +msgid "If the changes prevent the server from restarting or if the module update fails, the server is automatically reverted to the previous successful code revision, and the database is rolled back to its previous state. Access to the failed update's log to troubleshoot it." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:552 -msgid "Delete a branch from your repository." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:57 +msgid "The demo data is not loaded, as it is not intended for use on a production database. The `unit tests `_ are not performed, as it would increase the unavailability time of the production database during the update." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:558 -msgid "Deletes the branch in your remote repository." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:61 +msgid "Odoo.sh automatically backs up the production database. It keeps seven daily, four weekly, and three monthly backups. Each backup includes the database dump, the filestore (attachments and binary fields), logs, and sessions." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/branches.rst:564 -msgid "Deletes the branch in your local copy of the repository." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:66 +msgid "When using **trial projects**, the production branch and all staging branches are automatically set back to the development stage after **30 days**." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:6 -msgid "Builds" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:72 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:502 +#: ../../content/administration/odoo_sh/getting_started/builds.rst:63 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:87 +msgid "Staging" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:11 -msgid "In Odoo.sh, a build is considered as a database loaded by an Odoo server (`odoo/odoo `_ & `odoo/enterprise `_) running on a specific revision of your project repository in a containerized environment. Its purpose is to test the well-behavior of the server, the database and the features with this revision." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:74 +msgid "Staging branches are meant to test new features using production data without compromising the actual production database with test records. They create neutralized duplicates of the production database." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:20 -msgid "In this view, a row represents a branch, and a cell of a row represents a build of this branch." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:78 +msgid "The neutralization disables:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:22 -msgid "Most of the time, builds are created following pushes on your Github repository branches. They can be created as well when you do other operations, such as importing a database on Odoo.sh or asking a rebuild for a branch in your project." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:80 +msgid "Scheduled actions" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:26 -msgid "A build is considered successful if no errors or warnings come up during its creation. A successful build is highlighted in green." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:83 +msgid "To test them, trigger them manually or re-enable them. Be aware that the platform will trigger them less often if no one is using the database in order to save resources." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:29 -msgid "A build is considered failed if errors come up during its creation. A failed build is highlighted in red." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:86 +msgid "Outgoing emails" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:32 -msgid "If warnings come up during the creation, but there are no errors, the build is considered almost successful. It is highlighted in yellow to notify the developer warnings were raised." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:89 +msgid "They are instead intercepted using a mail catcher. An :ref:`interface to view the emails ` sent by the database is provided in your Odoo.sh project. That way, no emails are sent to your contacts." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:35 -msgid "Builds do not always create a database from scratch. For instance, when pushing a change on the production branch, the build created just starts the server with your new revision and tries to load the current production database on it. If no errors come up, the build is considered successful, and otherwise failed." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:93 +msgid "IAP services" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:46 -msgid "The first build of a production branch creates a database from scratch. If this build is successful, this database is considered as the production database of your project." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:95 +msgid "Payment providers and shipping connectors" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:49 -msgid "From then, pushes on the production branch will create new builds that attempt to load the database using a server running with the new revision." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:98 +msgid "They are put into test mode." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:52 -msgid "If the build is successful, or has warnings but no errors, the production database will now run with this build, along with the revision associated to this build." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:100 +msgid "If you configure or view changes in a staging database, make sure to record them (noting them step by step, reproducing in production, etc.) or write them directly in the branch's modules, using XML data files to override the default configuration or views. Check the :ref:`first module documentation ` to view examples." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:55 -msgid "If the build fails to load or update the database, then the previous successful build is re-used to load the database, and therefore the database will run using a server running with the previous successful revision." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:106 +msgid "Unit tests are not performed. They rely on demo data, which is not loaded into the production and staging databases. If Odoo starts supporting running the units without demo data, Odoo.sh will then consider running the tests on staging databases." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:59 -msgid "The build used to run the production database is always the first of the builds list. If a build fails, it is put after the build currently running the production database." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:110 +msgid "Staging databases are not automatically backed up. Nevertheless, you can restore a backup of the production database in a staging branch for testing purposes or to manually recover data that has been accidently deleted from the production database. It is possible to create manual backups of staging databases." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:65 -msgid "Staging builds duplicate the production database, and try to load this duplicate with the revisions of the staging branches." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:118 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:505 +#: ../../content/administration/odoo_sh/getting_started/builds.rst:81 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:57 +msgid "Development" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:68 -msgid "Each time you push a new revision on a staging branch, the build created uses a new copy of the production database. The databases are not re-used between builds of the same branch. This ensures:" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:120 +msgid "Development branches create new databases using demo data to run the unit tests. The installed modules are those included in the branch. You can change this list of modules to install in the :doc:`project settings `." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:71 -msgid "staging builds use databases that are close to what the production looks like, so you do not make your tests with outdated data," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:124 +msgid "When pushing a commit to a development branch, a new server is started, with a database created from scratch, and the branch is updated. The demo data is loaded, and the unit tests are performed by default to verify that the changes do not break any of the features being tested. You can disable the tests or allow specific tests to be run with custom tags by going to the :ref:`branch's settings `." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:74 -msgid "you can play around as much as you want in the same staging database, and you can then ask for a rebuild when you want to restart with a new copy of the production." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:130 +msgid "Similarly to staging branches, emails are not sent but are intercepted by a mail catcher, and scheduled actions are not triggered as long as the database is not in use." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:77 -msgid "Nevertheless, this means that if you make configuration changes in staging databases and do not apply them in the production, they will not be passed on the next build of the same staging branch." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:133 +msgid "Development databases are not automatically backed up, and manual backups are not possible." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:83 -msgid "Development builds create new databases, load the demo data and run the unit tests." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:136 +msgid "Databases created for development branches are intended to last approximately three days. After that, they can be automatically garbage-collected to make room for new databases without prior notice." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:85 -msgid "A build will be considered failed and highlighted in red if tests fail during the installation, as they are meant to raise errors if something wrong occurs." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:143 +msgid "Merging branches" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:88 -msgid "If all tests pass, and there is no error, the build will be considered successful." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:145 +msgid "You can merge your branches by dragging and dropping them into each other." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:90 -msgid "According to the list of modules to install and test, a development build can take up to 1 hour to be ready. This is due to the large number of tests set in the default Odoo modules suite." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "Merging branches into each other" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:94 -msgid "Features" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:150 +msgid "To test the changes of development branches with the production data, you can either:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:96 -msgid "The production branch will always appear first, and then the other branches are ordered by last build created. You can filter out the branches." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:152 +msgid "Merge the development branch into a staging branch by dragging and dropping it onto the desired branch; or" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:102 -msgid "For each branch, you can access the last build's database using the *Connect* link and jump to the branch code using the *Github* link. For other branches than the production, you can create a new build which will use the latest revision of the branch using the link *rebuild*. This last link is not available when there is already a build in progress for the branch." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:0 +msgid "Merging a development branch into a staging branch" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:110 -msgid "For each build, you can access the revision changes using the button with the Github icon. You can access the build's database as the administrator using the *Connect* button. Also, you can access the database with another user using the *Connect as* button, in the dropdown menu of the *Connect* button." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:158 +msgid "Drag and drop the development branch under the :guilabel:`Staging` section to make it a staging branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/builds.rst:122 -msgid "In the dropdown menu of the build, you can access the same features than in :ref:`the branches view `: *Logs*, *Web Shell*, *Editor*, *Outgoing e-mails*. You also have the possibility to *Download a dump* of the build's database." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:0 +msgid "Moving a development branch under staging" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:6 -msgid "Create your project" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:164 +msgid "When the changes are ready for production, drag and drop the staging branch into the production branch to merge and deploy them." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:168 +msgid "You can merge development branches into the production branch directly. However, changes will not be validated against the production data through a staging branch, so there is a higher risk of encountering issues in the production database." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:171 +msgid "You can merge development branches into each other, and staging branches into each other." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:172 +msgid "You can also use `git merge` directly on your workstation to merge your branches. Odoo.sh is notified when new revisions are pushed to your branches." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:175 +msgid "Merging a staging branch into the production branch only merges the source code. Any changes made to the staging database are not passed to the production database. However, if you modify the code in the repository, it will be passed to the production branch when merging." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:179 +msgid "If you test configuration changes in staging branches, and want them to be applied to the production branch, you have to, either:" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:182 +msgid "Write the configuration changes in XML data files to overide the default configuration or views in the branch, and then increase the version of the module in its manifest (:file:`__manifest__.py`) to trigger the module update when merging the staging branch in the production branch." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:187 +msgid "This method is recommended for better scalability of your developments, as you will use the Git versioning features for all configuration changes, thereby ensuring traceability of your changes." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:191 +msgid "Pass them manually from the staging database to the production one by copying and pasting them." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:196 +msgid "Tabs" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:201 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:58 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:88 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:133 +msgid "History" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:203 +msgid "The :guilabel:`History` tab gives an overview of the branch history:" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:205 +msgid "The commit messages and their authors" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:206 +msgid "The various events linked to the platform, such as stage changes, database imports, and backup restores" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The branches' history tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:212 +msgid "A status in the top right corner of each event indicates the current operation on the database (e.g., installation, update, backup import) or its outcome (e.g., test feedback, successful backup import). If an operation is successful, a :guilabel:`Connect` button appears, allowing you to access the database." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:220 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:396 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:78 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:108 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:153 +msgid "Mails" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:222 +msgid "The :guilabel:`Mails` tab contains the mail catcher, which provides an overview of emails sent by the database." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:226 +msgid "The mail catcher is available for development and staging branches. Emails from the production database are actually sent and are not intercepted by the mail catcher." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The branches' mails tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:235 +msgid "Shell" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:237 +msgid "The :guilabel:`Shell` tab provides shell access to the container." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:239 +msgid "Clicking :guilabel:`Shell` opens a new browser tab where you can run basic Linux commands (`ls`, `top`). You can open a shell on the database by running `psql`." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The branches' shell tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:246 +msgid "You can open multiple shell tabs at once and arrange their layout by dragging and dropping them." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:249 +msgid "Production instance shells are highlighted in red to emphasize the danger of manipulating production instances directly, while staging/development instance shells are highlighted in yellow." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:252 +msgid "Long-running shell instances/idle shell sessions can be terminated at any time to free up resources." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:258 +msgid "Commands" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:260 +msgid "Here is an overview of useful commands that you can run an Odoo.sh database terminal:" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:262 +msgid "`odoo-bin shell`: to open an Odoo shell" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:263 +msgid "`odoo-update`: to update modules in the database" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:264 +msgid "`odoosh-restart`: to restart Odoo.sh services (http or cron)" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:265 +msgid "`odoosh-storage`: to check the storage usage of your instance's container filesystem" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:266 +msgid "`psql`: to open a database shell" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:267 +msgid "`mutt`: to check how emails appear on text clients (staging and development instances)" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:268 +msgid "`lnav ~/logs/odoo.log`: to navigate in your instance's :file:`odoo.log` file" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:269 +msgid "`ncdu`: to launch the disk usage analyzer with an interactive interface" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:270 +msgid "`grep`: to filter and find information in log or configuration files" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:275 +msgid "Editor" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:277 +msgid "Clicking :guilabel:`Editor` opens a new browser tab to access an online integrated development environment (IDE) to edit the source code. You can also open terminals, Python consoles, and Odoo shell consoles." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The branches' editor tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:284 +msgid "You can open multiple tabs and drag and drop them to arrange the layout as you wish." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:287 +msgid ":doc:`Online editor documentation `." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:292 +msgid "Monitor" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:294 +msgid "The :guilabel:`Monitor` tab displays various performance monitoring metrics of the current build." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:296 +msgid "Zoom in with your cursor to adjust the time range or select it manually from the time range selector. It is also possible to change the time zone." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The time range selector in the branches monitor tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:303 +msgid "Technical logs always use the :abbr:`UTC (Coordinated Universal Time)`. To analyze these logs together with your monitoring metrics, ensure :abbr:`UTC (Coordinated Universal Time)` is selected in the monitoring tool." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:306 +msgid "Similarly, when sending a support ticket, ensure the information you share is based on :abbr:`UTC (Coordinated Universal Time)`, as Odoo uses this time zone to investigate performance issues." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:310 +msgid "The information is aggregated periodically. When this is the case, a blue dotted line is displayed, along with the tag :guilabel:`Aggregate Date`. This means that the data before this date will appear flattened when compared to the data after this date. Therefore, when using the monitoring tool, it is recommended to focus on recent events to get the most detailed information possible." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:316 +msgid "Dotted Lines of other colors help you relate to other changes on the build (database import, git push, etc.)." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "CPU monitoring aggregated data" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:323 +msgid "On each graph, an 𝕚 (:guilabel:`information`) icon is displayed in the top-left corner. Hover your mouse over it to get more details about what the graph represents." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:329 +msgid "Metrics" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:334 +msgid "System" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:9 -msgid "Deploy your platform" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:336 +msgid "The :guilabel:`Memory` graph displays information about memory consumption:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:11 -msgid "Go to `Odoo.sh `_ and hit the *Deploy your platform* button." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:338 +msgid ":guilabel:`Memory container` represents Odoo workers and container processes." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:17 -msgid "Sign in with Github" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:339 +msgid ":guilabel:`Memory postgresql` represents the database." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The memory graph in the monitor tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:344 +msgid "The :guilabel:`CPU` graph displays information about CPU consumption:" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:346 +msgid ":guilabel:`CPU http` represents Odoo workers." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:347 +msgid ":guilabel:`CPU cron/mail` represents scheduled actions and incoming emails." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:348 +msgid ":guilabel:`CPU postgresql` (database processes)" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:349 +msgid ":guilabel:`CPU other` represents webshells, the editor, etc." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The cpu graph in the monitor tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:354 +msgid "The :guilabel:`Storage` graph displays information about the storage used:" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:356 +msgid ":guilabel:`Container` represents the filestore, log files, and user files." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:357 +msgid ":guilabel:`Postgresql` represents the database and indexes." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The storage graph in the monitor tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:365 +msgid "HTTP" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:367 +msgid "The :guilabel:`Requests` graph displays information about the number of HTTP requests per second:" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:369 +msgid ":guilabel:`HTTP successes` represents successful requests." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:370 +msgid ":guilabel:`HTTP errors` represents failed requests (check :file:`odoo.log`)." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:371 +msgid ":guilabel:`HTTP rate limited` represents declined requests, possibly due to lack of workers." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The requests graph in the monitor tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:376 +msgid "The :guilabel:`Concurrent requests (max)` graph displays the maximum number of concurrent HTTP requests per second." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The concurrent rquests graph in the monitor tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:383 +msgid "Database workers determine the number of concurrent requests that can be managed simultaneously. It is essential to have enough workers to handle all incoming requests as they arrive. However, having additional workers beyond this does not improve the speed at which requests are processed." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:387 +msgid "The :guilabel:`Average Response time` displays the average response time to HTTP requests (in milliseconds)." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The average response time graph in the monitor tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:398 +msgid "The :guilabel:`Incoming` graph displays data about the daily number of incoming emails:" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:400 +msgid ":guilabel:`Received Emails` represents emails successfuly received." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:401 +msgid ":guilabel:`Received Emails bounced` represents emails unsuccessfully received." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The incoming graph in the monitor tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:406 +msgid "The :guilabel:`Outgoing` graph displays data about the daily number of outgoing emails:" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:408 +msgid ":guilabel:`Sent Emails` represents emails successfully sent." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:409 +msgid ":guilabel:`Sent Emails bounced` represents emails unsuccessfully sent." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The outgoing graph in the monitor tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:417 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:68 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:98 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:143 +msgid "Logs" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:419 +msgid "The :guilabel:`Logs` tab offers a real-time view of your server's logs." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The branches log tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:424 +msgid "Different logs are available:" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:426 +msgid "`pip.log`: the Python dependencies installation" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:427 +msgid "`install.log`: the database installation (for development branches, tests are included)" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:428 +msgid "`odoosh-import-database.log`: the last imported dump process" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:429 +msgid "`odoo.log`: the running server" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:430 +msgid "`update.log`: the database updates" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:431 +msgid "`pg_slow_queries.log`: psql queries that take an unusual amount of time" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:432 +msgid "`sh_webshell.log`: the actions taken in the webshell" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:433 +msgid "`sh_editor.log`: the actions taken in the editor" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:434 +msgid "`neutralize.log`: the neutralization of the database (only staging)" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "Logs scrolling automatically" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:439 +msgid "When new lines are added to the logs, they are displayed automatically. If you scroll to the bottom, the browser scrolls automatically each time a new line is added." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:442 +msgid "You can pause the logs fetching process by clicking the :icon:`fa-pause` (:guilabel:`pause`) button in the upper right corner. Otherwise, the process stops after five minutes. You can restart it by clicking the :icon:`fa-play` (:guilabel:`play`) button." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:449 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:118 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:163 +msgid "Backups" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:451 +msgid "The :guilabel:`Backups` tab lists the available backups to download and restore, lets you perform a manual backup and import a database." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The branches backups tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:457 +msgid "The production database is automatically backed up daily. Seven daily, four weekly, and three monthly backups are kept. Each backup includes the database dump, the filestore (attachments and binary fields), logs, and sessions." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:462 +msgid "You can refer to `the estimated scheduling of automatic backups `_ to gain a better understanding of how the system works. This file is updated daily, taking the current day as the departure point." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:466 +msgid "Staging and development databases are not automatically backed up. However, you can restore a backup of the production database in your staging branches, for testing purposes, or manually recover data that has been accidentally deleted from the production database." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:470 +msgid "The list contains the backups kept on the server of your production database. This server only keeps one month of backups: seven daily and four weekly backups." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:473 +msgid "Dedicated backup servers keep the same backups, as well as three additional monthly backups. To restore or download one of these monthly backups, contact `Odoo Support `_." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:477 +msgid "When merging a commit updating the version of one or several modules (in :file:`__manifest__.py`), or their linked Python dependencies (in :file:`requirements.txt`), then Odoo.sh performs an automatic backup (flagged with type `Update` in the list), as either the container will be changed by the installation of new pip packages, either the database itself will be changed with the module update triggered afterwards. In these two cases, a backup is triggered as it may break something." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:483 +msgid "If the merged commit does not update the version of a module or linked dependencies, then no backup is triggered by Odoo.sh, as neither the container nor the database is modified; therefore, the platform considers this safe enough. As an extra precaution, you can make a manual backup before modifiyng production sources." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:488 +msgid "The purpose of manual backups is to create a specific snapshot of production or staging databases (not available for development). These remain available for seven days. However, there is a limit of five daily manual backups." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:496 +msgid "Stage" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:497 +msgid "Automatic backup" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:498 +msgid "Manual backup" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:500 +msgid "Yes (up to 3 months)" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:501 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:504 +msgid "Yes (3 days)" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:503 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:506 +#: ../../content/administration/odoo_sh/getting_started/branches.rst:507 +msgid "No" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:509 +msgid "The :guilabel:`Import Database` feature accepts database archives from:" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:511 +msgid "the standard Odoo database manager (available for on-premise Odoo servers under `/web/database/manager`)" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:513 +msgid "the Odoo Online databases manager" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:514 +msgid "the Odoo.sh :guilabel:`Backups` tab (using the :icon:`fa-download` (:guilabel:`Download Options`) button)" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:516 +msgid "the Odoo.sh :doc:`Builds ` view (by clicking :guilabel:`Download DB dump`)" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:523 +msgid "The :guilabel:`Upgrade` tab can be used to upgrade production and staging branches of valid projects. For more information about the upgrade process, refer to the :doc:`Upgrade documentation <../../upgrade>`." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The branches upgrade tab" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:533 +msgid "Tools" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:535 +msgid "The :guilabel:`Tools` tab contains the code profiler. It is used to start a profiling session, recording the activities of Odoo workers running in the instance for a maximum of five minutes. You can choose to terminate the session earlier, as running the tool for a shorter duration reduces the amount of noise in the report." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "Using the code profiler" +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:543 +msgid "After each session, an interactive flame graph is created to help you visualize how the Odoo workers allocate their time." +msgstr "" + +#: ../../content/administration/odoo_sh/getting_started/branches.rst:547 +msgid "Running the profiler consumes a lot of server resources, so avoid letting it run for too long. The goal is to record a specific action in your database." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:19 -msgid "Sign in with your Github account. If you do not have an account yet, hit the *Create an account* link." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:553 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:3 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:83 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:128 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:173 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:182 +msgid "Settings" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:26 -msgid "Authorize Odoo.sh" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:555 +msgid "The :guilabel:`Settings` tab lists the configuration options available for the currently selected branch. The options vary for each stage." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:28 -msgid "Grant Odoo.sh the required accesses to your account by clicking the *Authorize* button." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The branches settings tab" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:33 -msgid "Odoo.sh basically needs:" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:564 +msgid "Behavior upon new commits" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:35 -msgid "to know your Github login and email," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:566 +msgid "You can change the branch's behavior upon receiving a new commit for **development** and **staging** branches." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:36 -msgid "to create a new repository in case you decide to start from scratch," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:569 +msgid "By default, a **development** branch creates a new build and a staging branch updates the previous build. This is useful if the feature you are working on requires a specific configuration, as you would not need to manually configure it again after every commit." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:37 -msgid "to read your existing repositories, including the ones of your organizations, in case you want to start from an existing repository," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:573 +msgid "If you select :guilabel:`New build` for a **staging** branch, a fresh copy of the production build is created every time a commit is pushed." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:39 -msgid "to create a webhook to be notified each time you push changes," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:576 +msgid "A branch that is moved from **staging** to **development** is set automatically to :guilabel:`Do nothing`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:40 -msgid "to commit changes to make your deployment easier, merging branches or adding new `submodules `_ for example." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:582 +msgid "Module installation" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:44 -msgid "Submit your project" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:584 +msgid "You can choose which modules should be installed automatically for **development** branches." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:46 -msgid "Choose if you want to start from scratch by creating a new repository, or if you want to use an existing repository." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The settings tab module installation" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:49 -msgid "Then, choose a name or select the repository you want to use." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:589 +msgid "To change the default behavior, untick the :guilabel:`Use Default` option under :guilabel:`Development build behavior` and select one of the following options under :guilabel:`Module Installation`:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:51 -msgid "Choose the Odoo version you want to use. If you plan to import an existing database or an existing set of applications, you might need to choose the according version. If you start from scratch, use the latest version." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:593 +msgid ":guilabel:`Install only my modules (does not include submodules)`: only installs the branch's modules, excluding :doc:`submodules <../advanced/submodules>`. This is the default option." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:55 -msgid "Enter your *subscription code*. This is also called *subscription referral*, *contract number* or *activation code*." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:595 +msgid ":guilabel:`Full installation (no test suite)`: installs the branch's modules, submodules, and all standard Odoo modules. When running the full installation, the test suite is disabled." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:58 -msgid "It should be the code of your Enterprise subscription that includes Odoo.sh." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:597 +msgid ":guilabel:`Install a list of modules`: installs the specified modules. To do so, enter their technical name, and separate them using commas (e.g., `sale_management,website,accountant`)." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:60 -msgid "Partners can use their partnership codes to start a trial. Should their clients start a project, they ought to get an Enterprise subscription including Odoo.sh and use its subscription code. The partner will get 50% of the amount back as commission. Contact your sales representative or account manager in order to get it." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:601 +msgid "If the test suite is enabled, installing all standard Odoo modules can take up to one hour." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:65 -msgid "When submitting the form, if you are notified your subscription is not valid, it either means:" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:606 +msgid "Test suite" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:67 -msgid "it is not an existing subscription," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:608 +msgid "By default, the test suite for **development** branches is enabled. You can restrict which tests are run by entering :ref:`test tags ` and separating them using commas (e.g., `custom_tags,at_install,post_install`)." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:68 -msgid "it is not a partnership subscription," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:612 +msgid "To disable the test suite entirely, untick :guilabel:`Validate the test suite on new builds`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:69 -msgid "it is an enterprise subscription, but which does not include Odoo.sh," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:617 +msgid "Odoo version" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:70 -msgid "it is neither a partnership subscription or an enterprise subscription (e.g. an online subscription)." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:619 +msgid "You can change the version of Odoo for **development** branches, for example, to test upgraded code or develop features while your production database is in the process of being upgraded to a newer version, by selecting another :guilabel:`Version`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:73 -msgid "In case of doubt with your subscription, please contact the `Odoo support `_." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:623 +msgid "By default, :guilabel:`Latest` is selected as the :guilabel:`Revision`, and the sources of your Odoo server are updated weekly automatically to benefit from the latest bug, security, and performance fixes." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:80 -msgid "You're done !" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:627 +msgid "To choose a specific revision instead, select it using the :guilabel:`Revision` field." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:82 -msgid "You can start using Odoo.sh. Your first build is about to be created. You will soon be able to connect to your first database." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:630 +msgid "Revisions expire after three months. You will be notified by email when the revision's expiration date approaches. If you have not taken any action when it expires, the :guilabel:`Revision` field is automatically set back to :guilabel:`Latest`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:91 -msgid "Import your database" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The settings tab revisions" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:93 -msgid "You can import your database in your Odoo.sh project as long as it is in a :doc:`supported version ` of Odoo." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:640 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:241 +msgid "Custom domains" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:97 -msgid "Push your modules in production" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:642 +msgid "You can configure additional `.odoo.com` domains or your own custom domains for all branch types." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:99 -msgid "If you use community or custom modules, add them in a branch in your Github repository. Databases hosted on the Odoo.com online platform do not have any custom modules. Users of these databases can therefore skip this step." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:645 +msgid "To use your own custom domain, it is necessary to:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:103 -msgid "You can structure your modules as you wish, Odoo.sh will automatically detect the folders containing Odoo addons. For instance, you can put all your modules folder in the root directory of your repository, or group the modules in folders by categories that you define (accounting, project, ...)." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:647 +msgid "Own or purchase the domain name." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:108 -msgid "For community modules available in public Git repositories, you can also consider to add them using :ref:`Submodules `." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:648 +msgid "Enter the domain name under :guilabel:`Custom domains` (e.g., `www.mycompany.com`), then click :guilabel:`Add domain`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:111 -msgid "Then, either :ref:`make this branch the production branch `, or :ref:`merge it into your production branch `." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:650 +msgid "Configure the domain name (e.g., `www.mycompany.com`) using your registrar's domain name manager with a **CNAME** record value set to your production database domain name (e.g., `mycompany.odoo.com`)." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:115 -msgid "Download a backup" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:655 +msgid "Bare domains (e.g., `mycompany.com`) are not accepted. They can only be configured using **A** records, which only accept IP addresses as their value. Therefore, a bare domain could suddenly cease to function, as the IP address of a database can change (e.g., following an upgrade, a hardware failure, a change of database hosting location)." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:118 -msgid "On-premise databases" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:660 +msgid "To have both your bare domain (e.g., `mycompany.com`) and *www* domain (e.g., `www.mycompany.com`) working, it is necessary to redirect the bare domain to the *www* domain. .com. Most domain managers provide a way to configure this redirection, commonly referred to as a web redirection." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:120 -msgid "Access the URL :file:`/web/database/manager` of your on-premise database and download a backup." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:667 +msgid "HTTPS/SSL" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:124 -msgid "If you cannot access the database manager, it may have been disabled by your system administrator. See the :ref:`database manager security documentation `." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:669 +msgid "If the redirection is correctly set up, an SSL certificate is automatically generated using `Let's Encrypt `_ within the hour, meaning your domain will be accessible through HTTPS." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:127 -msgid "You will need the master password of your database server. If you do not have it, contact your system administrator." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:676 +msgid "SPF and DKIM compliance" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:133 -msgid "Choose a zip including the filestore as the backup format." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:678 +msgid "If the domain of your email addresses uses the :abbr:`SPF (Sender Policy Framework)` or :abbr:`DKIM (DomainKeys Identified Mail)` authentication protocol, it is necessary to authorize Odoo as a sending host in the domain name settings to increase the deliverability of outgoing emails. For more information, refer to the :doc:`Configure DNS records to send emails in Odoo documentation <../../../applications/general/email_communication/email_domain>`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:139 -msgid "Odoo Online databases" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:685 +msgid "If Odoo is not authorized as a sending host, your outgoing emails may be flagged as spam." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:141 -msgid "`Access your databases manager `_ and download a backup of your database." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:690 +msgid "Shell commands" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:149 -msgid "Online versions (e.g. *saas-**) are not supported on Odoo.sh." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:692 +msgid "In the top right corner of the view, several shell commands are displayed. The commands can be copied using the clipboard button and then used in a terminal. In addition, some of them can be used directly from Odoo.sh's interface." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:152 -msgid "Upload the backup" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:-1 +msgid "The branches shell commands shortcuts" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:154 -msgid "Then, in your Odoo.sh project, in the backups tab of your production branch, import the backup you just downloaded." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:702 +msgid "Clone" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:160 -msgid "Once the backup imported, you can access the database using the *Connect* button in the history of the branch." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:704 +msgid "The clone command is used to create a local copy of your Git repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:167 -msgid "Check your outgoing email servers" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:707 +msgid ":command:`git clone --recurse-submodules --branch development git@github.com:my-organization/my-repository.git`" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:169 -msgid "There is a default mail server provided with Odoo.sh. To use it, there must be no enabled outgoing mail server configured in your database in :menuselection:`Settings --> Technical --> Outgoing Mail Servers` (:ref:`Developer mode ` must be activated)." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:709 +msgid "`--recurse-submodules` to download the submodules of your repository" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:174 -msgid "After the import of your database, all outgoing email servers are disabled so you use the Odoo.sh email server provided by default." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:710 +msgid "`--branch main` to check out to a specific branch of the repository (e.g., `development`)" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:178 -msgid "Port 25 is (and will stay) closed. If you want to connect to an external SMTP server, you should use ports 465 and 587." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:713 +msgid "The run button is not available as the command is used to create a local copy on your machine." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:182 -msgid "Check your scheduled actions" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:718 +msgid "Fork" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:184 -msgid "All scheduled actions are disabled after the import." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:720 +msgid "The fork command is used to create a new branch based on the current one." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:186 -msgid "This is to prevent your newly imported database to perform actions that could impact your running production, such as sending the mails remaining in the queue, processing mass mailings, or third-party services synchronization (Calendars, files hosting, ...)." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:723 +msgid ":command:`git checkout -b main-1 development && git push -u origin development-1`" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:190 -msgid "If you plan to make the imported database your production, enable the scheduled actions you need. You can check what is enabled in the database of origin and enable the same actions in the imported database. Scheduled actions are located under :menuselection:`Settings --> Technical --> Automation --> Scheduled Actions`." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:725 +msgid ":command:`git checkout -b main-1 main` a command to create a new branch (e.g., `development-1`) based on the current branch (e.g., `development`)" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:196 -msgid "Register your subscription" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:727 +msgid ":command:`git push -u origin development-1` a command to upload the new branch (e.g., `development-1`) to the remote repository" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:198 -msgid "Your subscription is unlinked after the import." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:733 +msgid "Merge" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:200 -msgid "The imported database is considered a duplicate by default and the enterprise subscription is therefore removed, as you can only have one database linked per subscription." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:735 +msgid "The merge command is used to combine changes on one branch into another branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/create.rst:203 -msgid "If you plan to make it your production, unlink your former database from the subscription, and register the newly imported database. Read the :doc:`database registration documentation <../../on_premise>` for instructions." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:738 +msgid ":command:`git merge staging-1 && git push -u origin staging`" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:3 -msgid "Your first module" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:740 +msgid ":command:`git merge staging-1` a command to merge the changes of the current branch into another branch (e.g., `staging-1`)" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:8 -msgid "This chapter helps you to create your first Odoo module and deploy it in your Odoo.sh project." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:742 +msgid ":command:`git push -u origin staging` a command to upload the merged changes to the remote repository branch (e.g., `staging`)" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:10 -msgid "This tutorial requires :ref:`you created a project on Odoo.sh `, and you know your Github repository's URL." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:748 +msgid "SSH" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:13 -msgid "Basic use of Git and Github is explained." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:750 +msgid "The SSH command is used to connect to a build using SSH." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:15 -msgid "The below assumptions are made:" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:752 +msgid "To use the SSH command, it is necessary to set up an SSH key first. To do so:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:17 -msgid "*~/src* is the directory where are located the Git repositories related to your Odoo projects," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:754 +msgid "`Generate a new SSH key `_." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:18 -msgid "*odoo* is the Github user," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:755 +msgid "`Copy the SSH key to your clipboard `_." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:19 -msgid "*odoo-addons* is the Github repository," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:756 +msgid "On Odoo.sh, click your GitHub user in the top-right corner and select :guilabel:`Profile`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:20 -msgid "*feature-1* is the name of a development branch," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:0 +msgid "Accessing a user's profile" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:21 -msgid "*master* is the name of the production branch," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:761 +msgid "Paste the SSH key under the :guilabel:`Add a key manually` field and click :guilabel:`Add`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:22 -msgid "*my_module* is the name of the module." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:0 +msgid "Adding an SSH key manually" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:24 -msgid "Replace these by the values of your choice." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:767 +msgid ":command:`ssh 25004381@my-user-my-repository-staging-25004381.dev.odoo.com`" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:27 -msgid "Create the development branch" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:769 +msgid "`25004381` the build ID" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:30 -msgid "From Odoo.sh" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:770 +msgid "`my-user-my-repository-staging-25004381.dev.odoo.com` the domain used to connect to the build" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:32 -msgid "In the branches view:" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:772 +msgid "Provided you have the necessary :ref:`access rights ` on the project, you will be granted SSH access to the build." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:34 -msgid "hit the :code:`+` button next to the development stage," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:776 +msgid "Long-running SSH connections are not guaranteed. Idle connections can be disconnected to free up resources." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:35 -msgid "choose the branch *master* in the *Fork* selection," +#: ../../content/administration/odoo_sh/getting_started/branches.rst:782 +msgid "Submodule" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:36 -msgid "type *feature-1* in the *To* input." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:784 +msgid "The submodule command is used to add a branch from another repository to your current branch as a submodule." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:38 -msgid "|pic1| |pic2|" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:788 +msgid ":doc:`Submodules documentation <../advanced/submodules>`" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:40 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:40 -msgid "pic1" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:791 +msgid ":command:`git submodule add -b master && git commit -a && git push -u origin staging`" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:43 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:43 -msgid "pic2" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:793 +msgid ":command:`git submodule add -b master ` a command to add a specific branch (e.g., `master`) of a repository (``) as a submodule under the specified path (``) in your current branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:46 -msgid "Once the build created, you can access the editor and browse to the folder *~/src/user* to access to the code of your development branch." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:796 +msgid ":command:`git commit -a` a command to commit all current changes" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:56 -msgid "From your computer" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:797 +msgid ":command:`git push -u origin staging` a command to upload the changes of the current branch (e.g., `staging`) to the remote repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:58 -msgid "Clone your Github repository on your computer:" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:805 +msgid "The delete command is used to delete a branch from your repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:67 -msgid "Create a new branch:" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:808 +msgid "Once you delete a branch, there is no way to retrieve it unless a backup exists. Staging branches are not automatically backed up, but can be manually. Development branches cannot be backed up." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:74 -msgid "Create the module structure" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:812 +msgid ":command:`git push origin :staging && git branch -D staging`" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:77 -msgid "Scaffolding the module" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:814 +msgid ":command:`git push origin :staging` a command to delete a specific branch (e.g., `staging`) on the remote repository" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:79 -msgid "While not necessary, scaffolding avoids the tedium of setting the basic Odoo module structure. You can scaffold a new module using the executable *odoo-bin*." +#: ../../content/administration/odoo_sh/getting_started/branches.rst:816 +msgid ":command:`git branch -D staging` a command to delete the specific branch on your local copy of the repository" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:82 -msgid "From the Odoo.sh editor, in a terminal:" +#: ../../content/administration/odoo_sh/getting_started/branches.rst:820 +msgid "Before deleting a branch, refer to the :ref:`Backups section ` to better understand how they work and when you should create a manual backup." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:88 -msgid "Or, from your computer, if you have an :doc:`installation of Odoo <../../on_premise/source>`:" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:6 +msgid "Builds" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:94 -msgid "If you do not want to bother installing Odoo on your computer, you can also :download:`download this module structure template ` in which you replace every occurrences of *my_module* to the name of your choice." +#: ../../content/administration/odoo_sh/getting_started/builds.rst:11 +msgid "In Odoo.sh, a build is considered as a database loaded by an Odoo server (`odoo/odoo `_ & `odoo/enterprise `_) running on a specific revision of your project repository in a containerized environment. Its purpose is to test the well-behavior of the server, the database and the features with this revision." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:98 -msgid "The below structure will be generated:" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:20 +msgid "In this view, a row represents a branch, and a cell of a row represents a build of this branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:121 -msgid "Do not use special characters other than the underscore ( _ ) for your module name, not even an hyphen ( - ). This name is used for the Python classes of your module, and having classes name with special characters other than the underscore is not valid in Python." +#: ../../content/administration/odoo_sh/getting_started/builds.rst:22 +msgid "Most of the time, builds are created following pushes on your Github repository branches. They can be created as well when you do other operations, such as importing a database on Odoo.sh or asking a rebuild for a branch in your project." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:125 -msgid "Uncomment the content of the files:" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:26 +msgid "A build is considered successful if no errors or warnings come up during its creation. A successful build is highlighted in green." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:127 -msgid "*models/models.py*, an example of model with its fields," +#: ../../content/administration/odoo_sh/getting_started/builds.rst:29 +msgid "A build is considered failed if errors come up during its creation. A failed build is highlighted in red." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:129 -msgid "*views/views.xml*, a tree and a form view, with the menus opening them," +#: ../../content/administration/odoo_sh/getting_started/builds.rst:32 +msgid "If warnings come up during the creation, but there are no errors, the build is considered almost successful. It is highlighted in yellow to notify the developer warnings were raised." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:131 -msgid "*demo/demo.xml*, demo records for the above example model," +#: ../../content/administration/odoo_sh/getting_started/builds.rst:35 +msgid "Builds do not always create a database from scratch. For instance, when pushing a change on the production branch, the build created just starts the server with your new revision and tries to load the current production database on it. If no errors come up, the build is considered successful, and otherwise failed." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:133 -msgid "*controllers/controllers.py*, an example of controller implementing some routes," +#: ../../content/administration/odoo_sh/getting_started/builds.rst:46 +msgid "The first build of a production branch creates a database from scratch. If this build is successful, this database is considered as the production database of your project." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:135 -msgid "*views/templates.xml*, two example qweb views used by the above controller routes," +#: ../../content/administration/odoo_sh/getting_started/builds.rst:49 +msgid "From then, pushes on the production branch will create new builds that attempt to load the database using a server running with the new revision." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:137 -msgid "*__manifest__.py*, the manifest of your module, including for instance its title, description and data files to load. You just need to uncomment the access control list data file:" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:52 +msgid "If the build is successful, or has warnings but no errors, the production database will now run with this build, along with the revision associated to this build." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:146 -msgid "Manually" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:55 +msgid "If the build fails to load or update the database, then the previous successful build is re-used to load the database, and therefore the database will run using a server running with the previous successful revision." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:148 -msgid "If you want to create your module structure manually, you can follow the :doc:`/developer/tutorials/server_framework_101` tutorial to understand the structure of a module and the content of each file." +#: ../../content/administration/odoo_sh/getting_started/builds.rst:59 +msgid "The build used to run the production database is always the first of the builds list. If a build fails, it is put after the build currently running the production database." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:153 -msgid "Push the development branch" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:65 +msgid "Staging builds duplicate the production database, and try to load this duplicate with the revisions of the staging branches." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:155 -msgid "Stage the changes to be committed" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:68 +msgid "Each time you push a new revision on a staging branch, the build created uses a new copy of the production database. The databases are not re-used between builds of the same branch. This ensures:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:161 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:395 -msgid "Commit your changes" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:71 +msgid "staging builds use databases that are close to what the production looks like, so you do not make your tests with outdated data," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:167 -msgid "Push your changes to your remote repository" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:74 +msgid "you can play around as much as you want in the same staging database, and you can then ask for a rebuild when you want to restart with a new copy of the production." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:169 -msgid "From an Odoo.sh editor terminal:" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:77 +msgid "Nevertheless, this means that if you make configuration changes in staging databases and do not apply them in the production, they will not be passed on the next build of the same staging branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:175 -msgid "The above command is explained in the section :ref:`Commit & Push your changes ` of the :ref:`Online Editor ` chapter. It includes the explanation regarding the fact you will be prompted to type your username and password, and what to do if you use the two-factor authentication." +#: ../../content/administration/odoo_sh/getting_started/builds.rst:83 +msgid "Development builds create new databases, load the demo data and run the unit tests." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:183 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:383 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:409 -msgid "Or, from your computer terminal:" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:85 +msgid "A build will be considered failed and highlighted in red if tests fail during the installation, as they are meant to raise errors if something wrong occurs." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:189 -msgid "You need to specify *-u origin feature-1* for the first push only. From that point, to push your future changes from your computer, you can simply use" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:88 +msgid "If all tests pass, and there is no error, the build will be considered successful." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:197 -msgid "Test your module" +#: ../../content/administration/odoo_sh/getting_started/builds.rst:90 +msgid "According to the list of modules to install and test, a development build can take up to 1 hour to be ready. This is due to the large number of tests set in the default Odoo modules suite." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:199 -msgid "Your branch should appear in your development branches in your project." +#: ../../content/administration/odoo_sh/getting_started/builds.rst:94 +msgid "Features" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:204 -msgid "In the branches view of your project, you can click on your branch name in the left navigation panel to access its history." +#: ../../content/administration/odoo_sh/getting_started/builds.rst:96 +msgid "The production branch will always appear first, and then the other branches are ordered by last build created. You can filter out the branches." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:210 -msgid "You can see here the changes you just pushed, including the comment you set. Once the database ready, you can access it by clicking the *Connect* button." +#: ../../content/administration/odoo_sh/getting_started/builds.rst:102 +msgid "For each branch, you can access the last build's database using the *Connect* link and jump to the branch code using the *Github* link. For other branches than the production, you can create a new build which will use the latest revision of the branch using the link *rebuild*. This last link is not available when there is already a build in progress for the branch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:216 -msgid "If your Odoo.sh project is configured to install your module automatically, you will directly see it amongst the database apps. Otherwise, it will be available in the apps to install." +#: ../../content/administration/odoo_sh/getting_started/builds.rst:110 +msgid "For each build, you can access the revision changes using the button with the Github icon. You can access the build's database as the administrator using the *Connect* button. Also, you can access the database with another user using the *Connect as* button, in the dropdown menu of the *Connect* button." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:220 -msgid "You can then play around with your module, create new records and test your features and buttons." +#: ../../content/administration/odoo_sh/getting_started/builds.rst:122 +msgid "In the dropdown menu of the build, you can access the same features than in :ref:`the branches view `: *Logs*, *Web Shell*, *Editor*, *Outgoing e-mails*. You also have the possibility to *Download a dump* of the build's database." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:223 -msgid "Test with the production data" +#: ../../content/administration/odoo_sh/getting_started/create.rst:3 +msgid "Create a project" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:225 -msgid "You need to have a production database for this step. You can create it if you do not have it yet." +#: ../../content/administration/odoo_sh/getting_started/create.rst:6 +msgid "Deploy a platform" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:227 -msgid "Once you tested your module in a development build with the demo data and believe it is ready, you can test it with the production data using a staging branch." +#: ../../content/administration/odoo_sh/getting_started/create.rst:8 +msgid "Visit `Odoo.sh `_ and click :guilabel:`Deploy your platform`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:230 -msgid "You can either:" +#: ../../content/administration/odoo_sh/getting_started/create.rst:0 +msgid "The Deploy your platform button on Odoo.sh" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:232 -msgid "Make your development branch a staging branch, by drag and dropping it onto the *staging* section title." +#: ../../content/administration/odoo_sh/getting_started/create.rst:13 +msgid "Sign in with a `GitHub `_ account." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:238 -msgid "Merge it in an existing staging branch, by drag and dropping it onto the given staging branch." +#: ../../content/administration/odoo_sh/getting_started/create.rst:0 +msgid "Signing in to GitHub" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:243 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:289 -msgid "You can also use the :code:`git merge` command to merge your branches." +#: ../../content/administration/odoo_sh/getting_started/create.rst:18 +msgid "Authorize Odoo.sh by clicking :guilabel:`Authorize odoo` twice." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:245 -msgid "This will create a new staging build, which will duplicate the production database and make it run using a server updated with your latest changes of your branch." +#: ../../content/administration/odoo_sh/getting_started/create.rst:0 +msgid "Granting Odoo.sh permissions to perform actions and access data on GitHub" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:251 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:297 -msgid "Once the database ready, you can access it using the *Connect* button." +#: ../../content/administration/odoo_sh/getting_started/create.rst:0 +msgid "Granting Odoo.sh additional permissions to perform actions and access data on GitHub" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:256 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:300 -msgid "Install your module" +#: ../../content/administration/odoo_sh/getting_started/create.rst:27 +msgid "Odoo.sh requests GitHub to:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:258 -msgid "Your module will not be installed automatically, you have to install it from the apps menu. Indeed, the purpose of the staging build is to test the behavior of your changes as it would be on your production, and on your production you would not like your module to be installed automatically, but on demand." +#: ../../content/administration/odoo_sh/getting_started/create.rst:29 +msgid "Access your GitHub login and email." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:263 -msgid "Your module may not appear directly in your apps to install either, you need to update your apps list first:" +#: ../../content/administration/odoo_sh/getting_started/create.rst:30 +msgid "Create a new repository, in case you start from scratch." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:266 -msgid "Activate the :ref:`developer mode `" +#: ../../content/administration/odoo_sh/getting_started/create.rst:31 +msgid "Access existing repositories, including organization ones, in case you start from an existing repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:267 -msgid "in the apps menu, click the *Update Apps List* button," +#: ../../content/administration/odoo_sh/getting_started/create.rst:33 +msgid "Create a webhook to notify you each time changes are pushed." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:268 -msgid "in the dialog that appears, click the *Update* button." +#: ../../content/administration/odoo_sh/getting_started/create.rst:34 +msgid "Commit changes for easier deployment." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:273 -msgid "Your module will then appear in the list of available apps." +#: ../../content/administration/odoo_sh/getting_started/create.rst:36 +msgid "Fill in the :guilabel:`Deploy your platform` form and click :guilabel:`Deploy`:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:279 -msgid "Deploy in production" +#: ../../content/administration/odoo_sh/getting_started/create.rst:38 +msgid ":guilabel:`Github repository`: to create a new repository, choose :guilabel:`New repository` and enter a name; to use an existing one, choose :guilabel:`Existing repository` and select it." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:281 -msgid "Once you tested your module in a staging branch with your production data, and believe it is ready for production, you can merge your branch in the production branch." +#: ../../content/administration/odoo_sh/getting_started/create.rst:40 +msgid ":guilabel:`Odoo Version`: select the major version of Odoo you want to use." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:284 -msgid "Drag and drop your staging branch on the production branch." +#: ../../content/administration/odoo_sh/getting_started/create.rst:43 +msgid "Use the latest major version of Odoo version when creating a new repository. If you are planning to import an existing database or applications, it might be required that their versions match." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:291 -msgid "This will merge the latest changes of your staging branch in the production branch, and update your production server with these latest changes." +#: ../../content/administration/odoo_sh/getting_started/create.rst:46 +msgid "If you are starting on Odoo Online and plan to migrate to Odoo.sh later, create your database using `odoo.com/start-lts `_ to ensure compatibility, as minor versions are not supported by Odoo.sh." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:302 -msgid "Your module will not be installed automatically, you have to install it manually as explained in the :ref:`above section about installing your module in staging databases `." +#: ../../content/administration/odoo_sh/getting_started/create.rst:50 +msgid ":guilabel:`Subscription Code`: enter your Odoo Enterprise subscription code that includes Odoo.sh. It is also sometimes called the *subscription referral*, *contract number*, or *activation code*." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:308 -msgid "Add a change" +#: ../../content/administration/odoo_sh/getting_started/create.rst:55 +msgid "Partners can use their partnership codes to initiate a trial (trial builds are limited to 1 GB storage and two staging). If a client proceeds to start a project, they must subscribe to an Odoo Enterprise plan that includes Odoo.sh hosting and use their subscription code." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:310 -msgid "This section explains how to add a change in your module by adding a new field in a model and deploy it." +#: ../../content/administration/odoo_sh/getting_started/create.rst:59 +msgid ":guilabel:`Hosting location`: select the region where your platform will be hosted." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:315 -msgid "From the Odoo.sh editor," +#: ../../content/administration/odoo_sh/getting_started/create.rst:0 +msgid "The Deploy your platform form" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:314 -msgid "browse to your module folder *~/src/user/my_module*," +#: ../../content/administration/odoo_sh/getting_started/create.rst:67 +msgid "Import a database" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:315 -msgid "then, open the file *models/models.py*." +#: ../../content/administration/odoo_sh/getting_started/create.rst:69 +msgid "Once your platform is deployed, you can import a database into your Odoo.sh project, provided it uses a :doc:`supported version <../../supported_versions>` of Odoo." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:321 -msgid "Or, from your computer," +#: ../../content/administration/odoo_sh/getting_started/create.rst:73 +msgid "Due to `Odoo's backup policy `_, the import process requires **four times** the size of your database dump in available storage. For example, a 10 GB dump file will require at least 40 GB of available space. We recommend allocating **more than four times×** the dump size temporarily, then reducing storage after the import is complete." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:318 -msgid "use the file browser of your choice to browse to your module folder *~/src/odoo-addons/my_module*," +#: ../../content/administration/odoo_sh/getting_started/create.rst:78 +msgid "If your project is a trial created with a partnership code, you can only import database dumps up to **1 GB** in size." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:320 -msgid "then, open the file *models/models.py* using the editor of your choice, such as *Atom*, *Sublime Text*, *PyCharm*, *vim*, ..." +#: ../../content/administration/odoo_sh/getting_started/create.rst:82 +msgid "Push modules in production" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:323 -msgid "Then, after the description field" +#: ../../content/administration/odoo_sh/getting_started/create.rst:84 +msgid "If you are using community or custom modules, add them to a branch in your GitHub repository." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:329 -msgid "Add a datetime field" +#: ../../content/administration/odoo_sh/getting_started/create.rst:87 +msgid "Databases hosted on Odoo Online do not support custom modules." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:335 -msgid "Then, open the file *views/views.xml*." +#: ../../content/administration/odoo_sh/getting_started/create.rst:89 +msgid "Odoo.sh automatically detects folders containing Odoo modules. You can organize them however you prefer. For example, you can place them directly in the root directory of your repository or group them by category (e.g., `accounting`, `project`, etc.)." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:337 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:473 -msgid "After" +#: ../../content/administration/odoo_sh/getting_started/create.rst:93 +msgid "For publicly available community modules, you may also consider using :doc:`submodules <../advanced/submodules>`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:343 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:450 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:467 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:479 -msgid "Add" +#: ../../content/administration/odoo_sh/getting_started/create.rst:97 +msgid "Download a backup" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:349 -msgid "These changes alter the database structure by adding a column in a table, and modify a view stored in database." +#: ../../content/administration/odoo_sh/getting_started/create.rst:101 +#: ../../content/administration/on_premise.rst:5 +#: ../../content/administration/upgrade.rst:30 +#: ../../content/administration/upgrade.rst:163 +#: ../../content/administration/upgrade.rst:371 +msgid "On-premise" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:352 -msgid "In order to be applied in existing databases, such as your production database, these changes requires the module to be updated." +#: ../../content/administration/odoo_sh/getting_started/create.rst:103 +msgid "Go to `/web/database/manager` on your on-premise Odoo instance and click :icon:`fa-floppy-o` :guilabel:`Backup`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:355 -msgid "If you would like the update to be performed automatically by the Odoo.sh platform when you push your changes, increase your module version in its manifest." +#: ../../content/administration/odoo_sh/getting_started/create.rst:0 +msgid "The on-premise web manager interface" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:358 -msgid "Open the module manifest *__manifest__.py*." +#: ../../content/administration/odoo_sh/getting_started/create.rst:109 +msgid "Select :guilabel:`zip (includes filestore)` as the :guilabel:`Backup Format`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:366 -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:504 -msgid "with" +#: ../../content/administration/odoo_sh/getting_started/create.rst:0 +msgid "Downloading an on-premise database backup" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:372 -msgid "The platform will detect the change of version and trigger the update of the module upon the new revision deployment." +#: ../../content/administration/odoo_sh/getting_started/create.rst:115 +msgid "You will need the :guilabel:`Master Password` of your Odoo server. If you do not have it, contact your system administrator." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:375 -msgid "Browse to your Git folder." +#: ../../content/administration/odoo_sh/getting_started/create.rst:117 +msgid "If you cannot access the database manager, it may have been disabled by your system administrator. Refer to the :ref:`database manager security documentation `." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:377 -msgid "Then, from an Odoo.sh terminal:" +#: ../../content/administration/odoo_sh/getting_started/create.rst:123 +msgid "Log in to your portal account and navigate to the `My Databases page `_, and download a backup by clicking the :icon:`fa-gear` (:guilabel:`gear`) icon, then :icon:`fa-cloud-download` :guilabel:`Download`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:389 -msgid "Then, stage your changes to be committed" +#: ../../content/administration/odoo_sh/getting_started/create.rst:0 +msgid "Downloading an Odoo Online database backup" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:401 -msgid "Push your changes:" +#: ../../content/administration/odoo_sh/getting_started/create.rst:131 +msgid "Only major versions of Odoo are compatible with Odoo.sh." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:403 -msgid "From an Odoo.sh terminal:" +#: ../../content/administration/odoo_sh/getting_started/create.rst:134 +msgid "Upload the backup" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:415 -msgid "The platform will then create a new build for the branch *feature-1*." +#: ../../content/administration/odoo_sh/getting_started/create.rst:136 +msgid "In your Odoo.sh project, navigate to the :guilabel:`Backups` tab of your :guilabel:`Production` branch, and click :guilabel:`Import Database` to upload the backup you previously downloaded." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:420 -msgid "Once you tested your changes, you can merge your changes in the production branch, for instance by drag-and-dropping the branch on the production branch in the Odoo.sh interface. As you increased the module version in the manifest, the platform will update the module automatically and your new field will be directly available. Otherwise you can manually update the module within the apps list." +#: ../../content/administration/odoo_sh/getting_started/create.rst:-1 +msgid "Importing a database backup on Odoo.sh" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:426 -msgid "Use an external Python library" +#: ../../content/administration/odoo_sh/getting_started/create.rst:142 +msgid "Once the import is complete, you can access the database using the :guilabel:`Connect` button in the branch's :guilabel:`History` tab." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:428 -msgid "If you would like to use an external Python library which is not installed by default, you can define a *requirements.txt* file listing the external libraries your modules depends on." +#: ../../content/administration/odoo_sh/getting_started/create.rst:146 +msgid "Importing a backup **overwrites all data** currently in the branch. Consider downloading a manual backup beforehand if you want to preserve the existing data." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:432 -msgid "It is not possible to install or upgrade system packages on an Odoo.sh database (e.g., apt packages). However, under specific conditions, packages can be considered for installation. This also applies to **Python modules** requiring system packages for their compilation, and **third-party Odoo modules**." +#: ../../content/administration/odoo_sh/getting_started/create.rst:150 +msgid "Check outgoing email servers" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:436 -msgid "**PostgreSQL extensions** are not supported on Odoo.sh." +#: ../../content/administration/odoo_sh/getting_started/create.rst:152 +msgid "Odoo.sh provides a default email server. To use it, ensure that **no outgoing mail server is enabled** in your database by enabling :ref:`developer mode ` and navigating to :menuselection:`Settings --> Technical --> Email: Outgoing Mail Servers`" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:437 -msgid "For more information, consult our `FAQ `_." +#: ../../content/administration/odoo_sh/getting_started/create.rst:156 +msgid "After importing your database, all configured outgoing mail servers are **disabled**, and the default Odoo.sh server is used." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:439 -msgid "The platform will use this file to automatically install the Python libraries your project needs." +#: ../../content/administration/odoo_sh/getting_started/create.rst:160 +msgid "Port **25** is and will remain closed. If connecting to an external SMTP server, use port **465** or **587**." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:441 -msgid "The feature is explained in this section by using the `Unidecode library `_ in your module." +#: ../../content/administration/odoo_sh/getting_started/create.rst:164 +msgid "Check scheduled actions" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:444 -msgid "Create a file *requirements.txt* in the root folder of your repository" +#: ../../content/administration/odoo_sh/getting_started/create.rst:166 +msgid "Scheduled actions are **disabled by default** after importing your database. This prevents your newly imported database from performing potentially disruptive operations such as:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:446 -msgid "From the Odoo.sh editor, create and open the file ~/src/user/requirements.txt." +#: ../../content/administration/odoo_sh/getting_started/create.rst:169 +msgid "sending queued emails," msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:448 -msgid "Or, from your computer, create and open the file ~/src/odoo-addons/requirements.txt." +#: ../../content/administration/odoo_sh/getting_started/create.rst:170 +msgid "triggering mass mailings, or" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:456 -msgid "Then use the library in your module, for instance to remove accents from characters in the name field of your model." +#: ../../content/administration/odoo_sh/getting_started/create.rst:171 +msgid "syncing with third-party services (e.g., calendars, cloud storage)." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:459 -msgid "Open the file *models/models.py*." +#: ../../content/administration/odoo_sh/getting_started/create.rst:173 +msgid "If you intend to use this imported database in production, **re-enable** only the scheduled actions you need by enabling :ref:`developer mode ` and going to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions`." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:461 -msgid "Before" +#: ../../content/administration/odoo_sh/getting_started/create.rst:178 +msgid "Register the subscription" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:494 -msgid "Adding a Python dependency requires a module version increase for the platform to install it." +#: ../../content/administration/odoo_sh/getting_started/create.rst:180 +msgid "After import, the database is considered a **duplicate** and will be unlinked from your enterprise subscription." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:496 -msgid "Edit the module manifest *__manifest__.py*" +#: ../../content/administration/odoo_sh/getting_started/create.rst:184 +msgid "You are allowed only one active database per subscription." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:510 -msgid "Stage and commit your changes:" +#: ../../content/administration/odoo_sh/getting_started/create.rst:186 +msgid "If you intend to make the imported database your production environment:" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:518 -msgid "Then, push your changes:" +#: ../../content/administration/odoo_sh/getting_started/create.rst:188 +msgid "Unlink your previous database from the subscription." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:520 -msgid "In an Odoo.sh terminal:" +#: ../../content/administration/odoo_sh/getting_started/create.rst:189 +msgid "Register the new one." msgstr "" -#: ../../content/administration/odoo_sh/getting_started/first_module.rst:526 -msgid "In your computer terminal:" +#: ../../content/administration/odoo_sh/getting_started/create.rst:191 +msgid "Refer to the :doc:`database registration documentation <../../on_premise>` for step-by-step instructions." msgstr "" #: ../../content/administration/odoo_sh/getting_started/online-editor.rst:6 @@ -2667,7 +3194,7 @@ msgid "The online editor allows you to edit the source code of your builds from msgstr "" #: ../../content/administration/odoo_sh/getting_started/online-editor.rst:18 -msgid "You can access the editor of a build through :ref:`the branches tabs `, :ref:`the builds dropdown menu ` or by adding */odoo-sh/editor* to your build domain name (e.g. *https://odoo-addons-master-1.dev.odoo.com/odoo-sh/editor*)." +msgid "You can access the editor of a build through :ref:`the branches tabs `, :ref:`the builds dropdown menu ` or by adding */odoo-sh/editor* to your build domain name (e.g. *https://odoo-addons-master-1.dev.odoo.com/odoo-sh/editor*)." msgstr "" #: ../../content/administration/odoo_sh/getting_started/online-editor.rst:25 @@ -2783,7 +3310,7 @@ msgid "The Git source folder *~/src/user* is not checked out on a branch but rat msgstr "" #: ../../content/administration/odoo_sh/getting_started/online-editor.rst:141 -msgid "Once your changes are pushed, according to your :ref:`branch push behavior `, a new build may be created. You can continue to work in the editor you pushed from, as it will have the same revision as the new build that was created, but always make sure to be in an editor of a build using the latest revision of your branch." +msgid "Once your changes are pushed, according to your :ref:`branch push behavior `, a new build may be created. You can continue to work in the editor you pushed from, as it will have the same revision as the new build that was created, but always make sure to be in an editor of a build using the latest revision of your branch." msgstr "" #: ../../content/administration/odoo_sh/getting_started/online-editor.rst:148 @@ -2949,6 +3476,11 @@ msgstr "" msgid "Shell/SSH" msgstr "" +#: ../../content/administration/odoo_sh/getting_started/settings.rst:113 +#: ../../content/administration/odoo_sh/getting_started/settings.rst:158 +msgid "Monitoring" +msgstr "" + #: ../../content/administration/odoo_sh/getting_started/settings.rst:177 #: ../../content/administration/odoo_sh/getting_started/status.rst:3 msgid "Status" @@ -3006,12 +3538,8 @@ msgstr "" msgid ":guilabel:`ci/odoo.sh (test_ci)`: testing the token from the Settings page will push a test status on the last commit of your repository" msgstr "" -#: ../../content/administration/odoo_sh/getting_started/settings.rst:241 -msgid "Custom domains" -msgstr "" - #: ../../content/administration/odoo_sh/getting_started/settings.rst:243 -msgid "To configure additional domains please refer to the corresponding branch's :ref:`settings tab `." +msgid "To configure additional domains please refer to the corresponding branch's :ref:`settings tab `." msgstr "" #: ../../content/administration/odoo_sh/getting_started/settings.rst:251 @@ -3130,21 +3658,6 @@ msgstr "" msgid "The status page shows statistics regarding the servers your project uses. It includes the servers availability." msgstr "" -#: ../../content/administration/odoo_sh/overview/introduction.rst:3 -msgid "Introduction to Odoo.sh" -msgstr "" - -#: ../../content/administration/odoo_sh/overview/introduction.rst:10 -msgid "The documentation will help you go live with your Odoo.sh project in no time." -msgstr "" - -#: ../../content/administration/on_premise.rst:5 -#: ../../content/administration/upgrade.rst:30 -#: ../../content/administration/upgrade.rst:163 -#: ../../content/administration/upgrade.rst:371 -msgid "On-premise" -msgstr "" - #: ../../content/administration/on_premise.rst:8 msgid "Register a database" msgstr "" diff --git a/locale/sources/essentials.pot b/locale/sources/essentials.pot index 388d7ed1e7..0f25676377 100644 --- a/locale/sources/essentials.pot +++ b/locale/sources/essentials.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 18.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-17 08:58+0000\n" +"POT-Creation-Date: 2025-11-18 11:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -3519,3 +3519,172 @@ msgstr "" #: ../../content/applications/essentials/search.rst:281 msgid "To view *all* favorited searches, :ref:`activate developer mode`, then navigate to :menuselection:`Settings app --> Technical --> User-defined Filters`. From here, all favorited searches can be viewed, edited, archived, or deleted." msgstr "" + +#: ../../content/applications/essentials/stages.rst:3 +msgid "Stages" +msgstr "" + +#: ../../content/applications/essentials/stages.rst:5 +msgid "*Stages* are used to organize an app's pipeline and track the progress of configured items, from now on are referred to as cards." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:8 +msgid "In apps these cards represent specific items, for example, in the **Helpdesk** app, stages track tickets. Stages are customizable, and can be renamed to fit the needs of each team." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:12 +msgid "Create or modify stages" +msgstr "" + +#: ../../content/applications/essentials/stages.rst:15 +msgid ":ref:`Developer mode ` **must** be activated to access the stages menu. To activate developer mode, go to :menuselection:`Settings app --> General Settings --> Developer Tools`, and click :guilabel:`Activate the developer mode`." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:19 +msgid "To view or modify stages, go to the desired app and go to :menuselection:`Configuration --> Stages`." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:21 +msgid "The default list view on the :guilabel:`Stages` page displays the stages currently available in the app. They are listed in the order they appear in the pipeline." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:24 +msgid "To change the order of the stages, click the :icon:`oi-draggable` :guilabel:`(draggable)` icon, to the left of the stage name, and drag it to the desired place on the list." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:-1 +msgid "View of the stage list page emphasizing the buttons used to change the order the stages\n" +"appear in the list." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:32 +msgid "Change the stage order on the Kanban view of a team's pipeline by dragging and dropping individual columns." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:35 +msgid "To create a new stage, click the :guilabel:`New` button at the top-left of the stage list. Doing so reveals a blank stage form." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:38 +msgid "Choose a :guilabel:`Name` for the new stage." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:-1 +msgid "View of a stage's settings page in Odoo Helpdesk." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:44 +msgid "Progress bar" +msgstr "" + +#: ../../content/applications/essentials/stages.rst:46 +msgid "The progress bar is visible above each stage, displaying the percentage breakdown of every status type for all the cards within that stage. Each status type has an assigned color that appears within the bar." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:50 +msgid "The specific definition of these statuses changes depending on the app. For example, in the **Helpdesk** app, the progress bar for a stage consists of the :guilabel:`In progress`, :guilabel:`Ready`, and :guilabel:`Blocked` statuses by default." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:54 +msgid "To see a detailed count, hover over a representative color, which activates a notification detailing the number of cards in the stage of that specific status." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:57 +msgid "Clicking a status color filters the stage to show only cards with that status. The card count for the selected status appears next to the progress bar." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:-1 +msgid "View of a stage's progress highlighting the activities that are due today." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:64 +msgid "Add email and SMS templates to stages" +msgstr "" + +#: ../../content/applications/essentials/stages.rst:66 +msgid "When an :guilabel:`Email Template` is added to a stage, a preconfigured email is automatically sent to the customer when a ticket reaches that specific stage in the pipeline. Likewise, adding an :guilabel:`SMS Template` triggers a preconfigured SMS text message to send to the customer." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:71 +msgid "SMS text messaging is an :doc:`In-App Purchase (IAP) ` service that requires prepaid credits to work. Refer to `SMS Pricing FAQ `_ for additional information." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:75 +msgid "To select an existing email template, select it from the :guilabel:`Email Template` field. After choosing a template, click on the :icon:`oi-arrow-right` :guilabel:`(right arrow)` icon to the right of the field to edit the chosen template." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:79 +msgid "To create a new template from this form, click the field, and enter a title for the new template. Then, select :guilabel:`Create and edit` from the drop-down menu that appears, and complete the form details." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:83 +msgid "Follow the same steps to select, edit, or create an :guilabel:`SMS Template`." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:-1 +msgid "View of an SMS template setup page in Odoo Helpdesk." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:89 +msgid ":doc:`/applications/general/companies/email_template`" +msgstr "" + +#: ../../content/applications/essentials/stages.rst:92 +msgid "Fold a stage" +msgstr "" + +#: ../../content/applications/essentials/stages.rst:94 +msgid "By default, stages are unfolded in the Kanban view. If there is a Won or Closed stage, it is folded by default." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:97 +msgid "Cards in an unfolded stage are visible in the pipeline under the stage name, and are considered *open*." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:100 +msgid "Stages can be configured to be folded in the Kanban view of the pipeline page." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:102 +msgid "The name of the folded stages are still visible, but the cards in the stage are hidden from view." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:104 +msgid "To fold a stage, tick the :guilabel:`Folded in Kanban` checkbox on the :guilabel:`Stages` form." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:107 +msgid "Cards that reach a *folded* stage are considered *closed*. Closing a card before the work is completed can result in reporting and communication issues. This setting should **only** be enabled for stages that are considered *closing* stages." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:112 +msgid "Temporarily fold a stage" +msgstr "" + +#: ../../content/applications/essentials/stages.rst:114 +msgid "Stages can be temporarily folded in the Kanban view of the pipeline, as well." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:116 +msgid "View a specific team's pipeline by navigating to the desired app, and clicking the team's Kanban card." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:119 +msgid "Hover the cursor at the top of the desired stage to fold temporarily, then click the :icon:`fa-gear` :guilabel:`(gear)` icon that appears, and select :guilabel:`Fold` from the drop-down menu." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:-1 +msgid "Kanban view of a Helpdesk stage, with the temporary fold option emphasized." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:126 +msgid "Manually folding a stage from the Kanban view is temporary and does **not** close the cards in the stage." +msgstr "" + +#: ../../content/applications/essentials/stages.rst:130 +msgid "Assign stages to a team" +msgstr "" + +#: ../../content/applications/essentials/stages.rst:132 +msgid "Make a selection in the :guilabel:`Teams` field on the :guilabel:`Stages` form. More than one team may be selected, since the same stage can be assigned to multiple teams." +msgstr "" diff --git a/locale/sources/finance.pot b/locale/sources/finance.pot index 5b288d6ae1..96b15dd481 100644 --- a/locale/sources/finance.pot +++ b/locale/sources/finance.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 18.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-17 08:58+0000\n" +"POT-Creation-Date: 2025-11-18 11:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -471,50 +471,24 @@ msgid "A default :ref:`bank journal ` is available and msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:7 -msgid "Odoo can synchronize directly with your bank institution to get all bank statements imported automatically into your database." +msgid "Odoo synchronizes directly with your bank institution to automatically import all bank transactions into the database. It supports over 26,000 financial institutions worldwide and relies on multiple :ref:`third-party providers ` to connect with banks." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:10 -msgid "To check if your bank is compatible with Odoo, go to `Odoo Accounting Features `_, and click on :guilabel:`See list of supported institutions`." -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:14 -msgid "Odoo supports more than 26,000 institutions around the world." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:13 +msgid "To use this service, a valid Odoo Enterprise subscription is required." msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:16 -msgid "To connect to the banks, Odoo uses multiple web-services:" -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:18 -msgid "**Plaid**: United States of America and Canada" -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:19 -msgid "**Yodlee**: Worldwide" -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:20 -msgid ":doc:`Salt Edge `: Worldwide" +msgid "To check if your bank is compatible with Odoo, go to `Odoo Accounting Features `_, and click :guilabel:`See list of supported institutions` in the :guilabel:`Bank & Cash` section." msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:21 -msgid ":doc:`Ponto `: Europe" -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:22 -msgid ":doc:`Enable Banking `: Scandinavian countries" -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:25 #: ../../content/applications/finance/accounting/bank/reconciliation.rst:18 msgid ":doc:`transactions`" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:28 -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:20 +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:26 #: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:20 -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:17 #: ../../content/applications/finance/accounting/bank/foreign_currency.rst:16 #: ../../content/applications/finance/accounting/bank/internal_transfers.rst:12 #: ../../content/applications/finance/accounting/customer_invoices/cash_discounts.rst:27 @@ -611,486 +585,444 @@ msgid "Configuration" msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:31 -msgid "On-Premise users" +msgid "First synchronization" msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:33 -msgid "To be able to use this service, you need to have a valid Odoo Enterprise subscription. So make sure that your database is registered with your Odoo Enterprise contract. We also use a proxy between your database and the third party provider so, in case of a connection error, please check that you don't have a firewall or a proxy blocking the following address:" +msgid "To synchronize the database with a bank, go to the Accounting Dashboard, click the :icon:`fa-ellipsis-v` :guilabel:`(vertical ellipsis)` icon of the :guilabel:`Bank` journal, and :guilabel:`Connect bank`. In the :guilabel:`Search for an institution` window, select the relevant bank and click :guilabel:`Connect`." msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:39 -msgid "https://production.odoofin.com/" +msgid "Alternatively, go to :menuselection:`Accounting --> Configuration --> Add a Bank Account` or click :guilabel:`Search over 26000 banks` in the Accounting dashboard." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:42 -msgid "First synchronization" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:41 +msgid "Depending on your bank and country, you can select the :guilabel:`Type of account` and/or choose another :ref:`third-party provider ` to connect with the bank if needed before clicking :guilabel:`Connect`." msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:44 -msgid "You can start synchronization either by going to the Accounting app and :menuselection:`Accounting --> Configuration --> Add a Bank Account`." -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:47 -msgid "Now you can search for your bank institution. Select it and follow the steps to synchronize with it." +msgid "If your bank is not listed in the :guilabel:`Search for an institution` window, scroll down the list and click :icon:`fa-plus` :guilabel:`Add new bank` to create a bank account manually. Fill in the :guilabel:`Account Number`, :guilabel:`Bank`, and :guilabel:`SWIFT Code` and click :guilabel:`Connect`. A bank journal is then created and named using the account number. Note that in this case, the bank is not synchronized." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:50 -msgid "If you have any issues during your first synchronization, please verify that your web browser doesn't block pop-ups and that your ad-blocker is disabled." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:49 +msgid "If issues occur during the first synchronization, check that no firewall or proxy is blocking the address https://production.odoofin.com/. Make sure your web browser allows pop-ups and that any ad-blocker is disabled." msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:54 -msgid "When setting up the bank statement synchronization, Odoo automatically starts recording the accounting transactions from the last transaction’s date +1 day (if the last transaction day is 31/12/2022, the recording starts on 01/01/2023). If the journal contains no transaction, Odoo retrieves transactions as far back as possible. You can limit how far back Odoo retrieves transactions by opening the Accounting app, going to :menuselection:`Accounting --> Lock Dates`, and setting a date in the :guilabel:`Journal Entries Lock Date` field." +msgid "When setting up bank synchronization, accounting transactions are automatically recorded from the date of the last transaction +1 day (e.g., if the last transaction date is 31/12/2025, the recording starts on 01/01/2026). If the journal contains no transactions, all available past transactions are retrieved. To limit the retrieval period, go to :menuselection:`Accounting --> Accounting --> Lock Dates`, and set a date in the :guilabel:`Lock Everything` field." msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:61 -msgid "You must provide a phone number during your first synchronization to secure your account. We ask for such information because we don't want your data falling into the wrong hands. Therefore, if we detect suspicious activities on your account, we block all requests coming from your account, and you need to reactivate it using that phone number." +msgid "Some banks are in a :guilabel:`Beta` status, meaning they're not yet fully supported by third-party providers. This may lead to bugs or other issues. Although they can be used, Odoo does not provide technical support in this case." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:66 -msgid "The third-party provider may request more information in order to connect with your bank institution. This information is not stored on Odoo's servers." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:64 +msgid "The :ref:`third-party provider ` may request more information to connect with a bank. This information is not stored on Odoo's servers." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:69 -msgid "By default, transactions fetched from an online source are grouped inside the same statement, and one bank statement is created per month. You can change the bank statement creation periodicity in your journal settings." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:67 +msgid "To view all past synchronizations, activate the :ref:`developer mode ` and go to :menuselection:`Accounting --> Configuration --> Online Synchronization`." msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:73 -msgid "To view all your synchronizations, activate the :ref:`developer mode ` and go to :menuselection:`Accounting --> Configuration --> Online Synchronization`." +msgid "Manual synchronization" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:77 -msgid "Synchronize manually" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:75 +msgid "After the :ref:`first synchronization `, bank journals are synchronized by default every twelve hours. To manually trigger synchronization, go to the Accounting dashboard and click :guilabel:`Fetch Transactions` on the relevant bank journal." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:79 -msgid "After your first synchronization, the created journals are synchronized by default every 12 hours. If you wish, you can synchronize them manually by clicking on the :guilabel:`Synchronize Now` button on the dashboard." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:80 +msgid "Alternatively, activate the :ref:`developer mode `, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, select the relevant bank, and click :guilabel:`Fetch transactions`." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:83 -msgid "Alternatively, activate the :ref:`developer mode `, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, select your institution, and then click the :guilabel:`Fetch transactions` button." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:85 +msgid "Some banks do not support automatic transaction fetching. For these institutions, an error message appears during the automatic account synchronization, prompting the user to disable the automatic synchronization. This message is also logged in the chatter of the online synchronization. In such cases, disable the :guilabel:`Automatic synchronization` option in the corresponding bank's :guilabel:`Online Synchronization` and make sure to perform manual synchronizations by clicking :guilabel:`Fetch Transactions` on the relevant bank journal." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:88 -msgid "Some institutions do not allow transactions to be fetched automatically. For such institutions, during the automatic synchronization of the account, you receive an error message asking you to disable the automatic synchronization. This message can be found in the chatter of your online synchronizations. In this case, make sure to perform manual synchronizations." -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:94 -msgid "Issues" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:91 +msgid "For some bank institutions, transactions can only be fetched up to three months in the past. If older transactions are needed, they can be :ref:`imported `." msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:97 -msgid "Synchronization in error" +msgid "Update synchronization credentials" msgstr "" #: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:99 -msgid "To report a connection error to the `Odoo support `_, activate the :ref:`developer mode `, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, select the connection that failed, and copy the error description and the reference." -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:105 -msgid "Synchronization disconnected" -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:107 -msgid "If your connection with the proxy is disconnected, you can reconnect with the proxy using the :guilabel:`Fetch Account` button." -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:111 -msgid "If you are unable to reconnect using the :guilabel:`Reconnect` button, please contact the `support `_ directly with your client id or the reference of the error listed in the chatter." -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:118 -msgid "Migration process for users having installed Odoo before December 2020" +msgid "To update bank credentials, activate the :ref:`developer mode `, and go to :menuselection:`Accounting --> Configuration --> Online Synchronization`. Open the connection that needs to be updated, click :guilabel:`Update Credentials`, and follow the steps." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:120 -msgid "If you are on-premise, please first make sure that your source is up-to-date with the latest version of Odoo." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:104 +msgid "The steps may vary depending on the third-party provider, as each provider follows its own process." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:123 -msgid "Users who have created a database before December 2020 need to install the new module manually to use the new functionalities." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:106 +msgid "When updating bank credentials, make sure all accounts are selected for synchronization, including those from other banking institutions if applicable." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:126 -msgid "To do so, go to :menuselection:`Apps --> Update Apps List`, remove the default filter in the search bar and type `account_online_synchronization`. You can then click on :guilabel:`Install`. Finally, make sure all your users refresh their Odoo page by pressing CTRL+F5." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:112 +msgid "Third-party providers" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:132 -msgid "All previous synchronizations are disconnected during the installation and will not work anymore. To view them, activate the :ref:`developer mode ` and go to :menuselection:`Accounting --> Configuration --> Online Synchronization`. It is not possible to resynchronize these connections; you have to make new ones." -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:136 -msgid "Do not uninstall the `account_online_sync` module, which is the previous module for online synchronization. The new one overrides it." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:114 +msgid "Odoo relies on third-party providers to securely connect to your bank accounts and automatically import transactions and financial data into the database. The following providers are used:" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:138 -msgid "By default, the `account_online_synchronization` module is installed automatically with Accounting." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:117 +msgid "`Plaid `_ (supported in the `United States of America and Canada `_)" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:142 -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:86 -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:72 -msgid "FAQ" -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:145 -msgid "The synchronization is not working in real-time. Is that normal?" -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:147 -msgid "The process is not intended to work in real-time as third party providers synchronize your accounts at different intervals. To force the synchronization and fetch the statements, go to your :guilabel:`Accounting Dashboard`, and click on the :guilabel:`Synchronize Now` button. Synchronize and fetch transactions by activating the :ref:`developer mode ` and going to :menuselection:`Accounting --> Configuration --> Online Synchronization`. Some providers only allow one refresh per day, so it is possible that clicking on :guilabel:`Synchronize Now` does not get your latest transactions if you already performed such action earlier in the day." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:119 +msgid "`Yodlee `_ (supported in Europe)" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:155 -msgid "A transaction can be visible on your bank account but not be fetched if it has the status :guilabel:`Pending`. Only transactions with the :guilabel:`Posted` status will be retrieved. If the transaction is not **Posted** yet, you will have to wait until the status changes." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:120 +msgid "`Salt Edge `_ (supported `worldwide `_)" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:160 -msgid "Is the Online Bank Synchronization feature included in my contract?" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:122 +msgid ":doc:`Ponto ` (supported in Europe)" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:162 -msgid "**Community Edition**: No, this feature is not included in the Community Version." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:123 +msgid "`Enable Banking `_ (supported in `Scandinavian countries `_)" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:163 -msgid "**Online Edition**: Yes, even if you benefit from the One App Free contract." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:127 +msgid "When :ref:`connecting a bank to Odoo `:" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:164 -msgid "**Enterprise Edition**: Yes, if you have a valid enterprise contract linked to your database." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:129 +msgid "Depending on your bank and country, change the default third-party provider when selecting the bank, if necessary." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:167 -msgid "Some banks have a status \"Beta.\" What does this mean?" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:131 +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:66 +msgid "Make sure to check the consent checkbox to allow information to be shared with Odoo." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:169 -msgid "This means that banking institutions are not yet fully supported by our Third Party Provider. Bugs or other problems may arise. Odoo does not support technical problems that occur with banks in the Beta phase, but the user may still choose to connect. Connecting with these banks contributes to the development process since the Provider will have real data and feedback from the connection." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:132 +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:67 +msgid "Select all accounts that need access and synchronization, including those from other banking institutions." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:175 -msgid "Why do my transactions only synchronize when I refresh manually?" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:136 +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:105 +msgid ":ref:`Bank synchronization troubleshooting `" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:177 -msgid "Some banks have additional security measures and require extra steps, such as an SMS/email authentication code or another type of MFA. Because of this, the integrator cannot pull transactions until the security code is provided." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:137 +msgid ":ref:`Salt Edge bank synchronization troubleshooting `" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:182 -msgid "Not all of my past transactions are in Odoo, why?" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:139 +msgid ":ref:`Ponto bank synchronization troubleshooting `" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:184 -msgid "For some institutions, transactions can only be fetched up to 3 months in the past." -msgstr "" - -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:187 -msgid "Why don't I see any transactions?" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:145 +msgid "Duplicate transactions" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:189 -msgid "During your first synchronization, you selected the bank accounts you decided to synchronize with Odoo. If you didn't synchronize any of your accounts, activate the :ref:`developer mode `, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, and click the :guilabel:`Fetch Account` button on the connection." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:147 +msgid "When importing transactions, some may appear duplicated due to the same online transaction identifier or the same currency, amount, account number, and date." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:194 -msgid "There may also be no new transactions." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:150 +msgid "To search for duplicate transactions, access the :ref:`bank reconciliation view `, then follow these steps:" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:196 -msgid "If your bank account is properly linked to a journal and posted transactions are not visible in your database, please `submit a support ticket `_." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:153 +msgid "Click the :icon:`fa-cog` :guilabel:`(gear)` icon, and select :guilabel:`Find Duplicate Transactions`." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:200 -msgid "How can I update my bank credentials?" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:155 +msgid "All duplicate transactions from the starting date are displayed in the :guilabel:`Transactions` tab. Update the :guilabel:`Starting Date` if needed." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:202 -msgid "To update your credentials, activate the :ref:`developer mode ` and go to :menuselection:`Accounting --> Configuration --> Online Synchronization`. Open the connection you want to update your credentials and click the :guilabel:`Update Credentials` button." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:157 +msgid "To delete a transaction, select it, click :guilabel:`Delete Selected`, and confirm." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:3 -msgid "Enable Banking" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:160 +msgid "Journal entries can only be deleted if they have not been reconciled." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:5 -msgid "**Enable Banking** is a third-party provider aggregating banking information from bank accounts all in one place. It offers non-intrusive connectivity to ASPSPs' official APIs across Europe without storing data." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:165 +msgid "Missing transactions" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:-1 -msgid "Enable Banking logo" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:167 +msgid "Missing or pending transactions are entries that the bank has not yet validated." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:12 -msgid "**Odoo** synchronizes directly with banks to get access to all bank transactions and automatically import them into your database." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:169 +msgid "To find missing and pending transactions, access the :ref:`bank reconciliation view `, click the :icon:`fa-cog` :guilabel:`(gear)` icon, and select :guilabel:`Find Missing Transactions`." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:16 -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:16 -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:13 -msgid ":doc:`../bank_synchronization`" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:173 +msgid "To import a posted missing transaction, select it and click :guilabel:`Import Transactions`." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:17 -msgid "`Enable Banking website `_" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:176 +msgid "Make sure the connection with the bank is active to find missing transactions." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:23 -msgid "Link bank accounts with Odoo" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:177 +msgid ":guilabel:`Pending` transactions cannot be imported." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:25 -msgid "Start synchronization by clicking on :menuselection:`Accounting --> Configuration --> Add a Bank Account`;" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:182 +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:102 +msgid "Troubleshooting" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:27 -msgid "Select your bank;" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:185 +msgid ":ref:`Bank synchronization troubleshooting - Ponto `" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:28 -msgid "Make sure you give your consent to share your account information with Odoo by clicking :guilabel:`Continue authentication`;" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:191 +msgid "Synchronization errors or disconnections" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:0 -msgid "Enable Banking authentication page" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:193 +msgid "To report a connection error to `Odoo support `_, activate the :ref:`developer mode `, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, select the failed connection, and copy the error description and the reference." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/enablebanking.rst:34 -msgid "Finally, you are redirected to your bank's login page." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:198 +msgid "If the connection with the proxy is lost and reconnection using the :guilabel:`Reconnect` option isn't successful, contact `support `_ directly. Provide the client ID or the error reference from the chatter." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:3 -msgid "Ponto" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:205 +msgid "Why is the synchronization not working in real-time?" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:5 -msgid "**Ponto** is a service that allows companies and professionals to aggregate their accounts in one place and directly see all their transactions within one app. It is a third-party solution that is continuously expanding the number of bank institutions that can be synchronized with Odoo." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:207 +msgid "Synchronization is not designed to work in real time, as third-party providers synchronize accounts at different intervals. To manually trigger synchronization and retrieve bank transactions, go to the :guilabel:`Accounting Dashboard`, and click :guilabel:`Fetch Transactions`." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:9 -msgid "**Odoo** can synchronize directly with your bank to get all bank statements imported automatically into your database." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:211 +msgid "Alternatively, to synchronize and fetch transactions, activate the :ref:`developer mode ` and go to :menuselection:`Accounting --> Configuration --> Online Synchronization`." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:12 -msgid "Ponto is a paid third-party provider that can handle the synchronization between your bank accounts and Odoo." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:215 +msgid "Some providers restrict refreshes to once per day. If transactions have already been fetched, clicking :guilabel:`Fetch Transactions` again may not retrieve the latest data." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:17 -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:14 -msgid ":doc:`../transactions`" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:218 +msgid "Transactions may appear on a bank account, but cannot be fetched if they have a :guilabel:`Pending` status; only transactions with a :guilabel:`Posted` status are retrieved." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:23 -msgid "Link your bank accounts with Ponto" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:224 +msgid "Why do my transactions only synchronize when I refresh manually?" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:25 -msgid "Go to `Ponto's website (https://myponto.com) `_." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:226 +msgid "Some banks implement additional security measures and require extra steps, such as an SMS or email authentication code, or another type of :abbr:`MFA (multi-factor authentication)`. As a result, the third-party provider cannot retrieve transactions until the security code is provided." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:26 -msgid "Create an account if you don't have one yet." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:233 +msgid "Why are no transactions visible?" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:27 -msgid "Once you are logged in, create an *organization*." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:235 +msgid "There are a few possible reasons for this issue:" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:0 -msgid "Fill out the form to add an organization in Ponto." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:237 +msgid "No bank accounts were synchronized during the :ref:`first synchronization `." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:32 -msgid "Go to :menuselection:`Accounts --> Live`, and click :guilabel:`Add account`. You might have to add your **Billing Information** first." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:239 +msgid "There may be no new transactions available to fetch." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:34 -msgid "Select your country, your bank institutions, give your consent to Ponto, and follow the steps on-screen to link your bank account with your Ponto account." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:241 +msgid "If the bank account is correctly linked to a journal, but posted transactions still aren't visible in the database, contact `support `_." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:0 -msgid "Add bank accounts to your Ponto account." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:247 +msgid "Why are no accounts shown after synchronization?" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:40 -msgid "Add all bank accounts you want to synchronize with your Odoo database and move to the next steps." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:249 +msgid "During the synchronization process, a bank institution was selected, but no bank accounts from this institution were authorized during the :ref:`first synchronization `." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:43 -msgid "Link your Ponto account with your Odoo database" +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:256 +msgid "Saltedge troubleshooting" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:45 -msgid "Go to :menuselection:`Accounting --> Configuration --> Add a Bank Account`." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:261 +msgid "Why is there an error when deleting a synchronization in Odoo?" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:46 -msgid "Search for your institution and select it so you can verify that the third party provider is Ponto." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:263 +msgid "Odoo can't permanently delete the connection established with the banking institution. However, it revokes consent, which prevents Odoo from accessing the account. The error message indicates that the consent has been revoked, but the record could not be deleted as it remains in Salt Edge." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:48 -msgid "Click :guilabel:`Connect` and follow the steps." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:267 +msgid "To delete the connection, connect to the `Salt Edge account `_ and manually remove the synchronization. Once this is done, the record can be deleted in Odoo." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:49 -msgid "Select **all accounts** you want to access and synchronize in Odoo, even the ones coming from other banking institutions." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:273 +msgid "I have an error saying that this account has already been synchronized" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:0 -msgid "Selection of the accounts you wish to synchronize with Odoo." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:275 +msgid "The bank account has already been synchronized with Salt Edge. Access the Salt Edge `dashboard `_ to check if a connection with the same credentials exists. There are two options:" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:55 -msgid "Finish the flow." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:279 +msgid "If a connection with the same credentials exists in Salt Edge but has not been synchronized with Odoo, delete the existing connection and create a new one from the Odoo database." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:58 -msgid "You have to authorize all the accounts you want to access in Odoo, but Odoo will filter the accounts based on the institution you selected in the second step." +#: ../../content/applications/finance/accounting/bank/bank_synchronization.rst:281 +msgid "If a connection with the same credentials exists in Salt Edge and has already been synchronized with Odoo, :ref:`update the synchronization credentials ` to reactivate the connection." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:62 -msgid "Update your synchronization credentials" +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:3 +msgid "Ponto" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:64 -msgid "To update your Ponto credentials or modify the synchronization settings, activate the :ref:`developer mode `, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, and select the institution from which you want to fetch the other accounts. Click :guilabel:`Fetch Accounts` to start the flow." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:5 +msgid "`Ponto `_ is a paid third-party service that enables companies and professionals to connect multiple bank accounts to a single platform. It provides a unified view of all transactions within a single interface. When integrated with Odoo, it automatically synchronizes bank transactions directly into its database." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:70 -msgid "During the update, select **all accounts** you want to synchronize, even the ones coming from other banking institutions." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:11 +msgid "Using Ponto is subject to applicable fees." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:74 -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:60 -msgid "Fetch new accounts" +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:14 +msgid ":doc:`../bank_synchronization`" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:76 -msgid "To add new online accounts to your connection, activate the :ref:`developer mode `, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, and select the institution from which you want to fetch the other accounts. Click :guilabel:`Fetch Accounts` to start the flow." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:15 +msgid "`Financial institutions connected to Ponto `_" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:82 -msgid "Don't forget to keep authorization for existing accounts (for all institutions that you have synchronized with Ponto)." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:22 +msgid "To connect a bank with Odoo using Ponto as the third-party provider, follow these steps:" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:89 -msgid "After my synchronization, no account appears" +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:24 +msgid "Set up your email address: Click the profile icon in the upper-right corner, select :guilabel:`My profile`, and fill in the :guilabel:`Email` field." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:91 -msgid "You selected an institution from the list and did not authorize any accounts from this institution." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:26 +msgid ":ref:`Create a Ponto account ` if needed." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:94 -msgid "I have an error about that my authorization has expired" +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:28 +msgid ":ref:`Connect Odoo to your bank `." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:96 -msgid "Every **6 months** (180 days) you must re-authorize the connection between your bank account and Ponto. This must be done from the `Ponto website `_. If you do not do this, the synchronization will stop for these accounts." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:33 +msgid "Ponto account creation" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:101 -msgid "I have some errors with my beta institution" +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:35 +msgid "Access the `Ponto website `_." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:103 -msgid "Ponto provides institutions in *beta*, these institutions are not directly supported by Odoo and we advise you to contact Ponto directly." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:36 +msgid "Click :guilabel:`Login`, then :guilabel:`Not a user yet?` and follow the instructions to create a new account." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:107 -msgid "Using an institution in beta is beneficial for Ponto, it allows them to have real feedback on the connection with the institution." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:40 +msgid "Use the same email address as the one :ref:`used for your Odoo profile `." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:3 -msgid "Salt Edge" +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:43 +msgid "After logging in, create an :guilabel:`Organization` and provide the necessary contact details." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:5 -msgid "**Salt Edge** is a third-party provider that aggregates banking information from your bank accounts. It supports ~5000 institutions in more than 50 countries." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:44 +msgid "Give consent to Ponto to access the bank account data." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:9 -msgid "Odoo can synchronize directly with your bank to get all bank statements imported automatically into your database." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:45 +msgid "Click :guilabel:`Accounts`, :guilabel:`Add account`, then :guilabel:`Choose your bank`, enter the bank account reference, and follow the on-screen steps to complete the linking process." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:20 -msgid "Link your bank accounts with Odoo" +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:47 +msgid "Add all relevant bank accounts that need to be synchronized with Odoo, then proceed to the next steps." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:22 -msgid "Start synchronization by clicking on :menuselection:`Accounting --> Configuration --> Add a Bank Account`." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:53 +#: ../../content/applications/finance/fiscal_localizations/belgium.rst:456 +msgid "Connection with Odoo" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:24 -msgid "Select the institution you want to synchronize. You can see if Salt Edge is the third party provider of the institution by selecting it." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:55 +msgid "When :ref:`connecting a bank to Odoo ` using Ponto as the third-party provider, follow these steps:" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:26 -msgid "After giving your phone number, you are asked for an email address. This email address is used to create your Salt Edge account. Please make sure you enter a valid email address, as otherwise, you will not be able to access your Salt Edge account." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:58 +msgid "When connecting to the desired bank, make sure Ponto is selected as the third-party :guilabel:`Provider`." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:0 -msgid "Email address to provide to Salt Edge for the creation of your account." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:60 +msgid "Select the account(s) to grant Ponto access to account balances and transactions, then confirm the selection." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:34 -msgid "After entering your email address, you are redirected to Salt Edge to continue the synchronization process." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:62 +msgid "Authorize Odoo to request account information and initiate payment orders." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:0 -msgid "Salt Edge Login page." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:63 +msgid "Select the specific bank account to connect." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:40 -msgid "Make sure you give your consent by checking the consent checkbox." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:71 +msgid ":ref:`Update synchronization credentials `" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:0 -msgid "Salt Edge give consent page." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:76 +msgid "Vendor payments with Ponto" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:45 -msgid "Complete the synchronization by following the steps." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:79 +msgid "Before managing vendor payments with Ponto, make sure the following steps are completed:" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:49 -msgid "Update your credentials" +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:81 +msgid ":ref:`SEPA Credit Transfer is activated (SCT) `." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:51 -msgid "To update your Salt Edge credentials or modify the synchronization settings, activate the :ref:`developer mode `, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, and select the institution you want to update credentials. Click :guilabel:`Update Credentials` to start the flow and follow the steps." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:82 +msgid ":ref:`The SEPA Credit Transfer payment method has been added to the bank journal `." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:56 -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:68 -msgid "Don't forget to check the consent checkbox. Otherwise, Odoo may not be able to access your information." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:84 +msgid ":doc:`The vendor's bank account has been marked as trusted <../../payments/trusted_accounts>`." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:62 -msgid "To add new online accounts to your connection, activate the :ref:`developer mode `, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, and select the institution to fetch the new accounts. Click :guilabel:`Fetch Accounts` to start the flow and follow the steps." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:85 +msgid "The :guilabel:`Account Online Payment` (`account_online_payment`) module is :ref:`installed `." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:75 -msgid "I have an error when I try to delete my synchronization within Odoo" +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:88 +msgid "To register a vendor payment using Ponto, follow these steps:" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:77 -msgid "Odoo can't permanently delete the connection you have created with the banking institution. However, it can revoke the consent you gave so that Odoo won't be able to access your account anymore. The error you are seeing is probably a message telling you that the consent was revoked, but the record could not be deleted as it still exists within Salt edge. If you want to remove the connection completely, please connect to your `Salt Edge account `_ and manually delete your synchronization. Once this is done, you can go back to Odoo to delete the record." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:90 +msgid "Go to :menuselection:`Accounting --> Vendors --> Payments` and create the payment. Fill in the relevant bank :guilabel:`Journal` field, select :ref:`SEPA Credit Transfer ` as the :guilabel:`Payment Method`, and enter the :guilabel:`Vendor Bank Account`. Then click :guilabel:`Confirm`." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:86 -msgid "I have an error saying that I have already synchronized this account" +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:94 +msgid "Go to :menuselection:`Accounting --> Vendors --> Batch Payments` and :ref:`create a batch `. Select the same bank :guilabel:`Journal` and :guilabel:`Payment Method`, and click :guilabel:`Add a line` to select the payment created in the previous step." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:88 -msgid "You have probably already synchronized your bank account with Salt Edge, please check on your `dashboard `_ that you don't already have a connection with the same credentials." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:97 +msgid "Click :guilabel:`Initiate Payment` to connect to Ponto and follow the steps to sign the payment." msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:92 -msgid "If you already have a synchronization with the same credentials present on your Salt Edge dashboard and this synchronization has not been created with Odoo, delete it and create it from your Odoo database." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:110 +msgid "Why has the authorization expired?" msgstr "" -#: ../../content/applications/finance/accounting/bank/bank_synchronization/saltedge.rst:96 -msgid "If you already have a connection with the same credentials present on your Salt Edge dashboard and this synchronization was created with Odoo, activate the :ref:`developer mode `, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, and click :guilabel:`Update Credentials` to reactivate the connection." +#: ../../content/applications/finance/accounting/bank/bank_synchronization/ponto.rst:112 +msgid "Every six months (180 days), the connection between a bank account and Ponto must be re-authorized via the `Ponto website `_. Failure to do so will result in synchronization stopping for those accounts." msgstr "" #: ../../content/applications/finance/accounting/bank/foreign_currency.rst:3 @@ -1469,89 +1401,97 @@ msgstr "" msgid "The transactions section on the left shows all bank transactions, with the newest displayed first. Click a transaction to select it." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:52 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:48 +msgid ":ref:`Duplicate transactions `" +msgstr "" + +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:49 +msgid ":ref:`Missing transactions `" +msgstr "" + +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:56 msgid "Counterpart entries" msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:48 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:52 msgid "The counterpart entries section on the bottom right displays the options to match the selected bank transaction. Multiple tabs are available, including :ref:`reconciliation/existing-entries`, :ref:`reconciliation/batch-payments`, :ref:`reconciliation/manual-operations`, and :guilabel:`Discuss`, which contains the chatter for the selected bank transaction." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:58 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:62 msgid "Resulting entry" msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:55 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:59 msgid "The resulting entry section on the top right displays the selected bank transaction matched with the counterpart entries and includes any remaining debits or credits. In this section, you can validate the reconciliation or mark it as :guilabel:`To Check`. Any :ref:`reconciliation model buttons ` are also available in the resulting entry section." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:63 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:67 msgid "Reconcile transactions" msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:65 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:69 msgid "Transactions can be matched automatically with the use of :doc:`reconciliation models `, or they can be matched with :ref:`existing entries `, :ref:`batch payments `, :ref:`manual operations `, and :ref:`reconciliation model buttons `." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:71 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:75 msgid "Select a transaction among unmatched bank transactions." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:72 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:76 msgid "Define the counterpart. There are several options for defining a counterpart, including :ref:`matching existing entries `, :ref:`manual operations `, :ref:`batch payments `, and :ref:`reconciliation model buttons `." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:76 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:80 msgid "If the resulting entry is not fully balanced, balance it by adding another existing counterpart entry or writing it off with a :ref:`manual operation `." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:78 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:82 msgid "Click the :guilabel:`Validate` button to confirm the reconciliation and move to the next transaction." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:82 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:86 msgid "If you are not sure how to reconcile a particular transaction and would like to deal with it later, use the :guilabel:`To Check` button instead. All transactions marked as :guilabel:`To Check` can be displayed using the :guilabel:`To Check` filter." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:87 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:91 msgid "Bank transactions are posted on the **journal's suspense account** until reconciliation. At this point, reconciliation modifies the transaction journal entry by replacing the bank suspense account with the corresponding receivable, payable, or outstanding account." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:94 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:98 msgid "Match existing entries" msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:96 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:100 msgid "This tab contains matching entries Odoo automatically pre-selects according to the reconciliation models. The entry order is based on :doc:`reconciliation models `, with suggested entries appearing first." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:101 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:105 msgid "The search bar within the :guilabel:`Match Existing Entries` tab allows you to search for specific journal items." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:107 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:111 #: ../../content/applications/finance/accounting/payments/batch.rst:3 #: ../../content/applications/finance/fiscal_localizations/australia.rst:406 msgid "Batch payments" msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:109 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:113 msgid ":doc:`Batch payments <../payments/batch>` allow you to group different payments to ease reconciliation. Use the :guilabel:`Batch Payments` tab to find batch payments for customers and vendors. Similarly to the :guilabel:`Match Existing Entries` tab, the :guilabel:`Batch Payments` tab has a search bar that allows you to search for specific batch payments." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:117 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:121 msgid "Manual operations" msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:119 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:123 msgid "If there is not an existing entry to match the selected transaction, you may instead wish to reconcile the transaction manually by choosing the correct account and amount. Then, complete any of the relevant optional fields." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:124 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:128 msgid "You can use the :guilabel:`fully paid` option to reconcile a payment, even in cases where only a partial payment is received. A new line appears in the resulting entry section to reflect the open balance registered on the Account Receivable by default. You can choose another account by clicking on the new line in the resulting entry section and selecting the :guilabel:`Account` to record the open balance." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:131 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:135 msgid "Lines are silently reconciled unless a write-off entry is required, which launches a reconciliation wizard." msgstr "" @@ -1559,11 +1499,11 @@ msgstr "" msgid "Click on fully paid to manually set an invoice as entirely paid." msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:140 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:144 msgid "Reconciliation model buttons" msgstr "" -#: ../../content/applications/finance/accounting/bank/reconciliation.rst:142 +#: ../../content/applications/finance/accounting/bank/reconciliation.rst:146 msgid "Use a :doc:`reconciliation model ` button for manual operations that are frequently used. These custom buttons allow you to quickly reconcile bank transactions manually and can also be used in combination with existing entries." msgstr "" @@ -1877,6 +1817,7 @@ msgid ":ref:`accounting/invoice/confirmation`" msgstr "" #: ../../content/applications/finance/accounting/customer_invoices.rst:20 +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:52 msgid ":ref:`accounting/invoice/sending`" msgstr "" @@ -2004,7 +1945,9 @@ msgid "To send the invoice to the customer, navigate back to the invoice record msgstr "" #: ../../content/applications/finance/accounting/customer_invoices.rst:111 -msgid "Click :guilabel:`Print & Send`." +#: ../../content/applications/finance/fiscal_localizations/france.rst:148 +#: ../../content/applications/finance/fiscal_localizations/jordan.rst:180 +msgid "Click :guilabel:`Send`." msgstr "" #: ../../content/applications/finance/accounting/customer_invoices.rst:112 @@ -2020,7 +1963,7 @@ msgid "To add a QR code for banking app payments to the invoice, enable the :gui msgstr "" #: ../../content/applications/finance/accounting/customer_invoices.rst:123 -msgid "In the :guilabel:`Print & Send` window:" +msgid "In the :guilabel:`Send` window:" msgstr "" #: ../../content/applications/finance/accounting/customer_invoices.rst:125 @@ -2032,7 +1975,7 @@ msgid "If no preferred :guilabel:`Invoice sending` method was set in the contact msgstr "" #: ../../content/applications/finance/accounting/customer_invoices.rst:130 -msgid "Click :guilabel:`Print & Send` if the :guilabel:`by Email` option is selected, or click :guilabel:`Print`." +msgid "Click :guilabel:`Send` if the :guilabel:`by Email` option is selected, or click :guilabel:`Download`." msgstr "" #: ../../content/applications/finance/accounting/customer_invoices.rst:136 @@ -2040,7 +1983,7 @@ msgid "Sending multiple invoices" msgstr "" #: ../../content/applications/finance/accounting/customer_invoices.rst:138 -msgid "To send and print multiple invoices, go to :menuselection:`Accounting --> Customers --> Invoices`, select them in the :guilabel:`Invoices` list view and click :guilabel:`Print & Send`. The :guilabel:`Print & Send` window displays the selected invoice sending methods based on the preferred method set." +msgid "To send and print multiple invoices, go to :menuselection:`Accounting --> Customers --> Invoices`, select them in the :guilabel:`Invoices` list view and click :guilabel:`Send`. The :guilabel:`Send` window displays the selected invoice sending methods based on the preferred method set." msgstr "" #: ../../content/applications/finance/accounting/customer_invoices.rst:143 @@ -5337,62 +5280,70 @@ msgid "Sending direct mail can be an effective strategy for grabbing people's at msgstr "" #: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:14 -msgid "Go to :menuselection:`Accounting --> Configuration --> Settings --> Customer invoices` section to activate :guilabel:`Snailmail`." +msgid "Go to :menuselection:`Accounting --> Configuration --> Settings` and scroll down to the :guilabel:`Customer Invoices` section to activate :guilabel:`Snailmail`." msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:17 -msgid "To make it a by-default feature, select :guilabel:`Send by Post` in the :guilabel:`Default Sending Options` section." +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:18 +msgid "Set a preferred :ref:`invoice sending ` method in the :guilabel:`Accounting` tab of a contact to use it by default." msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:-1 -msgid "Under settings enable the snailmail feature in Odoo Accounting" +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:22 +msgid "Sending invoices by post" msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:25 -msgid "Send invoices by post" +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:24 +msgid "In the invoice form view, ensure the :guilabel:`Customer` address is correct and has the country set. Click :guilabel:`Send`, select :guilabel:`by Post`, then :guilabel:`Send` the letter." msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:27 -msgid "Open your invoice, click on :guilabel:`Send & Print` and select :guilabel:`Send by Post`. Make sure your customer’s address is set correctly, including the country, before sending the letter." +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:28 +msgid "Documents sent via snailmail must respect the following rules:" +msgstr "" + +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:30 +msgid "The paper format must be **A4**." msgstr "" #: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:31 -msgid "Your document must respect the following rules to pass the validation before being sent:" +msgid "Margins must be at least **5 mm** on all sides. To configure margins, activate the :ref:`developer mode ` and go to :menuselection:`Settings --> Technical --> Paper Format`." msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:33 -msgid "Margins must be **5 mm** on all sides. As Odoo forces the outer margins by filling them with white before sending the snailmail, it can results in the user's custom being cut off if it protrudes into the margins. To check the margins, activate the :ref:`developer mode `, go to :menuselection:`General Settings --> Technical --> Reporting section: Paper Format`." +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:34 +msgid "A square of **15mm by 15mm** on the bottom left corner must remain clear." msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:38 -msgid "A square of **15mm by 15mm** on the bottom left corner has to stay clear." +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:35 +msgid "Odoo fills these areas with white before sending the letter; any overflowing content will be cut." msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:39 -msgid "The postage area has to stay clear (:download:`download the snailmail PDF template ` for more details)." +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:37 +msgid "The **postage area** must remain clear (download the :download:`snailmail PDF template ` for details)." msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:41 -msgid "Pingen (Odoo Snailmail service provider) scans the area to process the address, so if something gets written outside the area, it is not counted as part of the address." +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:39 +msgid "Pingen (Odoo's snailmail service provider) scans the **address area** to obtain the address. Any text outside the address area is not considered part of the address." msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:45 +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:43 #: ../../content/applications/finance/accounting/vendor_bills/invoice_digitization.rst:199 msgid "Pricing" msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:47 -msgid "Snailmail is an :doc:`/applications/essentials/in_app_purchase` service that requires prepaid stamps (=credits) to work. Sending one document consumes one stamp." +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:45 +msgid "Snailmail is an :doc:`/applications/essentials/in_app_purchase` service that requires prepaid stamps (credits) to work. Sending one document consumes one stamp." msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:50 -msgid "To buy stamps, go to :menuselection:`Accounting --> Configuration --> Settings --> Customer invoices: Snailmail`, click on :guilabel:`Buy credits`, or go to :menuselection:`Settings --> In-App Purchases: Odoo IAP`, and click on :guilabel:`View my Services`." +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:48 +msgid "To buy stamps, go to :menuselection:`Accounting --> Configuration --> Settings`, scroll down to the :guilabel:`Snailmail` section, and click :guilabel:`Buy credits`." msgstr "" -#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:55 +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:53 msgid "`Odoo's IAP Privacy Policy `_" msgstr "" +#: ../../content/applications/finance/accounting/customer_invoices/snailmail.rst:54 +msgid "`Pingen's layout requirements `_" +msgstr "" + #: ../../content/applications/finance/accounting/customer_invoices/terms_conditions.rst:3 msgid "Default terms and conditions (T&C)" msgstr "" @@ -9138,47 +9089,47 @@ msgstr "" msgid "Once the payments are processed by your bank, you can directly import the account statement in Odoo. The bank reconciliation process will seamlessly match the SEPA orders you sent to your bank with actual bank statements." msgstr "" -#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:49 +#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:51 msgid "Activate SEPA Credit Transfer (SCT)" msgstr "" -#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:51 +#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:53 msgid "To pay suppliers with SEPA, you must activate the **SEPA Credit Transfer** setting. To do so, go to :menuselection:`Accounting --> Configuration --> Settings --> Vendor Payments: SEPA Credit Transfer (SCT)`. By activating the setting and filling out your company data, you will be able to use the SCT option when paying your vendor." msgstr "" -#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:57 +#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:59 msgid "According to the localization package installed, the **SEPA Direct Debit** and **SEPA Credit Transfer** modules may be installed by default. If not, they need to be :ref:`installed `." msgstr "" -#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:61 +#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:65 msgid "Activate SEPA payment methods on banks" msgstr "" -#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:63 +#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:67 msgid "From the accounting dashboard, click on the drop-down menu (:guilabel:`⋮`) on your bank journal and select :guilabel:`Configuration`. Click the :guilabel:`Outgoing Payments` tab, and, if not already present, add :guilabel:`SEPA Credit Transfer` under :guilabel:`Payment Method`." msgstr "" -#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:67 +#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:71 msgid "Make sure to specify the IBAN account number (domestic account numbers do not work with SEPA) and the BIC (bank identifier code) in the :guilabel:`Journal Entries` tab." msgstr "" -#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:71 +#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:77 msgid "Registering payments" msgstr "" -#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:73 +#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:79 msgid "You can register any vendor payments made with SEPA. To do so, go to :menuselection:`Accounting --> Vendors --> Payments`. When creating your payment, select :guilabel:`SEPA Credit Transfer` as the :guilabel:`Payment Method`." msgstr "" -#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:77 +#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:83 msgid "The first time you pay a vendor with SEPA, you have to fill in the :guilabel:`Recipient Bank Account` field with the bank name, IBAN, and BIC (Bank Identifier Code). Odoo automatically verifies if the IBAN format is respected." msgstr "" -#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:81 +#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:87 msgid "For future payments to this vendor, Odoo will automatically suggest you the bank account, but it remains possible to select a new one." msgstr "" -#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:84 +#: ../../content/applications/finance/accounting/payments/pay_sepa.rst:90 msgid "Once your payment is registered, do not forget to confirm it. You can also pay vendor bills from the bill directly using the :guilabel:`Register Payment` button at the top of a vendor bill. The form is the same, but the payment is directly linked to the bill and will be automatically reconciled with it." msgstr "" @@ -14256,230 +14207,285 @@ msgstr "" msgid "Expenses" msgstr "" -#: ../../content/applications/finance/expenses.rst:7 -msgid "Odoo **Expenses** streamlines the management of expenses. After an employee submits their expenses in Odoo, they are reviewed by management and accounting teams. Once approved, payments can then be processed, and disbursed back to the employee for reimbursement." +#: ../../content/applications/finance/expenses/approve_expenses.rst:3 +msgid "Approve expenses" msgstr "" -#: ../../content/applications/finance/expenses.rst:12 -msgid "`Odoo Expenses: product page `_" +#: ../../content/applications/finance/expenses/approve_expenses.rst:5 +msgid "In Odoo, most users cannot approve expense reports; only users with the necessary access rights or permissions can. This means that a user **must** have at least *Team Approver* rights for the **Expenses** app. Employees with the necessary rights can review expense reports, approve or refuse them, and provide feedback with an integrated :ref:`Refuse Expense ` communication tool." msgstr "" -#: ../../content/applications/finance/expenses.rst:15 -msgid "Set expense categories" +#: ../../content/applications/finance/expenses/approve_expenses.rst:11 +msgid "Please refer to the :doc:`access rights documentation ` to learn more about managing users and their access rights." msgstr "" -#: ../../content/applications/finance/expenses.rst:17 -msgid "The first step to track expenses is to configure the different types of expenses for the company (managed as *expense categories* in Odoo). Each category can be as specific or generalized as needed. Go to :menuselection:`Expenses app --> Configuration --> Expense Categories` to view the current expensable categories in a default list view." +#: ../../content/applications/finance/expenses/approve_expenses.rst:15 +msgid "View expense reports" msgstr "" -#: ../../content/applications/finance/expenses.rst:-1 -#: ../../content/applications/finance/expenses.rst:-1 -msgid "Set expense costs on products." +#: ../../content/applications/finance/expenses/approve_expenses.rst:17 +msgid "Users who are able to approve expense reports (typically managers) have an :guilabel:`Expense Reports` main navigation button at the top of the **Expenses** app. This allows managers to view all expense reports they have access rights for. Navigate to :menuselection:`Expenses app --> Expense Reports`, to view the :guilabel:`All Reports` dashboard." msgstr "" -#: ../../content/applications/finance/expenses.rst:26 -msgid "To create a new expense category, click :guilabel:`New`. A product form will appear, with the description field labeled :guilabel:`Product Name`." +#: ../../content/applications/finance/expenses/approve_expenses.rst:22 +msgid "A list of all expense reports with a status of either :guilabel:`To Submit`, :guilabel:`Submitted`, :guilabel:`Approved`, :guilabel:`Posted`, or :guilabel:`Done` appears. Expense reports with a status of :guilabel:`Refused` are hidden, by default." msgstr "" -#: ../../content/applications/finance/expenses.rst:30 -msgid "Expense categories are managed like products in Odoo. The expense category form follows the standard product form in Odoo, and the information entered is similar. Expense products will be referred to as expense categories throughout this document since the main menu refers to these as :guilabel:`Expense Categories`." +#: ../../content/applications/finance/expenses/approve_expenses.rst:-1 +msgid "Reports to validate are found on the Reports to Approve page." msgstr "" -#: ../../content/applications/finance/expenses.rst:35 -msgid "Only two fields are required, the :guilabel:`Product Name` and the :guilabel:`Unit of Measure`. Enter the :guilabel:`Product Name` in the field, and select the :guilabel:`Unit of Measure` from the drop-down menu (most products will be set to :guilabel:`Units`)." +#: ../../content/applications/finance/expenses/approve_expenses.rst:30 +msgid "Approve expense reports" msgstr "" -#: ../../content/applications/finance/expenses.rst:40 -msgid "The *Sales* app is where specification on the units of measure are created and edited (e.g. units, miles, nights, etc.). Go to :menuselection:`Sales app --> Configuration --> Settings` and ensure `Units of Measure` is enabled in the `Product Catalog` section. Click on the :guilabel:`Units of Measure` internal link to :doc:`view, create, and edit the units of measure <../inventory_and_mrp/inventory/product_management/configure/uom>`." +#: ../../content/applications/finance/expenses/approve_expenses.rst:32 +msgid "Expense reports can be approved in two ways: :ref:`individually ` or :ref:`in bulk `." msgstr "" -#: ../../content/applications/finance/expenses.rst:50 -msgid "The :guilabel:`Cost` field on the product form is populated with a value of `0.00` by default. When a specific expense should always be reimbursed for a particular price, enter that amount in the :guilabel:`Cost` field. Otherwise, leave the :guilabel:`Cost` set to `0.00`, and employees will report the actual cost when submitting an expense report." +#: ../../content/applications/finance/expenses/approve_expenses.rst:36 +msgid "Only reports with a status of :guilabel:`Submitted` can be approved." msgstr "" -#: ../../content/applications/finance/expenses.rst:56 -msgid "The :guilabel:`Cost` field is always visible on the expense category form, but the :guilabel:`Sales Price` field is *only* visible if the :guilabel:`Sales Price` is selected under the :guilabel:`Re-Invoice Expenses` section. Otherwise, the :guilabel:`Sales Price` field is hidden." +#: ../../content/applications/finance/expenses/approve_expenses.rst:38 +msgid "It is recommended to display only :guilabel:`Submitted` reports by ticking the checkbox beside the :guilabel:`Submitted` filter, in the left column, under the :guilabel:`Status` section." msgstr "" -#: ../../content/applications/finance/expenses.rst:62 -msgid "Here are some examples for when to set a specific :guilabel:`Cost` on a product vs. leaving the :guilabel:`Cost` at `0.00`:" +#: ../../content/applications/finance/expenses/approve_expenses.rst:41 +msgid "If a report is **not** able to be approved, the :guilabel:`Approve Report` button **does not** appear on the :guilabel:`All Reports` page." msgstr "" -#: ../../content/applications/finance/expenses.rst:65 -msgid "**Meals**: set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal, they enter the actual amount of the bill and will be reimbursed for that amount. An expense for a meal costing $95.23 would equal a reimbursement for $95.23." +#: ../../content/applications/finance/expenses/approve_expenses.rst:47 +msgid "Approve individual reports" msgstr "" -#: ../../content/applications/finance/expenses.rst:68 -msgid "**Mileage**: set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for \"mileage\", they enter the number of miles driven in the :guilabel:`Quantity` field, and are reimbursed 0.30 per mile they entered. An expense for 100 miles would equal a reimbursement for $30.00." +#: ../../content/applications/finance/expenses/approve_expenses.rst:49 +msgid "To approve an individual report, navigate to :menuselection:`Expenses app --> Expense Reports`, and click on an individual report to view the detailed report form." msgstr "" -#: ../../content/applications/finance/expenses.rst:72 -msgid "**Monthly Parking**: set the :guilabel:`Cost` to `75.00`. When an employee logs an expense for \"monthly parking\", the reimbursement would be for $75.00." +#: ../../content/applications/finance/expenses/approve_expenses.rst:52 +msgid "From here, several options are presented: :guilabel:`Approve`, :guilabel:`Refuse`, and :guilabel:`Reset to draft`. Click :guilabel:`Approve` to approve the report." msgstr "" -#: ../../content/applications/finance/expenses.rst:74 -msgid "**Expenses**: set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not a meal, mileage, or monthly parking, they use the generic :guilabel:`Expenses` product. An expense for a laptop costing $350.00 would be logged as an :guilabel:`Expenses` product, and the reimbursement would be for $350.00." +#: ../../content/applications/finance/expenses/approve_expenses.rst:0 +msgid "An individual expense report that can be approved or refused." msgstr "" -#: ../../content/applications/finance/expenses.rst:79 -msgid "Select an :guilabel:`Expense Account` if using the Odoo *Accounting* app. It is recommended to check with the accounting department to determine the correct account to reference in this field as it will affect reports." +#: ../../content/applications/finance/expenses/approve_expenses.rst:61 +msgid "Approve multiple reports" msgstr "" -#: ../../content/applications/finance/expenses.rst:83 -msgid "Set a tax on each product in the :guilabel:`Vendor Taxes` and :guilabel:`Customer Taxes` fields, if applicable. It is considered good practice to use a tax that is configured with :ref:`Tax Included in Price `. Taxes will be automatically configured if this is set." +#: ../../content/applications/finance/expenses/approve_expenses.rst:63 +msgid "To approve multiple expense reports at once, first navigate to :menuselection:`Expenses app --> Expense Reports` to view a list of expense reports. Next, select the reports to approve by ticking the checkbox next to each report being approved, or tick the checkbox next to the :guilabel:`Employee` column title to select all the reports in the list." msgstr "" -#: ../../content/applications/finance/expenses.rst:88 -msgid ":doc:`expenses/log_expenses`" +#: ../../content/applications/finance/expenses/approve_expenses.rst:68 +msgid "Next, click the :guilabel:`Approve Report` button." msgstr "" -#: ../../content/applications/finance/expenses.rst:89 -msgid ":doc:`expenses/expense_reports`" +#: ../../content/applications/finance/expenses/approve_expenses.rst:0 +msgid "Select multiple expense reports at once." msgstr "" -#: ../../content/applications/finance/expenses.rst:90 -msgid ":doc:`expenses/approve_expenses`" +#: ../../content/applications/finance/expenses/approve_expenses.rst:74 +msgid "Team managers can view all the expense reports for their team members only. While on the :guilabel:`All Reports` page, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` to the right of the search bar, then click :guilabel:`My Team` in the :icon:`fa-filter` :guilabel:`Filters` section. This presents all the reports for only the manager's team." msgstr "" -#: ../../content/applications/finance/expenses.rst:91 -msgid ":doc:`expenses/post_expenses`" +#: ../../content/applications/finance/expenses/approve_expenses.rst:82 +msgid "Refuse expense reports" msgstr "" -#: ../../content/applications/finance/expenses.rst:92 -msgid ":doc:`expenses/reimburse`" +#: ../../content/applications/finance/expenses/approve_expenses.rst:84 +msgid "Expense reports can **only** be refused on the individual expense report, and **not** from the :guilabel:`All Reports` dashboard. To open an individual expense report, navigate to :menuselection:`Expenses app --> Expense Reports`, then click on an individual expense report to view the detailed expense report form." msgstr "" -#: ../../content/applications/finance/expenses.rst:93 -msgid ":doc:`expenses/reinvoice_expenses`" +#: ../../content/applications/finance/expenses/approve_expenses.rst:89 +msgid "If more information is needed, such as a missing receipt, communicate any necessary information requests in the *chatter* of the report form. On the individual expense report, click either :guilabel:`Send message` or :guilabel:`Log note` to open a message text box." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:3 -msgid "Approve expenses" +#: ../../content/applications/finance/expenses/approve_expenses.rst:93 +msgid "Type in a message, tagging the proper people, and post it to the *chatter* by clicking :guilabel:`Send` or :guilabel:`Log`, depending on the method of communication. The message is posted in the chatter, and the tagged people are notified via email." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:5 -msgid "In Odoo, not just anyone can approve expense reports, only users with the necessary rights (or permissions) can. This means that a user **must** have at least *Team Approver* rights for the *Expenses* app. Employees with the necessary rights can review expense reports, approve or reject them, and provide feedback thanks to the integrated communication tool." +#: ../../content/applications/finance/expenses/approve_expenses.rst:98 +msgid "The only people that can be tagged in a message are *followers* of the specific report. To see who is a follower, click the :icon:`fa-user-o` :guilabel:`(Show Followers)` icon to display the followers of the expense report." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:10 -msgid "Please refer to the :doc:`access rights documentation ` to learn more about managing users and their access rights." +#: ../../content/applications/finance/expenses/approve_expenses.rst:0 +#: ../../content/applications/finance/expenses/approve_expenses.rst:-1 +msgid "Send messages in the chatter." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:14 -msgid "View expense reports" +#: ../../content/applications/finance/expenses/approve_expenses.rst:105 +msgid "To refuse an expense report, click :guilabel:`Refuse`, and a :guilabel:`Refuse Expense` pop-up window loads. Enter a brief explanation for the refusal on the :guilabel:`Reason` line, then click :guilabel:`Refuse`." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:16 -msgid "Users who are able to approve expense reports, typically managers, can easily view all expense reports they have access rights to. Go to :menuselection:`Expenses app --> Expense Reports`, to view the :guilabel:`All Reports` dashboard." +#: ../../content/applications/finance/expenses/approve_expenses.rst:112 +msgid "Once the expense report is refused, the status changes to :guilabel:`Refused`, and the only button that appears is :guilabel:`Reset to Draft`." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:20 -msgid "A list of all expense reports with a status of either :guilabel:`To Submit`, :guilabel:`Submitted`, :guilabel:`Approved`, :guilabel:`Posted`, or :guilabel:`Done` appears. Expense reports with a status of :guilabel:`Refused` are hidden, by default." +#: ../../content/applications/finance/expenses/expense_categories.rst:3 +msgid "Expense categories" msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:-1 -msgid "Reports to validate are found on the Reports to Approve page." +#: ../../content/applications/finance/expenses/expense_categories.rst:5 +msgid "Odoo **Expenses** streamlines the management of expenses. After an employee :doc:`logs their expenses <../expenses/log_expenses>` and :doc:`submits their expense report <../expenses/expense_reports>` in Odoo, expenses are reviewed by management and accounting teams. Once :doc:`approved <../expenses/approve_expenses>`, payments can be processed and :doc:`disbursed back to the employee <../expenses/reimburse>` for reimbursement." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:29 -msgid "Approve expense reports" +#: ../../content/applications/finance/expenses/expense_categories.rst:12 +msgid "`Odoo Expenses: product page `_" msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:31 -msgid "Expense reports can be approved in two ways: :ref:`individually ` or :ref:`in bulk `." +#: ../../content/applications/finance/expenses/expense_categories.rst:15 +msgid "View expense categories" msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:35 -msgid "Only reports with a status of :guilabel:`Submitted` can be approved." +#: ../../content/applications/finance/expenses/expense_categories.rst:17 +msgid "The first step to track expenses is configuring the different types of expenses for the company (managed as *expense categories* in Odoo). Each category can be as specific or generalized as needed. Additionally, expense categories can be configured to repay expenses at either a set price or allow for specific prices to be reported." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:37 -msgid "It is recommended to display only :guilabel:`Submitted` reports by ticking the checkbox beside the :guilabel:`Submitted` filter, in the left column, under the :guilabel:`Status` section." +#: ../../content/applications/finance/expenses/expense_categories.rst:22 +msgid "To view the default expense categories, navigate to :menuselection:`Expenses app --> Configuration --> Expense Categories`." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:40 -msgid "If a report is **not** able to be approved, the :guilabel:`Approve Report` button **does not** appear on the :guilabel:`All Reports` page." +#: ../../content/applications/finance/expenses/expense_categories.rst:25 +msgid "The default expense categories allow creating expenses for common expenses, including communication costs, meals, gifts, miles driven, and other travel expenses. For expenses outside these default categories, the general expenses category, :guilabel:`EXP_GEN`, is used. If a company has specific expenses it commonly reimburses, and wants to track them separately, :ref:`new expense categories can be made ` or existing expense categories can be modified." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:46 -msgid "Approve individual reports" +#: ../../content/applications/finance/expenses/expense_categories.rst:-1 +msgid "Set expense costs on products." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:48 -msgid "To approve an individual report, navigate to :menuselection:`Expenses app --> Expense Reports`, and click on an individual report to view the report form." +#: ../../content/applications/finance/expenses/expense_categories.rst:37 +msgid "Create new expense categories" msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:51 -msgid "From here, several options are presented: :guilabel:`Approve`, :guilabel:`Refuse`, and :guilabel:`Reset to draft`." +#: ../../content/applications/finance/expenses/expense_categories.rst:39 +msgid "Some companies require more expense categories than the **Expenses** app includes. For these situations, new expense categories can be created." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:54 -msgid "Click :guilabel:`Approve` to approve the report." +#: ../../content/applications/finance/expenses/expense_categories.rst:43 +msgid "A company that trains car mechanics allows its technicians to purchase $500 worth of tools in a year. In this situation, the company creates a new category called `TOOLS` to track all tool expenses." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:59 -msgid "Approve multiple reports" +#: ../../content/applications/finance/expenses/expense_categories.rst:47 +msgid "To create a new expense category, navigate to :menuselection:`Expenses app --> Configuration --> Expense Categories`. Click :guilabel:`New`, and a new expense category form loads." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:61 -msgid "To approve multiple expense reports at once, first navigate to :menuselection:`Expenses app --> Expense Reports` to view a list of expense reports. Next, select the reports to approve by ticking the checkbox next to each report being approved, or tick the checkbox next to the :guilabel:`Employee` column title to select all the reports in the list." +#: ../../content/applications/finance/expenses/expense_categories.rst:51 +msgid "Expense *categories* are managed like *products* in Odoo. The expense category form follows the standard product form in Odoo, and the information entered is similar. Expense *products* are referred to as expense *categories* throughout this document since the main menu refers to these as :guilabel:`Expense Categories`." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:66 -msgid "Next, click the :guilabel:`Approve Report` button." +#: ../../content/applications/finance/expenses/expense_categories.rst:56 +msgid "Enter the following fields on the form:" msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:-1 -msgid "Approve multiple reports by clicking the checkboxes next to each report." +#: ../../content/applications/finance/expenses/expense_categories.rst:58 +msgid ":guilabel:`Product Name`: Enter a name for the category that is short and informative." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:73 -msgid "It is possible for team managers to view all the expense reports for just their team members." +#: ../../content/applications/finance/expenses/expense_categories.rst:59 +msgid ":guilabel:`Cost`: If employees can report the actual cost of an expense, and are reimbursed the reported amount, leave the field set to `0.00`. If the expense should **always** be reimbursed for a specific price, enter the amount in this field. If a price is entered, a :guilabel:`per` field appears with :guilabel:`Unit` populated by default. :guilabel:`Unit` covers most expense situations, but if the reimbursement is based on weight, length, volume, etc., choose the corresponding type of unit using the drop-down menu." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:75 -msgid "To do so, while on the :guilabel:`All Reports` page, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` to the right of the search bar, then click :guilabel:`My Team` in the :icon:`fa-filter` :guilabel:`Filters` section." +#: ../../content/applications/finance/expenses/expense_categories.rst:67 +msgid "Here are some examples for when to set a specific :guilabel:`Cost` on a product vs. leaving the :guilabel:`Cost` at `0.00`:" msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:79 -msgid "This presents all the reports for only the manager's team." +#: ../../content/applications/finance/expenses/expense_categories.rst:70 +msgid "**Meals**: If employees are reimbursed for their full meal cost, set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal, they enter the actual amount of the bill and are reimbursed for that amount. An expense for a meal costing $95.23 would equal a reimbursement of $95.23." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:0 -msgid "Select the My Team filter." +#: ../../content/applications/finance/expenses/expense_categories.rst:74 +msgid "**Mileage**: If employees receive a flat rate for each mile they drive, set the :guilabel:`Cost` to `1.00`. When an employee logs an expense for the miles driven, they enter the number of miles driven in the :guilabel:`Quantity` field, and are reimbursed $1.00 per mile they reported. An expense for 100 miles would equal a reimbursement of $100.00." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:86 -msgid "Refuse expense reports" +#: ../../content/applications/finance/expenses/expense_categories.rst:78 +msgid "**Per Diem**: If employees receive a daily flat rate of $125.00 when traveling, set the :guilabel:`Cost` to `125.00`. An expense for three days of per diem costs (meals, incidentals, taxi fare, etc.) would equal a reimbursement of $375.00." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:88 -msgid "Expense reports can **only** be refused on the individual expense report, and **not** from the :guilabel:`All Reports` dashboard. To open an individual expense report, navigate to :menuselection:`Expenses app --> Expense Reports`, then click on an individual expense report to view the report form." +#: ../../content/applications/finance/expenses/expense_categories.rst:83 +msgid "The :guilabel:`Cost` field is always visible on the expense category form, but the :guilabel:`Sales Price` field is *only* visible if the :guilabel:`Sales Price` is selected under the :guilabel:`Re-Invoice Expenses` section. Otherwise, the :guilabel:`Sales Price` field is hidden." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:93 -msgid "If more information is needed, such as a missing receipt, communicate any necessary information requests in the *chatter* of the report form. On the individual expense report, click :guilabel:`Send message` to open a message text box." +#: ../../content/applications/finance/expenses/expense_categories.rst:88 +msgid ":guilabel:`Reference`: Enter a short reference for the expense, such as `FOOD` or `TRAVEL`. This reference is used when :ref:`emailing expenses `." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:97 -msgid "Type in a message, tagging the proper people, and post it to the *chatter* by clicking :guilabel:`Send`. The message is posted in the chatter, and the tagged people are notified, via email." +#: ../../content/applications/finance/expenses/expense_categories.rst:90 +msgid ":guilabel:`Category`: Using the drop-down menu, select the category the expense falls under. It is recommended to use the default category `All / Expenses`, but another category can be selected if the accounting department requires it." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:102 -msgid "The only people that can be tagged in a message are *followers* of the specific report. To see who is a follower, click the :icon:`fa-user-o` :guilabel:`(user)` icon to display the followers of the expense report." +#: ../../content/applications/finance/expenses/expense_categories.rst:93 +msgid ":guilabel:`Company`: If in a multi-company database, select the company the expense category applies to. If the expense category applies to *all* companies, leave this field blank." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:0 -#: ../../content/applications/finance/expenses/approve_expenses.rst:-1 -msgid "Send messages in the chatter." +#: ../../content/applications/finance/expenses/expense_categories.rst:95 +msgid ":guilabel:`Guideline`: Enter some rules or important information for the expense category. This is visible in the :guilabel:`Note` column on the :guilabel:`Expense Category` dashboard." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:99 +msgid "An expense category for expenses related to working from home may have a :guilabel:`Name` of `WFH`, and the :guilabel:`Guideline` may say `Monitors, Chairs, & Other Home Working Costs`." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:102 +msgid ":guilabel:`Expense Account`: If using the Odoo **Accounting** app, select the :abbr:`CoA (Chart of Accounts)` the expense should be logged on." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:106 +msgid "Check with the accounting department to determine the correct account to reference in this field as it affects various reports." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:109 +msgid ":guilabel:`Purchase Taxes` and :guilabel:`Sales Taxes`: Enter the default taxes that are applied when purchasing or selling this product, if applicable." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:113 +msgid "The :guilabel:`Sales Taxes` field is **only** visible if the **Sales** app is installed, and either the :guilabel:`At cost` or :guilabel:`Sales Price` options are selected in the :ref:`invoicing section `." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:118 +msgid "It is considered good practice to use a tax that is configured with :ref:`Tax Included in Price `. Taxes are automatically configured if these are set." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:-1 +msgid "A new expense category for tools." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:127 +msgid "Invoicing section" +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:129 +msgid "If the **Sales** app is installed, an invoicing section is visible. This section allows the expense to be reinvoiced to customers on sales orders." msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:110 -msgid "To refuse an expense report, click :guilabel:`Refuse`, and a :guilabel:`Refuse Expense` pop-up window appears. Enter a brief explanation for the refusal beneath the :guilabel:`REASON TO REFUSE EXPENSE` field, then click :guilabel:`Refuse`." +#: ../../content/applications/finance/expenses/expense_categories.rst:132 +msgid "If the expense **cannot** be reinvoiced, enable the :guilabel:`No` option. If the expense category **can** be reinvoiced, enable either of these options:" msgstr "" -#: ../../content/applications/finance/expenses/approve_expenses.rst:118 -msgid "Once the expense report is refused, the status changes to :guilabel:`Refused`, and the only button that appears in the top-left is :guilabel:`Reset to Draft`." +#: ../../content/applications/finance/expenses/expense_categories.rst:135 +msgid ":guilabel:`At cost`: Select this option to have the expense item reinvoiced at the price set in the :guilabel:`Cost` field." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:137 +msgid ":guilabel:`Sales Price`: Select this option to have the expense item reinvoiced at the sales price. When enabled, a :guilabel:`Sales Price` field appears beneath the :guilabel:`Product Name` field. Enter the sales price in the new field." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:142 +msgid "A heating and cooling company offers at-home repairs on the furnaces and central air units it sells. Their technicians are sub-contracted, and use their own vans, tools, and parts." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:145 +msgid "As part of their contracts, technicians are reimbursed for their travel. They receive $1.00 for every mile they drive. Additionally, the customer must pay for the travel as part of their service contract. The customer pays $1.50 for every mile the technician drives to their location." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:149 +msgid "To configure this expense, the :guilabel:`Sales Price` is set to `1.50` and the :guilabel:`Cost` is set to `1.00`." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_categories.rst:0 +msgid "An expense category to reinvoice customers and pay technicians." msgstr "" #: ../../content/applications/finance/expenses/expense_reports.rst:3 @@ -14487,11 +14493,11 @@ msgid "Expense reports" msgstr "" #: ../../content/applications/finance/expenses/expense_reports.rst:5 -msgid "When expenses are ready to submit (such as, at the end of a business trip, or once a month), an *expense report* needs to be created. Open the main :menuselection:`Expenses app` dashboard, which displays the :guilabel:`My Expenses` dashboard, by default. Alternatively, navigate to :menuselection:`Expenses app --> My Expenses --> My Expenses`." +msgid "When expenses are ready to submit (such as at the end of a business trip, or once a month), an *expense report* needs to be created. Open the main **Expenses** app dashboard, which displays the :guilabel:`My Expenses` dashboard, by default. Alternatively, navigate to :menuselection:`Expenses app --> My Expenses --> My Expenses`." msgstr "" #: ../../content/applications/finance/expenses/expense_reports.rst:10 -msgid "Expenses are color-coded by status. Any expense with a status of :guilabel:`To Report` (expenses that still need to be added to an expense report) is shown in blue text. All other statuses (:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black." +msgid "All expenses are color-coded by status. Any expense with a status of :guilabel:`To Report` (expenses that still need to be added to an expense report) appears in blue text. For all other statuses (:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black." msgstr "" #: ../../content/applications/finance/expenses/expense_reports.rst:17 @@ -14499,131 +14505,184 @@ msgid "Create expense reports" msgstr "" #: ../../content/applications/finance/expenses/expense_reports.rst:19 -msgid "First, select each desired expense to be added to the report on the :guilabel:`My Expenses` dashboard, by ticking the checkbox next to each entry, or quickly select all the expenses in the list by ticking the checkbox next to the :guilabel:`Expense Date` column title, if needed." -msgstr "" - -#: ../../content/applications/finance/expenses/expense_reports.rst:23 -msgid "Another way to quickly add all expenses that are not on a expense report, is to click the :guilabel:`Create Report` button, *without* selecting any expenses, and Odoo automatically selects all expenses with a status of :guilabel:`To Submit` that are not already on a report." +msgid "First, select the desired expense to be added to the report on the :guilabel:`My Expenses` dashboard by ticking the checkbox next to each entry." msgstr "" #: ../../content/applications/finance/expenses/expense_reports.rst:-1 msgid "Select the expenses to submit, then create the report." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:32 +#: ../../content/applications/finance/expenses/expense_reports.rst:26 msgid "Any expense can be selected from the :guilabel:`My Expenses` list, except for expenses with a status of :guilabel:`Approved`." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:35 +#: ../../content/applications/finance/expenses/expense_reports.rst:29 msgid "The :guilabel:`Create Report` button is visible as long as there is a minimum of one expense on the list with a status of either :guilabel:`To Report` or :guilabel:`To Submit`." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:38 -msgid "When the :guilabel:`Create Report` button is clicked, all expenses with a status of :guilabel:`To Submit` that are *not* currently on another expense report appears in the newly-created expense report." +#: ../../content/applications/finance/expenses/expense_reports.rst:32 +msgid "When the :guilabel:`Create Report` button is clicked, all expenses with a status of :guilabel:`To Submit` that are *not* currently on another expense report appear in the newly-created expense report." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:42 +#: ../../content/applications/finance/expenses/expense_reports.rst:36 msgid "If all expenses on the :guilabel:`My Expenses` report are already associated with another expense report, an :guilabel:`Invalid Operation` pop-up window appears, stating :guilabel:`You have no expenses to report.`" msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:46 -msgid "Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report appears with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached to an individual expense, a :icon:`fa-paperclip` :guilabel:`(paperclip)` icon appears between the :guilabel:`Customer to Reinvoice` and :guilabel:`Analytic Distribution` columns." +#: ../../content/applications/finance/expenses/expense_reports.rst:40 +msgid "Once the expenses have been selected, click the :guilabel:`Create Report` button." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_reports.rst:43 +msgid "Another way to add *all* expenses that are not currently on an expense report is to click the :guilabel:`Create Report` button, *without* selecting any expenses, and Odoo automatically selects all expenses with a status of :guilabel:`To Submit` that are not already on a report." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_reports.rst:47 +msgid "The new report loads with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached to an individual expense, a :icon:`fa-paperclip` :guilabel:`(paperclip)` icon appears on the expense line." msgstr "" #: ../../content/applications/finance/expenses/expense_reports.rst:51 -msgid "When the report is created, the date range for the expenses appears in the :guilabel:`Expense Report Summary` field, by default. It is recommended to edit this field with a short summary for each report to help keep expenses organized. Enter a description for the expense report, such as `Client Trip NYC`, or `Office Supplies for Presentation`, in the :guilabel:`Expense Report Summary` field." +msgid "When the report is created, the date range for the expenses appears as the :guilabel:`Expense Report Summary`, by default. It is recommended to edit this field with a brief summary for each report to help keep expenses organized. Enter a description for the expense report, such as `Client Trip NYC`, or `Office Supplies for Presentation`, in the :guilabel:`Expense Report Summary` field." msgstr "" #: ../../content/applications/finance/expenses/expense_reports.rst:56 -msgid "The :guilabel:`Employee`, :guilabel:`Paid By`, and :guilabel:`Company` fields autopoulate with the information listed on the individual expenses." +msgid "The :guilabel:`Employee`, :guilabel:`Paid By`, and :guilabel:`Company` fields are populated with the information listed on the individual expenses." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_reports.rst:60 +msgid "The :guilabel:`Company` field only appears in a multi-company database." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:59 -msgid "Next, select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report. If needed, update the :guilabel:`Journal` field, using the drop-down menu." +#: ../../content/applications/finance/expenses/expense_reports.rst:62 +msgid "Next, select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report. If needed, update the :guilabel:`Journal` field using the drop-down menu." msgstr "" #: ../../content/applications/finance/expenses/expense_reports.rst:-1 msgid "Enter a short description and select a manager for the report." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:66 +#: ../../content/applications/finance/expenses/expense_reports.rst:68 msgid "If some expenses are missing from the report, they can still be added from this report form. To do so, click :guilabel:`Add a line` at the bottom of the :guilabel:`Expense` tab." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:69 -msgid "An :guilabel:`Add: Expense Lines` pop-up window appears, displaying all the available expenses (with a :guilabel:`To Submit` status) that can be added to the report." +#: ../../content/applications/finance/expenses/expense_reports.rst:71 +msgid "An :guilabel:`Add: Expense Lines` pop-up window appears, displaying all the available expenses (with a :guilabel:`To Submit` status) that can be added to the report. If a new expense needs to be added that does **not** appear on the list, click :guilabel:`New` to :doc:`create a new expense <../expenses/log_expenses>` and add it to the report." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_reports.rst:76 +msgid "Tick the checkbox next to each expense being added, then click :guilabel:`Select`. Doing so closes the pop-up window, and the items now appear on the report." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_reports.rst:80 +msgid "Expense reports can be created in one of two ways:" +msgstr "" + +#: ../../content/applications/finance/expenses/expense_reports.rst:82 +msgid "Navigate to the main :menuselection:`Expenses app` dashboard (also accessible, via :menuselection:`Expenses app --> My Expenses --> My Expenses`) and click :guilabel:`Create Report`." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:72 -msgid "If a new expense needs to be added that does **not** appear on the list, click :guilabel:`New` to :doc:`create a new expense <../expenses/log_expenses>` and add it to the report." +#: ../../content/applications/finance/expenses/expense_reports.rst:85 +msgid "Navigate to :menuselection:`Expenses app --> My Expenses --> My Reports` and click :guilabel:`New`." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:75 -msgid "Tick the checkbox next to each expense being added, then click :guilabel:`Select`." +#: ../../content/applications/finance/expenses/expense_reports.rst:91 +msgid "Submit expense reports" msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:77 -msgid "Doing so removes the pop-up window, and the items now appear on the report." +#: ../../content/applications/finance/expenses/expense_reports.rst:93 +msgid "When an expense report is completed, the next step is to submit the report to a manager for approval. To view all expense reports, navigate to :menuselection:`Expenses app --> My Expenses --> My Reports`. Open the specific report from the list of expense reports." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_reports.rst:98 +msgid "Reports must be individually submitted, and **cannot** be submitted in batches." +msgstr "" + +#: ../../content/applications/finance/expenses/expense_reports.rst:100 +msgid "If the list is large, grouping the results by status may be helpful, since only reports with a :guilabel:`To Submit` status need to be submitted; reports with an :guilabel:`Approved` or :guilabel:`Submitted` status do not. The :guilabel:`To Submit` expenses are identifiable by the :guilabel:`To Submit` status, and by the blue text, while all other expense text appears in black." msgstr "" #: ../../content/applications/finance/expenses/expense_reports.rst:-1 -msgid "Add more expenses to the report before submitting." +msgid "Submit the report to the manager." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:84 -msgid "Expense reports can be created in one of three places:" +#: ../../content/applications/finance/expenses/expense_reports.rst:108 +msgid "Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report, the next step is for management to review and :doc:`approve it `." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:86 -msgid "Navigate to the main :menuselection:`Expenses app` dashboard (also accessible, via :menuselection:`Expenses app --> My Expenses --> My Expenses`)" +#: ../../content/applications/finance/expenses/expense_reports.rst:112 +msgid "The status of each report is shown in the :guilabel:`Status` column. If the :guilabel:`Status` column is not visible, click the :icon:`oi-settings-adjust` :guilabel:`(additional options)` icon at the end of the row, and tick the checkbox beside :guilabel:`Status` from the resulting drop-down menu." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:88 -msgid "Navigate to :menuselection:`Expenses app --> My Expenses --> My Reports`" +#: ../../content/applications/finance/expenses/expense_reports.rst:118 +msgid ":doc:`Approving <../expenses/approve_expenses>` expenses, :doc:`posting <../expenses/post_expenses>` expenses, and :doc:`reimbursing <../expenses/reimburse>` expenses are **only** for users with the appropriate :doc:`access rights `." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:89 -msgid "Navigate to :menuselection:`Expenses app --> Expense Reports`" +#: ../../content/applications/finance/expenses/expenses_analysis.rst:3 +msgid "Expenses analysis" msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:91 -msgid "In any of these views, click :guilabel:`New` to create a new expense report." +#: ../../content/applications/finance/expenses/expenses_analysis.rst:5 +msgid "It is important for companies to track expenses so they have an understanding of their expenses and can identify trends. Expense reporting allows for detailed information, such as which expense categories are reimbursed the most, which employees incur the most expenses, and if there are any periods of time that tend to incur more expenses than others." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:96 -msgid "Submit expense reports" +#: ../../content/applications/finance/expenses/expenses_analysis.rst:11 +msgid "View expense analysis report" msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:98 -msgid "When an expense report is completed, the next step is to submit the report to a manager for approval. To view all expense reports, navigate to :menuselection:`Expenses app --> My Expenses --> My Reports`. Open the specific report from the list of expense reports." +#: ../../content/applications/finance/expenses/expenses_analysis.rst:13 +msgid "To view the default *Expenses Analysis* report, navigate to :menuselection:`Expenses app --> Reporting --> Expenses Analysis`. The :guilabel:`Expenses Analysis` report displays all expenses for the current year, in a stacked bar chart, grouped by month." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:103 -msgid "Reports must be individually submitted, and **cannot** be submitted in batches." +#: ../../content/applications/finance/expenses/expenses_analysis.rst:-1 +msgid "The default stacked bar chart for annual expenses, grouped by month." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:105 -msgid "If the list is large, grouping the results by status may be helpful, since only reports with a :guilabel:`To Submit` status need to be submitted; reports with an :guilabel:`Approved` or :guilabel:`Submitted` status do not." +#: ../../content/applications/finance/expenses/expenses_analysis.rst:21 +msgid "View expenses by employee" msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:109 -msgid "The :guilabel:`To Submit` expenses are identifiable by the :guilabel:`To Submit` status, and by the blue text, while all other expense text appears in black." +#: ../../content/applications/finance/expenses/expenses_analysis.rst:23 +msgid "It is possible to view the data so that the total cost of expenses *by employee* is visible. To view the report in this way, navigate to :menuselection:`Expenses app --> Reporting --> Expenses Analysis`. Next, click the :icon:`oi-view-pivot` :guilabel:`(Pivot)` icon to view the data in a pivot table." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:-1 -msgid "Submit the report to the manager." +#: ../../content/applications/finance/expenses/expenses_analysis.rst:28 +msgid "This presents the data with the *employees* populating the rows, and the *total monthly expenses* populate the columns. Next, click :icon:`fa-minus-square-o` :guilabel:`Total` at the top of the monthly columns to hide the individual monthly totals, and present only the *total* amount for the year." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:117 -msgid "The status of each report is shown in the :guilabel:`Status` column. If the :guilabel:`Status` column is not visible, click the :icon:`oi-settings-adjust` :guilabel:`(additional options)` icon at the end of the row, and tick the checkbox beside :guilabel:`Status` from the resulting drop-down menu." +#: ../../content/applications/finance/expenses/expenses_analysis.rst:33 +#: ../../content/applications/finance/expenses/expenses_analysis.rst:63 +msgid "To present the data in either ascending or descending total, click the :guilabel:`Total In Currency` box, and the information is organized first in ascending order, starting with the smallest amount. Click :guilabel:`Total In Currency` again to reverse the order, and present the highest amount first." +msgstr "" + +#: ../../content/applications/finance/expenses/expenses_analysis.rst:39 +msgid "In this example it can be determined that :guilabel:`Mike Smith` has the highest amount of expenses, totaling :guilabel:`4,216.44`. This is almost seven times higher than :guilabel:`Ronnie Hart`, who has the second highest expenses, with a total of :guilabel:`644.74`." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:122 -msgid "Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report, the next step is to wait for the manager to approve it." +#: ../../content/applications/finance/expenses/expenses_analysis.rst:0 +msgid "A pivot table with the information shown by employee, in descending order." msgstr "" -#: ../../content/applications/finance/expenses/expense_reports.rst:126 -msgid ":doc:`Approving <../expenses/approve_expenses>` expenses, :doc:`posting <../expenses/post_expenses>` expenses, and :doc:`reimbursing <../expenses/reimburse>` expenses are **only** for users with the appropriate :doc:`access rights documentation `." +#: ../../content/applications/finance/expenses/expenses_analysis.rst:47 +msgid "View expenses by category" +msgstr "" + +#: ../../content/applications/finance/expenses/expenses_analysis.rst:49 +msgid "It is possible to view the data so that the total cost of expenses *by category* is visible. To view the report in this way, navigate to :menuselection:`Expenses app --> Reporting --> Expenses Analysis`. Next, click the :icon:`oi-view-pivot` :guilabel:`(Pivot)` icon to view the data in a pivot table." +msgstr "" + +#: ../../content/applications/finance/expenses/expenses_analysis.rst:54 +msgid "This presents the data with the *employees* populating the rows, and the *total monthly expenses* populate the columns. Next, click :icon:`fa-minus-square-o` :guilabel:`Total` at the top of the employees column. Click :icon:`fa-plus-square` :guilabel:`Total` that appears in place of :icon:`fa-minus-square-o` :guilabel:`Total`, revealing a drop-down menu of options. Click :guilabel:`Category`, and the expense categories now populate the rows." +msgstr "" + +#: ../../content/applications/finance/expenses/expenses_analysis.rst:60 +msgid "Next, click :icon:`fa-minus-square-o` :guilabel:`Total` at the top of the months column to hide the individual months, and only show the annual total for each category." +msgstr "" + +#: ../../content/applications/finance/expenses/expenses_analysis.rst:69 +msgid "In this example, it can be determined that the company spent the most on travel expenses, with the expense category :guilabel:`[TRANS & ACC] Travel & Accommodation` incurring :guilabel:`2,940.00` of expenses for the year. The company reimbursed mileage the least, with only :guilabel:`229.69` in :guilabel:`[MIL] Mileage` expenses." +msgstr "" + +#: ../../content/applications/finance/expenses/expenses_analysis.rst:0 +msgid "A pivot table with the information shown by catrgory in descending order." msgstr "" #: ../../content/applications/finance/expenses/log_expenses.rst:3 @@ -14631,90 +14690,90 @@ msgid "Log expenses" msgstr "" #: ../../content/applications/finance/expenses/log_expenses.rst:5 -msgid "Before expenses can be reimbursed, each individual expense needs to be logged in the database. Expense records can be created in three different ways: :ref:`manually enter an expense record `, :ref:`upload a receipt `, or :ref:`email a receipt ` to a preconfigured email address." +msgid "Before expenses can be reimbursed, each individual expense needs to be logged in the database. Expense records can be created in four different ways: :ref:`manually enter an expense record `, :ref:`upload a receipt `, :ref:`drag and drop ` a receipt onto the **Expenses** app dashboard, or :ref:`email a receipt ` to a preconfigured email address." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:13 +#: ../../content/applications/finance/expenses/log_expenses.rst:14 msgid "Manually enter expenses" msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:15 -msgid "To record a new expense, open the :menuselection:`Expenses app`, which displays the :guilabel:`My Expenses` page, by default." +#: ../../content/applications/finance/expenses/log_expenses.rst:16 +msgid "To record a new expense, open the **Expenses** app, which displays the :guilabel:`My Expenses` page, by default." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:19 -msgid "This view can also be accessed from :menuselection:`Expenses app --> My Expenses --> My Expenses`." +#: ../../content/applications/finance/expenses/log_expenses.rst:20 +msgid "This view can also be accessed at any time by navigating to :menuselection:`Expenses app --> My Expenses --> My Expenses`." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:22 -msgid "Then, click :guilabel:`New`, and then fill out the following fields on the form that appears:" -msgstr "" - -#: ../../content/applications/finance/expenses/log_expenses.rst:24 -msgid ":guilabel:`Description`: Enter a short description for the expense. This should be concise and informative, such as `lunch with client` or `hotel for conference`." +#: ../../content/applications/finance/expenses/log_expenses.rst:23 +msgid "Click the :guilabel:`New` button and fill out the following fields on the blank expense form that loads:" msgstr "" #: ../../content/applications/finance/expenses/log_expenses.rst:26 -msgid ":guilabel:`Category`: Select the expense category from the drop-down menu that most closely corresponds to the expense." +msgid ":guilabel:`Description`: Enter a short description for the expense. This should be concise and informative, such as `Lunch with client` or `Hotel for trade show`." msgstr "" #: ../../content/applications/finance/expenses/log_expenses.rst:28 -msgid ":guilabel:`Total`: Enter the total amount paid for the expense in one of two ways:" +msgid ":guilabel:`Category`: Using the drop-down menu, select the :doc:`expense category ` that most closely corresponds to the expense." msgstr "" #: ../../content/applications/finance/expenses/log_expenses.rst:30 -msgid "If the expense is for a single item/expense, and the category selected was for a single item, enter the cost in the :guilabel:`Total` field (the :guilabel:`Quantity` field is hidden)." +msgid ":guilabel:`Total`: Enter the total amount paid for the expense in one of two ways:" msgstr "" #: ../../content/applications/finance/expenses/log_expenses.rst:32 -msgid "If the expense is for multiples of the same item/expense with a fixed price, the :guilabel:`Unit Price` is displayed. Enter the quantity in the :guilabel:`Quantity` field, and the total cost is automatically updated with the correct total. The total cost appears below the :guilabel:`Quantity`." +msgid "If the expense is for a single item/expense, and the category selected was for a single item, enter the cost in the :guilabel:`Total` field (the :guilabel:`Quantity` field is hidden)." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:38 -msgid "In the case of mileage driven, the :guilabel:`Unit Price` is populated as the cost *per mile*. Set the :guilabel:`Quantity` to the *number of miles driven*, and the total is calculated." +#: ../../content/applications/finance/expenses/log_expenses.rst:34 +msgid "If the expense is for multiples of the same item/expense with a fixed price, the :guilabel:`Unit Price` is displayed. Enter the number of units in the :guilabel:`Quantity` field, and the total cost is automatically updated with the correct total. The total cost appears below the :guilabel:`Quantity`." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:42 -msgid ":guilabel:`Included Taxes`: If taxes were configured on the expense category, the tax percentage and amount appear automatically after entering either the :guilabel:`Total` or the :guilabel:`Quantity`." +#: ../../content/applications/finance/expenses/log_expenses.rst:40 +msgid "An employee received one dollar for each mile driven for work. The :guilabel:`Category` is :guilabel:`[MIL] Mileage`. The :guilabel:`Unit Price` is automatically populated with `$1.00`, which is the cost *per mile* configured for the expense :guilabel:`Category` :guilabel:`[MIL] Mileage`. The :guilabel:`Quantity` is set to `48`, which is the *number of miles driven*, and the total is calculated to `$48.00`." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:47 +#: ../../content/applications/finance/expenses/log_expenses.rst:46 +msgid ":guilabel:`Included Taxes`: If taxes were configured on the selected expense category, the tax percentage and amount appear automatically after entering either the :guilabel:`Total` or the :guilabel:`Quantity`." +msgstr "" + +#: ../../content/applications/finance/expenses/log_expenses.rst:51 msgid "When a tax is configured on an expense category, the :guilabel:`Included Taxes` value updates in real time, as the :guilabel:`Total` or :guilabel:`Quantity` is updated." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:50 -msgid ":guilabel:`Employee`: Using the drop-down menu, select the employee this expense is for." +#: ../../content/applications/finance/expenses/log_expenses.rst:54 +msgid ":guilabel:`Employee`: Using the drop-down menu, select the employee associated with the expense." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:51 -msgid ":guilabel:`Paid By`: Click the radio button to indicate who paid for the expense, and should be reimbursed. Select either :guilabel:`Employee (to reimburse)` or :guilabel:`Company`. Depending on the expense category selected, this field may not appear." +#: ../../content/applications/finance/expenses/log_expenses.rst:55 +msgid ":guilabel:`Paid By`: Click the radio button to indicate who paid for the expense and should be reimbursed. Select either :guilabel:`Employee (to reimburse)` or :guilabel:`Company`. Depending on the expense category selected, this field may not appear." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:54 +#: ../../content/applications/finance/expenses/log_expenses.rst:58 msgid ":guilabel:`Expense Date`: Using the calendar popover window that appears when this field is clicked, enter the date the expense was incurred." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:56 -msgid ":guilabel:`Account`: Using the drop-down menu, select the expense account the expense should be logged in." +#: ../../content/applications/finance/expenses/log_expenses.rst:60 +msgid ":guilabel:`Account`: If the selected expense :guilabel:`Category` has a specific account linked to it, that account appears in the :guilabel:`Account` field. If no account is specified, the default `600000 Expenses` account populates this field. If a different account is desired, select the account the expense should be logged in." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:58 -msgid ":guilabel:`Customer to Reinvoice`: If the expense is something that should be paid for by a customer, select the :abbr:`SO (Sales Order)` and customer that should be invoiced for this expense from the drop-down menu. All sales orders in the drop-down menu list both the :abbr:`SO (Sales Order)`, as well as the company the sales order is written for. After the expense is saved, the customer name disappears, and only the :abbr:`SO (Sales Order)` is visible on the expense." +#: ../../content/applications/finance/expenses/log_expenses.rst:64 +msgid ":guilabel:`Customer to Reinvoice`: If the expense should be paid for by a customer and the selected :guilabel:`Category` allows for reinvoicing of expenses, select the :abbr:`SO (Sales Order)` and customer to be invoiced for the expense using the drop-down menu. All sales orders in the drop-down menu list both the :abbr:`SO (Sales Order)`, as well as the company the sales order is written for. After the expense is saved, the customer name disappears, and only the :abbr:`SO (Sales Order)` is visible on the expense." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:65 -msgid "A customer wishes to have an on-site meeting for the design and installation of a custom garden, and agrees to pay for the expenses associated with it (such as travel, hotel, meals, etc). All expenses tied to that meeting would indicate the sales order for the custom garden (which also references the customer) as the :guilabel:`Customer to Reinvoice`." +#: ../../content/applications/finance/expenses/log_expenses.rst:72 +msgid "A customer wishes to have an on-site meeting for the design and installation of a custom building, and agrees to pay for all expenses associated with the meeting, including travel, hotel, and meals for the traveling employees. All expenses tied to that meeting would indicate the sales order for the custom building (which also references the customer) as the :guilabel:`Customer to Reinvoice`." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:70 +#: ../../content/applications/finance/expenses/log_expenses.rst:78 msgid ":guilabel:`Analytic Distribution`: Select the account the expense should be written against from the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both. Multiple accounts can be listed for each category, if needed. Adjust the percentage for each analytic account by typing in the percentage value next to each account." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:74 -msgid ":guilabel:`Company`: If multiple companies are set up, select the company the expense should be filed for from the drop-down menu. The current company automatically populates this field." +#: ../../content/applications/finance/expenses/log_expenses.rst:82 +msgid ":guilabel:`Company`: If in a multi-company database, select the company the expense should be filed for using the drop-down menu. The current company automatically populates this field." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:76 +#: ../../content/applications/finance/expenses/log_expenses.rst:84 msgid ":guilabel:`Notes...`: If any notes are needed to clarify the expense, enter them in the notes field." msgstr "" @@ -14722,170 +14781,164 @@ msgstr "" msgid "A filled in expense form for a client lunch." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:84 +#: ../../content/applications/finance/expenses/log_expenses.rst:91 msgid "Attach receipts" msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:86 +#: ../../content/applications/finance/expenses/log_expenses.rst:93 msgid "After the expense record is created, the next step is to attach a receipt. Click the :guilabel:`Attach Receipt` button, and a file explorer appears. Navigate to the receipt to be attached, and click :guilabel:`Open`." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:90 +#: ../../content/applications/finance/expenses/log_expenses.rst:97 msgid "The new receipt is recorded in the *chatter*, and the number of receipts appears next to the :icon:`fa-paperclip` :guilabel:`(paperclip)` icon. Multiple receipts can be attached to an individual expense record, as needed." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:-1 -msgid "Attach a receipt and it appears in the chatter." -msgstr "" - -#: ../../content/applications/finance/expenses/log_expenses.rst:101 +#: ../../content/applications/finance/expenses/log_expenses.rst:104 msgid "Upload expenses" msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:103 -msgid "It is possible to have expense records created automatically, by uploading a PDF receipt. This feature requires the enabling of a setting, and the purchasing of :abbr:`IAP (in-app purchases)` credits." +#: ../../content/applications/finance/expenses/log_expenses.rst:106 +msgid "It is possible to have expense records created automatically by :ref:`uploading a PDF receipt `. To utilize this feature, a setting must be enabled, and :abbr:`IAP (in-app purchases)` credits must be purchased." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:108 +#: ../../content/applications/finance/expenses/log_expenses.rst:113 msgid "Digitalization settings" msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:110 +#: ../../content/applications/finance/expenses/log_expenses.rst:115 msgid "To enable receipt scanning, navigate to :menuselection:`Expenses app --> Configuration --> Settings`, and tick the checkbox beside the :guilabel:`Expense Digitization (OCR)` option. Then, click :guilabel:`Save`. When enabled, additional options appear. Click on the corresponding radio button to select one of the following options:" msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:115 -msgid ":guilabel:`Do not digitize`: turns off receipt digitization." +#: ../../content/applications/finance/expenses/log_expenses.rst:120 +msgid ":guilabel:`Do not digitize`: Disables receipt digitization but does *not* uninstall the related digitization module." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:116 -msgid ":guilabel:`Digitize on demand only`: only digitizes receipts when requested. A :guilabel:`Digitize document` button appears on expense records. When clicked, the receipt is scanned and the expense record is updated." +#: ../../content/applications/finance/expenses/log_expenses.rst:122 +msgid ":guilabel:`Digitize on demand only`: Only digitizes receipts when requested. A :guilabel:`Digitize document` button appears on expense records. When clicked, the receipt is scanned and the expense record is updated." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:119 -msgid ":guilabel:`Digitize automatically`: automatically digitizes all receipts when they are uploaded." +#: ../../content/applications/finance/expenses/log_expenses.rst:125 +msgid ":guilabel:`Digitize automatically`: Automatically digitizes all receipts when they are uploaded." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:121 -msgid "Beneath these options are two additional links. Click the :icon:`fa-arrow-right` :guilabel:`Buy credits` link to purchase credits for receipt digitization. Click the :icon:`fa-arrow-right` :guilabel:`View My Services` link to view a list of all current services, and their remaining credit balances." +#: ../../content/applications/finance/expenses/log_expenses.rst:127 +msgid "Beneath these options are two additional links. Click the :icon:`fa-arrow-right` :guilabel:`Manage Service & Buy Credits` link to view account details and settings, and purchase credits for receipt digitization. Click the :icon:`fa-arrow-right` :guilabel:`View My Services` link to view a list of all current services, and their remaining credit balances." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:126 +#: ../../content/applications/finance/expenses/log_expenses.rst:132 msgid "For more information on document digitization and :abbr:`IAPs (in-app purchases)`, refer to the :doc:`In-app purchase (IAP) <../../essentials/in_app_purchase>` documentation." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:130 +#: ../../content/applications/finance/expenses/log_expenses.rst:136 msgid "When the :guilabel:`Expense Digitization (OCR)` option is enabled, a necessary module is installed, so receipts can be scanned. Disabling this option uninstalls the module." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:133 +#: ../../content/applications/finance/expenses/log_expenses.rst:139 msgid "If, at some point, there is a desire to temporarily stop digitizing receipts, select the :guilabel:`Do not digitize` option. The reason this option is available is so the module is not uninstalled, allowing for digitization to be enabled in the future by selecting one of the other two options." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:139 +#: ../../content/applications/finance/expenses/log_expenses.rst:147 msgid "Upload receipts" msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:141 +#: ../../content/applications/finance/expenses/log_expenses.rst:149 msgid "Open the :guilabel:`Expenses app`, and from the :guilabel:`My Expenses` dashboard, click :guilabel:`Upload`, and a file explorer appears. Navigate to the desired receipt, select it, then click :guilabel:`Open`." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:-1 -msgid "Create an expense by scanning a receipt. Click Scan at the top of the Expenses dashboard\n" -"view." -msgstr "" - -#: ../../content/applications/finance/expenses/log_expenses.rst:150 +#: ../../content/applications/finance/expenses/log_expenses.rst:153 msgid "The receipt is scanned, and a new expense record is created. The :guilabel:`Expense Date` field is populated with today's date, along with any other fields based on the scanned data, such as the :guilabel:`Total`." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:154 +#: ../../content/applications/finance/expenses/log_expenses.rst:157 msgid "Click on the new entry to open the individual expense form, and make any changes, if needed. The scanned receipt appears in the *chatter*." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:160 -msgid "Email expenses" -msgstr "" - -#: ../../content/applications/finance/expenses/log_expenses.rst:162 -msgid "Instead of individually creating each expense in the **Expenses** app, expenses can be automatically created by sending an email to an email alias." +#: ../../content/applications/finance/expenses/log_expenses.rst:163 +msgid "Drag and drop an expense" msgstr "" #: ../../content/applications/finance/expenses/log_expenses.rst:165 -msgid "To do so, an email alias must first be configured. Navigate to :menuselection:`Expenses app --> Configuration --> Settings`. Ensure the checkbox beside :guilabel:`Incoming Emails` is ticked. The default email alias is *expense@(domain).com*. Change the email alias by entering the desired email in the field to the right of :guilabel:`Alias`. Then, click :guilabel:`Save`." +msgid "If :ref:`digitalization is enabled `, drag and drop a receipt onto the **Expenses** app dashboard. The receipt is scanned and appears by itself on the :guilabel:`Generate Expenses` dashboard." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:-1 -msgid "Te default email that populates the expenses email alias." +#: ../../content/applications/finance/expenses/log_expenses.rst:169 +msgid "Click on the expense record, and modify the details as needed. After changes are made, return to the :guilabel:`My Expenses` dashboard, and the expense now appears in the list." msgstr "" #: ../../content/applications/finance/expenses/log_expenses.rst:175 -msgid "If the domain alias needs to be set up, :icon:`fa-arrow-right` :guilabel:`Setup your domain alias` appears beneath the :guilabel:`Incoming Emails` checkbox, instead of the email address field." +msgid "Email expenses" +msgstr "" + +#: ../../content/applications/finance/expenses/log_expenses.rst:177 +msgid "Instead of individually creating each expense in the **Expenses** app, expenses can be automatically created by sending an email to an email alias." +msgstr "" + +#: ../../content/applications/finance/expenses/log_expenses.rst:181 +msgid "For security purposes, only authenticated employee emails are accepted by Odoo when creating an expense from an email. To confirm an authenticated employee email address, go to the employee card in the :menuselection:`Employees app`, and refer to the :guilabel:`Work Email` field." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:-1 #: ../../content/applications/finance/expenses/log_expenses.rst:0 msgid "Create the domain alias by clicking the link." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:183 +#: ../../content/applications/finance/expenses/log_expenses.rst:188 +msgid "To do so, an email alias must first be configured. Navigate to :menuselection:`Expenses app --> Configuration --> Settings`. Ensure the checkbox beside :guilabel:`Incoming Emails` is ticked. The default email alias is *expense@(domain).com*. Change the email alias by entering the desired email in the field to the right of :guilabel:`Alias`. Then, click :guilabel:`Save`." +msgstr "" + +#: ../../content/applications/finance/expenses/log_expenses.rst:194 +msgid "If the domain alias needs to be set up, :icon:`fa-arrow-right` :guilabel:`Setup your domain alias` appears beneath the :guilabel:`Incoming Emails` checkbox, instead of the email address field." +msgstr "" + +#: ../../content/applications/finance/expenses/log_expenses.rst:198 msgid "Refer to the :doc:`/applications/websites/website/configuration/domain_names` documentation for setup instructions and more information." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:186 +#: ../../content/applications/finance/expenses/log_expenses.rst:201 msgid "Once the domain alias is configured, the email address field is visible beneath the :guilabel:`Incoming Emails` feature on the :guilabel:`Settings` page in the **Expenses** app." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:189 +#: ../../content/applications/finance/expenses/log_expenses.rst:204 msgid "Once the email address has been entered, emails can be sent to that alias to create new expenses, without having to be in the Odoo database." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:192 -msgid "To submit an expense via email, create a new email, and enter the product's *internal reference* code (if available) and the amount of the expense as the subject of the email. Next, attach the receipt to the email. Odoo creates the expense by taking the information in the email subject, and combining it with the receipt." +#: ../../content/applications/finance/expenses/log_expenses.rst:207 +msgid "To submit an expense via email, create a new email, and enter the product's *reference* code (if available) and the amount of the expense as the subject of the email. Next, attach the receipt to the email. Odoo creates the expense by taking the information in the email subject, and combining it with the receipt." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:197 -msgid "To check an expense category's internal reference, go to :menuselection:`Expenses app --> Configuration --> Expense Categories`. If an internal reference is listed on the expense category, it is listed in the :guilabel:`Internal Reference` column." +#: ../../content/applications/finance/expenses/log_expenses.rst:213 +msgid "To check an expense category's reference code, go to :menuselection:`Expenses app --> Configuration --> Expense Categories`. Reference codes are listed in the :guilabel:`Reference` column." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:-1 -msgid "Internal reference numbers are listed in the main Expense Categories view." +#: ../../content/applications/finance/expenses/log_expenses.rst:217 +msgid "To add a reference code to an expense category, click on the category to open the expense category form. Enter the reference code in the :guilabel:`Reference` field." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:205 -msgid "To add an internal reference on an expense category, click on the category to open the expense category form. Enter the :guilabel:`Internal Reference` in the corresponding field. Beneath the :guilabel:`Internal Reference` field, this sentence appears: :guilabel:`Use this reference as a subject prefix when submitting by email.`" -msgstr "" - -#: ../../content/applications/finance/expenses/log_expenses.rst:-1 -msgid "Internal reference numbers are listed in the main Expense Products view." +#: ../../content/applications/finance/expenses/log_expenses.rst:0 +msgid "Reference categories displayed in the main Expense Categories view." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:215 +#: ../../content/applications/finance/expenses/log_expenses.rst:224 msgid "If submitting an expense, via email, for a $25.00 meal during a work trip, the email subject would be `FOOD $25.00`." msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:218 +#: ../../content/applications/finance/expenses/log_expenses.rst:227 msgid "Explanation:" msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:220 -msgid "The :guilabel:`Internal Reference` for the expense category `Meals` is `FOOD`" +#: ../../content/applications/finance/expenses/log_expenses.rst:229 +msgid "The :guilabel:`Reference` for the expense category `Meals` is `FOOD`" msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:221 +#: ../../content/applications/finance/expenses/log_expenses.rst:230 msgid "The :guilabel:`Cost` for the expense is `$25.00`" msgstr "" -#: ../../content/applications/finance/expenses/log_expenses.rst:224 -msgid "For security purposes, only authenticated employee emails are accepted by Odoo when creating an expense from an email. To confirm an authenticated employee email address, go to the employee card in the :menuselection:`Employees app`, and refer to the :guilabel:`Work Email` field." -msgstr "" - #: ../../content/applications/finance/expenses/post_expenses.rst:3 msgid "Post expenses" msgstr "" #: ../../content/applications/finance/expenses/post_expenses.rst:5 -msgid "Once an expense report is :doc:`approved <../expenses/approve_expenses>`, the next step is to post the expense report to the proper accounting journal." +msgid "Once an expense report is :doc:`approved <../expenses/approve_expenses>`, the next step is to post the expenses to the proper accounting journal." msgstr "" #: ../../content/applications/finance/expenses/post_expenses.rst:9 @@ -14901,39 +14954,39 @@ msgid "Expenses: *Manager*" msgstr "" #: ../../content/applications/finance/expenses/post_expenses.rst:15 -msgid "Only expense reports with an *Approved* status can post the expenses to a journal. To view all expense reports, navigate to :menuselection:`Expenses app --> Expense Reports`. Next, to view **only** approved expense reports that need to be posted, adjust the filters on the left side, so only the :guilabel:`Approved` checkbox is ticked." +msgid "Only expense reports with an *Approved* status can post the expenses to a journal. To view all expense reports, navigate to :menuselection:`Expenses app --> Expense Reports`. Next, to view **only** approved expense reports that need to be posted, adjust the filters on the left side so only the :guilabel:`Approved` checkbox is ticked." msgstr "" #: ../../content/applications/finance/expenses/post_expenses.rst:-1 msgid "View reports to post by clicking on expense reports, then reports to post." msgstr "" -#: ../../content/applications/finance/expenses/post_expenses.rst:25 -msgid "The default :guilabel:`All Reports` dashboard displays all expense reports, except reports with a status of :guilabel:`Refused`." +#: ../../content/applications/finance/expenses/post_expenses.rst:24 +msgid "The default :guilabel:`All Reports` dashboard displays all expense reports that are not :guilabel:`Refused`." msgstr "" -#: ../../content/applications/finance/expenses/post_expenses.rst:28 +#: ../../content/applications/finance/expenses/post_expenses.rst:27 msgid "Expense reports can be posted to accounting journals in two ways: :ref:`individually ` or :ref:`in bulk `." msgstr "" -#: ../../content/applications/finance/expenses/post_expenses.rst:34 +#: ../../content/applications/finance/expenses/post_expenses.rst:33 msgid "Post individual reports" msgstr "" -#: ../../content/applications/finance/expenses/post_expenses.rst:36 +#: ../../content/applications/finance/expenses/post_expenses.rst:35 msgid "To post an individual report, navigate to :menuselection:`Expenses app --> Expense Reports`, and click on an individual report with a :guilabel:`Status` of :guilabel:`Approved`, to view the report form. In this view, several options are presented: :guilabel:`Post Journal Entries`, :guilabel:`Report In Next Payslip`, :guilabel:`Refuse`, or :guilabel:`Reset to Draft`." msgstr "" -#: ../../content/applications/finance/expenses/post_expenses.rst:41 -msgid "Click :guilabel:`Post Journal Entries` to post the report." +#: ../../content/applications/finance/expenses/post_expenses.rst:40 +msgid "Click :guilabel:`Post Journal Entries` to post the report. The accounting journal the expenses are posted to is listed in the :guilabel:`Journal` field of the expense report." msgstr "" #: ../../content/applications/finance/expenses/post_expenses.rst:43 -msgid "The accounting journal the expenses are posted to is listed in the :guilabel:`Journal` field of the expense report." +msgid "After posting the expenses to an accounting journal, a :guilabel:`Journal Entry` smart button appears at the top of the screen. Click the :guilabel:`Journal Entry` smart button, and the details for the journal entry appear, with a status of :guilabel:`Posted`." msgstr "" -#: ../../content/applications/finance/expenses/post_expenses.rst:46 -msgid "After posting the expenses to an accounting journal, a :guilabel:`Journal Entry` smart button appears at the top of the screen. Click the :guilabel:`Journal Entry` smart button, and the details for the journal entry appear, with a status of :guilabel:`Posted`." +#: ../../content/applications/finance/expenses/post_expenses.rst:-1 +msgid "A single expense report to be approved." msgstr "" #: ../../content/applications/finance/expenses/post_expenses.rst:53 @@ -14965,165 +15018,175 @@ msgid "Reimburse employees" msgstr "" #: ../../content/applications/finance/expenses/reimburse.rst:5 -msgid "After an expense report is :doc:`posted to an accounting journal <../expenses/post_expenses>`, the next step is to reimburse the employee. Just like approving and posting expenses, employees can be reimbursed in two ways: with cash, check, or direct deposit (:ref:`individually ` or :ref:`in bulk `), or :ref:`reimbursed in a payslip `." +msgid "After an expense report is :doc:`posted to an accounting journal <../expenses/post_expenses>`, the next step is to reimburse the employee. Employees can be reimbursed via cash, check, or direct deposit in three ways:" msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:12 -msgid "Settings" +#: ../../content/applications/finance/expenses/reimburse.rst:9 +msgid ":ref:`Individually `: Each individual expense report is reimbursed separately." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:14 -msgid "Reimbursements can be paid via paycheck, check, cash, or bank transfer. To set up payment options, first configure the various settings by navigating to :menuselection:`Expenses app --> Configuration --> Settings`." +#: ../../content/applications/finance/expenses/reimburse.rst:11 +msgid ":ref:`In bulk `: Multiple expense reports are reimbursed in a single payment." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:18 -msgid "To reimburse employees for expenses :ref:`in their paychecks `, tick the checkbox beside the :guilabel:`Reimburse in Payslip` option in the :guilabel:`Expenses` section." +#: ../../content/applications/finance/expenses/reimburse.rst:13 +msgid ":ref:`In the employee's payslip `: Expense reports are reimbursed directly in the employee's payslip." +msgstr "" + +#: ../../content/applications/finance/expenses/reimburse.rst:19 +msgid "Reimbursement settings" msgstr "" #: ../../content/applications/finance/expenses/reimburse.rst:21 -msgid "Next, set how payments are made in the :guilabel:`Accounting` section. Click the drop-down menu under :guilabel:`Payment Methods`, and select the desired payment option. Default options include paying by :guilabel:`Manual (Cash)`, :guilabel:`Checks (Bank)`, :guilabel:`NACHA (Bank)`, and others. Leaving this field blank allows for **all** available payment options to be used." +msgid "Reimbursements can be paid via a paycheck, check, cash, or bank transfer (usually referred to as direct deposit). To set up payment options, first configure the various settings by navigating to :menuselection:`Expenses app --> Configuration --> Settings`." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:26 -msgid "When all desired configurations are complete, click :guilabel:`Save` to activate the settings." +#: ../../content/applications/finance/expenses/reimburse.rst:25 +msgid "To reimburse employees for expenses :ref:`in their paychecks `, tick the checkbox beside the :guilabel:`Reimburse in Payslip` option in the :guilabel:`Expenses` section." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:31 -msgid "Reimburse individually" +#: ../../content/applications/finance/expenses/reimburse.rst:28 +msgid "Next, set how payments are made in the :guilabel:`Accounting` section. Click the drop-down menu under :guilabel:`Payment Methods`, and select the desired payment option. The default options include paying by :guilabel:`Manual Payment (Cash)`, :guilabel:`Manual Payment (Bank)`, :guilabel:`Batch Deposit (Bank)`, and :guilabel:`Checks (Bank)`." msgstr "" #: ../../content/applications/finance/expenses/reimburse.rst:33 -msgid "To reimburse an individual expense report, first navigate to :menuselection:`Expenses app --> Expense Reports`. All expense reports are presented in a default list view. Click on the expense report being reimbursed to view the report details." +msgid "Leaving this field blank allows for **all** available payment options to be used." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:38 -msgid "**Only** expense reports with a status of :guilabel:`Posted` can be reimbursed." +#: ../../content/applications/finance/expenses/reimburse.rst:35 +msgid "When all desired configurations are complete, click :guilabel:`Save` to activate the settings." msgstr "" #: ../../content/applications/finance/expenses/reimburse.rst:40 -msgid "Click the :guilabel:`Register Payment` button in the top-left corner of the expense report, and a :guilabel:`Register Payment` pop-up window appears. Enter the following information in the pop-up window:" -msgstr "" - -#: ../../content/applications/finance/expenses/reimburse.rst:44 -msgid ":guilabel:`Journal`: Select the accounting journal to post the payment to using the drop-down menu. The default options are :guilabel:`Bank` or :guilabel:`Cash`." +msgid "Reimburse in payslips" msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:46 -#: ../../content/applications/finance/expenses/reimburse.rst:96 -msgid ":guilabel:`Payment Method`: Select how the payment is made using the drop-down menu. If :guilabel:`Cash` is selected for the :guilabel:`Journal`, the only option available is :guilabel:`Manual`. If :guilabel:`Bank` is selected for the :guilabel:`Journal`, the default options are :guilabel:`Manual` or :guilabel:`Checks`." +#: ../../content/applications/finance/expenses/reimburse.rst:42 +msgid "If the *Reimburse in Payslip* option is activated on the :ref:`settings ` page, payments can be added to the employee's next payslip, instead of issuing separate payments." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:50 -msgid ":guilabel:`Recipient Bank Account`: Select the employee's bank account the payment is being sent to. If the employee has a bank account on file in the :ref:`Private Information tab ` of their employee form in the **Employees** app, that bank account populates this field, by default." +#: ../../content/applications/finance/expenses/reimburse.rst:47 +msgid "Reimbursing expenses on payslips can **only** be done individually for an *approved* expense report. Once an expense report has a status of *Posted*, the option to reimburse in the following payslip **is not available**." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:54 -msgid ":guilabel:`Amount`: The total amount being reimbursed populates this field, by default. The currency, located to the right of the field, can be modified using the drop-down menu." +#: ../../content/applications/finance/expenses/reimburse.rst:51 +msgid "Navigate to :menuselection:`Expenses app --> Expense Reports`, and click on the individual expense report to reimburse on the following paycheck. Click the :guilabel:`Report in Next Payslip` button, and the expenses are added to the next payslip issued for that employee." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:56 -msgid ":guilabel:`Payment Date`: Enter the date the payments are issued in this field. The current date populates this field, by default." +#: ../../content/applications/finance/expenses/reimburse.rst:-1 +msgid "The Report in Next Payslip button, visible with an expense report status of Approved." msgstr "" #: ../../content/applications/finance/expenses/reimburse.rst:58 -msgid ":guilabel:`Memo`: The text entered in the :doc:`Expense Report Summary <../expenses/expense_reports>` field of the expense report populates this field, by default." +msgid "Once the expense report is added to the following payslip, a message is logged in the chatter stating `Expense report (expense report name) will be added to the next payslip.` The status for the expense report remains :guilabel:`Approved`. The status only changes to :guilabel:`Posted` (and then :guilabel:`Done`), when the related payslip is processed." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:-1 -msgid "The Register Payment pop-up window filled out for an individual expense report\n" -"reimbursement." +#: ../../content/applications/finance/expenses/reimburse.rst:64 +msgid "Refer to the :doc:`Payslips <../../hr/payroll/payslips>` documentation for more information about processing paychecks." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:66 -msgid "When the fields of the pop-up window are completed, click the :guilabel:`Create Payment` button to register the payment, and reimburse the employee." +#: ../../content/applications/finance/expenses/reimburse.rst:70 +msgid "Reimburse individually" msgstr "" #: ../../content/applications/finance/expenses/reimburse.rst:72 -msgid "Reimburse in bulk" +msgid "To reimburse an individual expense report, first navigate to :menuselection:`Expenses app --> Expense Reports`. All expense reports are presented in a default list view. Click on the expense report being reimbursed to view the report details." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:74 -msgid "To reimburse multiple expense reports at once, navigate to :menuselection:`Expenses app --> Expense Reports` to view all expense reports in a list view. Next, adjust the :guilabel:`STATUS` filters on the left side to only present expense reports with a status of :guilabel:`Posted`." +#: ../../content/applications/finance/expenses/reimburse.rst:77 +#: ../../content/applications/finance/expenses/reimburse.rst:117 +msgid "**Only** expense reports with a status of :guilabel:`Posted` can be reimbursed directly to the employee (not :ref:`via a payslip `)." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:79 -msgid "Adjusting the :guilabel:`STATUS` filters to only show :guilabel:`Posted` expense reports is not necessary, but removes the step of selecting each individual report in the list." +#: ../../content/applications/finance/expenses/reimburse.rst:80 +msgid "Click the :guilabel:`Pay` button in the top-left corner of the expense report, and a :guilabel:`Pay` pop-up window loads. Enter the following information in the pop-up window:" msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:82 -msgid "Tick the checkbox next to the :guilabel:`Employee` column title to select all the reports in the list. Once ticked, the number of selected expense reports appears at the top of the page (:guilabel:`(#) Selected`). Additionally, a :guilabel:`Register Payment` button also appears in the upper-left corner." +#: ../../content/applications/finance/expenses/reimburse.rst:83 +#: ../../content/applications/finance/expenses/reimburse.rst:128 +msgid ":guilabel:`Journal`: Select the accounting journal to post the payment using the drop-down menu. The default options are :guilabel:`Bank` or :guilabel:`Cash`." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:-1 -msgid "Expense reports filtered by the status Posted, making the Register Payment button visible." +#: ../../content/applications/finance/expenses/reimburse.rst:85 +#: ../../content/applications/finance/expenses/reimburse.rst:130 +msgid ":guilabel:`Payment Method`: Select how the payment is made using the drop-down menu. If :guilabel:`Cash` is selected for the :guilabel:`Journal`, the only option available is :guilabel:`Manual Payment`. If :guilabel:`Bank` is selected for the :guilabel:`Journal`, the default options are :guilabel:`Manual Payment` or :guilabel:`Checks`." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:91 -msgid "Click the :guilabel:`Register Payment` button, and a :guilabel:`Register Payment` pop-up window appears. Enter the following information in the pop-up window:" +#: ../../content/applications/finance/expenses/reimburse.rst:89 +msgid ":guilabel:`Recipient Bank Account`: This field only appears if the :guilabel:`Journal` is set to :guilabel:`Bank`. The employee's :ref:`bank account ` populates this field, by default. If the employee has more than one trusted bank account on their employee profile, use the drop-down menu to select the desired bank account." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:94 -msgid ":guilabel:`Journal`: Select the accounting journal the payment should be posted to, using the drop-down menu. The default options are :guilabel:`Bank` or :guilabel:`Cash`." +#: ../../content/applications/finance/expenses/reimburse.rst:93 +msgid ":guilabel:`Amount`: The total amount being reimbursed populates this field, by default." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:100 -msgid ":guilabel:`Group Payments`: When multiple expense reports are selected for the same employee, this option appears. Tick the checkbox to have only one payment made, rather than issuing multiple payments to the same employee." +#: ../../content/applications/finance/expenses/reimburse.rst:94 +msgid ":guilabel:`Payment Date`: Enter the date the payment is issued in this field. The current date populates this field, by default." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:103 -msgid ":guilabel:`Payment Date`: Enter the date the payments are issued. The current date populates this field, by default." +#: ../../content/applications/finance/expenses/reimburse.rst:96 +msgid ":guilabel:`Memo`: The text entered in the :doc:`Expense Report Summary <../expenses/expense_reports>` field of the expense report populates this field, by default." msgstr "" #: ../../content/applications/finance/expenses/reimburse.rst:-1 -msgid "The Register Payment pop-up window filled out." +msgid "The Register Payment pop-up window filled out for an individual expense report\n" +"reimbursement." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:110 -msgid "When the fields on the pop-up window are completed, click the :guilabel:`Create Payments` button to register the payments, and reimburse the employees." +#: ../../content/applications/finance/expenses/reimburse.rst:103 +msgid "When the fields of the pop-up window are completed, click the :guilabel:`Create Payment` button to register the payment, and reimburse the employee. A green :guilabel:`In Payment` banner now appears on the expense report." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:116 -msgid "Report in next payslip" +#: ../../content/applications/finance/expenses/reimburse.rst:110 +msgid "Reimburse in bulk" msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:118 -msgid "If the *Reimburse in Payslip* option is activated on the *Settings* page, payments can be added to their next payslip, instead of issued manually." +#: ../../content/applications/finance/expenses/reimburse.rst:112 +msgid "To reimburse multiple expense reports at once, navigate to :menuselection:`Expenses app --> Expense Reports` to view all expense reports in a list view. Next, select the expense reports to be reimbursed." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:122 -msgid "Reimbursing expenses on payslips can **only** be done individually, on an expense report with a status of *Approved*. Once an expense report has a status of *Posted*, the option to reimburse in the following payslip does **not** appear." +#: ../../content/applications/finance/expenses/reimburse.rst:121 +msgid "Adjust the :guilabel:`STATUS` filter on the left side to only show :guilabel:`Posted` expense reports. This displays **only** expense reports that are able to be reimbursed." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:126 -msgid "Navigate to :menuselection:`Expenses app --> Expense Reports`, and click on the individual expense report being reimbursed on the following paycheck. Click the :guilabel:`Report in Next Payslip` smart button, and the expenses are added to the next payslip issued for that employee. Additionally, a message is logged in the chatter stating the expense is added to the following payslip." +#: ../../content/applications/finance/expenses/reimburse.rst:124 +msgid "Tick the checkbox next to the expense reports being reimbursed, then click the :guilabel:`Pay` button, and a :guilabel:`Pay` pop-up window loads. Enter the following information in the pop-up window:" msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:-1 -msgid "The Report in Next Payslip button, visible with an expense report status of Approved." +#: ../../content/applications/finance/expenses/reimburse.rst:134 +msgid ":guilabel:`Group Payments`: When multiple expense reports are selected for the same employee, this option appears. Tick the checkbox to have only one payment made per employee, rather than issuing multiple payments to the same employee." msgstr "" -#: ../../content/applications/finance/expenses/reimburse.rst:135 -msgid "The status for the expense report remains :guilabel:`Approved`. The status only changes to :guilabel:`Posted` (and then :guilabel:`Done`), when the paycheck is processed." +#: ../../content/applications/finance/expenses/reimburse.rst:137 +msgid ":guilabel:`Amount`: The total amount being reimbursed for all the expense reports populates this field, by default." msgstr "" #: ../../content/applications/finance/expenses/reimburse.rst:139 -msgid "Refer to the :doc:`Payslips <../../hr/payroll/payslips>` documentation for more information about processing paychecks." +msgid ":guilabel:`Payment Date`: Enter the date the payments are issued. The current date populates this field, by default." +msgstr "" + +#: ../../content/applications/finance/expenses/reimburse.rst:142 +msgid "When the fields on the :guilabel:`Pay` pop-up window are completed, click the :guilabel:`Create Payments` button to register the payments, and reimburse the employees." +msgstr "" + +#: ../../content/applications/finance/expenses/reimburse.rst:-1 +msgid "The pay pop-up window filled out for multiple reimbursements via checks." msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:3 -msgid "Re-invoice expenses" +msgid "Reinvoice expenses" msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:5 -msgid "If expenses are tracked on customer projects, they can be automatically charged back to the customer. This is done by :ref:`creating an expense `, referencing the sales order the expense is added to, and then :ref:`creating an expense report `." +msgid "If expenses are tracked on customer projects, they can be automatically charged back to the customer. This is done by :ref:`logging an expense `, referencing the corresponding sales order, and then :ref:`creating an expense report `." msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:10 -msgid "Next, managers :ref:`approve the expense report `, before the accounting department :ref:`posts the journal entries `." +msgid "Next, managers :ref:`approve the expense report `, then the accounting department :ref:`post the journal entries `." msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:13 -msgid "Finally, once the expense report is posted to a journal, the expenses appears on the specified :abbr:`SO (Sales Order)`. The :abbr:`SO (Sales Order)` is then :ref:`invoiced `, thus charging the customer for the expenses." +msgid "Finally, once the expense report is posted to a journal, the expenses appear on the specified :abbr:`SO (Sales Order)`. When the :abbr:`SO (Sales Order)` is :ref:`invoiced `, the customer is charged for the expenses." msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:18 @@ -15143,11 +15206,11 @@ msgid ":doc:`Expense reports <../expenses/expense_reports>`" msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:29 -msgid ":doc:`Approving expenses <../expenses/approve_expenses>`" +msgid ":doc:`Approve expenses <../expenses/approve_expenses>`" msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:30 -msgid ":doc:`Posting expenses in accounting <../expenses/post_expenses>`" +msgid ":doc:`Post expenses <../expenses/post_expenses>`" msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:33 @@ -15157,123 +15220,131 @@ msgid "Setup" msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:35 -msgid "First, specify the invoicing policy for each expense category. Navigate to :menuselection:`Expenses app --> Configuration --> Expense Categories`. Click on an expense category to view the expense category form. Under the :guilabel:`INVOICING` section, click the radio button next to the desired selection for :guilabel:`Re-Invoice Expenses`:" +msgid "First, specify the invoicing policy for each expense category. Navigate to :menuselection:`Expenses app --> Configuration --> Expense Categories`. Click on an expense category to view the expense category form. Under the :guilabel:`INVOICING` section, click the radio button next to the desired selection for :guilabel:`Re-Invoice costs`:" msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:40 -msgid ":guilabel:`No`: The expense category cannot be re-invoiced." +msgid ":guilabel:`No`: The expense category **cannot** be reinvoiced." msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:41 -msgid ":guilabel:`At cost`: The expense category invoices expenses at the cost set on the expense category form." +msgid ":guilabel:`At cost`: The expense category invoices expenses at the :guilabel:`Cost` set on the expense category form." msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:43 -msgid ":guilabel:`Sales price`: The expense category invoices at the sales price set on the expense form." +msgid ":guilabel:`Sales price`: The expense category invoices at the :guilabel:`Sales Price` set on the expense form." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:48 -msgid "Create an expense" +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:49 +msgid "Log an expense" msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:50 -msgid "First, when :doc:`creating a new expense <../expenses/log_expenses>`, the correct information needs to be entered to re-invoice the expense to a customer. Using the drop-down menu, select the :abbr:`SO (Sales Order)` to add the expense to in the :guilabel:`Customer to Reinvoice` field." +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:51 +msgid "First, when :doc:`creating a new expense <../expenses/log_expenses>`, the correct information needs to be entered to reinvoice the expense to a customer. Using the drop-down menu, select the :abbr:`SO (Sales Order)` to add the expense to in the :guilabel:`Customer to Reinvoice` field." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:54 -msgid "Next, select the :guilabel:`Analytic Distribution` the expense is posted to. Multiple accounts can be selected, if desired." +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:55 +msgid "Next, select the :guilabel:`Analytic Distribution` the expense is posted to. The options available are pulled from the **Projects** app." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:57 -msgid "To add another :guilabel:`Analytic Distribution`, click on the line to reveal the :guilabel:`Analytic` pop-over window. Click :guilabel:`Add a line`, then select the desired :guilabel:`Analytic Distribution` from the drop-down field. If selecting more than one :guilabel:`Analytic Distribution`, the :guilabel:`Percentage` fields **must** be modified. By default, both fields are populated with `100%`. Adjust the percentages for all the fields, so the total of all selected accounts equals `100%`." +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:58 +msgid "Multiple projects can be selected, if desired. To add another :guilabel:`Analytic Distribution`, click on the line to reveal the :guilabel:`Analytic` pop-over window. Click :guilabel:`Add a line`, then select the desired :guilabel:`Analytic Distribution` from the drop-down menu." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:65 -msgid "A painting company agrees to paint an office building that houses two different companies. During the estimate, a meeting is held at the office location to discuss the project." +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:-1 +msgid "An expense entry to reinvoice a project to the customer, for the gallery seating project." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:68 -msgid "Both companies agree to pay for the travel expenses for the painting company employees. When creating the expenses for the mileage and hotels, **both companies** are listed in the :guilabel:`Analytic Distribution` line, for 50% each." +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:66 +msgid "If selecting more than one :guilabel:`Analytic Distribution`, the :guilabel:`Percentage` fields **must** be modified. Both fields are populated with `100%`, by default. Adjust the percentages for all the fields, so the total of all selected accounts equals `100%`." +msgstr "" + +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:71 +msgid "A furniture company is building seating for two different locations for one client. The client agrees to pay for all travel expenses for site visits related to these two projects. The furniture company plans one trip to visit *both* locations." msgstr "" #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:75 +msgid "When creating the expenses for travel expenses, **both projects** are listed in the :guilabel:`Analytic Distribution` line, for 50% each." +msgstr "" + +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:81 msgid "Create an expense report" msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:77 +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:83 msgid "After the expenses are created, the expense report must be :ref:`created ` and :ref:`submitted `, in the same manner as all other expenses." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:80 +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:86 msgid "Once the expense report is submitted, a :icon:`fa-money` :guilabel:`Sales Orders` smart button appears at the top-center of both the expense report, and each individual expense record being reinvoiced." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:-1 -msgid "Ensure the customer to be invoiced is called out on the expense." -msgstr "" - -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:89 +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:91 msgid "Selecting the proper :abbr:`SO (Sales Order)` in the :guilabel:`Customer to Reinvoice` field is **critical**, since this is how expenses are automatically invoiced after an expense report is approved." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:93 +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:95 msgid "The :guilabel:`Customer to Reinvoice` field can be modified *only* until an expense report is **approved**. After an expense report is approved, the :guilabel:`Customer to Reinvoice` field is no longer able to be modified." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:100 -msgid "Approve and post expenses" +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:-1 +msgid "An expense report with a sales order smart button for reinvoicing." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:102 -msgid "Before :doc:`approving an expense report <../expenses/approve_expenses>`, ensure the :guilabel:`Analytic Distribution` section is populated for every expense line." +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:105 +msgid "Approve and post expenses" msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:105 -msgid "If an :guilabel:`Analytic Distribution` entry is missing, assign the correct accounts from the drop-down menu, then click :guilabel:`Approve`." +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:107 +msgid "Before :doc:`approving an expense report <../expenses/approve_expenses>`, ensure the :guilabel:`Analytic Distribution` section is populated for every relevant expense line." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:-1 -msgid "The expense report with all the Analytic Distribution lines populated." +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:110 +msgid "If an :guilabel:`Analytic Distribution` entry is missing, assign the correct accounts from the drop-down menu, then click :guilabel:`Approve`." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:113 +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:114 msgid "The :guilabel:`Approve` button **only** appears after an expense report has been :ref:`submitted `." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:116 +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:117 msgid "The accounting department is typically responsible for :doc:`posting journal entries <../expenses/post_expenses>`. To post expenses to an accounting journal, click :guilabel:`Post Journal Entries`. Once an expense report is approved, it can then be posted." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:120 +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:121 msgid "The :abbr:`SO (Sales Order)` is **only** updated *after* the journal entries are posted. Once the journal entries are posted, the expenses now appear on the referenced :abbr:`SO (Sales Order)`." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:126 +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:127 msgid "Invoice expenses" msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:128 +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:129 msgid "After the expense report has been approved, and the journal entries have been posted, the :abbr:`SO (Sales Order)` is updated, and the customer can be invoiced." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:131 -msgid "Select the expense report, and click the :icon:`fa-money` :guilabel:`Sales Orders` smart button to open the :abbr:`SO (Sales Order)`. The expenses to be re-invoiced now appear on the :abbr:`SO (Sales Order)`." +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:132 +msgid "Navigate to the expense report, and click the :icon:`fa-money` :guilabel:`Sales Orders` smart button to open the :abbr:`SO (Sales Order)`. The expenses to be reinvoiced now appear on the :abbr:`SO (Sales Order)`." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:136 +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:137 msgid "More than one :abbr:`SO (Sales Order)` can be referenced on an expense report. If more than one :abbr:`SO (Sales Order)` is referenced, clicking the :guilabel:`Sales Orders` smart button opens a list displaying all the :abbr:`SOs (Sales Order)` associated with that expense report. Click on a :abbr:`SO (Sales Order)` to open the individual :abbr:`SO (Sales Order)` details." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:141 +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:142 msgid "The expenses are listed in the :abbr:`SO (Sales Order)` :guilabel:`Order Lines` tab." msgstr "" +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:144 +msgid "Next, click :guilabel:`Create Invoice`, and a :guilabel:`Create invoices` pop-up window appears. Select if the invoice is a :guilabel:`Regular invoice`, a :guilabel:`Down payment (percentage)`, or a :guilabel:`Down payment (fixed amount)`. Then, click :guilabel:`Create Draft`. Doing so creates a draft invoice for the customer. Click :guilabel:`Confirm` to confirm the invoice, and the customer is invoiced for the expenses." +msgstr "" + #: ../../content/applications/finance/expenses/reinvoice_expenses.rst:-1 msgid "See the expenses listed on the sales order after clicking into it." msgstr "" -#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:147 -msgid "Next, click :guilabel:`Create Invoice`, and a :guilabel:`Create invoices` pop-up window appears. Select if the invoice is a :guilabel:`Regular invoice`, a :guilabel:`Down payment (percentage)`, or a :guilabel:`Down payment (fixed amount)`. Then, click :guilabel:`Create Draft Invoice`. Doing so creates a draft invoice for the customer. Click :guilabel:`Confirm` to confirm the invoice, and the customer is invoiced for the expenses." +#: ../../content/applications/finance/expenses/reinvoice_expenses.rst:154 +msgid ":doc:`../../sales/sales/invoicing`" msgstr "" #: ../../content/applications/finance/fiscal_localizations.rst:5 @@ -18783,10 +18854,6 @@ msgstr "" msgid "Make sure to :ref:`install ` the :guilabel:`Codaclean` (`l10n_be_codaclean`) module." msgstr "" -#: ../../content/applications/finance/fiscal_localizations/belgium.rst:456 -msgid "Connection with Odoo" -msgstr "" - #: ../../content/applications/finance/fiscal_localizations/belgium.rst:458 msgid "To connect Odoo with Codaclean, follow these steps:" msgstr "" @@ -20664,26 +20731,6 @@ msgstr "" msgid ":doc:`../accounting/payments/pay_checks`" msgstr "" -#: ../../content/applications/finance/fiscal_localizations/canada.rst:300 -msgid "Receive pre-authorized debits" -msgstr "" - -#: ../../content/applications/finance/fiscal_localizations/canada.rst:302 -msgid "Pre-authorized debits are a method for receiving payments from customers, where the customer authorizes the business to withdraw funds from their bank account on a recurring basis. This functionality is commonly used for subscriptions, recurring invoices, and other regular payments." -msgstr "" - -#: ../../content/applications/finance/fiscal_localizations/canada.rst:306 -msgid "In the Odoo Canadian localization, pre-authorized debits are facilitated through an :doc:`integration with Stripe <../payment_providers/stripe>`." -msgstr "" - -#: ../../content/applications/finance/fiscal_localizations/canada.rst:310 -msgid ":doc:`Setting up payment providers <../payment_providers>`" -msgstr "" - -#: ../../content/applications/finance/fiscal_localizations/canada.rst:311 -msgid "`Stripe's pre-authorized debit payments documentation `_" -msgstr "" - #: ../../content/applications/finance/fiscal_localizations/chile.rst:3 msgid "Chile" msgstr "" @@ -24836,11 +24883,6 @@ msgstr "" msgid "Click :guilabel:`Send` and, in the :guilabel:`Print & Send` window, enable :guilabel:`By Peppol`." msgstr "" -#: ../../content/applications/finance/fiscal_localizations/france.rst:148 -#: ../../content/applications/finance/fiscal_localizations/jordan.rst:180 -msgid "Click :guilabel:`Send`." -msgstr "" - #: ../../content/applications/finance/fiscal_localizations/france.rst:150 msgid "Once the invoice is sent, the Peppol status of the invoice is updated to :guilabel:`Done`." msgstr "" @@ -33756,7 +33798,7 @@ msgid "After configuring the Peruvian :ref:`electronic invoicing `;" +msgid ":ref:`Client account registration `;" msgstr "" #: ../../content/applications/finance/fiscal_localizations/peru.rst:927 diff --git a/locale/sources/general.pot b/locale/sources/general.pot index 437c47e586..555962f9f3 100644 --- a/locale/sources/general.pot +++ b/locale/sources/general.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 18.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-17 08:58+0000\n" +"POT-Creation-Date: 2025-11-18 11:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -3256,7 +3256,7 @@ msgid "Log files for older dates are named using their dates and are compressed. msgstr "" #: ../../content/applications/general/email_communication/faq.rst:321 -msgid "For more information on logs and how to access them via the Odoo.sh dashboard, refer to the :ref:`Odoo.sh logs documentation `." +msgid "For more information on logs and how to access them via the Odoo.sh dashboard, refer to the :ref:`Odoo.sh logs documentation `." msgstr "" #: ../../content/applications/general/email_communication/faq.rst:324 @@ -6564,7 +6564,7 @@ msgid "In the :guilabel:`Update` popup that opens, click :guilabel:`Force Driver msgstr "" #: ../../content/applications/general/iot/iot_advanced/updating_iot.rst:82 -msgid "If you have an :doc:`on-premise ` or :doc:`Odoo.sh ` database, the configured server must be up-to-date to ensure the handlers' code includes the latest fixes and patches." +msgid "If you have an :doc:`on-premise ` or :doc:`Odoo.sh ` database, the configured server must be up-to-date to ensure the handlers' code includes the latest fixes and patches." msgstr "" #: ../../content/applications/general/iot/iot_advanced/updating_iot.rst:87 diff --git a/locale/sources/hr.pot b/locale/sources/hr.pot index febb047ee1..21210a8b63 100644 --- a/locale/sources/hr.pot +++ b/locale/sources/hr.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 18.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-17 08:58+0000\n" +"POT-Creation-Date: 2025-11-18 11:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2413,7 +2413,7 @@ msgstr "" #: ../../content/applications/hr/employees.rst:58 #: ../../content/applications/hr/fleet/new_vehicle.rst:16 #: ../../content/applications/hr/lunch.rst:19 -#: ../../content/applications/hr/payroll.rst:15 +#: ../../content/applications/hr/payroll.rst:38 #: ../../content/applications/hr/recruitment.rst:31 msgid "Settings" msgstr "" @@ -2471,11 +2471,11 @@ msgid "Work organization" msgstr "" #: ../../content/applications/hr/employees.rst:106 -msgid "Using the drop-down menu, select the default :guilabel:`Company Working Hours`. The default options are :guilabel:`Standard 40 hours/week`, :guilabel:`Appointment Resource Default Calendar`, and :guilabel:`Standard 32 hours/week (4 work days, friday free)`." +msgid "Using the drop-down menu, select the default :guilabel:`Company Working Hours`. The default options are :guilabel:`Standard 40 hours/week`, :guilabel:`Appointment Resource Default Calendar`, and :guilabel:`Standard 32 hours/week (4 work days, Friday free)`." msgstr "" #: ../../content/applications/hr/employees.rst:110 -msgid "The available working hours listed are the same as the configured :ref:`working schedules ` in the **Payroll** app. Working hours can be created and modified from both the **Payroll** and **Employees** apps." +msgid "The available working hours listed are the same as the configured :doc:`working schedules ` in the **Payroll** app. Working hours can be created and modified from both the **Payroll** and **Employees** apps." msgstr "" #: ../../content/applications/hr/employees.rst:115 @@ -2667,7 +2667,7 @@ msgid "Log a certification" msgstr "" #: ../../content/applications/hr/employees/certifications.rst:71 -msgid "To log a certification for an employee, navigate to :menuselection:`Employees app --> Reporting --> Certifications`. Click :guilabel:`New`, and a blank certification form loads. Enter the following information on the form:" +msgid "To log a certification for an employee, navigate to :menuselection:`Employees app --> Learning --> Certifications`. Click :guilabel:`New`, and a blank certification form loads. Enter the following information on the form:" msgstr "" #: ../../content/applications/hr/employees/certifications.rst:75 @@ -3134,7 +3134,6 @@ msgid "Resumé tab" msgstr "" #: ../../content/applications/hr/employees/new_employee.rst:98 -#: ../../content/applications/hr/payroll.rst:672 #: ../../content/applications/hr/recruitment/recruitment-flow.rst:35 msgid "Resumé" msgstr "" @@ -3868,7 +3867,6 @@ msgstr "" #: ../../content/applications/hr/fleet/accidents.rst:48 #: ../../content/applications/hr/frontdesk.rst:35 #: ../../content/applications/hr/lunch/products.rst:12 -#: ../../content/applications/hr/payroll.rst:692 #: ../../content/applications/hr/time_off.rst:252 msgid "Enter the following information on the form:" msgstr "" @@ -4713,6 +4711,90 @@ msgstr "" msgid "To have this report appear as the default report when opening the :guilabel:`Services` dashboard, click the :icon:`fa-caret-down` :guilabel:`(Toggle Search Panel)` icon at the far-right of the search bar. Next, click :guilabel:`Save current search`, beneath the :icon:`fa-star` :guilabel:`Favorites` column, which reveals another drop-down column beneath it. Tick the checkbox beside :guilabel:`Default Filter`, then click :guilabel:`Save`. Then, this customized :guilabel:`Services` dashboard appears, by default, any time the :guilabel:`Services` dashboard is accessed." msgstr "" +#: ../../content/applications/hr/fleet/cost_analysis.rst:3 +msgid "Cost analysis report" +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:5 +msgid "The **Fleet** app allows for analysis on :ref:`total vehicle costs `, including both contract costs and service and repair charges. Data can be adjusted to view total costs by :ref:`vehicle ` or :ref:`driver `. Additionally, costs can be compared with the previous year, quarter, or month, to view changes in fleet costs over time." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:13 +msgid "Total costs" +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:15 +msgid "To view the *Cost Analysis Report*, navigate to :menuselection:`Fleet app --> Reporting --> Costs`. The default report shows a bar chart of service and contract costs for the current year, organized by month." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:20 +msgid "In this report, it is possible to determine that June had the highest total costs, with almost $14,000 dollars in contract and repair costs, while January had the lowest costs, with less than $2,000 of contract costs and no repairs." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:0 +msgid "The default cost analysis report showing contract and service costs." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:30 +msgid "Cost by vehicle" +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:32 +msgid "Some companies want to view costs not by month, but by vehicle. This allows fleet managers to determine which vehicles cost the most to keep on the road, aiding in decision making for future purchases and repairs." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:36 +msgid "To view these metrics, open the default :ref:`cost analysis report `. Next, click into the search bar, and click :guilabel:`Vehicle` under the :icon:`oi-group` :guilabel:`Group By` column." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:41 +msgid "From this report, it can be determined the `Toyota Corolla` with the license plate `STU-1718` cost the most, with almost $14,000 in costs for the year. Additionally, the both `Nissan Micro` vehicles and the `Ford Focus` cost the least, with under $5,000 in total costs each." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:0 +msgid "The cost analysis report showing annual costs by vehicle." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:51 +msgid "Cost by driver" +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:53 +msgid "Another useful metric is to determine which drivers incur the most repair costs, allowing fleet managers to determine which vehicles to assign which drivers. To view this configuration, open the default :ref:`cost analysis report `. Next, click into the search bar, and click :guilabel:`Driver` under the :icon:`oi-group` :guilabel:`Group By` column. Finally, click the :icon:`oi-view-pivot` :guilabel:`(Pivot)` icon." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:59 +msgid "The report now shows the totals for both :guilabel:`Contract` and :guilabel:`Service` costs for each driver in the database. This allows fleet managers to see which drivers incur the most repair costs." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:63 +msgid "This report shows that `Sandra Elvis` had no service costs for the year, while both `Doris Cole` and `David Armstrong` had almost $9,000 in repairs. While this does not explain why those two drivers incurred the most costs, it is possible for the fleet manager to :ref:`investigate the service records ` for those two drivers, to determine why there were such high costs for the year." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:0 +msgid "The cost analysis report showing costs by driver in a pivot table." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:73 +msgid "Detailed comparison" +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:75 +msgid "All reports in the **Fleet** app are able to compare costs from previous time periods, either year, quarter, or month. To view a detailed cost comparison between the third and fourth quarter, open the default :ref:`cost analysis report `, then click the :icon:`oi-view-pivot` :guilabel:`(Pivot)` icon. Next, click into the search bar and click :guilabel:`Q4` in the :icon:`fa-filter` :guilabel:`Filters` column, then :guilabel:`Date: Previous Period` in the :icon:`fa-adjust` :guilabel:`Comparison` column." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:82 +msgid "The report now shows detailed contract and service costs for each vehicle, with a :guilabel:`Variation` column, showing increases or decreases in costs from the third and fourth quarter of the current year." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:88 +msgid "In this example, it can be determined that the `Ford Focus` had the greatest change in terms of lowered total costs, with a 75.25% reduction in costs. Additionally, the `Nissan Micro` with the license plate of `DEF-456` was the only vehicle with an overall increase in total costs, with an increase of 41.78%." +msgstr "" + +#: ../../content/applications/hr/fleet/cost_analysis.rst:0 +msgid "A pivot table with a detailed cost comparison between the current and previous year." +msgstr "" + #: ../../content/applications/hr/fleet/models.rst:3 msgid "Models & manufacturers" msgstr "" @@ -4822,7 +4904,6 @@ msgid ":guilabel:`Trailer Hitch`: Tick this checkbox if the vehicle has a traile msgstr "" #: ../../content/applications/hr/fleet/models.rst:90 -#: ../../content/applications/hr/payroll.rst:222 msgid "Salary" msgstr "" @@ -5380,59 +5461,59 @@ msgstr "" msgid "Different tabs or fields may be visible on the :guilabel:`Create Vendor` form, depending on what other applications are installed." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:109 +#: ../../content/applications/hr/fleet/service.rst:111 msgid "View services" msgstr "" -#: ../../content/applications/hr/fleet/service.rst:111 +#: ../../content/applications/hr/fleet/service.rst:113 msgid "To view all services logged in the database, including old and new requests, navigate to :menuselection:`Fleet app --> Fleet --> Services`. All services appear in a list view, including all the details for each service." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:115 +#: ../../content/applications/hr/fleet/service.rst:117 msgid "The service records are grouped by :ref:`service type `. The number of repairs for each service type appears in parentheses after the name of the service type." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:118 +#: ../../content/applications/hr/fleet/service.rst:120 msgid "Each service listed displays the following information:" msgstr "" -#: ../../content/applications/hr/fleet/service.rst:120 +#: ../../content/applications/hr/fleet/service.rst:122 msgid ":guilabel:`Date`: the date that the service, or repair, was performed (or requested to be performed)." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:122 +#: ../../content/applications/hr/fleet/service.rst:124 msgid ":guilabel:`Description`: a short description of the specific type of service, or repair, performed to clarify the specific service." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:124 +#: ../../content/applications/hr/fleet/service.rst:126 msgid ":guilabel:`Service Type`: the type of service, or repair, performed. This is selected from a list of services that :ref:`must be configured `." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:126 +#: ../../content/applications/hr/fleet/service.rst:128 msgid ":guilabel:`Vehicle`: the specific vehicle the service was performed on." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:127 +#: ../../content/applications/hr/fleet/service.rst:129 msgid ":guilabel:`Driver`: the current driver for the vehicle." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:128 +#: ../../content/applications/hr/fleet/service.rst:130 msgid ":guilabel:`Vendor`: the specific vendor who performed the service, or repair." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:129 +#: ../../content/applications/hr/fleet/service.rst:131 msgid ":guilabel:`Notes`: any information associated with the service, or repair, that is documented to add clarification." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:131 +#: ../../content/applications/hr/fleet/service.rst:133 msgid ":guilabel:`Cost`: the total cost of the service, or repair." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:132 +#: ../../content/applications/hr/fleet/service.rst:134 msgid ":guilabel:`Stage`: the status of the service, or repair. Options are :guilabel:`New`, :guilabel:`Running`, :guilabel:`Done`, or :guilabel:`Cancelled`." msgstr "" -#: ../../content/applications/hr/fleet/service.rst:135 +#: ../../content/applications/hr/fleet/service.rst:137 msgid "At the bottom of the :guilabel:`Cost` column, the total cost of all services and repairs are listed." msgstr "" @@ -5682,7 +5763,6 @@ msgid "This is a security measure designed to prevent unauthorized access to the msgstr "" #: ../../content/applications/hr/frontdesk.rst:215 -#: ../../content/applications/hr/payroll/reporting.rst:3 #: ../../content/applications/hr/referrals/reporting.rst:3 #: ../../content/applications/hr/time_off/reporting.rst:3 msgid "Reporting" @@ -6986,1203 +7066,427 @@ msgid "The second of the extras configured for a free beverage with purchase." msgstr "" #: ../../content/applications/hr/payroll.rst:5 -#: ../../content/applications/hr/payroll.rst:53 -#: ../../content/applications/hr/payroll/reporting.rst:31 +#: ../../content/applications/hr/payroll.rst:121 msgid "Payroll" msgstr "" #: ../../content/applications/hr/payroll.rst:7 -msgid "Odoo *Payroll* is used to process work entries and create payslips for employees. *Payroll* works in conjunction with other Odoo apps, such as *Employees*, *Time Off*, *Attendances*, and *Planning*." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:10 -msgid "The *Payroll* app helps ensure there are no issues or conflicts when validating work entries. It also handles country-specific localizations to ensure payslips follow local rules and taxes, and allows for salary assignments." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:17 -msgid "Configure the *Payroll* app by navigating to :menuselection:`Payroll app --> Configuration --> Settings`. The various settings for accounting, localizations, time off, alerts, and payslips are specified here." +msgid "Odoo's **Payroll** app is used to calculate employees' worked time in conjunction with other Odoo apps, such as **Employees**, **Time Off**, **Attendances**, and **Planning**, and create corresponding payslips." msgstr "" -#: ../../content/applications/hr/payroll.rst:24 -msgid "Accounting" +#: ../../content/applications/hr/payroll.rst:11 +msgid "When an employee is hired, they must sign a :doc:`contract `. The contract outlines how the employee is compensated, including the salary structure and rules their pay is calculated from, when they work (their `working schedule`), and what benefits they receive." msgstr "" -#: ../../content/applications/hr/payroll.rst:26 -msgid "The accounting section of the configuration menu relates to three options:" +#: ../../content/applications/hr/payroll.rst:16 +msgid "It is critical to install the correct :doc:`country-specific localization `, as this configures all local and national rules, regulations, and applicable taxes for the selected country." msgstr "" -#: ../../content/applications/hr/payroll.rst:28 -msgid ":guilabel:`Payroll Entries`: enable this option to post payroll slips in accounting." +#: ../../content/applications/hr/payroll.rst:20 +msgid "In addition to the employee contract, any :doc:`salary attachments ` must be configured before running payroll." msgstr "" -#: ../../content/applications/hr/payroll.rst:29 -msgid ":guilabel:`Payroll SEPA`: enable this option to create SEPA payments." +#: ../../content/applications/hr/payroll.rst:23 +msgid "When it is time to run payroll according to the business's schedule (monthly, weekly, bi-weekly, etc.), :doc:`payslips ` can be created individually or in :doc:`groups `. Odoo calculates when the employees worked based on their :doc:`work entries `. Work entries are created according to their :doc:`contracts `, based on information from the **Attendances**, **Planning**, or **Timesheets** apps. Any errors with work entries **must** be resolved *before* continuing to process payroll." msgstr "" #: ../../content/applications/hr/payroll.rst:30 -msgid ":guilabel:`Batch Account Move Lines`: enable this option to have a single account move line created from all the accounting entries from the same period. This disables the generation of single payments." +msgid "After all issues or conflicts are resolved, payslips are :ref:`processed `, and then :ref:`employees are paid `, either with a wire transfer or a physical check." msgstr "" #: ../../content/applications/hr/payroll.rst:35 -#: ../../content/applications/hr/payroll/payroll_localizations/belgium.rst:2518 -#: ../../content/applications/hr/time_off.rst:5 -msgid "Time off" +msgid "It is possible to pay employees with cash, but this is not recommended." msgstr "" -#: ../../content/applications/hr/payroll.rst:37 -msgid ":guilabel:`Deferred Time Off`: if time off is taken after payslips are validated, the time off needs to be applied to the following pay period. Select the person that will be notified for these specific time off situations using the drop-down menu in the :guilabel:`Responsible` field." +#: ../../content/applications/hr/payroll.rst:40 +msgid "Before running payroll, various settings for the **Payroll** app **must** be configured. Navigate to :menuselection:`Payroll app --> Configuration --> Settings`. The various settings for :ref:`accounting `, :ref:`localizations `, :ref:`time off `, and :ref:`general payroll settings ` are specified here." msgstr "" -#: ../../content/applications/hr/payroll.rst:42 -msgid "An employee is paid on the 15th of the month and the last day of the month. Payslips are typically processed a day before." +#: ../../content/applications/hr/payroll.rst:49 +msgid "Accounting" msgstr "" -#: ../../content/applications/hr/payroll.rst:45 -msgid "If an employee's payslip is approved and processed on the 30th, but that same employee takes an unexpected sick day on the 31st, the time off needs to be logged." +#: ../../content/applications/hr/payroll.rst:51 +msgid "Configure the following in the accounting section of the configuration menu:" msgstr "" -#: ../../content/applications/hr/payroll.rst:48 -msgid "Since the employee is already paid for a regular work day on the 31st, to keep the time off balances correct, the sick day is moved/applied to the 1st of the next month (the next pay period)." +#: ../../content/applications/hr/payroll.rst:53 +msgid ":guilabel:`Payroll Entries`: Enable this option to post payroll slips in the **Accounting** app, in a `Salaries` box on the main dashboard." msgstr "" #: ../../content/applications/hr/payroll.rst:55 -msgid ":guilabel:`Contract Expiration Notice Period`: enter the number of :guilabel:`Days` before a contract expires, and Odoo notifies the responsible person about the upcoming expiration at that time." +msgid ":guilabel:`Payroll SEPA`: Enable this option to create :abbr:`SEPA (Single Euro Payments Area)` payments." msgstr "" -#: ../../content/applications/hr/payroll.rst:58 -msgid ":guilabel:`Work Permit Expiration Notice Period`: enter the number of :guilabel:`Days` before a work permit expires, and Odoo notifies the responsible person about the upcoming expiration at that time." +#: ../../content/applications/hr/payroll.rst:57 +msgid ":guilabel:`Batch Account Move Lines`: Enable this option to have a single account move line created from all the accounting entries of the same period. This anonymizes accounting entries and disables the creation of individual payments." msgstr "" -#: ../../content/applications/hr/payroll.rst:61 -msgid ":guilabel:`Payslip PDF Display`: enable this option to show the payslip's PDF when the state is validated." +#: ../../content/applications/hr/payroll.rst:64 +msgid "Localizations" msgstr "" -#: ../../content/applications/hr/payroll.rst:67 -#: ../../content/applications/hr/payroll/payroll_localizations/belgium.rst:29 -#: ../../content/applications/hr/payroll/payroll_localizations/belgium.rst:2766 -#: ../../content/applications/hr/payroll/work_entries.rst:3 -msgid "Work entries" +#: ../../content/applications/hr/payroll.rst:66 +#: ../../content/applications/hr/payroll/payroll_localizations.rst:7 +msgid "*Localizations* are country-specific settings preconfigured in Odoo at the creation of the database, which account for all taxes, fees, and allowances for that particular country." msgstr "" #: ../../content/applications/hr/payroll.rst:69 -msgid "A *work entry* is an individual record on an employee's timesheet. Work entries can be configured to account for all types of work and time off, such as :guilabel:`Attendance`, :guilabel:`Sick Time Off`, :guilabel:`Training`, or :guilabel:`Public Holiday`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:74 -msgid ":doc:`Manage work entries `" +msgid "The :guilabel:`Localization` section of the **Payroll** app :guilabel:`Settings` page includes specific settings that need to be configured for the specific country." msgstr "" -#: ../../content/applications/hr/payroll.rst:77 -#: ../../content/applications/hr/payroll/payroll_localizations/australia.rst:786 -#: ../../content/applications/hr/payroll/payroll_localizations/belgium.rst:2776 -msgid "Work entry types" +#: ../../content/applications/hr/payroll.rst:72 +msgid "The settings and options shown in this section vary, depending on the :doc:`localization enabled ` for the database." msgstr "" -#: ../../content/applications/hr/payroll.rst:79 -msgid "When creating a work entry in the *Payroll* application, or when an employee enters new time off types in *Time Off* application, a :guilabel:`Work Entry Type` needs to be selected. The list of :guilabel:`Work Entry Types` is automatically created based on localization settings set in the database." +#: ../../content/applications/hr/payroll.rst:76 +msgid "It is **not** recommended to alter the localization settings, unless specifically required due to special circumstances. For example, a new law is passed that changes basic salary rules, or a company is exempt from specific taxes." msgstr "" -#: ../../content/applications/hr/payroll.rst:84 -msgid "To view the current work entry types available, go to :menuselection:`Payroll app --> Configuration --> Work Entries --> Work Entry Types`." +#: ../../content/applications/hr/payroll.rst:81 +msgid "Odoo can handle multi-company configurations. This is generally done when there is a main company or office location, such as a headquarters, with other offices or branches located either in the country or internationally, that fall under that main company or headquarters. In Odoo, each company, including the headquarters, **must** be set up as its own company or branch using the multi-company method." msgstr "" #: ../../content/applications/hr/payroll.rst:87 -msgid "Each work entry type has a code to aid in the creation of payslips, and to ensure all taxes and fees are correctly entered." +msgid "Each company can have a different localization setting, since locations can vary worldwide, where rules and laws differ." msgstr "" -#: ../../content/applications/hr/payroll.rst:-1 -msgid "List of all work entry types currently available for use, with the payroll code and color." +#: ../../content/applications/hr/payroll.rst:90 +msgid "For more information on companies, refer to the :doc:`companies <../general/companies>` documentation, or the :doc:`multi-company <../general/companies/multi_company>` documentation, which covers how to set up multiple companies." msgstr "" #: ../../content/applications/hr/payroll.rst:95 -msgid "New work entry type" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:97 -msgid "To create a new :guilabel:`Work Entry Type`, click the :guilabel:`New` button, and enter the information for the following sections on the form." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:101 -#: ../../content/applications/hr/payroll.rst:529 -#: ../../content/applications/hr/payroll/contracts.rst:50 -msgid "General information section" +#: ../../content/applications/hr/payroll.rst:153 +msgid ":doc:`payroll/payroll_localizations`" msgstr "" -#: ../../content/applications/hr/payroll.rst:103 -msgid ":guilabel:`Work Entry Type Name`: the name should be short and descriptive, such as `Sick Time` or `Public Holiday`." +#: ../../content/applications/hr/payroll.rst:100 +#: ../../content/applications/hr/payroll/payroll_localizations/belgium.rst:2518 +#: ../../content/applications/hr/time_off.rst:5 +msgid "Time off" msgstr "" -#: ../../content/applications/hr/payroll.rst:105 -msgid ":guilabel:`Payroll Code`: this code appears with the work entry type on timesheets and payslips. Since the code is used in conjunction with the *Accounting* application, it is advised to check with the accounting department for a code to use." +#: ../../content/applications/hr/payroll.rst:102 +msgid ":guilabel:`Deferred Time Off`: If time off is taken *after* payslips are validated, the time off must be applied to the following pay period to avoid cancelling then reprocessing payslips. Select the person responsible for these specific time off situations using the drop-down menu in the :guilabel:`Responsible` field." msgstr "" #: ../../content/applications/hr/payroll.rst:108 -msgid ":guilabel:`External Code`: this code is used for exporting data to a third-party payroll service. Check with the third-party being used to determine the :guilabel:`External Code` to enter for the new work entry type." +msgid "An employee is paid on the 15th of the month and the last day of the month. Payslips are typically processed one day before." msgstr "" #: ../../content/applications/hr/payroll.rst:111 -msgid ":guilabel:`Color`: select a color for the particular work entry type." +msgid "An employee's payslip is approved and processed on the 30th, but that same employee took an unexpected sick day on the 31st." msgstr "" #: ../../content/applications/hr/payroll.rst:114 -msgid "Display in payslip section" +msgid "Since the employee was already paid for a regular workday on the 31st, to keep the time off balances correct, the sick day is applied to the 1st of the next month (during the next pay period)." msgstr "" -#: ../../content/applications/hr/payroll.rst:116 -msgid ":guilabel:`Rounding`: the rounding method selected determines how quantities on timesheet entries are displayed on the payslip." +#: ../../content/applications/hr/payroll.rst:123 +msgid "The payroll section allows for the installation of a :doc:`payroll localization `. Click :icon:`oi-arrow-right` :guilabel:`Choose a Payroll Localization` and a Kanban view of all available payroll localizations loads. Click :guilabel:`Install` on the desired localization to install it. If a localization has been installed, only a :guilabel:`Module Info` button appears for that specific localization." msgstr "" -#: ../../content/applications/hr/payroll.rst:119 -msgid ":guilabel:`No Rounding`: entry is not modified." +#: ../../content/applications/hr/payroll.rst:129 +msgid "Once a localization has been installed, configure the following fields:" msgstr "" -#: ../../content/applications/hr/payroll.rst:120 -msgid ":guilabel:`Half Day`: entry is rounded to the closest half day amount." +#: ../../content/applications/hr/payroll.rst:131 +msgid ":guilabel:`Contract Expiration Notice Period`: Enter the number of :guilabel:`Days` before a contract expires, when Odoo notifies the responsible person about the upcoming expiration." msgstr "" -#: ../../content/applications/hr/payroll.rst:121 -msgid ":guilabel:`Day`: entry is rounded to the closest full day amount." +#: ../../content/applications/hr/payroll.rst:133 +msgid ":guilabel:`Payslip PDF Display`: Enable this option to show the payslip's PDF when the state is validated." msgstr "" -#: ../../content/applications/hr/payroll.rst:124 -msgid "If the working time is set to an 8-hour work day (40-hour work week), and an employee enters a time of 5.5 hours on a work entry, and :guilabel:`Rounding` is set to :guilabel:`No Rounding`, the entry remains 5.5 hours. If :guilabel:`Rounding` is set to :guilabel:`Half Day`, the entry is changed to 4 hours. If it is set to :guilabel:`Day`, it is changed to 8 hours." +#: ../../content/applications/hr/payroll.rst:135 +msgid ":guilabel:`Work Permit Expiration Notice Period`: Enter the number of :guilabel:`Days` before a work permit expires, when Odoo notifies the responsible person about the upcoming expiration." msgstr "" -#: ../../content/applications/hr/payroll.rst:130 -msgid "Unpaid section" +#: ../../content/applications/hr/payroll.rst:137 +msgid ":guilabel:`YTD Reset Date`: Enter the date when the :abbr:`YTD (Year To Date)` is reset to. By default, this field is set to January 1st." msgstr "" -#: ../../content/applications/hr/payroll.rst:132 -msgid ":guilabel:`Unpaid in Structures Types`: if the work entry is for work that is not paid, specify which pay structure the unpaid work entry applies to from the drop-down menu. Some situations where work is logged on a payslip, but no compensation given would be for unpaid internships, unpaid training, or volunteer work." +#: ../../content/applications/hr/payroll.rst:141 +msgid ":doc:`payroll/contracts`" msgstr "" -#: ../../content/applications/hr/payroll.rst:138 -msgid "Valid for advantages section" +#: ../../content/applications/hr/payroll.rst:142 +msgid ":doc:`payroll/salaries`" msgstr "" -#: ../../content/applications/hr/payroll.rst:140 -msgid ":guilabel:`Meal Voucher`: if the work entry should count towards a meal voucher, check the box." +#: ../../content/applications/hr/payroll.rst:143 +msgid ":doc:`payroll/work_entries`" msgstr "" -#: ../../content/applications/hr/payroll.rst:141 -msgid ":guilabel:`Representation Fees`: if the work entry should count towards representation fees, check the box." +#: ../../content/applications/hr/payroll.rst:144 +msgid ":doc:`payroll/working_schedules`" msgstr "" -#: ../../content/applications/hr/payroll.rst:143 -msgid ":guilabel:`Private Car Reimbursement`: if the work entry should count towards a private car reimbursement, check the box." +#: ../../content/applications/hr/payroll.rst:145 +msgid ":doc:`payroll/time_off_to_report`" +msgstr "" + +#: ../../content/applications/hr/payroll.rst:146 +msgid ":doc:`payroll/salary_attachments`" msgstr "" #: ../../content/applications/hr/payroll.rst:147 -msgid "Time off options section" +msgid ":doc:`payroll/payslips`" msgstr "" -#: ../../content/applications/hr/payroll.rst:149 -msgid ":guilabel:`Time Off`: check this box if the work entry type can be selected for a time off request, or entry, in the *Time Off* application." +#: ../../content/applications/hr/payroll.rst:148 +msgid ":doc:`payroll/batches`" msgstr "" -#: ../../content/applications/hr/payroll.rst:152 -msgid "If :guilabel:`Time Off` is checked, a :guilabel:`Time Off Type` field appears. This field has a drop-down menu to select the specific types of time off, such as `Paid Time Off`, `Sick Time Off`, or `Extra Hours`, for example." +#: ../../content/applications/hr/payroll.rst:149 +msgid ":doc:`payroll/commissions`" msgstr "" -#: ../../content/applications/hr/payroll.rst:156 -msgid "A new type of time off can be entered in the field, if the listed types of time off in the drop-down menu do **not** display the type of time off needed." +#: ../../content/applications/hr/payroll.rst:150 +msgid ":doc:`payroll/payroll_analysis`" msgstr "" -#: ../../content/applications/hr/payroll.rst:160 -msgid "Reporting section" +#: ../../content/applications/hr/payroll.rst:151 +msgid ":doc:`payroll/headcount`" msgstr "" -#: ../../content/applications/hr/payroll.rst:162 -msgid ":guilabel:`Unforeseen Absence`: if the work entry should be visible on the unforeseen absences report, check this box." +#: ../../content/applications/hr/payroll.rst:152 +msgid ":doc:`payroll/work_entry_analysis`" msgstr "" -#: ../../content/applications/hr/payroll.rst:-1 -msgid "New work entry type form with all fields to be filled in." +#: ../../content/applications/hr/payroll/batches.rst:3 +msgid "Batches" msgstr "" -#: ../../content/applications/hr/payroll.rst:172 -msgid "Working schedules" +#: ../../content/applications/hr/payroll/batches.rst:5 +msgid "Batches are used to generate multiple :doc:`payslips ` at once and process them in a group, rather than create and process individual payslips. This method not only helps the payroll department pay employees in less time, but it also helps keep payslips organized." msgstr "" -#: ../../content/applications/hr/payroll.rst:174 -msgid "To view the currently configured working schedules, go to :menuselection:`Payroll app --> Configuration --> Work Entries --> Working Schedules`. The working schedules that are available for an employee's contracts are found in this list." +#: ../../content/applications/hr/payroll/batches.rst:9 +msgid "Typically, a company's payroll department :ref:`creates a new batch ` for each salary structure, for every pay period (usually weekly, bi-weekly, or monthly). If desired, batches can be further organized by department, job position, or salary structure type." msgstr "" -#: ../../content/applications/hr/payroll.rst:178 -msgid "Working schedules are company-specific. Each company **must** identify each type of working schedule they use. If the database is created for only one company, the company column is not available." +#: ../../content/applications/hr/payroll/batches.rst:13 +msgid "Once a batch is made, :ref:`payslips are added to the batch `, then the batch is processed, and employees are paid." msgstr "" -#: ../../content/applications/hr/payroll.rst:182 -msgid "An Odoo database containing multiple companies that use a standard 40-hour work week needs to have a separate working schedule entry for each company that uses the 40-hour standard work week." +#: ../../content/applications/hr/payroll/batches.rst:17 +msgid "View batches" msgstr "" -#: ../../content/applications/hr/payroll.rst:185 -msgid "A database with five companies that all use a standard 40-hour work week needs to have five separate 40-hour working schedules configured." +#: ../../content/applications/hr/payroll/batches.rst:19 +msgid "To view all the batches in the database, navigate to :menuselection:`Payroll app --> Payslips --> Batches` to display all payslip batches that have been created. These payslip batches are displayed in a list view, by default." msgstr "" -#: ../../content/applications/hr/payroll.rst:-1 -msgid "All working schedules available to use currently set up in the database for the company." +#: ../../content/applications/hr/payroll/batches.rst:23 +msgid "Each batch displays the :guilabel:`Name`, the dates the batch includes (the :guilabel:`Date From` and :guilabel:`Date To` fields), its :guilabel:`Status`, the number of payslips in the batch (:guilabel:`Payslips Count`), and the :guilabel:`Company`." msgstr "" -#: ../../content/applications/hr/payroll.rst:195 -msgid "New working schedule" +#: ../../content/applications/hr/payroll/batches.rst:-1 +msgid "View displaying all batches created." msgstr "" -#: ../../content/applications/hr/payroll.rst:197 -msgid "To create a new working schedule, click the :guilabel:`New` button, and enter the information on the form." +#: ../../content/applications/hr/payroll/batches.rst:33 +msgid "Create a new batch" msgstr "" -#: ../../content/applications/hr/payroll.rst:200 -msgid "The fields are auto-populated for a regular 40-hour work week but can be modified. First, change the name of the working time by modifying the text in the :guilabel:`Name` field. Next, make any adjustments to the days and times that apply to the new working time." +#: ../../content/applications/hr/payroll/batches.rst:35 +msgid "New batches of payslips must be created from the :guilabel:`Payslips Batches` dashboard, by navigating to :menuselection:`Payroll app --> Payslips --> Batches`. Click the :guilabel:`New` button in the top-left corner. Doing so reveals a blank payslip batch form on a separate page." msgstr "" -#: ../../content/applications/hr/payroll.rst:204 -msgid "In the :guilabel:`Working Hours` tab, modify the :guilabel:`Day of Week`, :guilabel:`Day Period`, and :guilabel:`Work Entry Type` selections by clicking on the drop-down menus in each column and making the desired selection. The :guilabel:`Work From` and :guilabel:`Work To` columns are modified by typing in the time." +#: ../../content/applications/hr/payroll/batches.rst:39 +msgid "On the new payslip batch form, enter the :guilabel:`Batch Name`. This should be something short and descriptive, to keep records organized." msgstr "" -#: ../../content/applications/hr/payroll.rst:210 -msgid "The :guilabel:`Work From` and :guilabel:`Work To` times must be in a 24-hour format. For example, `2:00 PM` would be entered as `14:00`." +#: ../../content/applications/hr/payroll/batches.rst:43 +msgid "A company pays its employees on a bi-weekly basis, and creates separate batches for their two different :ref:`salary structures ` they use: worker pay and regular pay." msgstr "" -#: ../../content/applications/hr/payroll.rst:213 -msgid "If the working time should be in a two-week configuration, click the :guilabel:`Switch to 2 weeks calendar` button in the top-left. This creates entries for an :guilabel:`Even week` and an :guilabel:`Odd week`." +#: ../../content/applications/hr/payroll/batches.rst:47 +msgid "The names for their four August 2025 batches are:" msgstr "" -#: ../../content/applications/hr/payroll.rst:-1 -msgid "New working schedule form." +#: ../../content/applications/hr/payroll/batches.rst:49 +msgid "`Aug 1-14 2025 - Worker`" msgstr "" -#: ../../content/applications/hr/payroll.rst:227 -msgid "Structure types" +#: ../../content/applications/hr/payroll/batches.rst:50 +msgid "`Aug 1-14 2025 - Regular`" msgstr "" -#: ../../content/applications/hr/payroll.rst:229 -msgid "In Odoo, structure types are used to identify group of people referring to the same payroll rules. A structure type contains specific options and a subset of structures that will be used according the situation." +#: ../../content/applications/hr/payroll/batches.rst:51 +msgid "`Aug 15-31 2025 - Worker`" msgstr "" -#: ../../content/applications/hr/payroll.rst:233 -msgid "In Odoo, an employee's payslip is based on *structures* and *structure types*, which both affect how an employee enters timesheets. Each structure type is an individual set of rules for processing a timesheet entry, which consists of different structures nested within it. Structure types define how often an employee gets paid, the working hours, and if wages are based on a salary (fixed) or how many hours the employee worked (varied)." +#: ../../content/applications/hr/payroll/batches.rst:52 +msgid "`Aug 15-31 2025 - Regular`" msgstr "" -#: ../../content/applications/hr/payroll.rst:239 -msgid "For example, a structure type could be `Employee`, and that structure type could have two different structures in it: a `Regular Pay` structure which includes all the separate rules for processing regular pay, as well as a structure for an `End of Year Bonus` which includes the rules only for the end of year bonus. Both the `Regular Pay` structure and `End of Year Bonus` structure are structures within the `Employee` structure type." +#: ../../content/applications/hr/payroll/batches.rst:54 +msgid "Next, select the date range to which the batch applies. Click into one of the :guilabel:`Period` fields, and a calendar pop-up window appears. From this calendar pop-up window, navigate to the correct month, and click on the corresponding day for both the start and end dates of the batch." msgstr "" -#: ../../content/applications/hr/payroll.rst:245 -msgid "The different :guilabel:`Structure Types` can be seen by navigating to :menuselection:`Payroll app --> Configuration --> Salary: Structure Types`." +#: ../../content/applications/hr/payroll/batches.rst:58 +msgid "The current company populates the :guilabel:`Company` field. If operating in a multi-company environment, it is **not** possible to modify the :guilabel:`Company` from the form. The batch **must** be created while in the database for the desired company." msgstr "" -#: ../../content/applications/hr/payroll.rst:248 -msgid "Two default structure types are configured in Odoo: :guilabel:`Employee` and :guilabel:`Worker`." +#: ../../content/applications/hr/payroll/batches.rst:-1 +msgid "The details entered for the new batch." msgstr "" -#: ../../content/applications/hr/payroll.rst:250 -msgid "Typically, :guilabel:`Employee` is used for salaried employees, which is why the wage type is :guilabel:`Monthly Fixed Wage`, and :guilabel:`Worker` is typically used for employees paid by the hour, so the wage type is :guilabel:`Hourly Wage`." +#: ../../content/applications/hr/payroll/batches.rst:68 +msgid "Add payslips to a batch" msgstr "" -#: ../../content/applications/hr/payroll.rst:-1 -msgid "List of all currently configured structure types available to use." +#: ../../content/applications/hr/payroll/batches.rst:70 +msgid "Once a :ref:`batch has been created `, payslips need to be added to the batch. Payslips can either be :ref:`created and added ` to the batch, or if they have *already* been created, they can be :ref:`added to the batch `." msgstr "" -#: ../../content/applications/hr/payroll.rst:261 -msgid "New structure type" +#: ../../content/applications/hr/payroll/batches.rst:75 +msgid "Batches can only have payslips added to them when they are in the :guilabel:`New` stage. Payslips can either be :ref:`created by the database ` and added to the batch, or :ref:`pre-existing payslips can be individually added ` to the batch." msgstr "" -#: ../../content/applications/hr/payroll.rst:263 -msgid "To make a new structure type, click the :guilabel:`New` button, and a blank structure type form appears." +#: ../../content/applications/hr/payroll/batches.rst:79 +msgid "Once either of these methods has been used, the status of the batch changes to :guilabel:`Confirmed`, and both options to add payslips no longer appears." msgstr "" -#: ../../content/applications/hr/payroll.rst:266 -msgid "Proceed to enter information in the fields. Most fields are pre-populated, but all the fields can be modified." +#: ../../content/applications/hr/payroll/batches.rst:85 +#: ../../content/applications/hr/payroll/payroll_localizations/hong_kong.rst:102 +msgid "Generate payslips" msgstr "" -#: ../../content/applications/hr/payroll.rst:269 -msgid ":guilabel:`Structure Type`: enter the name for the new structure type, such as `Employee` or `Worker`." +#: ../../content/applications/hr/payroll/batches.rst:87 +msgid "To generate the payslips and add them to the batch, first open the batch by navigating to :menuselection:`Payroll app --> Payslips --> Batches`, and click on the desired batch. Next, click the :guilabel:`Generate Payslips` button and a :guilabel:`Generate Payslips` pop-up window loads." msgstr "" -#: ../../content/applications/hr/payroll.rst:271 -msgid ":guilabel:`Country`: select the country that the new structure type applies to from the drop-down menu." +#: ../../content/applications/hr/payroll/batches.rst:91 +msgid "This form contains three sections, and the configuration of this form determines which payslips are created. The :guilabel:`Employees Selection` section determines which employees' payslips to create. Using the drop-down menus, configure the :guilabel:`Department`, :guilabel:`Job Position`, and :guilabel:`Salary Structure Type` fields, if desired. As selections are made, the :guilabel:`Employees` section at the bottom updates to show which payslips are going to be generated." msgstr "" -#: ../../content/applications/hr/payroll.rst:273 -msgid ":guilabel:`Wage Type`: select what type of wage the new structure type uses, either :guilabel:`Fixed Wage` or :guilabel:`Hourly Wage`." +#: ../../content/applications/hr/payroll/batches.rst:98 +msgid "The :guilabel:`Payslip Generation` section allows the user to pick a specific :guilabel:`Salary Structure` to create payslips for. If left blank, the default structure for each employee is used to calculate their pay." msgstr "" -#: ../../content/applications/hr/payroll.rst:276 -msgid "If the type is to be used for salaried employees, who receive the same wage every pay period, select :guilabel:`Fixed Wage`." +#: ../../content/applications/hr/payroll/batches.rst:103 +msgid "By default, Odoo lists all employees in the :guilabel:`Employees` section when generating payslips." msgstr "" -#: ../../content/applications/hr/payroll.rst:279 -msgid "If the type is to be used for employees, who receive wages based on how many hours they worked during a pay period, select :guilabel:`Hourly Wage`." +#: ../../content/applications/hr/payroll/batches.rst:106 +msgid "The list filters automatically as selections are made." msgstr "" -#: ../../content/applications/hr/payroll.rst:281 -msgid ":guilabel:`Default Scheduled Pay`: select the typical pay schedule for the new structure type from the drop-down menu. Options are :guilabel:`Monthly`, :guilabel:`Quarterly`, :guilabel:`Semi-annually`, :guilabel:`Annually`, :guilabel:`Weekly`, :guilabel:`Bi-weekly`, :guilabel:`Bi-monthly`. This indicates how often this specific type of structure is paid out." +#: ../../content/applications/hr/payroll/batches.rst:108 +msgid "Configuration is optional unless a batch is being created **excluding** certain employees." msgstr "" -#: ../../content/applications/hr/payroll.rst:285 -msgid ":guilabel:`Default Working Hours`: select the default working hours for the new structure type from the drop-down menu. All available working hours for the currently selected company appear in the drop-down menu. The default working hours that are pre-configured in Odoo is the :guilabel:`Standard 40 hours/week` option. If the needed working hours do not appear in the list, a :ref:`new set of default working hours can be created `." +#: ../../content/applications/hr/payroll/batches.rst:110 +msgid "Once all the desired configurations have been made, click the :guilabel:`Generate` button, and all payslips are created and attached to the batch. Once generated, a :icon:`fa-book` :guilabel:`Payslips` smart button appears at the top, along with the number of payslips in the batch. Click this smart button to view a list of all the payslips in the batch." msgstr "" -#: ../../content/applications/hr/payroll.rst:290 -msgid ":guilabel:`Regular Pay Structure`: type in the name for the regular pay structure. It will be used as the default option when generating payslips." +#: ../../content/applications/hr/payroll/batches.rst:115 +msgid "Once the payslips have been generated and attached to the batch, the status of the batch changes to :guilabel:`Confirmed`." msgstr "" -#: ../../content/applications/hr/payroll.rst:292 -msgid ":guilabel:`Default Work Entry Type`: For employees whose contracts is referred under this structure type, the main work entry type used for all period of work is defined here. It will commonly be set as **Attendance**, :guilabel:`Overtime Hours`, :guilabel:`Generic Time Off`, :guilabel:`Compensatory Time Off`, :guilabel:`Home Working`, :guilabel:`Unpaid`, :guilabel:`Sick Time Off`, :guilabel:`Paid Time Off`, :guilabel:`Out Of Contract`, :guilabel:`Extra Hours`, and :guilabel:`Long Term Time Off`." +#: ../../content/applications/hr/payroll/batches.rst:-1 +msgid "Payslips being generated for marketing and community managers." msgstr "" -#: ../../content/applications/hr/payroll.rst:299 -msgid "To view all the options for the :guilabel:`Default Work Entry Type`, click the :guilabel:`Search More..` button at the bottom of the drop-down list." +#: ../../content/applications/hr/payroll/batches.rst:124 +msgid "Add payslips" msgstr "" -#: ../../content/applications/hr/payroll.rst:302 -msgid "Depending on the localization settings, this list may contain more options in addition to the default options." +#: ../../content/applications/hr/payroll/batches.rst:126 +msgid "Instead of generating payslips, :ref:`individual payslips that have already been created ` can be added to a batch. Start by opening the desired batch by navigating to :menuselection:`Payroll app --> Payslips --> Batches`, and clicking on the desired batch." msgstr "" -#: ../../content/applications/hr/payroll.rst:-1 -msgid "New structure type form to fill out when creating a new structure type." +#: ../../content/applications/hr/payroll/batches.rst:130 +msgid "Next, click the :guilabel:`Add Payslips` button, and an :guilabel:`Add Payslips` form loads in a pop-up window. All available payslips that have not yet been added to a batch, appear on the list." msgstr "" -#: ../../content/applications/hr/payroll.rst:312 -msgid "New default working hours" +#: ../../content/applications/hr/payroll/batches.rst:134 +msgid "**All** payslips not yet assigned to a batch appear in the list, regardless of status (:guilabel:`Draft`, :guilabel:`Waiting`, :guilabel:`Paid`, or :guilabel:`Cancelled`). This allows already processed or cancelled payslips to be grouped retroactively for reporting or record keeping purposes." msgstr "" -#: ../../content/applications/hr/payroll.rst:314 -msgid "To make new default working hours, type the name for the new working hours in the :guilabel:`Default Working Hours` field on the new structure type form. Click :guilabel:`Create and edit`. A default working hours form pops up. The default working hours form has two sections, a general information section and a tab listing out all the individual working hours by day and time. When the form is completed, click :guilabel:`Save & Close`." +#: ../../content/applications/hr/payroll/batches.rst:139 +msgid "Tick the checkbox next to each desired payslip to be added, then click the :guilabel:`Select` button at the bottom. All selected payslips are added to the batch, and the status of the batch changes to :guilabel:`Confirmed`. A :icon:`fa-book` :guilabel:`Payslips` smart button appears at the top, along with the number of payslips in the batch. Click this smart button to view a list of all the payslips in the batch." msgstr "" -#: ../../content/applications/hr/payroll.rst:320 -msgid ":guilabel:`Name`: type in the name for the new default working hours. This should be descriptive and clear to understand, such as `Standard 20 Hours/Week`." +#: ../../content/applications/hr/payroll/batches.rst:-1 +#: ../../content/applications/hr/payroll/batches.rst:-1 +msgid "Adding individual payslips to a batch by selecting them form this list." msgstr "" -#: ../../content/applications/hr/payroll.rst:322 -msgid ":guilabel:`Company`: select the company that can use these new default working hours from the drop-down menu. Blank field means it's available for all companies." +#: ../../content/applications/hr/payroll/batches.rst:151 +msgid "Process a batch" msgstr "" -#: ../../content/applications/hr/payroll.rst:324 -msgid ":guilabel:`Average Hour Per Day`: the average hours per day field is auto-populated, based on the working hours configured in the :guilabel:`Working Hours` tab. This entry affects resource planning, since the average daily hours affect what resources can be used, and in what quantity, per work day." +#: ../../content/applications/hr/payroll/batches.rst:153 +msgid "After a :ref:`batch has been created ` , and :ref:`all required payslips have been added `, the batch must then be processed, and employees paid." msgstr "" -#: ../../content/applications/hr/payroll.rst:328 -msgid ":guilabel:`Timezone`: select the time zone to be used for the new default working hours from the drop-down menu." +#: ../../content/applications/hr/payroll/batches.rst:156 +msgid "Open the desired batch by navigating to :menuselection:`Payroll app --> Payslips --> Batches`, and clicking on the desired batch. For a batch to be processed, it must have a status of :guilabel:`Confirmed`. That means the batch has been created and payslips have been added to them, but the payslips have *not* been processed yet." msgstr "" -#: ../../content/applications/hr/payroll.rst:330 -msgid ":guilabel:`Company Full Time`: enter the number of hours per week an employee would need to work to be considered a full-time employee. Typically, this is approximately 40 hours, and this number affects what types of benefits an employee can receive, based on their employment status (full-time vs part-time)." +#: ../../content/applications/hr/payroll/batches.rst:161 +msgid "Click the :guilabel:`Create Draft Entry` button to confirm and create a draft of the individual payslips. After this occurs, the batch status changes to :guilabel:`Done`." msgstr "" -#: ../../content/applications/hr/payroll.rst:334 -msgid ":guilabel:`Work Time Rate`: this percentage is auto-generated based on the entry for the :guilabel:`Company Full Time` and the working hours configured in the :guilabel:`Working Hours` tab. This number should be between `0.00%` and `100%`, so if the percentage is above `100%`, it is an indication that the working times and/or :guilabel:`Company Full Time` hours need adjustment." +#: ../../content/applications/hr/payroll/batches.rst:165 +msgid "At any time, the batch needs to be reverted back to a status of :guilabel:`New`, click the :guilabel:`Set to Draft` button. This action does **not** remove any payslips that have already been added to the batch, instead, the status changes back to :guilabel:`New`." msgstr "" -#: ../../content/applications/hr/payroll.rst:338 -msgid ":guilabel:`Working Hours` Tab: this tab is where each day's specific working hours are listed. When a new default working hour form is created, the :guilabel:`Working Hours` tab is pre-populated with a default 40-hour week, with each day divided into three timed sections." +#: ../../content/applications/hr/payroll/batches.rst:169 +msgid "After any desired changes have been made, click :guilabel:`Confirm` and the batch status changes to :guilabel:`Confirmed`." msgstr "" -#: ../../content/applications/hr/payroll.rst:342 -msgid "Every day has morning (8:00-12:00), lunch (12:00-13:00), and evening (13:00-17:00) hours configured, using a 24 hour time format." +#: ../../content/applications/hr/payroll/batches.rst:172 +msgid "It is important to note, that if any payslips in the batch have a status of :guilabel:`Paid`, the batch **cannot** revert to a status of :guilabel:`New`." msgstr "" -#: ../../content/applications/hr/payroll.rst:345 -msgid "To adjust any of these hours, click on the specific field to adjust, and make the adjustment using the drop-down menus, or in the specific case of the times, type in the desired time." +#: ../../content/applications/hr/payroll/batches.rst:175 +msgid "Once the status has changed to :guilabel:`Done`, the payments must be logged in the database. Click the :guilabel:`Create Payment Report` button, and a pop-up window loads, where the payment report details are entered." msgstr "" -#: ../../content/applications/hr/payroll.rst:348 -msgid "Keep in mind, working hours are company-specific, and cannot be shared between companies. Each company needs to have their own working hours set." +#: ../../content/applications/hr/payroll/batches.rst:179 +msgid "Using the drop-down menu, select the :guilabel:`Export Format` for the payment report. The two default options available are :guilabel:`NACHA`, and :guilabel:`CSV`." msgstr "" -#: ../../content/applications/hr/payroll.rst:352 -msgid "If the working hours are not consistent each week, and the hours are on a bi-weekly schedule instead, click the :guilabel:`Switch to 2 week calendar` button at the top of the new default working hours form. This changes the :guilabel:`Working Hours` tab to display two weeks of working times that can be adjusted." +#: ../../content/applications/hr/payroll/batches.rst:182 +msgid "The :guilabel:`NACHA` option creates a compatible ACH file which is sent to the company's bank, and outlines all the banking information to transfer money from the company to the employees, either via direct deposit (most common) or a check. Refer to the :ref:`fiscal localization document ` for more information." msgstr "" -#: ../../content/applications/hr/payroll.rst:358 -msgid "Structures" +#: ../../content/applications/hr/payroll/batches.rst:188 +#: ../../content/applications/hr/payroll/payslips.rst:222 +msgid "Other options may be available depending on the :doc:`payroll localization ` installed in the database." msgstr "" -#: ../../content/applications/hr/payroll.rst:360 -msgid "*Salary structures* are the different situations an employee could be paid within a specific *structure*, and are specifically defined by various rules." +#: ../../content/applications/hr/payroll/batches.rst:191 +msgid "If :guilabel:`CSV` is selected, all other fields are hidden form view. Once this is selected, click the :guilabel:`Generate` button to create the payment report." msgstr "" -#: ../../content/applications/hr/payroll.rst:363 -msgid "The amount of structures a company needs for each structure type depends on how many different ways employees are paid, and how their pay is calculated. For example, a common structure that could be useful to add may be a `Bonus`." +#: ../../content/applications/hr/payroll/batches.rst:194 +msgid "Next, select the desired :guilabel:`Bank Journal` the paychecks are logged on. Last, using the calendar selector, set the date the paychecks are issued in the :guilabel:`Effective Date` field." msgstr "" -#: ../../content/applications/hr/payroll.rst:367 -msgid "To view all the various structures for each structure type, go to :menuselection:`Payroll app --> Configuration --> Salary --> Structures`." +#: ../../content/applications/hr/payroll/batches.rst:197 +msgid "Once the pop-up window is configured, click the :guilabel:`Generate` button, and the file appears on the batch form, in a new :guilabel:`Payment Report` field." msgstr "" -#: ../../content/applications/hr/payroll.rst:370 -msgid "Each :ref:`structure type ` lists the various structures associated with it. Each structure contains a set of rules that define it." +#: ../../content/applications/hr/payroll/batches.rst:200 +msgid "After the report is created, click the :guilabel:`Mark as paid` button to mark the payslips as paid in the database." msgstr "" -#: ../../content/applications/hr/payroll.rst:-1 -msgid "All available salary structures." +#: ../../content/applications/hr/payroll/commissions.rst:4 +msgid "Commissions" msgstr "" -#: ../../content/applications/hr/payroll.rst:377 -msgid "Click on a structure to view its :guilabel:`Salary Rules`. These rules define how the payslip will be computed for the employee." +#: ../../content/applications/hr/payroll/commissions.rst:6 +msgid "Commissions are payments made to employees that are earned as part of their salary. The payments are awarded after a sale has been made, and the amount depends on how much the sale was. Typically the amount is either a percentage of the sale, or a set commission based on a structure created by the company." msgstr "" -#: ../../content/applications/hr/payroll.rst:-1 -msgid "Salary structure details for Regular Pay, listing all the specific Salary Rules." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:385 -#: ../../content/applications/hr/time_off.rst:302 -msgid "Rules" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:387 -msgid "Each structure has a set of salary rules used to compute the various amounts considered in the pay. These rules are configured by the localization and affect the computation of the salaries. Modification or creation of rules should only be done when necessary." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:391 -msgid "To view all the rules, go to :menuselection:`Payroll app --> Configuration --> Salary --> Rules`. Click on a structure (such as :guilabel:`Regular Pay`) to view all the rules." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:394 -msgid "To make a new rule, click :guilabel:`New`. A new rule form appears. Enter the following information in the fields." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:398 -msgid "Top section" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:400 -msgid ":guilabel:`Rule Name`: enter a name for the rule. This field is required." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:401 -msgid ":guilabel:`Category`: select a category the rule applies to from the drop-down menu, or enter a new one. This field is required." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:403 -msgid ":guilabel:`Code`: enter a code to be used for this new rule. This field is required." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:404 -msgid ":guilabel:`Sequence`: enter a number indicating when this rule is calculated in the sequence of all other rules." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:406 -msgid ":guilabel:`Salary Structure`: select a salary structure the rule applies to from the drop-down menu, or enter a new one. This field is required." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:408 -msgid ":guilabel:`Active`: enable this toggle, so the rule is available for use. Disable the toggle to continue to show it on the payslip, but skip the computation." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:410 -msgid ":guilabel:`Appears on payslip`: tick the checkbox to have the rule appear on employee printed payslip." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:412 -msgid ":guilabel:`View on Employer Cost Dashboard`: tick the checkbox to have the rule appear on the :guilabel:`Employer Cost` report, located on the *Payroll* app dashboard." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:414 -msgid ":guilabel:`View on Payroll Reporting`: tick the checkbox to have the rule appear on payroll reports." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:-1 -msgid "Enter the information for the new rule on the new rule form." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:422 -msgid "General tab" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:425 -msgid "Conditions" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:427 -msgid ":guilabel:`Condition Based on`: select from the drop-down menu whether the rule is :guilabel:`Always True` (always applies), a :guilabel:`Range` (applies to a specific range, which is entered beneath the selection), or a :guilabel:`Python Expression` (the code is entered beneath the selection). This field is required." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:433 -msgid "Computation" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:435 -msgid ":guilabel:`Amount Type`: select from the drop-down menu whether the amount is a :guilabel:`Fixed Amount`, a :guilabel:`Percentage (%)`, or a :guilabel:`Python Code`. Depending on what is selected, the fixed amount, percentage, or Python code needs to be entered next. This field is required." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:441 -msgid "Company contribution" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:443 -msgid ":guilabel:`Partner`: if another company financially contributes to this rule, select the company from the drop-down menu." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:447 -#: ../../content/applications/hr/payroll.rst:613 -msgid "Description tab" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:449 -msgid "Provide any additional information in this tab to help clarify the rule. This tab only appears in the rule form." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:453 -msgid "Accounting tab" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:455 -msgid ":guilabel:`Debit Account`: select the debit account from the drop-down menu the rule affects." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:456 -msgid ":guilabel:`Credit Account`: select the credit account from the drop-down menu the rule affects." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:457 -msgid ":guilabel:`Not computed in net accountability`: If checked, the amount of the rule will be show independantly from the Net Salary, to allow a better reporting in Accounting." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:461 -#: ../../content/applications/hr/payroll/payroll_localizations/australia.rst:730 -msgid "Other input types" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:463 -msgid "When creating payslips, it is sometimes necessary to add other entries for specific circumstances, like expenses, reimbursements, or deductions. These other inputs can be configured by navigating to :menuselection:`Payroll app --> Configuration --> Salary --> Other Input Types`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:-1 -msgid "A list of other input types for payroll that can be selected when creating a new entry for\n" -"a payslip." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:472 -msgid "To create a new input type, click the :guilabel:`New` button. Enter the :guilabel:`Description`, the :guilabel:`Code`, and which structure it applies to in the :guilabel:`Availability in Structure` field." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:477 -msgid "The :guilabel:`Code` is used in the salary rules to compute payslips. If the :guilabel:`Availability in Structure` field is left blank, it indicates that the new input type is available for all payslips and is not exclusive to a specific structure." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:-1 -msgid "A new Input Type form filled in." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:488 -#: ../../content/applications/hr/recruitment.rst:69 -msgid "Salary package configurator" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:490 -msgid "The various options under the :guilabel:`Salary Package Configurator` section of the :menuselection:`Payroll app --> Configuration --> Salary Package Configurator` menu all affect an employee's potential salary." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:494 -msgid "Depending on what information an employee enters (such as deductions, dependents, etc.), their salary is adjusted accordingly. When an applicant applies for a job on the company website, the sections under :guilabel:`Salary Package Configurator` directly affect what the applicant sees, and what is populated, as the applicant enters information." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:500 -msgid "Benefits" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:502 -msgid "When offering potential employees a position, there can be certain benefits set in Odoo, in addition to the salary, to make an offer more appealing (such as extra time off, the use of a company car, reimbursement for a phone or internet, etc.)." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:506 -msgid "To view the benefits, go to :menuselection:`Payroll app --> Configuration --> Salary Package Configurator: Benefits`. Benefits are grouped by :guilabel:`Structure type`, and the benefit listed for a particular structure type is only available for that specific structure." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:-1 -msgid "A list view of all the benefits available for each structure type." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:515 -msgid "A company has two structure types, one labeled :guilabel:`Employee`, and another labeled :guilabel:`Intern`. The :guilabel:`Employee` structure type contains the benefit of using a company car, while the :guilabel:`Intern` structure type has a meal voucher benefit available." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:519 -msgid "A person hired under the :guilabel:`Employee` structure type can use the company car benefit, but cannot have meal vouchers. A person hired under the :guilabel:`Intern` structure type would have meal voucher benefits available to them, not the use of a company car." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:523 -msgid "To make a new benefit, click the :guilabel:`New` button, and enter the information in the fields on the blank benefits form." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:526 -msgid "The various fields for creating a benefit are as follows:" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:531 -msgid ":guilabel:`Contract Related Field`: select from the drop-down menu a field from the contract. The choosen value from the employee will be recorded to that field." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:533 -msgid ":guilabel:`Benefits`: enter the name for the benefit. This field is required." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:534 -msgid ":guilabel:`Benefit Type`: select from the drop-down menu what type of benefit it is. Select from :guilabel:`Monthly Benefit in Kind`, :guilabel:`Monthly Benefit in Net`, :guilabel:`Monthly Benefit in Cash`, :guilabel:`Yearly Benefits in Cash`, or :guilabel:`Non Financial Benefits`. This field is required." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:538 -msgid ":guilabel:`Cost Field`: select from the drop-down menu a field from the contract. The field will define the cost of the benefit and by extention the impact on the salary, :guilabel:`Wage`, :guilabel:`Wage with Holidays`, and :guilabel:`Work time rate`. Depending on the localization settings, additional options are available." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:542 -msgid ":guilabel:`Related Type`: select from the drop-down menu what type of benefit it is. Select from :guilabel:`Monthly Benefit in Kind`, :guilabel:`Monthly Benefit in Net`, :guilabel:`Monthly Benefit in Cash`, :guilabel:`Yearly Benefits in Cash`, or :guilabel:`Non Financial Benefits`. This field is required." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:546 -msgid ":guilabel:`Impacts Net Salary`: tick the checkbox if the benefit should impact the employee's net salary." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:548 -msgid ":guilabel:`Requested Documents`: select any document that is required to be submitted for this benefit, from the drop-down menu." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:550 -msgid ":guilabel:`Mandatory Benefits`: using the drop-down menu, select the benefit that is required in order for this specific benefit to be offered to the employee." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:553 -msgid "For example, a benefit for car insurance would populate `Company Car` in this field. This would allow the car insurance benefit to **only** be displayed if the employee has selected/enabled the benefit of a company car." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:556 -msgid ":guilabel:`Salary Structure Type`: select from the drop-down menu which salary structure type this benefit applies to. This field is required." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:558 -msgid ":guilabel:`Unit of Measure`: select the metric that the benefit is granted, using the drop-down menu. The options are :guilabel:`Days`, :guilabel:`Percent`, or :guilabel:`Currency`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:-1 -msgid "A new benefit form filled out for an internet subscription." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:566 -msgid "Display section" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:568 -msgid ":guilabel:`Show Name`: tick the checkbox to have the benefit name appear in the salary package configurator." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:570 -msgid ":guilabel:`Display Type`: select from the drop-down menu how this benefit is displayed. The options are :guilabel:`Always Selected`, :guilabel:`Dropdown`, :guilabel:`Dropdown Group`, :guilabel:`Slider`, :guilabel:`Radio Buttons`, :guilabel:`Manual Input`, or :guilabel:`Text`. This field is required." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:575 -msgid "Depending on the selection made, additional configurations need to be made. For example, if :guilabel:`Radio Buttons` is selected, the individual radio buttons must be entered." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:577 -msgid ":guilabel:`Icon`: an icon from the `Font Awesome 4 library `_ can be visible for this benefit. Enter the text code for the icon in this field. For example, to display a suitcase icon, the code `fa fa-suitcase` is entered on this line." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:580 -msgid ":guilabel:`Hide Description`: tick the checkbox to hide the benefit description if the benefit is not selected by the employee." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:582 -msgid ":guilabel:`Folded`: if the benefit should be folded, or hidden, because it is dependant on another benefit selection, tick the checkbox. The following fields appear when this is active:" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:585 -msgid ":guilabel:`Fold Label`: enter a name for the folded section of the benefit." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:586 -msgid ":guilabel:`Fold Res Field`: select the contract field this benefit is tied to using the drop-down menu. If this field is selected on the contract, then this benefit becomes visible." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:590 -msgid "Activity section" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:592 -msgid ":guilabel:`Activity Type`: from the drop-down menu, select the activity type that is automatically created when this benefit is selected by the employee." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:594 -msgid ":guilabel:`Activity Creation`: select when the activity is created, either when the :guilabel:`Employee signs his contract`, or when the :guilabel:`Contract is countersigned`. Click the radio button next to the desired selection." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:597 -msgid ":guilabel:`Activity Creation Type`: select the parameters for when the activity is created, either :guilabel:`When the benefit is set` or :guilabel:`When the benefit is modified`. Click the radio button next to the desired selection." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:600 -msgid ":guilabel:`Assigned to`: select the user the activity is automatically assigned to, using the drop-down menu." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:604 -msgid "Sign section" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:606 -msgid ":guilabel:`Template to Sign`: if the employee is required to sign a document when selecting this benefit, select the document template from the drop-down menu." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:609 -msgid "For example, a benefit regarding the use of a company car may require the employee to sign a document acknowledging the company's car policies." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:615 -msgid "Provide any additional information in this tab to help clarify the benefit." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:618 -msgid "Personal info" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:620 -msgid "Every employee in Odoo has an *employee card* which is created when a candidate becomes an employee. This card includes all of their personal information, resume, work information, and documents." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:624 -msgid "The personal information is gathered from the salary package configurator section that a candidate fills out after being offered a position. This personal information is then transferred to the employee card when they are hired." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:628 -msgid "To view an employee's card, go to the main :menuselection:`Employees` app dashboard, and click on the employee's card." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:632 -msgid "An employee card can be thought of as an employee personal file." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:634 -msgid "The :guilabel:`Personal Info` section lists all of the fields that are available to enter on the employee's card. To access this section, go to :menuselection:`Payroll app --> Configuration --> Salary Package Configurator: Personal Info`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:-1 -msgid "A list of all the personal information that appears on the employee card to enter." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:642 -msgid "To edit a personal info entry, select an entry from the list on the :guilabel:`Personal Info` page, and modify the personal info on the form that appears." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:645 -msgid "To create a new personal info entry, click the :guilabel:`New` button." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:647 -msgid "The required fields, aside from entering the :guilabel:`Information` name, are :guilabel:`Related Model`, :guilabel:`Related Field`, and :guilabel:`Category`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:650 -msgid "Select a :guilabel:`Related Model` from the drop-down menu. :guilabel:`Employee` populates the field by default, but the :guilabel:`Bank Account` option is also available if the information is related to a bank account, instead." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:654 -msgid "Select a :guilabel:`Related Field` from the drop-down menu that best describes what kind of personal information this entry is, and where it is stored in the backend. Then, select a :guilabel:`Category` from the drop-down menu that the personal information should be under, such as :guilabel:`Address` or :guilabel:`Personal Documents`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:659 -msgid "The two most important fields on the personal info form are :guilabel:`Is Required` and :guilabel:`Display Type`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:662 -msgid "Checking the :guilabel:`Is Required` box makes the field mandatory on the employee's card. The :guilabel:`Display Type` drop-down menu allows for the information to be entered in a variety of ways, like a :guilabel:`Text` box, to a customizable :guilabel:`Radio` button, a :guilabel:`Checkbox`, a :guilabel:`Document`, and more." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:-1 -msgid "New personal information entry." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:674 -msgid "The resumé section, housed within the salary package configurator section of the settings menu, is how salary information rules are configured when offering a position to potential employees." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:677 -msgid "When an offer is sent to a prospective employee, the values for the offer are computed from these settings, and appear on the offer page." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:680 -msgid "To configure this section, navigate to :menuselection:`Payroll app --> Configuration --> Salary Package Configurator: Resumé`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:683 -msgid "By default, there are three :guilabel:`Salary Structure Types` pre-configured in Odoo: :guilabel:`Worker`, :guilabel:`Employee`, and :guilabel:`None`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:686 -msgid "Each :guilabel:`Salary Structure Type` has several rules configured. These affect how an offer is calculated using that particular :guilabel:`Salary Structure Type`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:689 -msgid "To create a new rule, click the :guilabel:`New` button, and a blank :guilabel:`Contract Salary Resumé` form loads." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:694 -msgid ":guilabel:`Information`: type in a name for this field." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:695 -msgid ":guilabel:`Category`: select the category this value is housed under, using the drop-down menu. The default options are :guilabel:`Monthly Salary`, :guilabel:`Monthly Benefits`, :guilabel:`Yearly Benefits`, and :guilabel:`Total`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:699 -msgid "New categories can be made if needed." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:701 -msgid "Click the :guilabel:`New` button, then enter the name for the new category in the :guilabel:`Name` field. Next, select the :guilabel:`Periodicity` from the drop-down menu, either :guilabel:`Monthly` or :guilabel:`Yearly`. Last, enter a number for the sequence. This corresponds to where this rule appears in the :guilabel:`Salary Structure Type` rule list." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:706 -msgid "Finally, click :guilabel:`Save & Close`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:707 -msgid ":guilabel:`Impacts Monthly Total`: tick the checkbox if this value is added in the monthly total calculation." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:709 -msgid ":guilabel:`Unit of Measure`: select what kind of value this rule is, either :guilabel:`Currency`, :guilabel:`Days`, or :guilabel:`Percent`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:712 -msgid ":guilabel:`Currency` is for a set monetary value, :guilabel:`Days` is for compensation in the form of time off, and :guilabel:`Percent` is for a monetary value awarded that is based upon another metric, such as commissions." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:715 -msgid ":guilabel:`Salary Structure Type`: select which :guilabel:`Salary Structure Type` this rule is nested under, from the drop-down menu." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:717 -msgid ":guilabel:`Value Type`: select how the value is computed, using the drop-down menu. The default options are :guilabel:`Fixed Value`, :guilabel:`Contract Value`, :guilabel:`Payslip Value`, :guilabel:`Sum of Benefits Values`, and :guilabel:`Monthly Total`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:720 -msgid ":guilabel:`Code`: select the code this rule applies to from the drop-down menu." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:-1 -msgid "The net wage rule form filled out, with all the information for net pay." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:727 -msgid "Jobs" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:729 -msgid "Since the *Payroll* application is responsible for paying employees for specific job positions, the complete list of job positions can be found in both the *Payroll* and *Recruitment* applications." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:735 -#: ../../content/applications/hr/recruitment/new_job.rst:3 -msgid "Job positions" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:737 -msgid "The job positions listed in the *Payroll* application are identical to the job positions listed in the *Recruitment* application. If a new job position is added in the *Recruitment* application, it is also visible in the *Payroll* application, and vice versa." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:741 -msgid "To view the job positions, navigate to :menuselection:`Payroll app --> Configuration --> Jobs: Job Positions`." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:744 -msgid "A list of all the job positions appear, along with the corresponding department, on the :guilabel:`Job Position` page." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:-1 -msgid "A list of all the job positions and corresponding departments." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:751 -msgid "To create a new job description, click the :guilabel:`New` button and a job form appears." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:753 -msgid "Enter the information on the form for the new position. The information is identical as to the information entered when creating a new job position in the *Recruitment* application." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:756 -msgid "Refer to the :doc:`../hr/recruitment/new_job` documentation for more details on how to fill out this form." -msgstr "" - -#: ../../content/applications/hr/payroll.rst:760 -msgid ":doc:`payroll/contracts`" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:761 -msgid ":doc:`payroll/work_entries`" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:762 -msgid ":doc:`payroll/time_off_to_report`" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:763 -msgid ":doc:`payroll/salary_attachments`" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:764 -msgid ":doc:`payroll/payslips`" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:765 -msgid ":doc:`payroll/batches`" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:766 -msgid ":doc:`payroll/commissions`" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:767 -msgid ":doc:`payroll/reporting`" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:768 -msgid ":doc:`payroll/headcount`" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:769 -msgid ":doc:`payroll/work_entry_analysis`" -msgstr "" - -#: ../../content/applications/hr/payroll.rst:770 -msgid ":doc:`payroll/payroll_localizations`" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:3 -msgid "Batches" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:5 -msgid "Batches are used to generate multiple :doc:`payslips ` at once and process them in a group, rather than create and process individual payslips. This method not only helps the payroll department pay employees in less time, but it also helps keep payslips organized." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:9 -msgid "Typically, a company's payroll department :ref:`creates a new batch ` for each salary structure, for every pay period (usually weekly, bi-weekly, or monthly). If desired, batches can be further organized by department, job position, or salary structure type." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:13 -msgid "Once a batch is made, :ref:`payslips are added to the batch `, then the batch is processed, and employees are paid." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:17 -msgid "View batches" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:19 -msgid "To view all the batches in the database, navigate to :menuselection:`Payroll app --> Payslips --> Batches` to display all payslip batches that have been created. These payslip batches are displayed in a list view, by default." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:23 -msgid "Each batch displays the :guilabel:`Name`, the dates the batch includes (the :guilabel:`Date From` and :guilabel:`Date To` fields), its :guilabel:`Status`, the number of payslips in the batch (:guilabel:`Payslips Count`), and the :guilabel:`Company`." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:-1 -msgid "View displaying all batches created." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:33 -msgid "Create a new batch" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:35 -msgid "New batches of payslips must be created from the :guilabel:`Payslips Batches` dashboard, by navigating to :menuselection:`Payroll app --> Payslips --> Batches`. Click the :guilabel:`New` button in the top-left corner. Doing so reveals a blank payslip batch form on a separate page." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:39 -msgid "On the new payslip batch form, enter the :guilabel:`Batch Name`. This should be something short and descriptive, to keep records organized." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:43 -msgid "A company pays its employees on a bi-weekly basis, and creates separate batches for their two different :ref:`salary structures ` they use: worker pay and regular pay." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:47 -msgid "The names for their four August 2025 batches are:" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:49 -msgid "`Aug 1-14 2025 - Worker`" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:50 -msgid "`Aug 1-14 2025 - Regular`" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:51 -msgid "`Aug 15-31 2025 - Worker`" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:52 -msgid "`Aug 15-31 2025 - Regular`" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:54 -msgid "Next, select the date range to which the batch applies. Click into one of the :guilabel:`Period` fields, and a calendar pop-up window appears. From this calendar pop-up window, navigate to the correct month, and click on the corresponding day for both the start and end dates of the batch." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:58 -msgid "The current company populates the :guilabel:`Company` field. If operating in a multi-company environment, it is **not** possible to modify the :guilabel:`Company` from the form. The batch **must** be created while in the database for the desired company." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:-1 -msgid "The details entered for the new batch." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:68 -msgid "Add payslips to a batch" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:70 -msgid "Once a :ref:`batch has been created `, payslips need to be added to the batch. Payslips can either be :ref:`created and added ` to the batch, or if they have *already* been created, they can be :ref:`added to the batch `." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:75 -msgid "Batches can only have payslips added to them when they are in the :guilabel:`New` stage. Payslips can either be :ref:`created by the database ` and added to the batch, or :ref:`pre-existing payslips can be individually added ` to the batch." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:79 -msgid "Once either of these methods has been used, the status of the batch changes to :guilabel:`Confirmed`, and both options to add payslips no longer appears." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:85 -#: ../../content/applications/hr/payroll/payroll_localizations/hong_kong.rst:102 -msgid "Generate payslips" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:87 -msgid "To generate the payslips and add them to the batch, first open the batch by navigating to :menuselection:`Payroll app --> Payslips --> Batches`, and click on the desired batch. Next, click the :guilabel:`Generate Payslips` button and a :guilabel:`Generate Payslips` pop-up window loads." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:91 -msgid "This form contains three sections, and the configuration of this form determines which payslips are created. The :guilabel:`Employees Selection` section determines which employees' payslips to create. Using the drop-down menus, configure the :guilabel:`Department`, :guilabel:`Job Position`, and :guilabel:`Salary Structure Type` fields, if desired. As selections are made, the :guilabel:`Employees` section at the bottom updates to show which payslips are going to be generated." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:98 -msgid "The :guilabel:`Payslip Generation` section allows the user to pick a specific :guilabel:`Salary Structure` to create payslips for. If left blank, the default structure for each employee is used to calculate their pay." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:103 -msgid "By default, Odoo lists all employees in the :guilabel:`Employees` section when generating payslips." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:106 -msgid "The list filters automatically as selections are made." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:108 -msgid "Configuration is optional unless a batch is being created **excluding** certain employees." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:110 -msgid "Once all the desired configurations have been made, click the :guilabel:`Generate` button, and all payslips are created and attached to the batch. Once generated, a :icon:`fa-book` :guilabel:`Payslips` smart button appears at the top, along with the number of payslips in the batch. Click this smart button to view a list of all the payslips in the batch." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:115 -msgid "Once the payslips have been generated and attached to the batch, the status of the batch changes to :guilabel:`Confirmed`." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:-1 -msgid "Payslips being generated for marketing and community managers." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:124 -msgid "Add payslips" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:126 -msgid "Instead of generating payslips, :ref:`individual payslips that have already been created ` can be added to a batch. Start by opening the desired batch by navigating to :menuselection:`Payroll app --> Payslips --> Batches`, and clicking on the desired batch." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:130 -msgid "Next, click the :guilabel:`Add Payslips` button, and an :guilabel:`Add Payslips` form loads in a pop-up window. All available payslips that have not yet been added to a batch, appear on the list." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:134 -msgid "**All** payslips not yet assigned to a batch appear in the list, regardless of status (:guilabel:`Draft`, :guilabel:`Waiting`, :guilabel:`Paid`, or :guilabel:`Cancelled`). This allows already processed or cancelled payslips to be grouped retroactively for reporting or record keeping purposes." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:139 -msgid "Tick the checkbox next to each desired payslip to be added, then click the :guilabel:`Select` button at the bottom. All selected payslips are added to the batch, and the status of the batch changes to :guilabel:`Confirmed`. A :icon:`fa-book` :guilabel:`Payslips` smart button appears at the top, along with the number of payslips in the batch. Click this smart button to view a list of all the payslips in the batch." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:-1 -#: ../../content/applications/hr/payroll/batches.rst:-1 -msgid "Adding individual payslips to a batch by selecting them form this list." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:151 -msgid "Process a batch" -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:153 -msgid "After a :ref:`batch has been created ` , and :ref:`all required payslips have been added `, the batch must then be processed, and employees paid." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:156 -msgid "Open the desired batch by navigating to :menuselection:`Payroll app --> Payslips --> Batches`, and clicking on the desired batch. For a batch to be processed, it must have a status of :guilabel:`Confirmed`. That means the batch has been created and payslips have been added to them, but the payslips have *not* been processed yet." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:161 -msgid "Click the :guilabel:`Create Draft Entry` button to confirm and create a draft of the individual payslips. After this occurs, the batch status changes to :guilabel:`Done`." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:165 -msgid "At any time, the batch needs to be reverted back to a status of :guilabel:`New`, click the :guilabel:`Set to Draft` button. This action does **not** remove any payslips that have already been added to the batch, instead, the status changes back to :guilabel:`New`." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:169 -msgid "After any desired changes have been made, click :guilabel:`Confirm` and the batch status changes to :guilabel:`Confirmed`." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:172 -msgid "It is important to note, that if any payslips in the batch have a status of :guilabel:`Paid`, the batch **cannot** revert to a status of :guilabel:`New`." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:175 -msgid "Once the status has changed to :guilabel:`Done`, the payments must be logged in the database. Click the :guilabel:`Create Payment Report` button, and a pop-up window loads, where the payment report details are entered." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:179 -msgid "Using the drop-down menu, select the :guilabel:`Export Format` for the payment report. The two default options available are :guilabel:`NACHA`, and :guilabel:`CSV`." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:182 -msgid "The :guilabel:`NACHA` option creates a compatible ACH file which is sent to the company's bank, and outlines all the banking information to transfer money from the company to the employees, either via direct deposit (most common) or a check. Refer to the :ref:`fiscal localization document ` for more information." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:188 -#: ../../content/applications/hr/payroll/payslips.rst:222 -msgid "Other options may be available depending on the :doc:`payroll localization ` installed in the database." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:191 -msgid "If :guilabel:`CSV` is selected, all other fields are hidden form view. Once this is selected, click the :guilabel:`Generate` button to create the payment report." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:194 -msgid "Next, select the desired :guilabel:`Bank Journal` the paychecks are logged on. Last, using the calendar selector, set the date the paychecks are issued in the :guilabel:`Effective Date` field." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:197 -msgid "Once the pop-up window is configured, click the :guilabel:`Generate` button, and the file appears on the batch form, in a new :guilabel:`Payment Report` field." -msgstr "" - -#: ../../content/applications/hr/payroll/batches.rst:200 -msgid "After the report is created, click the :guilabel:`Mark as paid` button to mark the payslips as paid in the database." -msgstr "" - -#: ../../content/applications/hr/payroll/commissions.rst:4 -msgid "Commissions" -msgstr "" - -#: ../../content/applications/hr/payroll/commissions.rst:6 -msgid "Commissions are payments made to employees that are earned as part of their salary. The payments are awarded after a sale has been made, and the amount depends on how much the sale was. Typically the amount is either a percentage of the sale, or a set commission based on a structure created by the company." -msgstr "" - -#: ../../content/applications/hr/payroll/commissions.rst:11 -msgid "To pay an employee a commission they earned, a separate commission paycheck must be issued to the employee. In Odoo, a commission payslip is referred to as a *warrant payslip*." +#: ../../content/applications/hr/payroll/commissions.rst:11 +msgid "To pay an employee a commission they earned, a separate commission paycheck must be issued to the employee. In Odoo, a commission payslip is referred to as a *warrant payslip*." msgstr "" #: ../../content/applications/hr/payroll/commissions.rst:15 @@ -8279,6 +7583,11 @@ msgstr "" msgid "To create a new contract, click the :guilabel:`New` button on the :ref:`Contracts dashboard `, and a blank contract form appears." msgstr "" +#: ../../content/applications/hr/payroll/contracts.rst:50 +#: ../../content/applications/hr/payroll/work_entries.rst:252 +msgid "General information section" +msgstr "" + #: ../../content/applications/hr/payroll/contracts.rst:52 msgid "Enter the following information in the top-half of the blank contract form:" msgstr "" @@ -8604,7 +7913,7 @@ msgid ":guilabel:`Department`: Select the department the contract template appli msgstr "" #: ../../content/applications/hr/payroll/contracts.rst:320 -msgid ":guilabel:`Job Position`: Select the :ref:`job position ` the contract template applies to from the drop-down menu. If blank, the template applies to all job positions." +msgid ":guilabel:`Job Position`: Select the :doc:`job position <../recruitment/new_job>` the contract template applies to from the drop-down menu. If blank, the template applies to all job positions." msgstr "" #: ../../content/applications/hr/payroll/contracts.rst:322 @@ -8775,12 +8084,88 @@ msgstr "" msgid ":guilabel:`Wage on Payroll`: the dollar amount on payroll reports" msgstr "" -#: ../../content/applications/hr/payroll/payroll_localizations.rst:5 -msgid "Payroll localizations" +#: ../../content/applications/hr/payroll/payroll_analysis.rst:3 +msgid "Payroll analysis" msgstr "" -#: ../../content/applications/hr/payroll/payroll_localizations.rst:7 -msgid "*Localizations* are country-specific settings preconfigured in Odoo at the creation of the database, which account for all taxes, fees, and allowances for that particular country." +#: ../../content/applications/hr/payroll/payroll_analysis.rst:5 +msgid "The *Payroll Analysis* report displays the total net wage for the company, for the last 365 days. This report allows companies to view their payroll costs and identify any trends." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:8 +msgid "To view the *Payroll Analysis* report, navigate to :menuselection:`Payroll app --> Reporting --> Payroll`." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:11 +msgid ":guilabel:`Net Wage` is the default metric displayed in the report, but other measures can be displayed if desired, such as *gross wage* or *days of paid time off*. Click the :guilabel:`Measures` :icon:`fa-caret-down` button to view a drop-down menu of other metrics to display. Click on the desired measure to display the results." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:-1 +msgid "Payroll overview report showing payroll for the last 365 days." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:22 +msgid "View multiple metrics" +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:24 +msgid "It is possible to view multiple metrics at one time by viewing the report in the *pivot table* view. This can aid management to determine other trends, such as which departments do not take time off, or which departments have the highest payroll costs." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:29 +msgid "**Only one** measure is able to be displayed in the default :icon:`fa-area-chart` :guilabel:`Graph` view. Multiple measures are **only** possible in the :icon:`oi-view-pivot` :guilabel:`Pivot` view." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:33 +msgid "To display the data in a pivot table, click on the :icon:`oi-view-pivot` :guilabel:`Pivot` button." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:35 +msgid "The default information displayed includes the number of payslips (:guilabel:`# Payslip`), the number of :guilabel:`Days of Paid Time Off` and :guilabel:`Days of Unpaid Time Off`, along with the :guilabel:`Net Wage` and :guilabel:`Gross Wage`. All the information is organized by department." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:39 +msgid "To display more information on the report, click the :guilabel:`Measures` :icon:`fa-caret-down` button to reveal a drop-down menu. Click on any metric to display it on the pivot table." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:-1 +msgid "Pivot table view with the various metrics on display." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:46 +msgid "Use case: comparing payroll costs" +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:48 +msgid "Managers can compare payroll costs, and determine which departments have raised their payroll costs, either by hiring more employees, or by raising salaries." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:51 +msgid "To compare previous periods of time, first view the *Payroll Analysis* report in a :ref:`pivot table `. Then, click the :icon:`fa-caret-down` :guilabel:`(Toggle Search Panel)` icon in the search bar, and click :guilabel:`Start Date` :icon:`fa-caret-down` to reveal a list of time periods (months, quarters, and years). Click on a desired time period, and a :icon:`fa-adjust` :guilabel:`Comparison` section appears in the search bar. Click on one of the two available options, either :guilabel:`Start Date: Previous Period`, or :guilabel:`Start Date: Previous Year`." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:59 +msgid "The report now displays three columns of information for every displayed measure: a column for the current time period, a column for the previous time period, and a :guilabel:`Variation` column, which displays the difference between the two time periods in a color-coded percentage (green for increases, red for decreases.)" +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:65 +msgid "In this example, the data shows an overall increase in the number of payslips. Since the company pays all employees every two weeks, an increase in the number of payslips (:guilabel:`# Payslips`) means that more employees were hired, in this example, a 500% increase." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:69 +msgid "Additionally, both the :guilabel:`Net Wage` and :guilabel:`Gross Wage` increased. The department :guilabel:`RD US` showed the largest growth, with both metrics increasing by approximately 350%." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:0 +msgid "Pivot table view comparing two years of data." +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_analysis.rst:76 +msgid ":doc:`../../essentials/reporting`" +msgstr "" + +#: ../../content/applications/hr/payroll/payroll_localizations.rst:5 +msgid "Payroll localizations" msgstr "" #: ../../content/applications/hr/payroll/payroll_localizations.rst:10 @@ -9965,6 +9350,11 @@ msgstr "" msgid "Advanced configurations" msgstr "" +#: ../../content/applications/hr/payroll/payroll_localizations/australia.rst:730 +#: ../../content/applications/hr/payroll/salaries.rst:275 +msgid "Other input types" +msgstr "" + #: ../../content/applications/hr/payroll/payroll_localizations/australia.rst:732 msgid "You can access other input types by going to :menuselection:`Payroll --> Configuration --> Other Input Types`. There are 63 other input types related to Australia. We do not recommend using the other ones as part of your payroll solution, since they cannot be used in the frame of STP. You can archive or delete them." msgstr "" @@ -10033,6 +9423,12 @@ msgstr "" msgid "Other input types grouped by payment type." msgstr "" +#: ../../content/applications/hr/payroll/payroll_localizations/australia.rst:786 +#: ../../content/applications/hr/payroll/payroll_localizations/belgium.rst:2776 +#: ../../content/applications/hr/payroll/work_entries.rst:219 +msgid "Work entry types" +msgstr "" + #: ../../content/applications/hr/payroll/payroll_localizations/australia.rst:788 msgid "A *work entry type* is a type of attendance for employees (e.g., attendance, paid leave, overtime, etc.). A few work entry types are created by default in every Australian database." msgstr "" @@ -10198,6 +9594,12 @@ msgstr "" msgid "How to read a payslip - General Information." msgstr "" +#: ../../content/applications/hr/payroll/payroll_localizations/belgium.rst:29 +#: ../../content/applications/hr/payroll/payroll_localizations/belgium.rst:2766 +#: ../../content/applications/hr/payroll/work_entries.rst:3 +msgid "Work entries" +msgstr "" + #: ../../content/applications/hr/payroll/payroll_localizations/belgium.rst:31 msgid "This section outlines time-off applications and their impact on salary. The base salary typically remains constant unless unpaid leave is taken. If an employee has taken unpaid leave, parental leave, or any unexpected absence, their salary will reflect the corresponding deductions." msgstr "" @@ -16232,7 +15634,7 @@ msgid "Hong Kong Work Entry Type." msgstr "" #: ../../content/applications/hr/payroll/payroll_localizations/hong_kong.rst:274 -msgid ":ref:`Creating and configuring work entry types `" +msgid ":ref:`Creating and configuring work entry types `" msgstr "" #: ../../content/applications/hr/payroll/payroll_localizations/hong_kong.rst:277 @@ -17702,276 +17104,372 @@ msgstr "" msgid "Process the payslips :ref:`in the same way a regular payslip is processed `, or in a batch." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:5 -msgid "The *Reporting* section of the *Payroll* app offers a variety of reports to choose from, organized by location." +#: ../../content/applications/hr/payroll/salaries.rst:3 +msgid "Salaries" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:8 -msgid "The *Payroll* report, *Work Entry Analysis* report, and *Salary Attachment Report* are default reports in the *Payroll* app, and are available for all companies, regardless of location." +#: ../../content/applications/hr/payroll/salaries.rst:5 +msgid "In Odoo, salaries are calculated and determined by five factors: salary :ref:`structure types `, salary :ref:`structures `, :ref:`rules `, :ref:`rule parameters `, and :ref:`other input types `. Together, these determine how each employee's pay is calculated." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:11 -msgid "Beneath the three default reports are all localization-based reports, organized by country, in alphabetical order. These reports contain all the various information for the offered benefits and local tax laws." +#: ../../content/applications/hr/payroll/salaries.rst:10 +msgid "Each *structure type* contains one or more *structures* within it. Each *structure* contains a set of *rules*, and every *rule* uses *parameters* to define how specific amounts are calculated. Additional inputs, (such as bonuses or deductions) can also be included to adjust the final salary." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:15 -msgid "To view all the available reports for the database, including all the localization-specific ones, navigate to :menuselection:`Payroll app --> Reporting` to view the available reports in a drop-down menu. Click on a specific report to view it." +#: ../../content/applications/hr/payroll/salaries.rst:14 +msgid "When payslips are calculated, Odoo calculates the employee's worked time from their :doc:`work entries `, then applies the relevant structure, rules, and parameters from the employee's assigned structure type to determine their total pay." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:-1 -msgid "Report dashboard view showing extra reports for Belgium databases." +#: ../../content/applications/hr/payroll/salaries.rst:21 +msgid "Structure types" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:23 -msgid "If a report is unavailable to a user, an :guilabel:`Invalid Operation` pop-up window appears, stating: :guilabel:`You must be logged in to a (country) company to use this feature`, where \"(country)\" is the specific country the company is configured for." +#: ../../content/applications/hr/payroll/salaries.rst:23 +msgid "In Odoo, a *structure type* groups related salary structures. When a contract specifies a structure type, **only** the structures within that type are used to calculate the employee's pay. Each structure type houses individual structures within them, each containing a set of rules for processing a timesheet entry." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:28 -msgid "Default reports" +#: ../../content/applications/hr/payroll/salaries.rst:28 +msgid "Structure types define key aspects of payroll configuration, including how often employees are paid, their working hours, the default salary structure, and whether wages are fixed (salary-based) or variable (hourly-based)." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:33 -msgid "Click on :menuselection:`Payroll app --> Reporting --> Payroll` to display the :guilabel:`Payroll Analysis` report. This report shows all the payslips generated in the last 365 days, due to the default :ref:`filter `: `Last 365 Days Payslip`." +#: ../../content/applications/hr/payroll/salaries.rst:33 +msgid "A structure type called `Employee` contains two different structures within it: a `Regular Pay` structure which includes all the separate rules for processing regular pay, and an `End of Year Bonus` structure, which includes the rules **only** for the end of year bonus. Both belong to the same `Employee` structure type." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:-1 -msgid "Payroll overview report showing payroll for the last 365 days." +#: ../../content/applications/hr/payroll/salaries.rst:38 +msgid "View existing *structure types* by navigating to :menuselection:`Payroll app --> Configuration --> Structure Types`." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:41 +msgid "Two default structure types are preconfigured in Odoo: :guilabel:`Employee` and :guilabel:`Worker`." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:43 +msgid "Typically, :guilabel:`Employee` is used for salaried employees, which is why the :guilabel:`Default Wage Type` is a :guilabel:`Fixed Wage`, and :guilabel:`Worker` is typically used for employees paid by the hour, so the wage type is :guilabel:`Hourly Wage`." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:48 +msgid "If using a country-specific :doc:`payroll localizations `, it is recommended to use the structure in the corresponding country localization document." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:-1 +msgid "List of all currently configured structure types available to use." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:57 +msgid "New structure type" +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:59 +msgid "If the default structure types do not meet the company's needs, go to :menuselection:`Payroll app --> Configuration --> Structure Types` and click :guilabel:`New` to create a custom structure type." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:63 +msgid "When creating a new salary structure type, ensure all local and national laws are accounted for. Confirm with the accounting department when configuring payroll structures, to ensure all requirements are met." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:67 +msgid "Proceed to enter the following information in the fields:" +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:69 +msgid ":guilabel:`Structure Type`: Enter the name for the new structure type, such as `Employee` or `Worker`." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:71 +msgid ":guilabel:`Country`: Select the country that the new structure type applies to from the drop-down menu." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:41 -msgid "The report can display metrics for a variety of parameters. Click the :guilabel:`Measures` box to view a drop-down menu with the various metric options to display. The default options available include:" +#: ../../content/applications/hr/payroll/salaries.rst:73 +msgid ":guilabel:`Wage Type`: Select the wage type for the structure:" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:45 -msgid ":guilabel:`# Payslip`" +#: ../../content/applications/hr/payroll/salaries.rst:75 +msgid ":guilabel:`Fixed Wage`: For salaried employees who receive the same wage every pay period." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:46 -msgid ":guilabel:`Basic Wage`" +#: ../../content/applications/hr/payroll/salaries.rst:76 +msgid ":guilabel:`Hourly Wage`: For employees paid based on hours worked during a pay period." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:47 -msgid ":guilabel:`Basic Wage for Time Off`" +#: ../../content/applications/hr/payroll/salaries.rst:78 +msgid ":guilabel:`Default Scheduled Pay`: Select the typical pay schedule for the new structure type from the drop-down menu. This indicates how often this specific type of structure is paid out." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:48 -msgid ":guilabel:`Days of Paid Time Off`" +#: ../../content/applications/hr/payroll/salaries.rst:80 +msgid ":guilabel:`Default Working Hours`: Select the default working hours for the new structure type from the drop-down menu. All available working hours for the currently selected company appear in the drop-down menu. The default working hours are the :guilabel:`Standard 40 hours/week` option. If the needed working hours do not appear in the list, a :ref:`new set of default working hours can be created `." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:49 -msgid ":guilabel:`Days of Unforeseen Absence`" +#: ../../content/applications/hr/payroll/salaries.rst:85 +msgid ":guilabel:`Regular Pay Structure`: Type in the name for the regular pay structure. It is used as the default option when generating payslips." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:50 -msgid ":guilabel:`Days of Unpaid Time Off`" +#: ../../content/applications/hr/payroll/salaries.rst:87 +msgid ":guilabel:`Default Work Entry Type`: Select the default work entry type which is used to create all work entries for the employee." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:51 -msgid ":guilabel:`Gross Wage`" +#: ../../content/applications/hr/payroll/salaries.rst:-1 +msgid "New structure type form to fill out when creating a new structure type." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:96 +msgid "New default working hours" +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:98 +msgid "To make new default working hours, type the name for the new working hours in the :guilabel:`Default Working Hours` field on the new structure type form. Click :guilabel:`Create and edit`. A default working hours form pops up. The default working hours form has two sections: a general information section, and a tab listing all the individual working hours by day and time. When the form is completed, click :guilabel:`Save & Close`." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:104 +msgid ":guilabel:`Name`: Type in the name for the new default working hours. This should be descriptive and clear to understand, such as `Standard 20 Hours/Week`." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:106 +msgid ":guilabel:`Flexible Hours`: Tick the checkbox to let employees adjust their start and end times while maintaining the same total daily hours." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:108 +msgid ":guilabel:`Company Full Time`: Enter the number of hours per week an employee needs to work to be considered a full-time employee. Typically, this is approximately 40 hours, and this number affects what types of benefits an employee can receive, based on their employment status (full-time vs part-time)." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:112 +msgid ":guilabel:`Average Hour Per Day`: Auto-populated based on the working hours in the :guilabel:`Working Hours` tab. This entry affects resource planning by determining how many resources can be used per workday." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:115 +#: ../../content/applications/hr/payroll/working_schedules.rst:55 +msgid ":guilabel:`Work Time Rate`: This percentage is auto-generated based on the entry for the :guilabel:`Company Full Time` and the working hours configured in the :guilabel:`Working Hours` tab. This number should be between `0.00%` and `100%`, so if the percentage is above `100%`, it is an indication that the working times and/or :guilabel:`Company Full Time` hours need adjustment." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:52 -msgid ":guilabel:`Net Wage`" +#: ../../content/applications/hr/payroll/salaries.rst:119 +msgid ":guilabel:`Company`: Select the company that can use these new default working hours from the drop-down menu. Leave this field blank if the hours are available for all companies." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:53 -msgid ":guilabel:`Number of Days`" +#: ../../content/applications/hr/payroll/salaries.rst:121 +#: ../../content/applications/hr/payroll/working_schedules.rst:61 +msgid ":guilabel:`Timezone`: Select the time zone to be used for the new default working hours from the drop-down menu." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:54 -msgid ":guilabel:`Number of Hours`" +#: ../../content/applications/hr/payroll/salaries.rst:123 +msgid ":guilabel:`Working Hours` Tab: This tab is where each day's specific working hours are listed. When a new default working hour form is created, the :guilabel:`Working Hours` tab is pre-populated with a default 40-hour week, with each day divided into three timed sections." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:55 -msgid ":guilabel:`Work Days`" +#: ../../content/applications/hr/payroll/salaries.rst:127 +msgid "Each day includes morning (8:00–12:00), lunch (12:00–13:00), and afternoon (13:00–17:00) periods, configured using the 24-hour time format." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:56 -msgid ":guilabel:`Work Hours`" +#: ../../content/applications/hr/payroll/salaries.rst:130 +msgid "To adjust any of these hours, click the field and modify the time using the drop-down menus, or type the desired time directly." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:57 -msgid ":guilabel:`Count`" +#: ../../content/applications/hr/payroll/salaries.rst:134 +msgid "Working hours are company-specific, and cannot be shared between companies." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:59 -msgid ":guilabel:`Net Wage` is the default metric for the :guilabel:`Payroll` report." +#: ../../content/applications/hr/payroll/salaries.rst:137 +#: ../../content/applications/hr/payroll/working_schedules.rst:85 +msgid "If the working hours are not consistent each week, and the hours are on a bi-weekly schedule instead, click the :guilabel:`Switch to 2 week calendar` button at the top of the new default working hours form. This changes the :guilabel:`Working Hours` tab to display two weeks of working times that can be adjusted." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:145 +msgid "Structures" +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:147 +msgid "*Salary structures* are the different situations in which an employee could be paid within a specific *structure*, and are specifically defined by various rules." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:150 +msgid "The number of structures a company needs for each structure type depends on how many different ways employees are paid, and how their pay is calculated. A common example of an additional structure is a `Bonus`." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:154 +msgid "To view all the various structures for each structure type, go to :menuselection:`Payroll app --> Configuration --> Structures`." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:157 +msgid "Each :ref:`structure type ` lists the various structures associated with it. Each structure contains a set of rules that define it." +msgstr "" + +#: ../../content/applications/hr/payroll/salaries.rst:-1 +msgid "All available salary structures." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:-1 -msgid "The various measures available to display for the Payroll Analysis report." +#: ../../content/applications/hr/payroll/salaries.rst:163 +msgid "Click on a structure to view its :guilabel:`Salary Rules`. These rules define how the payslip will be computed for the employee." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:66 -msgid "Line chart" +#: ../../content/applications/hr/payroll/salaries.rst:167 +msgid "After installing a :doc:`payroll localization `, relevant structures are installed and appear in this list." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:68 -msgid "A line chart is the default view for the *Payroll* report. If a different view is selected, click the :guilabel:`Line Chart` button (represented by a :guilabel:`📈 (chart increasing)` icon) in the menu bar to change the view back to a line chart." +#: ../../content/applications/hr/payroll/salaries.rst:-1 +msgid "Salary structure details for Regular Pay, listing all the specific Salary Rules." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:72 -msgid "Several options are available for the line chart. Click the corresponding button to activate the selection, and change the way the data is presented. These icons appear at the end of the chart options. The various options are:" +#: ../../content/applications/hr/payroll/salaries.rst:176 +msgid "Salary rules" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:78 -msgid ":guilabel:`Stacked`: data is presented with each metric in its own line, \"stacked\" on top of each other. This helps visualize the distribution and variances between different categories." +#: ../../content/applications/hr/payroll/salaries.rst:178 +msgid "Each *structure* has a set of salary *rules* used to compute the various amounts considered in the pay. These rules are configured by the localization and affect the computation of the salaries." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:83 -msgid ":guilabel:`Cumulative`: data is presented with each metric on an individual line, with the total amount calculated by combining all the lines. This provides a comprehensive view of the cumulative data." +#: ../../content/applications/hr/payroll/salaries.rst:182 +msgid "Modification or creation of rules should **only** be done when necessary." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:89 -msgid ":guilabel:`Descending`: data is shown with the largest values on the left side of the chart, gradually decreasing towards the smallest values on the right side, along the x-axis. This arrangement helps emphasize trends or outliers at the extremes." +#: ../../content/applications/hr/payroll/salaries.rst:184 +msgid "To view all the rules, go to :menuselection:`Payroll app --> Configuration --> Rules`. Click on a structure (such as :guilabel:`Regular Pay`) to view all the rules." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:95 -msgid ":guilabel:`Ascending`: data is presented with the smallest values on the left side of the chart, increasing towards the largest values on the right side, along the x-axis. This arrangement can be useful for highlighting progressive growth or trends." +#: ../../content/applications/hr/payroll/salaries.rst:187 +msgid "To make a new rule, click :guilabel:`New`. A new rule form appears. Enter the following information in the fields." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:100 -msgid "These options can be combined to create a variety of views." +#: ../../content/applications/hr/payroll/salaries.rst:191 +msgid "Top section" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:-1 -msgid "Menu buttons with the line chart called out, along with the other option buttons." +#: ../../content/applications/hr/payroll/salaries.rst:193 +msgid ":guilabel:`Rule Name`: Enter a name for the rule. This field is required." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:107 -msgid "Bar chart" +#: ../../content/applications/hr/payroll/salaries.rst:194 +msgid ":guilabel:`Category`: Select a category the rule applies to from the drop-down menu, or enter a new one. This field is required." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:109 -msgid "To display the data in a bar chart, click on the :guilabel:`Bar Chart` button (represented by a :guilabel:`📊 (bar chart)` icon) in the menu bar." +#: ../../content/applications/hr/payroll/salaries.rst:196 +msgid ":guilabel:`Code`: Enter a code to be used for this new rule. This field is required." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:112 -msgid "Click the :ref:`Stacked ` icon to view the bar chart in a stacked format (where multiple values appear in each column). :ref:`Cumulative ` bar charts are useful for visualizing the progression over time or other categories." +#: ../../content/applications/hr/payroll/salaries.rst:197 +msgid ":guilabel:`Sequence`: Enter a number indicating when this rule is calculated in the sequence of all other rules." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:116 -msgid "An option to display the columns in :ref:`Descending ` or :ref:`Ascending ` order appears at the end of the options." +#: ../../content/applications/hr/payroll/salaries.rst:199 +msgid ":guilabel:`Salary Structure`: Select a salary structure the rule applies to from the drop-down menu, or enter a new one. This field is required." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:-1 -msgid "Menu buttons with the bar chart called out, along with the other option buttons." +#: ../../content/applications/hr/payroll/salaries.rst:201 +msgid ":guilabel:`Active`: Enable this toggle so the rule is available for use. Disable the toggle to continue to show it on the payslip, but skip the computation." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:124 -msgid "Clicking an option enables it. To turn off the option, click it again. When the option is enabled the icon appears lighter, with a turquoise outline. When it is inactive, it appears gray, with no outline." +#: ../../content/applications/hr/payroll/salaries.rst:203 +msgid ":guilabel:`Appears on payslip`: Disabling the toggle will still show the rule on the payslip, it will just not be computed." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:129 -msgid "Pie chart" +#: ../../content/applications/hr/payroll/salaries.rst:205 +msgid ":guilabel:`View on Employer Cost Dashboard`: Tick the checkbox to have the rule appear on the *Employer Cost* report, located on the *Payroll* app dashboard." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:131 -msgid "To display the data in a pie chart, click on the :guilabel:`Pie Chart` button (represented by a :guilabel:`(pie chart)` icon) in the menu bar. There are no additional options available in this view." +#: ../../content/applications/hr/payroll/salaries.rst:207 +msgid ":guilabel:`View on Payroll Reporting`: Tick the checkbox to have the rule appear on payroll reports." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:-1 -msgid "Menu buttons with the pie chart called out." +#: ../../content/applications/hr/payroll/salaries.rst:-1 +msgid "Enter the information for the new rule on the new rule form." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:140 -msgid "Pivot table" +#: ../../content/applications/hr/payroll/salaries.rst:214 +msgid "General tab" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:142 -msgid "To display the data in a pivot table, click on the :guilabel:`Pivot` button (represented by a :guilabel:`(pivot)` icon) located in the far-right side of the top menu bar." +#: ../../content/applications/hr/payroll/salaries.rst:217 +msgid "Conditions" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:145 -msgid "The default information displayed includes the number of payslips (:guilabel:`# Payslip`), the :guilabel:`Net Wage`, the :guilabel:`Gross Wage`, the number of :guilabel:`Days of Paid Time Off`, and the number of :guilabel:`Days of Unpaid Time Off`. The information is organized by department." +#: ../../content/applications/hr/payroll/salaries.rst:219 +msgid ":guilabel:`Condition Based on`: Select from the drop-down menu whether the rule is :guilabel:`Always True` (always applies), a :guilabel:`Range` (applies to a specific range, which is entered beneath the selection), :guilabel:`Other Input` (the condition is entered beneath the field), or a :guilabel:`Python Expression` (the code is entered beneath the selection). This field is required." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:149 -msgid "To display more information on the report, click the :guilabel:`Measures` button to reveal a drop-down menu. Then, click on any other metric to display it on the pivot table." +#: ../../content/applications/hr/payroll/salaries.rst:226 +msgid "Computation" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:-1 -msgid "Pivot table view with the various metrics called out." +#: ../../content/applications/hr/payroll/salaries.rst:228 +msgid ":guilabel:`Amount Type`: Select from the drop-down menu whether the amount is a :guilabel:`Fixed Amount`, a :guilabel:`Percentage (%)`, :guilabel:`Other Input`, or a :guilabel:`Python Code`. Depending on what is selected, the fixed amount, percentage, other input, or Python code needs to be entered next. This field is required." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:156 -msgid "To sort the entries by a specific column, such as :guilabel:`Net Wage`, click on the column name twice. The first click selects the column, and the second click sorts the information in descending order." +#: ../../content/applications/hr/payroll/salaries.rst:234 +msgid "Company contribution" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:160 -msgid "To export the data in an XLSX format, click the :guilabel:`Download xlsx` button, represented by a :guilabel:`⬇️ (down arrow above a horizontal bar)` icon, located at the far-right of the available icons. The information is then downloaded into a spreadsheet." +#: ../../content/applications/hr/payroll/salaries.rst:236 +msgid ":guilabel:`Partner`: If another company financially contributes to this rule, select the company from the drop-down menu." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:-1 -msgid "The menu options with the download button highlighted." +#: ../../content/applications/hr/payroll/salaries.rst:240 +msgid "Description tab" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:168 -msgid "Any report can be inserted into a spreadsheet by clicking the :guilabel:`Insert in Spreadsheet` button. A :guilabel:`Select a spreadsheet to insert your (type of report)` pop-up window appears, asking which spreadsheet to place the information in. Select an existing spreadsheet or dashboard, or select a new :guilabel:`Blank spreadsheet`. Click the :guilabel:`Confirm` button to move to a spreadsheet view with the report added to it." +#: ../../content/applications/hr/payroll/salaries.rst:242 +msgid "Provide any additional information in this tab to help clarify the rule. This tab only appears in the rule form." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:-1 -msgid "The view of data sent to a spreadsheet." +#: ../../content/applications/hr/payroll/salaries.rst:246 +msgid "Accounting tab" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:181 -msgid "If the **Documents** app is **not** installed, the :guilabel:`Insert in Spreadsheet` option places the newly-created spreadsheet in the **Dashboards** app." +#: ../../content/applications/hr/payroll/salaries.rst:248 +msgid ":guilabel:`Debit Account`: Select the debit account from the drop-down menu the rule affects." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:184 -msgid "If the **Documents** application *is* installed, the spreadsheet has the option to be stored in either the **Dashboards** app or **Documents** app." +#: ../../content/applications/hr/payroll/salaries.rst:249 +msgid ":guilabel:`Credit Account`: Select the credit account from the drop-down menu the rule affects." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:190 -msgid "Filters" +#: ../../content/applications/hr/payroll/salaries.rst:250 +msgid ":guilabel:`Split account line based on name`: Tick the checkbox to split the accounting entry according to the payslip line name." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:192 -msgid "At the top of each report, the default filters are shown inside the :guilabel:`Search...` box." +#: ../../content/applications/hr/payroll/salaries.rst:252 +msgid ":guilabel:`Not computed in net accountability`: If checked, the amount of the rule is shown independently from the net salary, to allow for better reporting in the **Accounting** app." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:194 -msgid "Click the :guilabel:`⬇️ (down arrow)` icon in the search bar to display the available :guilabel:`Filters`. Filters show information that match the specific filter parameters." +#: ../../content/applications/hr/payroll/salaries.rst:258 +msgid "Rule parameters" msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:198 -msgid "The :guilabel:`Work Entries Analysis` report has two default filters, the `Current month:(Month) (Year)` filter, and the `Validated` filter." +#: ../../content/applications/hr/payroll/salaries.rst:260 +msgid "Rule parameters inform Odoo how to calculate each line of a payslip. To view the configured rule parameters, navigate to :menuselection:`Payroll app --> Configuration --> Rule Parameters`." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:-1 -msgid "Filters enabled for the Work Entries Analysis report." +#: ../../content/applications/hr/payroll/salaries.rst:263 +msgid "All rule parameters are displayed. Click on an individual rule parameter to view the details." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:205 -msgid "The :guilabel:`Payroll` report has only one default filter, the `Last 365 Days Payslip` filter." +#: ../../content/applications/hr/payroll/salaries.rst:265 +msgid "Each rule parameter displays the name of the rule, the code, when the rule is active, and the parameter value." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:207 -msgid "The :guilabel:`Salary Attachment Report` has only one default filter, the `Payslip End Date: (Year)` filter." +#: ../../content/applications/hr/payroll/salaries.rst:269 +msgid "The rule parameters for overtime pay inform Odoo that employees receive time and a half when working over 40 hours." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:210 -msgid "All reports can include custom filters, or group information, by different metrics (employee, department, company, etc.)." +#: ../../content/applications/hr/payroll/salaries.rst:277 +msgid "When creating payslips, it is sometimes necessary to add other entries for specific circumstances, like tips, commissions, expenses, or deductions. These other inputs can be found by navigating to :menuselection:`Payroll app --> Configuration --> Other Input Types`." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:213 -msgid "Some reports have the option to compare the current report to the previous time period or year (a :guilabel:`Comparison` option)." +#: ../../content/applications/hr/payroll/salaries.rst:-1 +msgid "A list of other input types for payroll that can be selected when creating a new entry for\n" +"a payslip." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:216 -msgid "Click on a parameter to select it and activate it. The report is immediately updated with the new parameters." +#: ../../content/applications/hr/payroll/salaries.rst:285 +msgid "If a new input type is needed that does not appear on the list, click the :guilabel:`New` button to create a new input type. Enter the :guilabel:`Description`, the :guilabel:`Code`, and select which structure it applies to in the :guilabel:`Availability in Structure` field." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:219 -msgid "The updated report can be set as a *favorite* report, meaning the parameters are stored for quick access in the future. To do that, click :guilabel:`Save the current search`, under the :guilabel:`Favorites` section, located in the search bar drop-down mega menu of filter options. Doing so reveals two options and a :guilabel:`Save` button." +#: ../../content/applications/hr/payroll/salaries.rst:289 +msgid "Tick the :guilabel:`Available in attachments` checkbox if the input should be a salary attachment." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:224 -msgid "To set the current report as the default configuration when the report is accessed, check the box next to :guilabel:`Default filter`. If the current report should be accessible to everyone in the database, check the box next to :guilabel:`Share`." +#: ../../content/applications/hr/payroll/salaries.rst:292 +msgid "The :guilabel:`Code` is used in the salary rules to compute payslips. If the :guilabel:`Availability in Structure` field is left blank, it indicates that the new input type is available for all payslips and is not exclusive to a specific structure." msgstr "" -#: ../../content/applications/hr/payroll/reporting.rst:228 -msgid "Finally, click :guilabel:`Save`, which saves the currently configured report. Then, it appears beneath the :guilabel:`Favorites` in the search bar drop-down mega menu of filter options." +#: ../../content/applications/hr/payroll/salaries.rst:-1 +msgid "A new Input Type form filled in." msgstr "" #: ../../content/applications/hr/payroll/salary_attachments.rst:5 @@ -18239,30 +17737,38 @@ msgid "The time off details for an individual request that needs to be deferred. msgstr "" #: ../../content/applications/hr/payroll/work_entries.rst:5 -msgid "The **Payroll** app automatically creates work entries based on the employee's :ref:`salary structure type `, and from the **Planning**, **Attendances**, and **Time Off** applications." +msgid "A *work entry* is an individual record on an employee's timesheet. Work entries can be configured to account for all types of work and time off, such as :guilabel:`Attendance`, :guilabel:`Sick Time Off`, :guilabel:`Training`, or :guilabel:`Public Holiday`." msgstr "" #: ../../content/applications/hr/payroll/work_entries.rst:9 +msgid "The **Payroll** app automatically creates work entries based on the employee's :ref:`salary structure type `, and from the **Planning**, **Attendances**, and **Time Off** applications. When needed, work entries can also be :ref:`created manually `." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:14 msgid "Work entries provide the **Payroll** app with the worked hours used to compute employee paychecks, if the employee's salary is based on work entries, as opposed to a salaried position." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:15 +#: ../../content/applications/hr/payroll/work_entries.rst:18 +msgid "Odoo configures several work entry types by default, but :ref:`additional work entry types can be created `, when necessary." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:24 msgid "Work entry dashboard" msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:17 +#: ../../content/applications/hr/payroll/work_entries.rst:26 msgid "The *Work Entries* dashboard of the **Payroll** app provides a visual overview of the individual work entries for every employee." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:20 +#: ../../content/applications/hr/payroll/work_entries.rst:29 msgid "To open the dashboard, navigate to :menuselection:`Payroll app --> Work Entries --> Work Entries`." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:22 +#: ../../content/applications/hr/payroll/work_entries.rst:31 msgid "On the :guilabel:`Work Entry` dashboard, work entries appear in alphabetical order, based on the first name of the employees. The entire month is displayed, with the current day highlighted in pale yellow." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:26 +#: ../../content/applications/hr/payroll/work_entries.rst:35 msgid "The :guilabel:`Work Entry` dashboard has a default :guilabel:`Conflicting` filter, which displays only work entries with :ref:`conflicts ` to be resolved." msgstr "" @@ -18270,75 +17776,55 @@ msgstr "" msgid "Conflicts dashboard view showing all employee's conflicts in work entries." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:33 +#: ../../content/applications/hr/payroll/work_entries.rst:42 msgid "Remove the default :guilabel:`Conflicting` filter from the search bar to view *all* work entries." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:38 -msgid "Adjust view" -msgstr "" - -#: ../../content/applications/hr/payroll/work_entries.rst:40 -msgid "To change the view so that only the entries for a single day, week, month, quarter, or year are shown, click the :icon:`fa-calendar` :guilabel:`(Month)(Year)` button. A drop-down menu appears with the options of :guilabel:`Today`, :guilabel:`This week`, :guilabel:`This month`, :guilabel:`This quarter`, or :guilabel:`This year`. Click on one of the options to only display data for that specific selection." -msgstr "" - -#: ../../content/applications/hr/payroll/work_entries.rst:46 -msgid "Use the :icon:`oi-arrow-left` :guilabel:`(left arrow)` and :icon:`oi-arrow-right` :guilabel:`(right arrow)` buttons to adjust the displayed dates. The arrows adjust the date based on the type of time selected." -msgstr "" - -#: ../../content/applications/hr/payroll/work_entries.rst:50 -msgid "For example, if :guilabel:`Month` is selected, the arrows move one month with each click of the arrow. If :guilabel:`Week` or :guilabel:`Day` is selected, the time moves by either a week or a day for each click of the arrow, respectively." -msgstr "" - -#: ../../content/applications/hr/payroll/work_entries.rst:54 -msgid "At any point, to return to a view containing the current day, click the :icon:`fa-crosshairs` :guilabel:`(Focus Today)` button." -msgstr "" - -#: ../../content/applications/hr/payroll/work_entries.rst:60 +#: ../../content/applications/hr/payroll/work_entries.rst:47 msgid "Add a new work entry" msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:62 +#: ../../content/applications/hr/payroll/work_entries.rst:49 msgid "If a work entry is missing, such as sick time, or if an employee forgot to clock in and out for a shift, a new work entry must be created for the missing shift." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:65 +#: ../../content/applications/hr/payroll/work_entries.rst:52 msgid "Click :guilabel:`New` on the :ref:`work entry dashboard `, and a blank :guilabel:`Create` work entry pop-up form appears. Enter the following information on the form:" msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:68 +#: ../../content/applications/hr/payroll/work_entries.rst:55 msgid ":guilabel:`Description`: Enter a short description for the work entry, such as `Sick Time`. The default entry is `Attendance: (Employee)`." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:70 +#: ../../content/applications/hr/payroll/work_entries.rst:57 msgid ":guilabel:`Employee`: Select the employee the work entry is for, using the drop-down menu." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:71 -msgid ":guilabel:`Work Entry Type`: Select the :ref:`work entry type ` using the drop-down menu." +#: ../../content/applications/hr/payroll/work_entries.rst:58 +msgid ":guilabel:`Work Entry Type`: Select the :guilabel:`Work Entry Type` using the drop-down menu." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:73 +#: ../../content/applications/hr/payroll/work_entries.rst:59 msgid ":guilabel:`From` and :guilabel:`To`: Enter the start (:guilabel:`From`) and end (:guilabel:`To`) dates and times for the work entry." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:76 +#: ../../content/applications/hr/payroll/work_entries.rst:62 msgid "First, click on either the :guilabel:`From` or :guilabel:`To` line to reveal a calendar pop-up window. Select the date by navigating to the correct month, then click on the specific day to select it." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:80 +#: ../../content/applications/hr/payroll/work_entries.rst:66 msgid "Next, select the time, by clicking on either the hour or minute fields at the bottom of the calendar, and set the desired time." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:83 +#: ../../content/applications/hr/payroll/work_entries.rst:69 msgid "When the date and time for the entry are correct, click the :guilabel:`Apply` button." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:84 +#: ../../content/applications/hr/payroll/work_entries.rst:70 msgid ":guilabel:`Duration`: This field displays the hours based on the :guilabel:`To` and :guilabel:`From` entries. Modifying this field modifies the :guilabel:`To` field (the :guilabel:`From` field does not change)." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:88 +#: ../../content/applications/hr/payroll/work_entries.rst:74 msgid "Once the desired information is entered, click :guilabel:`Save & Close` to save the entry, and close the pop-up form." msgstr "" @@ -18346,19 +17832,19 @@ msgstr "" msgid "Filling in the work entry Create form in Odoo." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:97 +#: ../../content/applications/hr/payroll/work_entries.rst:83 msgid "Conflicts" msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:99 +#: ../../content/applications/hr/payroll/work_entries.rst:85 msgid "A conflict occurs when a request has not been approved, such as sick time or vacation, or if there are any errors on the work entry. Conflicts that span the current pay period being processed **must** be resolved before payslips can be generated." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:103 +#: ../../content/applications/hr/payroll/work_entries.rst:89 msgid "Any work entry that has a conflict to be resolved is indicated on the main :guilabel:`Work Entry` dashboard, which can be accessed by navigating to :menuselection:`Payroll app --> Work Entries --> Work Entries`. Only conflicts needing resolution are shown by default." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:107 +#: ../../content/applications/hr/payroll/work_entries.rst:93 msgid "Conflicts are indicated with an orange triangle in the top-left corner of each individual work entry. Click on an individual work entry to see the date and time for the specific work entry, then click :guilabel:`Edit` to view the conflict details in a pop-up window." msgstr "" @@ -18366,43 +17852,43 @@ msgstr "" msgid "A row of conflicts, with one entry showing details for the conflict." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:114 +#: ../../content/applications/hr/payroll/work_entries.rst:100 msgid "The conflict is briefly explained in an orange text box in the :guilabel:`Open` pop-up window that appears." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:117 +#: ../../content/applications/hr/payroll/work_entries.rst:103 msgid "The :guilabel:`Description`, :guilabel:`Employee`, and :guilabel:`Work Entry Type` are listed on the left side of the pop-up window. The :guilabel:`From` and :guilabel:`To` date and time range, as well as the total time (in hours) in the :guilabel:`Duration` field, appears on the right side." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:122 +#: ../../content/applications/hr/payroll/work_entries.rst:108 msgid "Time off conflicts" msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:124 +#: ../../content/applications/hr/payroll/work_entries.rst:110 msgid "The most common work entry conflicts are for time off requests. Odoo automatically generates work entries for specific time periods. When time off is requested after these work entries are generated, it results in duplicate work entries for that employee (one for time off and another for regular work)." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:129 +#: ../../content/applications/hr/payroll/work_entries.rst:115 msgid "If there is a conflict because a time off request is in the system for the same time that a regular work entry already exists, the time off request is entered in a :guilabel:`Time Off` field." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:132 +#: ../../content/applications/hr/payroll/work_entries.rst:118 msgid "Conflicts can be resolved either directly on the work entry or in the detailed time off request form." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:138 +#: ../../content/applications/hr/payroll/work_entries.rst:124 msgid "Resolve on work entry" msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:140 +#: ../../content/applications/hr/payroll/work_entries.rst:126 msgid "If no additional details are needed to determine if a time off request should be approved or refused, the time off conflict can be resolved directly from the work entry pop-up window." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:143 +#: ../../content/applications/hr/payroll/work_entries.rst:129 msgid "Click either the :guilabel:`Refuse Time Off` or :guilabel:`Approve Time Off` buttons to refuse or approve the time off request, then the two buttons disappear. Click the :guilabel:`Save & Close` button to close the pop-up window." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:147 +#: ../../content/applications/hr/payroll/work_entries.rst:133 msgid "The conflict disappears from the :guilabel:`Work Entry` dashboard, since the conflict is now resolved." msgstr "" @@ -18410,23 +17896,23 @@ msgstr "" msgid "The detailed conflict pop-up window that appears when the Edit button is clicked." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:154 +#: ../../content/applications/hr/payroll/work_entries.rst:140 msgid "If the time off is approved, the status of the work entry conflict changes to :guilabel:`Cancelled`. If the time off is refused, the status changes to :guilabel:`Draft`." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:160 +#: ../../content/applications/hr/payroll/work_entries.rst:146 msgid "Resolve on time off request" msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:162 +#: ../../content/applications/hr/payroll/work_entries.rst:148 msgid "If more details are needed to make a decision about the time off request, hover over the entry in the :guilabel:`Time Off` field, and click the :icon:`fa-external-link` :guilabel:`(Internal Link)` icon that appears at the end of the line. This causes an :guilabel:`Open: Time Off` pop-up window to load, with all the time off request details. Click either the :guilabel:`Approve` or :guilabel:`Refuse` buttons to approve or refuse the request." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:168 +#: ../../content/applications/hr/payroll/work_entries.rst:154 msgid "To resolve the time off conflict on the detailed time off request pop-up window, click the :guilabel:`Internal Link` button at the end of the :guilabel:`Time Off` entry line, and the time off request details appear in a new pop-up window. The request can be modified, if needed." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:172 +#: ../../content/applications/hr/payroll/work_entries.rst:158 msgid "Click the :guilabel:`Approve` button to approve the request, then click the :guilabel:`Save & Close` button to save the changes, and go back to the work entry conflict pop-up window." msgstr "" @@ -18434,43 +17920,43 @@ msgstr "" msgid "The detailed time off request information." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:178 +#: ../../content/applications/hr/payroll/work_entries.rst:164 msgid "Now, the :guilabel:`Approve Time Off` button is hidden, only the :guilabel:`Refuse Time Off` button is visible." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:181 +#: ../../content/applications/hr/payroll/work_entries.rst:167 msgid "If the approval was a mistake, the request can be refused here, by clicking the :guilabel:`Refuse Time Off` button." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:184 +#: ../../content/applications/hr/payroll/work_entries.rst:170 msgid "Since the time off was approved in the time off window, click the :guilabel:`X` in the top-right corner to close the window. The conflict disappears from the :guilabel:`Work Entry` dashboard, since it has been resolved." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:191 +#: ../../content/applications/hr/payroll/work_entries.rst:177 msgid "Regenerate work entries" msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:193 +#: ../../content/applications/hr/payroll/work_entries.rst:179 msgid "After conflicts are resolved, the affected work entries must be regenerated. This recreates the specified work entries, and overwrites the previously conflicting work entries." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:196 -msgid "While :ref:`conflicts ` *can* be resolved individually, if the conflicts are caused from another application, such as **Planning** or **Attendances**, it is best practice to correct the record in the application causing the conflict. The reason this method is recommended is because, if the issue in the related application is **not** resolved, when work entries are regenerated, the conflicts reappear." +#: ../../content/applications/hr/payroll/work_entries.rst:182 +msgid "While :ref:`conflicts ` *can* be resolved individually, if the conflicts are caused by another application, such as **Planning** or **Attendances**, it is best practice to correct the record in the application causing the conflict. The reason this method is recommended is because, if the issue in the related application is **not** resolved, when work entries are regenerated, the conflicts reappear." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:202 +#: ../../content/applications/hr/payroll/work_entries.rst:188 msgid "First, ensure the issues are resolved in the specific applications that caused the work entry conflicts. Once the conflicts have been resolved in the corresponding apps, open the work entry dashboard by navigating to :menuselection:`Payroll app --> Work Entries --> Work Entries`." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:206 +#: ../../content/applications/hr/payroll/work_entries.rst:192 msgid "Click the :guilabel:`Regenerate Work Entries` button at the top of the :guilabel:`Work Entries` dashboard, and a :guilabel:`Work Entry Regeneration` pop-up window appears." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:209 +#: ../../content/applications/hr/payroll/work_entries.rst:195 msgid "Select the :guilabel:`Employees` to regenerate work entries for, using the drop-down menu. Adjust the :guilabel:`From` and :guilabel:`To` fields, so the correct date range is displayed." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:212 +#: ../../content/applications/hr/payroll/work_entries.rst:198 msgid "Click the :guilabel:`Regenerate Work Entries` button, and the work entries are recreated. Once finished, the pop-up window closes." msgstr "" @@ -18478,23 +17964,151 @@ msgstr "" msgid "Regenerate a work entry for a particular employee." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:219 +#: ../../content/applications/hr/payroll/work_entries.rst:205 msgid "An employee has incorrect work entries generated from the **Planning** app because they were incorrectly assigned to two work stations simultaneously. This should be fixed in the **Planning** app, instead of the **Payroll** app." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:223 +#: ../../content/applications/hr/payroll/work_entries.rst:209 msgid "To correct this issue, modify the employee's schedule in the **Planning** app, so they are correctly assigned to only one work station. Then, in the **Payroll** app, regenerate work entries for that employee, for that specific time period." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:227 +#: ../../content/applications/hr/payroll/work_entries.rst:213 msgid "The **Payroll** app then pulls the new, corrected data form the **Planning** app, and recreates the correct work entries for that employee. All conflicts for that employee are now resolved." msgstr "" -#: ../../content/applications/hr/payroll/work_entries.rst:231 -msgid ":doc:`payslips`" +#: ../../content/applications/hr/payroll/work_entries.rst:221 +msgid "When :ref:`creating a work entry ` in the **Payroll** application, or when a new time off type is created in the **Time Off** application, a work entry *type* needs to be selected." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:225 +msgid "The **Payroll** app comes with nine preconfigured work entry types, and depending on the installed :doc:`payroll localization `, additional country-specific work entries may be configured. If there is a need for additional work entry types, they can be :ref:`created `." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:230 +msgid "To view the current work entry types available, navigate to :menuselection:`Payroll app --> Configuration --> Work Entries --> Work Entry Types`." msgstr "" #: ../../content/applications/hr/payroll/work_entries.rst:233 +msgid "Each work entry type has a code to aid in the creation of payslips, and to ensure all taxes and fees are correctly entered." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:237 +msgid "Depending on the installed localization, other sections and fields may appear on the form." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:-1 +msgid "List of all work entry types currently available for use, with the payroll code and color." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:245 +msgid "New work entry type" +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:247 +msgid "To create a new work entry type, go to :menuselection:`Payroll app --> Configuration --> Work Entries --> Work Entry Types` and click :guilabel:`New`. Then, enter the information for the following sections on the form." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:254 +msgid ":guilabel:`Work Entry Type Name`: Enter a name for the work entry type. It should be short and descriptive, such as `Sick Time` or `Training`." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:256 +msgid ":guilabel:`Payroll Code`: Enter a code for the work entry type. This code appears with the work entry type on timesheets and payslips. Since the code is used in conjunction with the **Accounting** application, it is advised to check with the accounting department for a code to use." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:260 +msgid ":guilabel:`External Code`: Enter a code to use for exporting data to a third-party payroll service. Check with the third-party being used to determine the :guilabel:`External Code` to enter for the new work entry type." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:263 +msgid ":guilabel:`Color`: Select a color for the particular work entry type. This color appears on the work entry dashboard to aid in identifying work entry types." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:267 +msgid "The **only** required fields for a work entry type is the :guilabel:`Work Entry Type Name` and the :guilabel:`Payroll Code`." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:271 +msgid "Display in payslip section" +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:273 +msgid ":guilabel:`Rounding`: Select how the time entered for the work entry should be rounded. The rounding method selected determines how the worked time on timesheet entries are calculated. The options are:" +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:277 +msgid ":guilabel:`No Rounding`: Work entries are not modified." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:278 +msgid ":guilabel:`Half Day`: Work entries are rounded to the closest half day amount." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:279 +msgid ":guilabel:`Day`: Work entries are rounded to the closest full day amount." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:281 +msgid ":guilabel:`Rounding Type`: If either :guilabel:`Half Day` or :guilabel:`Day` is selected in the :guilabel:`Rounding` field, this field appears. Select either :guilabel:`Up` or :guilabel:`Down` to determine how the rounding is handled." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:286 +msgid "The working time is set to an 8-hour work day (a 40-hour work week). An employee enters a time of 5.5 hours on a work entry." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:289 +msgid "If the :guilabel:`Rounding` is set to :guilabel:`No Rounding`, the work entry remains at 5.5 hours." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:292 +msgid "If the :guilabel:`Rounding` is set to :guilabel:`Half Day`, and the :guilabel:`Rounding Type` is set to :guilabel:`Down`, the work entry is changed to 4 hours. If the :guilabel:`Rounding Type` is set to :guilabel:`Up`, the work entry is changed to 8 hours." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:296 +msgid "If the :guilabel:`Rounding` is set to :guilabel:`Day`, and the :guilabel:`Rounding Type` is set to :guilabel:`Down`, the work entry is changed to zero hours. If the :guilabel:`Rounding Type` is set to :guilabel:`Up`, the work entry is changed to 8 hours." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:301 +msgid "Unpaid section" +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:303 +msgid ":guilabel:`Unpaid in Structures Types`: If the work entry type is for work that is *not paid*, specify which pay structure the unpaid work entry type applies to, using the drop-down menu. Some situations where work is logged on a payslip, but no compensation is given, such as unpaid internships, unpaid training, or volunteer work." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:309 +msgid "Time off options section" +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:311 +msgid ":guilabel:`Time Off`: Tick this box if the work entry type can be selected for a time off request or time off entry, in the **Time Off** application." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:314 +msgid "If :guilabel:`Time Off` is active, a :guilabel:`Time Off Type` field appears. This field has a drop-down menu to select the specific types of time off, such as `Paid Time Off`, `Sick Time Off`, or `Extra Hours`. Select the :guilabel:`Time Off Type` associated with the work entry type." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:318 +msgid ":guilabel:`Keep Time Off Right`: Tick this checkbox if the work entry type associated with the selected time off type allows for rolling over unused time off to the following year." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:322 +msgid "Reporting section" +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:324 +msgid ":guilabel:`Unforeseen Absence`: Tick this box if the work entry type should be visible on the unforeseen absences report." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:-1 +msgid "New work entry type form with all fields to be filled in." +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:331 +msgid ":doc:`payslips`" +msgstr "" + +#: ../../content/applications/hr/payroll/work_entries.rst:333 msgid ":doc:`batches`" msgstr "" @@ -18535,7 +18149,7 @@ msgid "A pivot table comparing the work entries of the current month and the pre msgstr "" #: ../../content/applications/hr/payroll/work_entry_analysis.rst:37 -msgid "If no work entries for a specific :ref:`work entry type ` are logged for the time period, it does **not** appear on the report. That does **not** mean the work entry type does not exist, or is not configured." +msgid "If no work entries for a specific :ref:`work entry type ` are logged for the time period, it does **not** appear on the report. That does **not** mean the work entry type does not exist, or is not configured." msgstr "" #: ../../content/applications/hr/payroll/work_entry_analysis.rst:41 @@ -18578,6 +18192,98 @@ msgstr "" msgid "A pivot table comparing the overtime from September 2024 with August 2024." msgstr "" +#: ../../content/applications/hr/payroll/working_schedules.rst:3 +msgid "Working schedules" +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:5 +msgid "In Odoo, *working schedules* determine the hours employees are expected to work, according to their :doc:`contract `, and informs the **Payroll** app how to compute work entries, ultimately affecting salaries and payslips. It is necessary to ensure all working schedules for employees are configured in the database." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:11 +msgid "In Odoo's **Payroll** app, *working schedules* are referred to as *working hours* in :ref:`salary structures `." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:14 +msgid "To view the currently configured working schedules, navigate to :menuselection:`Payroll app --> Configuration --> Working Schedules`, and the :guilabel:`Working Schedules` dashboard loads." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:17 +msgid "Working schedules are company-specific. In a multi-company database, each company **must** identify each type of working schedule they use. If the database is created for only one company, the :guilabel:`Company` column is not available." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:22 +msgid "An Odoo database containing multiple companies that use a standard 40-hour work week needs to have a separate working schedule entry for each company that uses the 40-hour standard work week." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:25 +msgid "A database with five companies that all use a standard 40-hour work week needs to have five separate 40-hour working schedules configured." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:-1 +msgid "All working schedules available to use currently set up in the database for the company." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:34 +msgid "New working schedule" +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:36 +msgid "To create a new working schedule, navigate to :menuselection:`Payroll app --> Configuration --> Working Schedules`, and click :guilabel:`New`. The :guilabel:`Working Schedules` form has two sections, a general information section and a :guilabel:`Working Hours` tab listing out all the individual working hours by day and time." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:41 +msgid "Fill out the following information on the top-half of the form:" +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:43 +msgid ":guilabel:`Name`: Type in the name for the new default working schedule. This should be descriptive and clear to understand, such as `Standard 20 Hours/Week`." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:45 +msgid ":guilabel:`Flexible Hours`: Tick this checkbox if employees can work different hours from the working schedule." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:47 +msgid ":guilabel:`Company Full Time`: Enter the number of hours per week an employee would need to work to be considered a full-time employee. Typically, this is approximately 40 hours, and this number affects what types of benefits an employee can receive, based on their employment status (full-time vs part-time)." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:51 +msgid ":guilabel:`Average Hour Per Day`: The average hours per day field is auto-populated, based on the working hours configured in the :guilabel:`Working Hours` tab. This entry affects resource planning, since the average daily hours affect what resources can be used, and in what quantity, per workday." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:59 +msgid ":guilabel:`Company`: Select the company that can use these new default working hours from the drop-down menu. A blank field indicates it is available for all companies." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:64 +msgid "Next, configure the individual hours in the :guilabel:`Working Hours` tab. This tab lists the specific working hours for each day." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:67 +msgid "The :guilabel:`Working Hours` are auto-populated for a default 40-hour work week, with each day divided into three timed sections." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:70 +msgid "Every day has morning (8:00-12:00), lunch (12:00-13:00), and evening (13:00-17:00) hours configured." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:73 +msgid "The :guilabel:`Work From` and :guilabel:`Work To` times **must** be in a 24-hour format. For example, `2:00 PM` is entered as `14:00`." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:76 +msgid "Modify the :guilabel:`Day of Week`, :guilabel:`Day Period`, and :guilabel:`Work Entry Type` selections by clicking on the drop-down menus in each column and making the desired selection. The :guilabel:`Work From` and :guilabel:`Work To` columns are modified by typing in the time." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:81 +msgid "Keep in mind, working hours are company-specific, and **cannot** be shared between companies. Each company needs to have its own working hours set." +msgstr "" + +#: ../../content/applications/hr/payroll/working_schedules.rst:-1 +msgid "New working schedule form." +msgstr "" + #: ../../content/applications/hr/recruitment.rst:5 msgid "Recruitment" msgstr "" @@ -18638,6 +18344,10 @@ msgstr "" msgid "Enabling the :guilabel:`Send Interview Survey` option will install the **Surveys** application once the settings are saved, if not already installed." msgstr "" +#: ../../content/applications/hr/recruitment.rst:69 +msgid "Salary package configurator" +msgstr "" + #: ../../content/applications/hr/recruitment.rst:71 msgid "When sending an offer to an applicant, an expiration date can be set on the offer. Enter the number of days an offer is valid for in the :guilabel:`days` field. After the set amount of days has passed, if the applicant has not accepted the offer, the offer is no longer available." msgstr "" @@ -19337,6 +19047,10 @@ msgstr "" msgid "Both the :guilabel:`Experienced Developer` and :guilabel:`Interior Designer` roles yielded one referral hire each, confirming that developers and designers generate the highest-success referrals." msgstr "" +#: ../../content/applications/hr/recruitment/new_job.rst:3 +msgid "Job positions" +msgstr "" + #: ../../content/applications/hr/recruitment/new_job.rst:5 msgid "In Odoo's **Recruitment** application, all job positions are shown on the default dashboard in the **Recruitment** app, which includes both active and inactive positions." msgstr "" @@ -22129,6 +21843,10 @@ msgstr "" msgid "An accrual plan form with all the entries filled out." msgstr "" +#: ../../content/applications/hr/time_off.rst:302 +msgid "Rules" +msgstr "" + #: ../../content/applications/hr/time_off.rst:304 msgid "Rules must be created in order for employees to accrue time off from the accrual plan." msgstr "" @@ -22315,11 +22033,11 @@ msgid "The :guilabel:`Company` field is hidden, by default. To view this field, msgstr "" #: ../../content/applications/hr/time_off.rst:453 -msgid ":guilabel:`Start Date`: Using the date and time picker, select the date and time the holiday starts, then click :icon:`fa-check` :guilabel:`Apply`. By default, this field is configured for the current date. The start time is set according to the start time for the company (according to the :ref:`working schedules `). If the user's computer is set to a different time zone, the start time is adjusted accordingly, compared to the company's time zone." +msgid ":guilabel:`Start Date`: Using the date and time picker, select the date and time the holiday starts, then click :icon:`fa-check` :guilabel:`Apply`. By default, this field is configured for the current date. The start time is set according to the start time for the company (according to the :doc:`working schedules `). If the user's computer is set to a different time zone, the start time is adjusted accordingly, compared to the company's time zone." msgstr "" #: ../../content/applications/hr/time_off.rst:458 -msgid ":guilabel:`End Date`: Using the date and time picker, select the date and time the holiday ends, then click :icon:`fa-check` :guilabel:`Apply`. By default, this field is configured for the current date, and the time is set to the end time for the company (according to the :ref:`working schedules `). If the user's computer is set to a different time zone, the start time is adjusted accordingly, compared to the company's time zone." +msgid ":guilabel:`End Date`: Using the date and time picker, select the date and time the holiday ends, then click :icon:`fa-check` :guilabel:`Apply`. By default, this field is configured for the current date, and the time is set to the end time for the company (according to the :doc:`working schedules `). If the user's computer is set to a different time zone, the start time is adjusted accordingly, compared to the company's time zone." msgstr "" #: ../../content/applications/hr/time_off.rst:465 @@ -22339,7 +22057,7 @@ msgid ":guilabel:`Working Hours`: If the holiday should only apply to employees msgstr "" #: ../../content/applications/hr/time_off.rst:478 -msgid ":guilabel:`Work Entry Type`: If using the **Payroll** app, this field defines how the :ref:`work entries ` for the holiday appear. Select the work entry type from the drop-down menu." +msgid ":guilabel:`Work Entry Type`: If using the **Payroll** app, this field defines how the :doc:`work entries ` for the holiday appear. Select the work entry type from the drop-down menu." msgstr "" #: ../../content/applications/hr/time_off.rst:-1 diff --git a/locale/sources/inventory_and_mrp.pot b/locale/sources/inventory_and_mrp.pot index 6883a7da59..125fd01d31 100644 --- a/locale/sources/inventory_and_mrp.pot +++ b/locale/sources/inventory_and_mrp.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 18.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-17 08:58+0000\n" +"POT-Creation-Date: 2025-11-18 11:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -104,7 +104,7 @@ msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/receipts_delivery_one_step.rst:20 #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/receipts_delivery_two_steps.rst:34 #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/receipts_three_steps.rst:14 -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:26 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:27 #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/use_routes.rst:96 #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/picking_methods/batch.rst:21 #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/picking_methods/cluster.rst:48 @@ -1164,7 +1164,7 @@ msgstr "" #: ../../content/applications/inventory_and_mrp/barcode/operations/gs1_nomenclature.rst:225 #: ../../content/applications/inventory_and_mrp/inventory/product_management/configure/package.rst:126 -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:77 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:96 msgid "Package type" msgstr "" @@ -1216,7 +1216,7 @@ msgstr "" #: ../../content/applications/inventory_and_mrp/barcode/operations/gs1_usage.rst:40 #: ../../content/applications/inventory_and_mrp/barcode/operations/gs1_usage.rst:168 -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:78 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:97 #: ../../content/applications/inventory_and_mrp/purchase/manage_deals/rfq.rst:20 msgid "Product" msgstr "" @@ -7431,16 +7431,16 @@ msgstr "" msgid "Activate Multi-Step Routes in Inventory configuration settings." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:36 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:35 msgid "Define putaway rule" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:38 -msgid "To manage where specific products are routed for storage, navigate to :menuselection:`Inventory app --> Configuration --> Putaway Rules`. Use the :guilabel:`Create` button to configure a new putaway rule on a :guilabel:`Product` or :guilabel:`Product Category` that the rule affects." +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:37 +msgid "To manage where specific products are routed for storage, navigate to :menuselection:`Inventory app --> Configuration --> Putaway Rules`. Use the :guilabel:`New` button to configure a new putaway rule on a :guilabel:`Product` or :guilabel:`Product Category` that the rule affects." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:43 -msgid "Putaway rules can be defined either per product/product category, and/or package type (the *Packages* setting must be enabled in :menuselection:`Inventory app --> Configuration --> Settings` for that)." +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:42 +msgid "Putaway rules can be defined either per product/product category, and/or package type (the *Packages* setting must be enabled in :menuselection:`Inventory app --> Configuration --> Settings` for that). Additionally, a :doc:`storage category ` can be defined to limit capacities of a storage location and route products accordingly." msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:47 @@ -7475,47 +7475,71 @@ msgstr "" msgid "Create putaway rules for apples and carrots." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:70 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:68 +msgid "Use the :guilabel:`Sublocation` field to specify whether to use a sublocation or specify a storage category:" +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:71 +msgid ":guilabel:`No`: no sublocation is used. Products are directed to whatever is specified in the :guilabel:`Store to` field." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:73 +msgid ":guilabel:`Last Used`: the last location that had a move associated with it for that product or product category is used. If there is no last location used, the destination is whatever is specified in the :guilabel:`Store to` field." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:76 +msgid ":guilabel:`Closest Location`: the locations specified as part of a storage category are used. A storage category is mandatory in the :guilabel:`Having Category` field." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:79 +msgid "To apply a putaway rule to *all* products, create an empty putaway rule with no specified :guilabel:`Product` or :guilabel:`Product Category`. All products are stored in the location specified in the :guilabel:`Store to` field." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:84 +msgid "A best practice for an empty putaway rule is to specify the :guilabel:`Last used` :guilabel:`Sublocation`. Specifying :guilabel:`Last used` ensures that Odoo suggests the last location used to store a product." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:89 msgid "Putaway rule priority" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:72 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:91 msgid "Odoo selects a putaway rule based on the following priority list (from highest to lowest) until a match is found:" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:75 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:94 msgid "Package type and product" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:76 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:95 msgid "Package type and product category" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:79 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:98 msgid "Product category" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:82 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:101 msgid "The product `Lemonade can` has the following putaway rules configured:" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:84 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:103 msgid "When receiving a `Pallet` (:guilabel:`Package Type`) of `Lemonade cans`, it is redirected to `WH/Stock/Pallets/PAL1`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:86 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:105 msgid "`Lemonade can`'s :guilabel:`Product Category` is `All/drinks`, and when receiving a `Box` of any item in this product category, items are redirected to `WH/Stock/Shelf 1`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:88 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:107 msgid "Any product on a `Pallet` is redirected to `WH/Stock/Pallets`" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:89 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:108 msgid "The product `Lemonade can` is redirected to `WH/Stock/Shelf 2`" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:90 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/putaway.rst:109 msgid "Items in the `All/drinks` product category are redirected to `WH/Stock/Small Refrigerator`." msgstr "" @@ -8302,7 +8326,7 @@ msgid "Storage categories" msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:5 -msgid "A *storage category* is used with :doc:`putaway rules `, as an extra location attribute to automatically propose optimal storage locations for products." +msgid "A *storage category* is used with :doc:`putaway rules ` to assign a storage location to incoming products while accounting for the capacity of that location." msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:8 @@ -8310,11 +8334,11 @@ msgid "Follow these steps to complete the setup:" msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:10 -msgid ":ref:`Enable the Storage Category feature `" +msgid ":ref:`Enable features in the settings `" msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:11 -msgid ":ref:`Define a storage category ` with specific limitations" +msgid ":ref:`Define capacity limitations `" msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:12 @@ -8333,83 +8357,93 @@ msgstr "" msgid "Assigning categories to storage locations tells Odoo these locations meet specific requirements, such as temperature or accessibility. Odoo then evaluates these locations, based on defined capacity, and recommends the best one on the warehouse transfer form." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:28 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:29 msgid "To enable storage categories, go to :menuselection:`Inventory app --> Configuration --> Settings`. Then, in the :guilabel:`Warehouse` section, ensure the :guilabel:`Storage Locations` and :guilabel:`Multi-Step Routes` features are enabled." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:32 -msgid "Next, activate the :guilabel:`Storage Categories` feature. Finally, click :guilabel:`Save`." +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:33 +msgid "If intending to set capacities by :ref:`package type `, also make sure :guilabel:`Packages` is enabled. Click :guilabel:`Save`." msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:-1 -msgid "Show the Storage Categories feature." +msgid "Enable Storage Locations and Multi-Step Routes to enable storage categories." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:41 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:42 msgid "Define storage category" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:43 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:44 msgid "A storage category with specific limitations **must** be created first, before it is applied to locations, in order to decide the optimal storage location." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:46 -msgid "To create a storage category, go to :menuselection:`Inventory app --> Configuration --> Storage Categories`, and click :guilabel:`Create`." +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:47 +msgid "To create a storage category, go to :menuselection:`Inventory app --> Configuration --> Storage Categories`, and click :guilabel:`New`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:49 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:50 msgid "On the storage category form, type a name for the category in the :guilabel:`Storage Category` field." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:52 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:53 msgid "Options are available to limit capacity by weight, product, and package type." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:55 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:56 msgid "Weight limits can be combined with capacity by package or product (e.g. a maximum of one hundred products with a total weight of two hundred kilograms)." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:58 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:59 msgid "While it is possible to limit capacity by product and package type at the same location, it may be more practical to store items in different amounts across various locations, as shown in this example of :ref:`capacity by package `." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:62 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:63 msgid "The :guilabel:`Allow New Product` field defines when the location is considered available to store a product:" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:65 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:66 msgid ":guilabel:`If location is empty`: a product can be added there only if the location is empty." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:66 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:67 msgid ":guilabel:`If products are the same`: a product can be added there only if the same product is already there." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:68 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:69 msgid ":guilabel:`Allow mixed products`: several different products can be stored in this location at the same time." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:72 -msgid "When clicked, the :guilabel:`Location` smart button shows which storage locations the category has been assigned to." +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:73 +msgid "When clicked, the :icon:`oi-arrows-v` :guilabel:`Locations` smart button shows which storage locations the category has been assigned to." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:76 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:77 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:131 +msgid "Odoo does **not** automatically split quantities across multiple storage locations. If an incoming receipt contains several units or packages and the first recommended location exceeds its capacity, Odoo still routes all items to that same location instead of selecting another one with available space." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:82 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:136 +msgid "*(Example: If a location can hold 10 units and 12 units arrive, all 12 are still assigned to that location.)*" +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:86 msgid "Capacity by weight" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:78 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:88 msgid "On a storage category form (:menuselection:`Inventory app --> Configuration --> Storage Categories`), set a maximum product weight in the :guilabel:`Max Weight` field. This limit applies to each location assigned this storage category." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:83 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:93 msgid "Capacity by product" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:85 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:95 msgid "In the :guilabel:`Capacity by Product` tab, click :guilabel:`Add a Line` to input items, and enter their capacities in the :guilabel:`Quantity` field." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:89 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:99 msgid "Ensure only a maximum of five `Large Cabinets` and two `Corner Desk Right Sit` are stored at a single storage location, by specifying those amounts in the :guilabel:`Capacity by Product` tab of a storage category form." msgstr "" @@ -8417,98 +8451,122 @@ msgstr "" msgid "Show storage category limiting by product count." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:100 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:109 msgid "Capacity by package" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:102 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:111 msgid "For companies using :doc:`packages <../../product_management/configure/package>`, it becomes possible to ensure real-time storage capacity checks, based on package types (e.g., crates, bins, boxes, etc.)." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:107 -msgid "Enable the :guilabel:`Packages` feature in :menuselection:`Inventory app --> Configuration --> Settings` to show the :guilabel:`Capacity by Package` tab." +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:115 +msgid "Create the :ref:`package type ` before assigning it to a storage category. Create it on the :guilabel:`Inventory` tab of the product form (in the :guilabel:`Packaging` section), or create it from the :guilabel:`Product Packagings` page. Be sure to set the :guilabel:`Package Type`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:111 -msgid "Create putaway rules for pallet-stored items, by creating the `High Frequency pallets` storage category." +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:121 +msgid "Create putaway rules for pallet-stored items, by creating the `High frequency pallets` storage category." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:114 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:124 msgid "In the :guilabel:`Capacity by Package` tab, specify the number of packages for the designated :guilabel:`Package Type`, and set a maximum of `2.00` `Pallets` for a specific location." msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:0 -msgid "Create a storage category on the page." +msgid "Create a storage category." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:124 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:142 msgid "Assign to location" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:126 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:144 msgid "Once the storage category is created, assign it to a location. Navigate to the location by going to :menuselection:`Inventory app --> Configuration --> Locations`, and select the desired location. Then, select the created category in the :guilabel:`Storage Category` field." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:131 -msgid "Assign the `High Frequency pallets` storage category (which limits pallets stored at any location to two pallets) to the `WH/Stock/pallets/PAL 1` sub-location." +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:149 +msgid "Assign the `High frequency pallets` storage category (which limits pallets stored at any location to two pallets) to the `WH/Stock/Pallets/PAL1` sub-location." msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:0 msgid "When a Storage Category is created, it can be linked to a warehouse location." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:141 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:158 msgid "Putaway rule" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:143 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:160 msgid "With the :ref:`storage category ` and :ref:`location ` set up, create the :doc:`putaway rule ` by navigating to :menuselection:`Inventory app --> Configuration --> Putaway Rules`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:147 -msgid "Click the :guilabel:`Create` button to create the putaway rule. In the :guilabel:`Having Category` field of the new putaway rule form, select the storage category." +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:164 +msgid "Click the :guilabel:`New` button to create the putaway rule. Specify a location to store to in the :guilabel:`Store to` field." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:167 +msgid "Use the :guilabel:`Sublocation` field to specify that you want to use a sublocation with the storage category:" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:151 -msgid "Continuing the example from above, the `High Frequency Pallets` storage category is assigned to the putaway rule directing pallets of lemonade to locations with the `High Frequency Pallets` storage category :ref:`assigned to them `." +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:170 +msgid ":guilabel:`Last Used`: The last location that had a move associated with it for that product or product category is used. If there is no last location used, the destination is whatever is specified in the :guilabel:`Store to` field." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:173 +msgid ":guilabel:`Closest Location`: The locations specified as part of the storage category are used. A storage category is mandatory in the :guilabel:`Having Category` field." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:176 +msgid "If using multiple storage locations for a single storage category, create putaway rules for each location to ensure that if one storage location is in use, the secondary locations must be used." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:180 +msgid "Continuing the example from above, the `High frequency pallets` storage category is assigned to the putaway rule directing pallets of lemonade to locations with the `High frequency pallets` storage category :ref:`assigned to them `." msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:0 msgid "Storage Categories used in a variety of putaway rules." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:160 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:188 msgid "Use case: limit capacity by package" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:162 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:190 msgid "To limit the capacity of a storage location by a specific number of packages, :ref:`create a storage category with a Capacity By Package `." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:165 -msgid "Continuing the example from above, the `High Frequency Pallets` storage category is assigned to the `PAL1` and `PAL2` locations." +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:193 +msgid "Continuing the example from above, the `High frequency pallets` storage category is assigned to the `PAL1` and `PAL2` locations." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:168 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:196 msgid "Then, :ref:`putaway rules ` are set, so that any pallets received in the warehouse are directed to be stored in `PAL1` and `PAL2` locations." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:171 -msgid "Depending on the number of pallets on-hand at each of the storage locations, when one pallet of lemonade cans is received, the following scenarios happen:" +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:199 +msgid "Depending on the number of pallets on-hand at each of the storage locations, when two pallets of lemonade cans is received, the following scenarios happen:" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:174 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:202 msgid "If `PAL1` and `PAL2` are empty, the pallet is redirected to `WH/Stock/Pallets/PAL1`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:175 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:203 msgid "If `PAL1` is full, the pallet is redirected to `WH/Stock/Pallets/PAL2`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:176 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:204 msgid "If `PAL1` and `PAL2` are full, the pallet is redirected to `WH/Stock/Pallets`." msgstr "" +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:205 +msgid "If `PAL1` is partially full (for example, with one pallet), Odoo treats more than one received pallet as a single pallet on the receipt. You must manually separate the two pallets into separate storage locations. Click the :guilabel:`Open Move` icon to the right of the :guilabel:`Units` field, and then in the :guilabel:`Open: Stock move` box, click :guilabel:`Add a line`. Finally, split the receipt by quantity into separate locations, then click :guilabel:`Save`." +msgstr "" + +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/storage_category.rst:0 +msgid "Update the Stock move box to route pallets to the correct locations before validating." +msgstr "" + #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/daily_operations/use_routes.rst:3 msgid "Routes and push/pull rules" msgstr "" @@ -11692,7 +11750,7 @@ msgid "API Keys in Envia.com." msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/envia_shipping.rst:62 -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:85 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:86 #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/starshipit_shipping.rst:90 #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/ups_credentials.rst:165 msgid "Setup in Odoo" @@ -11771,7 +11829,7 @@ msgid "If more than one shipping option is needed, create more shipping methods msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/envia_shipping.rst:119 -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:208 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:209 msgid "Shipping information" msgstr "" @@ -11784,7 +11842,7 @@ msgid "**Customer information**: When creating a quotation, ensure the selected msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/envia_shipping.rst:127 -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:216 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:217 msgid "To verify, select the :guilabel:`Customer` field to open their contact page. Here, add their shipping address in the :guilabel:`Contact` field, along with their :guilabel:`Mobile` number and :guilabel:`Email` address." msgstr "" @@ -11949,7 +12007,7 @@ msgid "When creating a quotation in Odoo, add shipping and the :guilabel:`Envia. msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/envia_shipping.rst:217 -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:237 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:238 #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/starshipit_shipping.rst:205 msgid ":guilabel:`Shipping label(s)` depending on the number of packages." msgstr "" @@ -11963,7 +12021,7 @@ msgid "When labels are created, Envia.com automatically charges the configured a msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/envia_shipping.rst:225 -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:241 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:242 msgid "Additionally, the tracking number is now available." msgstr "" @@ -13425,7 +13483,7 @@ msgid "Sendcloud is a shipping service aggregator that facilitates the integrati msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:10 -msgid "`Sendcloud integration documentation `_" +msgid "`Sendcloud integration documentation `_" msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:14 @@ -13433,23 +13491,23 @@ msgid "Setup in Sendcloud" msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:19 -msgid "To get started, go to `Sendcloud's platform `_ to configure the account and generate the connector credentials. Log in with the Sendcloud account, or create a new one if needed." +msgid "To get started, go to `Sendcloud's platform `_ to configure the account and generate the connector credentials. Log in with the Sendcloud account, or create a new one if needed." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:24 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:25 msgid "For new account creation, Sendcloud will ask for a :abbr:`VAT (Value-Added Tax Identification)` number or :abbr:`EORI (Economic Operators' Registration and Identification)` number. After completing the account setup, activate (or deactivate) the shipping carriers that will be used in the Odoo database." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:30 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:31 msgid "Odoo integration of Sendcloud works on free Sendcloud plans *only* if a bank account is linked, since Sendcloud won't ship for free. To use shipping rules, or individual custom carrier contacts, a paid plan of Sendcloud is **required**." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:37 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:38 #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/third_party_shipper.rst:185 msgid "Warehouse configuration" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:39 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:40 msgid "Once logged into the Sendcloud account, navigate to :menuselection:`Settings --> Shipping --> Addresses`, and fill in the field for :guilabel:`Warehouse address`." msgstr "" @@ -13457,7 +13515,7 @@ msgstr "" msgid "Adding addresses in the Sendcloud settings." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:46 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:47 msgid "To allow Sendcloud to process returns as well, a :guilabel:`Return Address` is required. Under the :guilabel:`Miscellaneous section`, there is a field called :guilabel:`Address Name (optional)`. The Odoo warehouse name should be entered here, and the characters should be exactly the same." msgstr "" @@ -13497,23 +13555,23 @@ msgstr "" msgid ":guilabel:`Address`: `My Company (San Francisco)`" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:63 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:64 msgid "Notice how the inputs for the :guilabel:`Warehouse` field, for both the Odoo configuration and the Sendcloud configuration, are the exact same." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:67 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:68 msgid "Generate Sendcloud credentials" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:69 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:70 msgid "In the Sendcloud account, navigate to :menuselection:`Settings --> Integrations` in the menu on the right. Next, search for :guilabel:`Odoo Native`. Then, click on :guilabel:`Connect`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:72 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:73 msgid "After clicking on :guilabel:`Connect`, the page redirects to the :guilabel:`Sendcloud API` settings page, where the :guilabel:`Public and Secret Keys` are produced. The next step is to name the :guilabel:`Integration`. The naming convention is as follows: `Odoo CompanyName`, with the user's company name replacing `CompanyName` (e.g. `Odoo StealthyWood`)." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:77 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:78 msgid "Then, check the box next to :guilabel:`Service Points` and select the shipping services for this integration. After saving, the :guilabel:`Public and Secret Keys` are generated." msgstr "" @@ -13521,19 +13579,19 @@ msgstr "" msgid "Configuring the Sendcloud integration and receiving the credentials." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:87 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:88 msgid "To ensure seamless Sendcloud integration with Odoo, :ref:`install ` and :ref:`link ` the Sendcloud shipping connector to the Sendcloud account. Then, :ref:`configure Odoo fields `, so Sendcloud can accurately pull shipping data to generate labels." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:95 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:96 msgid ":ref:`Enable pickup points on websites `" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:100 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:101 msgid "Install Sendcloud shipping module" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:102 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:103 msgid "After the Sendcloud account is set up and configured, it's time to configure the Odoo database. To get started, go to Odoo's :guilabel:`Apps` module, search for the `Sendcloud Shipping` integration, and install it." msgstr "" @@ -13541,88 +13599,88 @@ msgstr "" msgid "Sendcloud Shipping module in the Odoo Apps module." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:113 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:114 msgid "Sendcloud shipping connector configuration" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:115 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:116 msgid "Once installed, activate the :guilabel:`Sendcloud Shipping` module in :menuselection:`Inventory --> Configuration --> Settings`. The :guilabel:`Sendcloud Connector` setting is found under the :guilabel:`Shipping Connectors` section." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:119 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:120 msgid "After activating the :guilabel:`Sendcloud Connector`, click on the :guilabel:`Sendcloud Shipping Methods` link below the listed connector. Once on the :guilabel:`Shipping Methods` page, click :guilabel:`New`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:124 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:125 #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/starshipit_shipping.rst:115 msgid ":guilabel:`Shipping Methods` can also be accessed by going to :menuselection:`Inventory --> Configuration --> Delivery --> Shipping Methods`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:127 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:128 msgid "Fill out the following fields in the :guilabel:`New Shipping Method` form:" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:129 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:130 msgid ":guilabel:`Shipping Method`: type `Sendcloud DPD`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:130 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:131 msgid ":guilabel:`Provider`: select :guilabel:`Sendcloud` from the drop-down menu." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:131 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:132 msgid ":guilabel:`Delivery Product`: set the product that was configured for this shipping method or create a new product." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:133 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:134 msgid "In the :guilabel:`SendCloud Configuration` tab, enter the :guilabel:`Sendcloud Public Key`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:134 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:135 msgid "In the :guilabel:`SendCloud Configuration` tab, enter the :guilabel:`Sendcloud Secret Key`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:139 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:140 msgid "Pickup points" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:141 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:142 msgid "Sendcloud's `service point delivery `_ lets customers choose a pickup location (such as a nearby shop or locker) instead of entering a private delivery address." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:146 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:147 msgid "To enable the feature, go to the shipping method form, and in the :guilabel:`SendCloud Configuration` tab, under the :guilabel:`Options` section, enable :guilabel:`Use Sendcloud Locations` feature." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:151 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:152 msgid "Pickup point selection is only available through the **Website** app (the online checkout view). It is not currently possible to select a pickup point manually through the **Sales** app (the internal database view)." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:155 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:156 msgid "For example, if the customer selects a shipping method like *Sendcloud Mondial Relay*, they must choose a pickup point during the checkout process on the website. If no pickup point is selected, the delivery order cannot be validated in Odoo." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:160 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:161 msgid "Load shipping products" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:162 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:163 msgid "After configuring and saving the form, follow these steps to load the shipping products:" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:164 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:165 msgid "In the :guilabel:`SendCloud Configuration` tab of the :guilabel:`New Shipping Method` form, click on the :guilabel:`Load your SendCloud shipping products` link." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:166 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:167 msgid "Select the shipping products the company would like to use for deliveries and returns." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:167 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:168 msgid "Click :guilabel:`Select`." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:170 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:171 msgid "Sample Sendcloud shipping products configured in Odoo:" msgstr "" @@ -13646,7 +13704,7 @@ msgstr "" msgid ":guilabel:`Maximum Weight`: `31.50`" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:178 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:179 msgid ":guilabel:`Countries`: `Austria` `Belgium` `Bosnia` `Herzegovina` `Bulgaria` `Croatia` `Czech` `Republic` `Denmark` `Estonia` `Finland` `France` `Germany` `Greece` `Hungary` `Iceland` `Ireland` `Italy` `Latvia` `Liechtenstein` `Lithuania` `Luxembourg` `Monaco` `Netherlands` `Norway` `Poland` `Portugal` `Romania` `Serbia` `Slovakia` `Slovenia` `Spain` `Sweden` `Switzerland`" msgstr "" @@ -13679,47 +13737,47 @@ msgstr "" msgid "Example of shipping products configured in Odoo." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:196 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:197 msgid "Sendcloud does not provide test keys when a company tests the sending of a package in Odoo. This means if a package is created, the configured Sendcloud account will be charged, unless the associated package is cancelled within 24 hours of creation." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:200 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:201 msgid "Odoo has a built-in layer of protection against unwanted charges when using test environments. Within a test environment, if a shipping method is used to create labels, then those labels are immediately cancelled after the creation — this occurs automatically. The test and production environment settings can be toggled back and forth from their respective smart buttons." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:210 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:211 msgid "To use Sendcloud to generate shipping labels, the following information **must** be filled out accurately and completely in Odoo:" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:213 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:214 msgid "**Customer information**: when creating a quotation, ensure the selected :guilabel:`Customer` has a valid phone number, email address, and shipping address." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:220 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:221 msgid "**Product weight**: ensure all products in an order have a specified :guilabel:`Weight` in the :guilabel:`Inventory` tab of their product form. Refer to the :ref:`Product weight section ` of this article for detailed instructions." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:224 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:225 msgid "**Warehouse address**: ensure the warehouse name and address in Odoo match the :ref:`previously defined warehouse ` in the Sendcloud setup. For details on warehouse configuration in Odoo, refer to the :ref:`warehouse configuration section ` of the third-party shipping documentation." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:231 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:232 msgid "Generate labels with Sendcloud" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:233 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:234 msgid "When creating a quotation in Odoo, add shipping and a :guilabel:`Sendcloud shipping product`. Then, :guilabel:`Validate` the delivery. Shipping label documents are automatically generated in the chatter, which include the following:" msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:238 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:239 msgid ":guilabel:`Return label(s)` if the Sendcloud connector is configured for returns." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:239 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:240 msgid ":guilabel:`Customs document(s)` should the destination country require them." msgstr "" -#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:244 +#: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:245 msgid "When return labels are created, Sendcloud automatically charges the configured Sendcloud account." msgstr "" @@ -13760,7 +13818,7 @@ msgid "In the :guilabel:`Actions` section, set a :guilabel:`Condition` to determ msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:280 -msgid "`Create shipping rules on Sendcloud `_" +msgid "`Create shipping rules on Sendcloud `_" msgstr "" #: ../../content/applications/inventory_and_mrp/inventory/shipping_receiving/setup_configuration/sendcloud_shipping.rst:287 diff --git a/locale/sources/productivity.pot b/locale/sources/productivity.pot index 0d913cfedb..ed1f74965f 100644 --- a/locale/sources/productivity.pot +++ b/locale/sources/productivity.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 18.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-17 08:58+0000\n" +"POT-Creation-Date: 2025-11-18 11:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -8281,55 +8281,55 @@ msgstr "" msgid "Spreadsheet" msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:17 +#: ../../content/applications/productivity/spreadsheet.rst:18 msgid "**Odoo Spreadsheet** allows you to organize, manipulate, analyze, and visualize data. It offers similar functionality to other spreadsheet solutions with the added benefit of integrating directly with your Odoo database." msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:21 +#: ../../content/applications/productivity/spreadsheet.rst:22 msgid "With Odoo Spreadsheet, you can:" msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:23 +#: ../../content/applications/productivity/spreadsheet.rst:24 msgid ":ref:`create spreadsheets ` or :ref:`upload files ` and open them as Odoo spreadsheets" msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:25 +#: ../../content/applications/productivity/spreadsheet.rst:26 msgid ":ref:`create and use templates `" msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:26 +#: ../../content/applications/productivity/spreadsheet.rst:27 msgid ":doc:`use functions, including Odoo-specific functions `" msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:27 +#: ../../content/applications/productivity/spreadsheet.rst:28 msgid ":doc:`insert and link to Odoo data `" msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:28 +#: ../../content/applications/productivity/spreadsheet.rst:29 msgid ":doc:`create and use dynamic pivot tables `" msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:29 +#: ../../content/applications/productivity/spreadsheet.rst:30 msgid "filter data across multiple Odoo data sources using :doc:`global filters `" msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:31 +#: ../../content/applications/productivity/spreadsheet.rst:32 msgid "visualize data using :doc:`charts ` and formatting" msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:32 +#: ../../content/applications/productivity/spreadsheet.rst:33 msgid "share files internally and externally" msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:34 +#: ../../content/applications/productivity/spreadsheet.rst:35 msgid "The Spreadsheet module is part of **Odoo Documents**." msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:37 +#: ../../content/applications/productivity/spreadsheet.rst:38 msgid "Odoo spreadsheets serve as the foundation for the :doc:`dashboards available in Odoo Dashboards <../../applications/productivity/dashboards>`. On a dashboard, charts and data tables are used to display dynamic Odoo data and provide an overview of key business metrics." msgstr "" -#: ../../content/applications/productivity/spreadsheet.rst:41 +#: ../../content/applications/productivity/spreadsheet.rst:42 msgid ":ref:`Standard, pre-configured dashboards ` can be :ref:`customized ` by editing the dashboard's underlying spreadsheet via Dashboards. :ref:`Custom dashboards ` can also be created from scratch, starting from an Odoo spreadsheet; any subsequent :ref:`modifications ` are performed via Dashboards." msgstr "" @@ -9403,6 +9403,413 @@ msgstr "" msgid ":ref:`Odoo-specific spreadsheet functions ` allow you to retrieve such accounting data from your database and insert it into a spreadsheet." msgstr "" +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:3 +msgid "Share and collaborate" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:5 +msgid "Odoo Spreadsheet offers various features that allow for efficient real-time collaboration while ensuring the appropriate level of control and traceability, including:" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:8 +msgid ":ref:`permission-based sharing `" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:9 +msgid ":ref:`version history `" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:10 +msgid "discussions via :ref:`comments and the spreadsheet's chatter thread `" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:16 +msgid "Access and sharing" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:18 +msgid "In principle, the rights to access Odoo spreadsheets are handled like :ref:`any other file in the Documents app `. :ref:`Roles and permissions ` are either inherited from the folder a spreadsheet is saved in or controlled at the level of the spreadsheet itself." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:23 +msgid "However, there are important differences to consider between :ref:`spreadsheets that contain only static data ` and :ref:`spreadsheets that contain dynamic Odoo data `, in terms of both access and data visibility." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:30 +msgid "Access to a folder or spreadsheet can be managed by its owner or any user with :guilabel:`Editor` rights." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:32 +msgid "A user with :guilabel:`Viewer` rights cannot share a spreadsheet with a specific user directly, but can copy a link to the spreadsheet." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:34 +msgid "Any user with access to a spreadsheet can download it as an `.xlsx` file by clicking :menuselection:`File -->` :icon:`os-download` :menuselection:`Download` from the menu bar. If the spreadsheet contained dynamic data, the values are frozen at the moment of download." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:41 +msgid "Roles and permissions" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:43 +msgid "Permissions are managed using the following roles:" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:50 +msgid "Role" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:51 +msgid "View" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:52 +msgid "Edit" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:53 +msgid "Delete" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:54 +msgid "Download .xlsx" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:55 +msgid "Share" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:56 +msgid "Manage roles" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:57 +msgid "Use comments" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:58 +msgid "Use chatter" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:59 +msgid "Owner" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:60 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:61 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:62 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:63 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:66 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:67 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:69 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:70 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:71 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:72 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:75 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:76 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:78 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:81 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:85 +msgid ":icon:`fa-check`" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:64 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:73 +msgid ":icon:`fa-check` with specific people or via link" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:65 +msgid ":icon:`fa-check` including changing owner" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:68 +msgid "Editor" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:74 +msgid ":icon:`fa-check` but cannot change owner" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:77 +msgid "Viewer" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:79 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:80 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:83 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:84 +msgid ":icon:`oi-close`" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:82 +msgid ":icon:`fa-check` only via link" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:90 +msgid "Share a static spreadsheet" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:92 +msgid "Spreadsheets containing only static data can be shared internally or externally by the owner of the spreadsheet or any user with :guilabel:`Editor` rights." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:95 +msgid "To do so, click :icon:`fa-share-alt` :guilabel:`Share` in the upper-right corner above the spreadsheet, then :ref:`configure access as appropriate `." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:101 +msgid "Share a dynamic spreadsheet" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:103 +msgid "A spreadsheet is considered a *dynamic spreadsheet* if it contains any of the following:" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:105 +msgid "formulas that retrieve live data from an Odoo database, e.g., in a :doc:`list or pivot table that has been inserted into the spreadsheet `" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:107 +msgid "a linked :ref:`data source `, even if the corresponding list or pivot table has been deleted from the spreadsheet" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:109 +msgid "links to Odoo menu items" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:112 +msgid "Internal sharing" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:114 +msgid "Spreadsheets containing dynamic Odoo data can be shared *with internal users only* by the owner of the spreadsheet or any user with :guilabel:`Editor` rights." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:117 +msgid "However, having access to a spreadsheet does not necessarily mean an internal user *sees* all the data in the original spreadsheet. The visibility of dynamic Odoo data is based on an internal user’s access rights to the model from which the data has been retrieved, and takes into account any record rules that may restrict access." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:123 +msgid "Permissions to view data are taken into account when an internal user opens a spreadsheet, with the spreadsheet only being populated with data the user is authorized to see." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:127 +msgid "A sales manager creates a spreadsheet that includes sales data for all the salespeople in their team. Users with the permission `Sales / User: Own Documents Only` only see data related to their own sales." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:131 +msgid "To share a spreadsheet containing dynamic Odoo data, click :icon:`fa-share-alt` :guilabel:`Share` in the upper-right corner above the spreadsheet, then :ref:`configure access as appropriate `." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:136 +msgid "External sharing" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:138 +msgid "Spreadsheets containing dynamic Odoo data *cannot be accessed by external users*." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:141 +msgid "If an external user attempts to access a dynamic spreadsheet via a link, an error message is shown." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:144 +msgid "If a spreadsheet containing Odoo data needs to be shared with an external user, the owner of the spreadsheet or a user with :guilabel:`Editor` rights can create a frozen, read-only version. In this version, all Odoo formulas are converted to their value at the moment the frozen version is created, and any links to Odoo menus are removed." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:149 +msgid "To create a frozen version of a spreadsheet that contains dynamic Odoo data, click :icon:`fa-share-alt` :guilabel:`Freeze and share` in the upper-right corner above the spreadsheet, then :ref:`configure access as appropriate `." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:154 +msgid "It is also possible to download a frozen version of a spreadsheet that contains Odoo data as an `.xlsx` file by clicking :menuselection:`File -->` :icon:`os-download` :menuselection:`Download` from the menu bar. The values of any dynamic data are frozen at the moment of download." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:161 +msgid "Comments and chatter" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:163 +msgid "Odoo Spreadsheet offers two ways to communicate with other users who have access to the same spreadsheet, namely by using:" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:166 +msgid ":ref:`comments `" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:167 +msgid "the spreadsheet's :ref:`chatter thread `" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:172 +msgid "Use comments in a spreadsheet" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:174 +msgid "Comments, which are added to individual spreadsheet cells, are useful for discussing specific elements of a spreadsheet. Other collaborators can be notified by typing `@` followed by their name." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:179 +msgid "Only the spreadsheet's owner or users with :guilabel:`Editor` rights can use comments in a spreadsheet; both roles can perform the same actions. Comments are not visible to users with :guilabel:`Viewer` rights." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:186 +msgid "Add or react to comments" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:188 +msgid "To add or react to a comment:" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:190 +msgid "If the comment is:" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:192 +msgid "the first comment being added to the cell, right-click the cell then click :icon:`os-comments` :guilabel:`Insert comment` or click :menuselection:`Insert -->` :icon:`os-comments` :menuselection:`Insert comment` from the menu bar." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:195 +msgid "a reaction to an existing comment thread on a cell, click on the relevant cell or on the comment thread to open the thread." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:198 +msgid "Type a comment in the text box." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:201 +msgid "Type `@` to tag users, or add emojis or GIFs by clicking :icon:`oi-smile-add` :guilabel:`Add a Reaction`." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:204 +msgid "Click :guilabel:`Send` or press `Ctrl` + `Enter`." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:206 +msgid "Click anywhere else in the spreadsheet to close the comment thread." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:209 +msgid "To react to an individual comment with only an emoji, hover over the comment, click the :icon:`oi-smile-add` :guilabel:`(Add a Reaction)` icon, then select the desired emoji." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:215 +msgid "View comments" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:217 +msgid "When a comment has been added to a cell, a small yellow triangle appears in the top right corner of the cell." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:220 +msgid "To view a comment thread on a single cell, hover over the cell; click the cell or the comment thread to open the thread to be able to add a comment." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:223 +msgid "To view all comments on a spreadsheet, click :menuselection:`View -->` :icon:`os-comments` :menuselection:`All comments` from the menu bar. Alternatively, after opening a comment thread, click :guilabel:`Open all comments`." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:227 +msgid "The :guilabel:`Comments` panel opens on the right side of the spreadsheet. By default, comment threads for :guilabel:`All sheets` of the spreadsheet are shown, grouped by sheet. To see only the comment threads for the current sheet, select :guilabel:`This sheet` in the :guilabel:`Filter comments` field." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:232 +msgid "Click on a comment thread in the :guilabel:`Comments` panel to open it." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:237 +msgid "Edit or delete comments" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:240 +msgid "A spreadsheet's owner or users with :guilabel:`Editor` rights can edit or delete any comment." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:242 +msgid "To edit a comment:" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:244 +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:254 +msgid "Hover over the comment, then click the :icon:`fa-ellipsis-v` :guilabel:`(ellipsis)` icon." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:245 +msgid "Click :icon:`fa-pencil` :guilabel:`Edit`." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:246 +msgid "Make the desired changes, then click :guilabel:`Save` or press `Enter`. To abort the edit, click :guilabel:`Cancel` or press `Escape`." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:250 +msgid "A comment that has been modified has *(edited)* added to the end of the text." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:252 +msgid "To delete a comment:" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:255 +msgid "Click :icon:`fa-trash` :guilabel:`Delete`." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:256 +msgid "Click :guilabel:`Confirm` to confirm the deletion." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:261 +msgid "Resolve comment threads" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:263 +msgid "To resolve a comment thread:" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:265 +msgid "Access the :guilabel:`Comments` panel by clicking :menuselection:`View -->` :icon:`os-comments` :menuselection:`All comments` from the menu bar. Alternatively, with a comment thread open, click :guilabel:`Open all comments`." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:268 +msgid "Click the :icon:`fa-ellipsis-v` :guilabel:`(ellipsis)` icon for the relevant comment thread, then click :guilabel:`Resolve this thread`." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:271 +msgid "Once resolved, the comment thread is no longer accessible directly on the spreadsheet, but remains visible in the :guilabel:`Comments` panel; resolved threads are identified by a :icon:`fa-check` :guilabel:`(check)` icon." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:275 +msgid "To reopen a resolved comment thread, from the :guilabel:`Comments` panel, click the :icon:`fa-ellipsis-v` :guilabel:`(ellipsis)` icon for the relevant comment thread, then click :guilabel:`Re-open this thread`." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:282 +msgid "Use a spreadsheet's chatter thread" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:284 +msgid "Whereas :ref:`comments ` on specific spreadsheet cells are suited for discussions about specific elements of a spreadsheet, a spreadsheet’s :doc:`chatter thread <../discuss/chatter>` allows for a more general discussion." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:288 +msgid "To access the chatter thread of a spreadsheet:" +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:290 +msgid "With the **Documents** app open, navigate to the folder or section where the spreadsheet is saved." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:292 +msgid "Select the :icon:`oi-view-list` :guilabel:`(List)` view in the upper-right corner." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:293 +msgid "Select the relevant spreadsheet, then click the :icon:`fa-info-circle` :guilabel:`(Info & tags)` button in the upper-right corner next to the view selector. Alternatively, with the spreadsheet selected, click the :icon:`fa-cog` :guilabel:`Action` button, then select :icon:`fa-info-circle` :guilabel:`(Info & tags)`." +msgstr "" + +#: ../../content/applications/productivity/spreadsheet/share_collaborate.rst:298 +msgid "The spreadsheet’s chatter thread opens on the right of the screen, below the spreadsheet's :ref:`details panel `." +msgstr "" + #: ../../content/applications/productivity/spreadsheet/visualize_data.rst:5 msgid "Present and visualize data" msgstr "" diff --git a/locale/sources/sales.pot b/locale/sources/sales.pot index d1bf86474b..345ed71f77 100644 --- a/locale/sources/sales.pot +++ b/locale/sources/sales.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 18.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-17 08:58+0000\n" +"POT-Creation-Date: 2025-11-18 11:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -68,7 +68,7 @@ msgstr "" #: ../../content/applications/sales/point_of_sale/payment_methods/terminals/tyro.rst:14 #: ../../content/applications/sales/point_of_sale/pos_based_marketing.rst:72 #: ../../content/applications/sales/point_of_sale/pos_hardware.rst:30 -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:140 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:142 #: ../../content/applications/sales/point_of_sale/preparation.rst:12 #: ../../content/applications/sales/point_of_sale/pricing/cash_rounding.rst:17 #: ../../content/applications/sales/point_of_sale/pricing/electronic_labels.rst:16 @@ -89,6 +89,7 @@ msgstr "" #: ../../content/applications/sales/sales/products_prices/prices/pricing.rst:15 #: ../../content/applications/sales/sales/products_prices/products/product_images.rst:14 #: ../../content/applications/sales/sales/products_prices/products/variants.rst:34 +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:12 #: ../../content/applications/sales/sales/sales_quotations/pdf_quote_builder.rst:24 #: ../../content/applications/sales/sales/sales_quotations/quote_template.rst:11 #: ../../content/applications/sales/subscriptions/closing.rst:9 @@ -5367,7 +5368,7 @@ msgid "To use an ePos printer in Point of Sale:" msgstr "" #: ../../content/applications/sales/point_of_sale/configuration/epos_printers.rst:14 -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:145 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:147 msgid ":ref:`Access the POS settings `." msgstr "" @@ -5941,7 +5942,7 @@ msgid "The barcode scanner must end barcodes with an `ENTER` character (keycode msgstr "" #: ../../content/applications/sales/point_of_sale/configuration/pos_iot.rst:29 -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:123 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:125 msgid "Scale" msgstr "" @@ -6065,9 +6066,9 @@ msgstr "" #: ../../content/applications/sales/point_of_sale/employee_login.rst:46 #: ../../content/applications/sales/point_of_sale/pos_hardware.rst:70 -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:79 -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:108 -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:206 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:81 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:110 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:208 msgid ":ref:`Open a POS session `." msgstr "" @@ -6147,16 +6148,20 @@ msgstr "" msgid ":ref:`Close the current POS session `." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:77 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:75 +msgid "An employee with advanced POS rights who is not a database user cannot access the backend." +msgstr "" + +#: ../../content/applications/sales/point_of_sale/employee_login.rst:80 #: ../../content/applications/sales/point_of_sale/self_order.rst:169 msgid "Usage guidelines" msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:80 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:83 msgid "Logging in" msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:82 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:85 msgid "Once the **Log in with Employees** feature is enabled, employees must log in to :ref:`open a POS session ` and access the POS interface. They can :ref:`scan their employee badge `, click the :icon:`fa-users` icon (:guilabel:`users`) to select their name from the list of authorized users, or by entering :ref:`their PIN code ` in the :guilabel:`Enter your PIN` field." msgstr "" @@ -6164,73 +6169,73 @@ msgstr "" msgid "Login window to open a session when the multiple cashiers feature is active" msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:91 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:94 msgid "To switch between users during an :ref:`active session `, click on the currently logged-in employee's name at the top right of the POS screen and select the user to switch to." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:95 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:98 msgid "In the absence of a scanner, click the :icon:`fa-barcode` icon (:guilabel:`barcode`) to scan barcodes using the webcam." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:101 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:104 msgid "Logging in with badges" msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:103 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:106 msgid "Employees can log in using their badge. To configure badge-based login, assign a unique badge ID to the employee's profile in the **Employees** module:" msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:106 -#: ../../content/applications/sales/point_of_sale/employee_login.rst:127 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:109 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:130 msgid "Navigate to the **Employees** module." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:107 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:110 msgid "Open the form view of the specific employee." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:108 -#: ../../content/applications/sales/point_of_sale/employee_login.rst:129 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:111 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:132 msgid "Go to the :guilabel:`Settings` tab." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:109 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:112 msgid "The :guilabel:`Attendance/Point of Sale/Manufacturing` category offers two options:" msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:111 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:114 msgid "Manually enter any badge ID in the :guilabel:`Badge ID` field." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:112 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:115 msgid "Click :guilabel:`Generate` to create a unique badge ID automatically." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:113 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:116 msgid "Click :guilabel:`Print Badge` to generate a barcode representation of the assigned badge ID." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:115 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:118 msgid "To switch users within an open POS session using a badge, you must first lock the session. To do so, click the :icon:`fa-lg fa-lock` icon (:guilabel:`lock`) to return to the login screen. Then, the new employee can scan their badge to log in." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:122 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:125 msgid "Adding a PIN Code" msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:124 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:127 msgid "For enhanced security, employees may be forced to enter a PIN code each time they log into a POS session. To set up a PIN code for an employee:" msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:128 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:131 msgid "Open the form view of the relevant employee." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:130 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:133 msgid "Enter a desired numerical code in the :guilabel:`PIN Code` field of the :guilabel:`Attendance/Point of Sale/Manufacturing` category." msgstr "" -#: ../../content/applications/sales/point_of_sale/employee_login.rst:134 +#: ../../content/applications/sales/point_of_sale/employee_login.rst:137 msgid "The PIN code must consist of a sequence of digits only." msgstr "" @@ -6976,7 +6981,7 @@ msgstr "" #: ../../content/applications/sales/point_of_sale/payment_methods/terminals/pine_labs.rst:50 #: ../../content/applications/sales/point_of_sale/payment_methods/terminals/viva_com.rst:82 #: ../../content/applications/sales/point_of_sale/payment_methods/terminals/worldline.rst:73 -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:148 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:150 #: ../../content/applications/sales/point_of_sale/restaurant.rst:126 #: ../../content/applications/sales/sales/products_prices/products/product_images.rst:115 msgid "Click :guilabel:`Save`." @@ -8395,8 +8400,8 @@ msgid "To open the customer display on a second screen connected to a POS system msgstr "" #: ../../content/applications/sales/point_of_sale/pos_hardware.rst:71 -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:80 -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:109 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:82 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:111 msgid "Click the :icon:`fa-bars` (:guilabel:`hamburger menu`) icon." msgstr "" @@ -8405,183 +8410,183 @@ msgid "Click the :icon:`fa-desktop` (:guilabel:`Customer Display`) icon, which o msgstr "" #: ../../content/applications/sales/point_of_sale/pos_hardware.rst:75 -msgid "For POS terminals running the Odoo Android app with dual-screen support," +msgid "For POS terminals running the `Odoo `_ Android app with dual-screen support, follow these steps:" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:77 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:79 msgid ":doc:`Activate the Point of Sale Mobile module <../../general/apps_modules>` to enable the customer display." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:81 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:83 msgid "Click the :icon:`fa-desktop` (:guilabel:`Customer Display`) icon, which opens the customer display on the terminal's secondary screen." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:87 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:89 msgid "Another device" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:89 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:91 msgid "To open the customer display on a remote device (any computer, tablet, or smartphone), follow these steps:" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:92 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:94 msgid "Access your database from the other device and navigate to :menuselection:`Point of Sale --> Dashboard`." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:94 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:96 msgid "Click the :icon:`fa-ellipsis-v` (:guilabel:`Dropdown menu`) icon on a POS card." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:95 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:97 msgid "Click :guilabel:`Customer Display` to open the display remotely." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:98 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:100 msgid "The two devices are not required to share the same network as long as they are connected to the same database." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:104 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:106 msgid "IOT-connected screen" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:106 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:108 msgid "To open the customer display onto an IoT-connected screens:" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:110 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:112 msgid "Click the :icon:`fa-desktop` (:guilabel:`Customer Display`) icon, which opens the customer display onto the IoT-connected screen." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:114 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:116 msgid "Both devices need to be connected to the same local network." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:117 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:119 msgid ":doc:`configuration/pos_iot`" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:118 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:120 msgid ":doc:`../../general/iot`" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:126 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:128 msgid "In EU member states, `certification is legally required `_ to use a scale as an integrated device." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:131 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:133 msgid "Prerequisite" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:133 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:135 msgid "Connecting a scale requires the use of an **IoT System**." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:136 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:138 msgid ":doc:`../../general/iot/connect`" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:137 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:139 msgid ":doc:`../../general/iot/devices/scale`" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:143 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:145 msgid "Scale connection" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:146 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:148 msgid "Scroll down to the :guilabel:`Connected Devices` section and enable :guilabel:`IoT Box`." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:147 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:149 msgid "Select the scale in the :guilabel:`Electronic Scale` field." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:151 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:153 msgid "Alternatively, click the :icon:`fa-ellipsis-v` (:guilabel:`Dropdown menu`) icon on a POS card and click :guilabel:`Edit` to access this setting." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:155 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:157 #: ../../content/applications/sales/sales/sales_quotations/orders_and_variants.rst:37 msgid "Product configuration" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:157 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:159 msgid "In order to weigh products using an integrated scale, go to :menuselection:`Point of Sale --> Products --> Products`, create a product or open an existing product form, and configure it as follows:" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:161 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:163 msgid "Ensure the :guilabel:`Point of Sale` checkbox is activated for the product to be available in POS." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:163 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:165 msgid "On the :guilabel:`General Information` tab, define a :guilabel:`Sales Price` per :guilabel:`kg`." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:166 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:168 msgid "This step requires to enable the :doc:`Units of Measure <../../inventory_and_mrp/inventory/product_management/configure/uom>` feature. To activate it:" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:169 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:171 msgid "Go to :menuselection:`Inventory --> Configuration --> Settings`." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:170 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:172 msgid "Scroll down to the :guilabel:`Products` section and activate :guilabel:`Units of Measure`." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:171 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:173 msgid "Go to the :guilabel:`Point of Sale` tab and activate :guilabel:`To Weigh With Scale`. This enables the product to be weighed directly on the connected scale at the POS." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:175 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:177 msgid "The selected unit of measure for weighable products must be :guilabel:`kg` to ensure compliance with **European regulations**." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:179 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:181 msgid ":doc:`../../inventory_and_mrp/inventory/product_management/configure/uom`" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:182 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:184 msgid "European regulations" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:184 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:186 msgid "When using scales in commercial transactions, the database integrated with a scale must be configured to meet specific European requirements. This includes supporting at least three decimal places for accuracy and using proper rounding for units of measure, such as `kg` instead of generic `units`." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:189 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:191 msgid "If the database is not compliant, a red :icon:`fa-balance-scale` (:guilabel:`scale`) icon displays as a warning. Click this icon to view the reasons for non-compliance and then select :guilabel:`Apply changes` to automatically apply the necessary changes to the settings. Once the database meets all regulatory requirements, the :icon:`fa-balance-scale` (:guilabel:`scale`) icon turns green." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:198 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:200 msgid "Additional guidelines" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:200 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:202 msgid "Both the :ref:`customer ` and POS displays must have a minimum diagonal size of 6 inches. For optimal readability, larger screens are recommended." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:204 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:206 msgid "Using a scale in PoS" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:207 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:209 msgid "Select the product to weigh on the order screen or scan its barcode." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:208 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:210 msgid "Place the product on the scale and wait for the weight to be displayed in the popup window." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:209 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:211 msgid "Once the weight is determined, the price is automatically computed." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:210 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:212 msgid "Click :guilabel:`Order` :icon:`fa-angle-double-right` to add the product to the cart." msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:211 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:213 msgid "Remove the previous product from the scale." msgstr "" @@ -8589,7 +8594,7 @@ msgstr "" msgid "weighing window" msgstr "" -#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:218 +#: ../../content/applications/sales/point_of_sale/pos_hardware.rst:220 msgid "Make sure the scale returns to `zero` before weighing a new product. If it does not, the :guilabel:`Order` :icon:`fa-angle-double-right` button remains unclickable until it is reset." msgstr "" @@ -10360,6 +10365,7 @@ msgid "The :guilabel:`Online Payment` feature is not supported." msgstr "" #: ../../content/applications/sales/point_of_sale/self_order.rst:116 +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:89 msgid ":doc:`../../finance/payment_providers`" msgstr "" @@ -16474,7 +16480,7 @@ msgstr "" #: ../../content/applications/sales/sales/sales_quotations/create_quotations.rst:328 #: ../../content/applications/sales/sales/sales_quotations/deadline.rst:56 #: ../../content/applications/sales/sales/sales_quotations/get_paid_to_validate.rst:89 -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:77 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:85 #: ../../content/applications/sales/sales/sales_quotations/optional_products.rst:99 #: ../../content/applications/sales/sales/sales_quotations/pdf_quote_builder.rst:269 msgid ":doc:`quote_template`" @@ -16491,7 +16497,7 @@ msgid ":doc:`get_signature_to_validate`" msgstr "" #: ../../content/applications/sales/sales/sales_quotations/create_quotations.rst:331 -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:78 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:86 #: ../../content/applications/sales/sales/sales_quotations/quote_template.rst:249 msgid ":doc:`get_paid_to_validate`" msgstr "" @@ -16766,7 +16772,7 @@ msgid "Online signatures for order confirmations" msgstr "" #: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:5 -msgid "The Odoo *Sales* application provides customers with the ability to confirm orders, via an online signature, directly on the sales order. Once the sales order is electronically signed by the customer, the salesperson attached to the sales order is instantly notified that the order is confirmed." +msgid "The Odoo **Sales** application provides customers with the ability to confirm orders, via an online signature, directly on the sales order. Once the sales order is electronically signed by the customer, the salesperson attached to the sales order is instantly notified that the order is confirmed." msgstr "" #: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:11 @@ -16785,11 +16791,11 @@ msgstr "" msgid "The Online Signature feature option in the Settings of the Odoo Sales application." msgstr "" -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:24 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:23 msgid "Then, click the :guilabel:`Save` button in the top-left corner." msgstr "" -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:27 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:26 msgid "When making a quotation template, the online signature feature is the :guilabel:`Signature` option, located in the :guilabel:`Online confirmation` field of the quotation template form." msgstr "" @@ -16797,7 +16803,7 @@ msgstr "" msgid "The Online confirmation signature option found on every quotation template in Odoo." msgstr "" -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:34 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:32 msgid "On standard quotations, the online signature feature is the :guilabel:`Signature` option, located under the :guilabel:`Other Info` tab of the quotation form." msgstr "" @@ -16805,11 +16811,11 @@ msgstr "" msgid "The online signature feature option in the Other Info tab of a quotation form in Odoo." msgstr "" -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:42 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:39 msgid "Order confirmations with online signatures" msgstr "" -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:44 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:41 msgid "When clients access quotations online through their customer portal, there's a :guilabel:`Sign \\& Pay` button directly on the quotation." msgstr "" @@ -16817,7 +16823,7 @@ msgstr "" msgid "The Sign and Pay button present on online quotations in Odoo Sales." msgstr "" -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:51 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:47 msgid "When clicked, a :guilabel:`Validate Order` pop-up window appears. In this pop-up window, the :guilabel:`Full Name` field is auto-populated, based on the contact information in the database." msgstr "" @@ -16825,24 +16831,184 @@ msgstr "" msgid "The Validate Order pop-up window for online signatures in Odoo Sales." msgstr "" -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:58 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:53 msgid "Then, customers have the option to enter an online signature with any of the following options: :guilabel:`Auto`, :guilabel:`Draw`, or :guilabel:`Load`." msgstr "" -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:61 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:56 msgid ":guilabel:`Auto` lets Odoo automatically generate an online signature based on the information in the :guilabel:`Full Name` field. :guilabel:`Draw` lets the customer use the cursor to create a custom signature directly on the pop-up window. And :guilabel:`Load` lets the customer upload a previously-created signature file from their computer." msgstr "" -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:66 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:61 msgid "After the customer has chosen any of the three previously mentioned signature options (:guilabel:`Auto`, :guilabel:`Draw`, or :guilabel:`Load`), they will click the :guilabel:`Accept \\& Sign` button." msgstr "" -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:70 +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:65 msgid "When :guilabel:`Accept \\& Sign` is clicked, the various payment method options become available for them to choose from (if the *online payment* option applies to this quotation)." msgstr "" -#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:73 -msgid "Then, when the quotation is paid and confirmed, a delivery order is automatically created (if the Odoo *Inventory* app is installed)." +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:68 +msgid "Then, when the quotation is paid and confirmed, a delivery order is automatically created (if the Odoo **Inventory** app is installed)." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:72 +msgid "View online signatures in Developer Mode" +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:74 +msgid "Clients can view the online signature in :ref:`developer mode `." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:76 +msgid "To view a online signature from a paid invoice, go to :menuselection:`Sales app --> Orders --> Orders` and select the desired sales order. A new tab, :guilabel:`Customer Signature`, is available. Click the tab to view the electronic signature as well as the :guilabel:`Signed By` and :guilabel:`Signed On` information." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/get_signature_to_validate.rst:-1 +msgid "The Customer Signature tab on a sales order when in Developer Mode." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:3 +msgid "Margins" +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:5 +msgid "The sales margin is the profit gained from the sale of a product or service after all the costs related to it have been accounted for." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:8 +msgid "In the Odoo **Sales** application, it is possible to show sales margins on quotations and sales orders. Salespeople can use the feature for better management and monitoring of profitability." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:14 +msgid "To activate the *Margins* feature, go to the :menuselection:`Sales app --> Configuration --> Settings`. In the :guilabel:`Pricing` section, tick the :guilabel:`Margins` checkbox. Then click :guilabel:`Save`." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:-1 +msgid "Margins checkbox." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:24 +msgid "Configure price and cost" +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:26 +msgid "To automatically calculate the sales margin for each quotation or sales order line item, go to :menuselection:`Sales app --> Products --> Products`. Fill out the :guilabel:`Sales Price` and :guilabel:`Cost` fields in the :guilabel:`General Information` tab for every product." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:30 +msgid "Odoo calculates the margin by:" +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:32 +msgid "Sales~Margin = Sales~Price - Cost\n" +"\n" +"" +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:35 +msgid "The margin percentage is calculated by:" +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:37 +msgid "\\frac{Sales~Price - Cost~Price}{Sales~Price} \\times 100\n" +"\n" +"" +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:-1 +msgid "Cable Management box product page." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:44 +msgid "Compute margins on sales orders" +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:46 +msgid "Go to :menuselection:`Sales app --> Orders --> Quotations` and click the :guilabel:`New` button to begin a new quotation. Fill out the quotation with the necessary information. While adding products to the quotation, a new field, :guilabel:`Margin`, automatically appears at the bottom of the document. This field displays the order's total margin in the configured currency as well as the percentage." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:-1 +msgid "Sales order with Margin field on the bottom." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:55 +msgid "To display a product's margin and the margin percentage per line item, click the :icon:`oi-settings-adjust` :guilabel:`(settings adjust)` icon in the :guilabel:`Order Lines` tab." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:58 +msgid "Then, tick the checkboxes for :guilabel:`Margin` and :guilabel:`Margin(%)`. The :guilabel:`Margin` column shows the profit to earn from the sale after accounting for all associated costs. It displays in the configured currency value. The :guilabel:`Margin(%)` shows the margin value as a percentage. The margin for one unit is multiplied by the quantity to determine the margin for the entire line." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:63 +msgid "The :guilabel:`Margin` and :guilabel:`Margin(%)` columns are not displayed by default, but once enabled, the columns appear on all new and existing quotations and :abbr:`SOs (sales orders)`." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:-1 +msgid "Sales order with Margin and Margin(%) columns displayed." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:70 +msgid "The :guilabel:`Margin` and :guilabel:`Margin (%)` columns are not editable since they are automatic calculations. To change the calculation, refer to :ref:`Configure price and cost ` section for more information." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:75 +msgid "Margin calculation with a pricelist" +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:77 +msgid "To calculate the margin with an applied pricelist, begin with configuring a pricelist for the product. Follow these steps:" +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:80 +msgid "Go to :menuselection:`Sales app --> Products --> Pricelists` and click the :guilabel:`New` button." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:82 +msgid "Enter the name of the pricelist and click :guilabel:`Add a line` to create a new pricelist rule." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:84 +msgid "Configure the pricelist and click :guilabel:`Save & Close` button." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:85 +msgid "Go to :menuselection:`Sales app --> Orders --> Quotations` and create a quotation." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:86 +msgid "In the :guilabel:`Pricelist` field, select the newly made pricelist." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:87 +msgid "Click on :guilabel:`Update Prices` to refresh the product price and margin." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:90 +msgid "To apply a seasonal 5% discount on blue denim jeans that requires a minumim of two pairs of jeans in an order and is valid only from October to the end of December, the pricelist rule should look like this:" +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:0 +msgid "Pricelist Rules pop-up window." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:97 +msgid "After saving the pricelist, go to the desired :abbr:`SO (sales order)` and select the newly created pricelist, and adjust the quantity according to the pricelist's rule." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:0 +msgid "Sales order with a new pricelist selected." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:103 +msgid "After the changes are made, click :icon:`fa-refresh` :guilabel:`Update Prices` to update the :guilabel:`Margin`, :guilabel:`Margin (%)`, and :guilabel:`Amount`. The margin is recalculated based on the pricelist-adjusted product's sales price and cost." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:0 +msgid "Sales order with margins recalculated based on the price-list adjustment." +msgstr "" + +#: ../../content/applications/sales/sales/sales_quotations/margin.rst:111 +msgid "Another way to visualize the impact of margins on sales orders is to go to :menuselection:`Sales app --> Orders --> Quotations`, select the :icon:`fa-area-chart` :guilabel:`(area chart)` icon or :icon:`oi-view-pivot` :guilabel:`(pivot)` icon, click :guilabel:`Measures` button and change it to :guilabel:`Margin` to see margin contributions across the customer base." msgstr "" #: ../../content/applications/sales/sales/sales_quotations/optional_products.rst:3 @@ -18347,7 +18513,7 @@ msgid "To get started with subscription products in Odoo, *recurring plans* (pre msgstr "" #: ../../content/applications/sales/subscriptions.rst:51 -msgid "Recurring plans are the time windows in which subscriptions are active before they renew again. While a subscription is active, customers receive products or services, and may also have access to additional benefits such as support desk triage. In terms of payment, these recurring plans designate how often the customer is charged in order to maintain the benefits of their subscription." +msgid "Recurring plans are the time periods when subscriptions are active before they need to be renewed again. While a subscription is active, customers receive products or services, and may also have access to additional benefits like support desk triage. Recurring plans also set the interval when the customer is charged in order to maintain their subscription." msgstr "" #: ../../content/applications/sales/subscriptions.rst:56 @@ -18355,11 +18521,11 @@ msgid "To configure recurring plans, go to :menuselection:`Subscriptions app --> msgstr "" #: ../../content/applications/sales/subscriptions.rst:59 -msgid "By default, the **Subscriptions** app includes a number of common recurring plans already available, such as :guilabel:`Monthly` and :guilabel:`Yearly`." +msgid "The **Subscriptions** app includes :guilabel:`Monthly`, :guilabel:`6 Months`, and :guilabel:`Yearly` as default recurring plan options." msgstr "" #: ../../content/applications/sales/subscriptions.rst:62 -msgid "Create a new recurring plan by clicking :guilabel:`New` on the :guilabel:`Recurring Plans` dashboard, to reveal a blank form where the plan :guilabel:`Name`, :guilabel:`DETAILS`, :guilabel:`SELF-SERVICE` and :guilabel:`Pricing` field values are specified." +msgid "Create a new recurring plan by clicking :guilabel:`New` on the :guilabel:`Recurring Plans` dashboard. A new recurring plan form is generated with the :guilabel:`Name` and some :guilabel:`DETAILS` filled out by default. These can all be changed freely." msgstr "" #: ../../content/applications/sales/subscriptions.rst:-1 @@ -18367,31 +18533,35 @@ msgid "A blank recurring plan form in the Odoo Subscriptions application." msgstr "" #: ../../content/applications/sales/subscriptions.rst:70 -msgid "The `Days` unit of measure *cannot* be used as a :guilabel:`Billing Period` for subscription products. The daily recurrence period in Odoo is designated for rentals, and **cannot** be added to subscription-based sales orders." +msgid "`Days` *is not* available as an option in the :guilabel:`Billing Period` drop-down menu. Recurring plans cannot be configured to bill on a daily basis." msgstr "" #: ../../content/applications/sales/subscriptions.rst:74 -msgid "This limitation is there to avoid sales orders that would generate daily invoices." +msgid "DETAILS section" msgstr "" -#: ../../content/applications/sales/subscriptions.rst:77 -msgid "DETAILS section" +#: ../../content/applications/sales/subscriptions.rst:76 +msgid "After giving the recurring plan a :guilabel:`Name`, the plan can be customized by filling out the fields in the :guilabel:`DETAILS` section. Only the :guilabel:`Billing Period` field is mandatory for a recurring plan to be saved." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:79 -msgid "After giving the recurring plan a suitable :guilabel:`Name` (e.g. `Monthly`, `Bi-weekly`, `Quarterly`, etc.), proceed to the form's :guilabel:`DETAILS` section to fill out the following configuration fields:" +#: ../../content/applications/sales/subscriptions.rst:80 +msgid ":guilabel:`Billing Period`: determines the interval which the subscription is billed. Set the unit of time (:guilabel:`Weeks`, :guilabel:`Months`, or :guilabel:`Years`) in the drop-down menu and the numerical value in the corresponding text field." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:83 -msgid ":guilabel:`Billing Period`: determines the frequency with which the subscription is billed. Set the unit of time (:guilabel:`Weeks`, :guilabel:`Months`, or :guilabel:`Years`) in the drop-down menu and the numerical value in the corresponding text field." +#: ../../content/applications/sales/subscriptions.rst:84 +msgid "The following fields allow for further customization and refinement of the recurring plan." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:86 -msgid ":guilabel:`Automatic Closing`: a numerical value, in days, where the subscription is set to close automatically if payment is not made." +#: ../../content/applications/sales/subscriptions.rst:87 +msgid ":guilabel:`Automatic Closing`: sets how many days it takes for the subscription to automatically" +msgstr "" + +#: ../../content/applications/sales/subscriptions.rst:87 +msgid "close if payment is not made." msgstr "" #: ../../content/applications/sales/subscriptions.rst:90 -msgid "If a subscription is set to renew on the 1st of every month, and the :guilabel:`Automatic Closing` value is set to `15` :guilabel:`Days`, then the subscription will close on the 16th of that month if payment is not received." +msgid "If a subscription is set to renew on the 1st of every month, and :guilabel:`Automatic Closing` is set to `15` :guilabel:`Days`, then the subscription closes on the 16th of that month if payment is not received." msgstr "" #: ../../content/applications/sales/subscriptions.rst:94 @@ -18399,19 +18569,23 @@ msgid ":guilabel:`Align to Period Start`: sets new and recurring subscription pl msgstr "" #: ../../content/applications/sales/subscriptions.rst:100 -msgid "On the 15th of July, a customer purchases a monthly subscription for a streaming service. Selecting :guilabel:`Align to Period Start` for this recurring plan configures this subscription to bill on the 1st of each month. The subscription begins as soon as payment is confirmed. The quotation shows the full cost of the subscription for July 1 - 31, but the invoice shows an adjusted cost for July 15 - 31. On the 1st of August, the customer is charged the full price for the month's subscription." +msgid "On the 15th of July, a customer purchases a monthly subscription for a streaming service. Selecting :guilabel:`Align to Period Start` for this recurring plan configures this subscription to bill on the 1st of each month instead of the 15th. The subscription begins as soon as payment is confirmed. The quotation shows the full cost of the subscription for July 1 - 31, but the invoice shows an adjusted cost for July 15 - 31. On the 1st of August, the customer is charged the full price for the month's subscription." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:107 -msgid ":guilabel:`Company`: optional assignment, if the database has :doc:`Multi-company <../general/companies/multi_company>` functionality enabled. Assigning this value will make the recurring plan available for that company's location, specifically." +#: ../../content/applications/sales/subscriptions.rst:109 +msgid ":guilabel:`Company`: makes the recurring plan only available for the chosen company. By default," msgstr "" -#: ../../content/applications/sales/subscriptions.rst:110 -msgid ":guilabel:`Invoice Email Template`: assigns a specific email template to be used in subscriptions invoicing communications. The default assignment here is `Invoice: Sending` which contains various dynamic fields that autopopulate specific variables across the :guilabel:`Subject` field and :guilabel:`Content` tab, such as the customer's name, invoice number, total amount invoiced, etc." +#: ../../content/applications/sales/subscriptions.rst:108 +msgid "this option is blank and the recurring plan is available to all companies. Only one company may be chosen for this option. :doc:`Multi-company <../general/companies/multi_company>` functionality must be enabled to use this option." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:116 -msgid "Although this field is optional, it is recommended to use it since this type of communication fulfills good business practices around price transparency, regular customer communication (especially as it relates to charged amounts), and helps build contextual financial documentation around recurring revenues." +#: ../../content/applications/sales/subscriptions.rst:111 +msgid ":guilabel:`Invoice Email Template`: assigns a specific email template to be used in subscriptions invoicing communications. The default is `Invoice: Sending` which contains dynamic fields that autopopulate specific variables across the :guilabel:`Subject` field and :guilabel:`Content` tab, such as the customer's name, invoice number, total amount invoiced, etc." +msgstr "" + +#: ../../content/applications/sales/subscriptions.rst:117 +msgid "Although this field is optional, using it is recommended since this type of communication fulfills good business practices around price transparency, regular communication (especially as relates to invoiced amounts), and financial documentation around recurring revenues." msgstr "" #: ../../content/applications/sales/subscriptions.rst:0 @@ -18431,190 +18605,158 @@ msgid "The following optional fields enable customers to take administrative act msgstr "" #: ../../content/applications/sales/subscriptions.rst:135 -msgid ":guilabel:`Closable`: checking this box will give customers the power to close their own subscriptions. Consider enabling this option to reduce customer service requests and improve the overall customer experience; customers that can manage their own subscriptions in this way helps offload tedious tasks for sales and support teams, and reduces the likelihood of negative reviews." +msgid ":guilabel:`Closable`: gives customers the power to close their own subscriptions without having to get assistance from sales or support teams." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:141 -msgid "Although this option is generally advisable to enable, sales teams with strong customer offboarding processes may consider leaving this option unchecked in order to force an interaction that might save the subscription or a different form of recurring revenue (such as in the case of a lesser subscription or a new trial period with an alternative plan)." +#: ../../content/applications/sales/subscriptions.rst:139 +msgid "Although enabling this may reduce service requests and improve the customer experience, sales teams with strong customer offboarding processes may consider leaving this option unchecked to create more interactions that might save the subscription or a different form of recurring revenue (such as in the case of a lesser subscription or a new trial period with an alternative plan)." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:146 -msgid ":guilabel:`Add Products`: allows customers to add new products or edit existing product quantities to their recurring sales orders, thereby enabling customer-driven upselling. When enabled, :doc:`Upsell quotations ` are generated in Odoo whenever a customer performs a quantitative adjustment on their sales order product lines." +#: ../../content/applications/sales/subscriptions.rst:145 +msgid ":guilabel:`Add Products`: allows customers to add new products or edit existing product quantities to their recurring sales orders, thereby enabling customer-driven upselling. When enabled, :doc:`Upsell quotations ` are generated whenever a customer performs a quantitative adjustment on their sales order product lines." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:151 -msgid ":guilabel:`Renew`: enabling this allows customers to manually create a :doc:`Renewal quotation ` for their subscription." +#: ../../content/applications/sales/subscriptions.rst:149 +msgid ":guilabel:`Renew`: allows customers to manually create a :doc:`Renewal quotation ` for their subscription." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:153 -msgid ":guilabel:`Optional Plans`: adding values here from the drop-down field menu enables customers to switch their subscription plans, in which case a new subscription quotation or renewal quote is created to accommodate the change request." +#: ../../content/applications/sales/subscriptions.rst:151 +msgid ":guilabel:`Optional Plans`: allows customers to switch their subscription plans from the current recurring plan to one of the values chosen here. This generates a new subscription or renewal quote to accommodate the change request." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:158 +#: ../../content/applications/sales/subscriptions.rst:156 msgid "Pricing tab" msgstr "" -#: ../../content/applications/sales/subscriptions.rst:160 +#: ../../content/applications/sales/subscriptions.rst:158 msgid "Make product-specific pricing adjustments, as part of the recurring plan, by adding them to the :guilabel:`Pricing` tab order lines. Sequentially add the :guilabel:`Products`, along with any respective :guilabel:`Product Variants`, and then assign a :guilabel:`Pricelist` (if available) and a :guilabel:`Recurring Price`." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:166 +#: ../../content/applications/sales/subscriptions.rst:164 msgid "Price rules that are added here take precedent over the default pricing information on the subscription product's form. This is meant to accommodate deals, discounts, and similar pricing adjustment strategies that would incentivize customers to purchase the recurring plan." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:171 +#: ../../content/applications/sales/subscriptions.rst:169 msgid "Smart buttons" msgstr "" -#: ../../content/applications/sales/subscriptions.rst:173 +#: ../../content/applications/sales/subscriptions.rst:171 msgid "At the top of the individual :guilabel:`Recurring Plans` form, are two smart buttons to aid in navigating the recurring revenue sources attached to the plan:" msgstr "" -#: ../../content/applications/sales/subscriptions.rst:176 +#: ../../content/applications/sales/subscriptions.rst:174 msgid ":guilabel:`Subscriptions`: shows the number of active subscriptions sales orders that fall under the recurring plan. Clicking the button leads to a tabled list view, where each row hyperlinks to a respective subscriptions sales order." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:179 -msgid ":guilabel:`Subscription Items`: lists all the individual recurring subscription services that are active, in an itemized fashion. :guilabel:`Subscription` and :guilabel:`Customer` values will repeat if the customer ordered multiple subscriptions on the same sales order." +#: ../../content/applications/sales/subscriptions.rst:177 +msgid ":guilabel:`Subscription Items`: lists all the individual recurring subscription services that are active, in an itemized fashion. :guilabel:`Subscription` and :guilabel:`Customer` values repeat if the customer ordered multiple subscriptions on the same sales order." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:184 +#: ../../content/applications/sales/subscriptions.rst:182 msgid "Product form configuration" msgstr "" -#: ../../content/applications/sales/subscriptions.rst:186 -msgid "With recurring plans set up, create a subscription product by navigating to :menuselection:`Subscriptions app --> Products --> Products`, and click either an existing product to edit, or make a new one by clicking :guilabel:`New` to open up the subscription product's form." +#: ../../content/applications/sales/subscriptions.rst:184 +msgid "With recurring plans set up, create a subscription product by navigating to :menuselection:`Subscriptions app --> Products --> Products`. Edit an existing product to edit or make a new one by clicking :guilabel:`New` to open up the subscription product's form." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:191 -msgid "By default, the :guilabel:`Subscriptions` option is already enabled, prompting Odoo to recognize it as a subscription product. Be sure to leave the :guilabel:`Subscriptions` and :guilabel:`Sales` options enabled." +#: ../../content/applications/sales/subscriptions.rst:189 +msgid "When making a product in the **Subscriptions** app, the :guilabel:`Subscriptions` option is enabled by default. Both the :guilabel:`Subscriptions` and :guilabel:`Sales` options enabled to sell the product as a subscription product." msgstr "" #: ../../content/applications/sales/subscriptions.rst:-1 -msgid "A basic subscription product form in Odoo Subscriptions application." +msgid "A basic subscription product form in the Odoo Subscriptions application." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:198 -msgid "On the product form, configure the following items in the :guilabel:`General Information` tab so the subscription product will function correctly:" +#: ../../content/applications/sales/subscriptions.rst:196 +msgid "On the product form, configure the following items in the :guilabel:`General Information` tab so the subscription product functions correctly:" msgstr "" -#: ../../content/applications/sales/subscriptions.rst:201 -msgid ":guilabel:`Product type`: this value is typically set to a :guilabel:`Service`, however other product types may be used depending on the purpose of the subscription (e.g., physical product box subscriptions, eLearning course with supplemental physical goods, etc.)." +#: ../../content/applications/sales/subscriptions.rst:199 +msgid ":guilabel:`Product Type`: sets the product type to a physical good, a provided service, or a combination of both. This is typically set to a :guilabel:`Service` by default." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:204 -msgid ":doc:`Invoicing policy `: set this value to when the customer should be charged for their subscription." +#: ../../content/applications/sales/subscriptions.rst:201 +msgid ":doc:`Invoicing Policy `: sets when the customer is charged for their subscription, such as when the good or service is rendered, when the order is placed, etc." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:206 -msgid ":guilabel:`Unit of Measure`: how the product should be counted in Odoo, for stock purposes. For most subscriptions, the :abbr:`UoM (Unit of Measure)` will be :guilabel:`Units`." +#: ../../content/applications/sales/subscriptions.rst:203 +msgid ":guilabel:`Unit of Measure`: determines how the product should be counted in Odoo, for stock purposes. For most subscriptions, the :abbr:`UoM (Unit of Measure)` is :guilabel:`Units`." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:208 -msgid ":guilabel:`Sales Price`: enter the recurring cost of the subscription that the customer will pay per recurrence period." +#: ../../content/applications/sales/subscriptions.rst:205 +msgid ":guilabel:`Sales Price`: sets the recurring cost of the subscription that the customer pays per recurrence period." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:211 -msgid "Optionally set up information on the:" +#: ../../content/applications/sales/subscriptions.rst:209 +msgid "When creating a subscription for a physical good, selecting the wrong :guilabel:`Invoicing Policy` will lead to errors when creating invoices. Physical products must be set to :guilabel:`Ordered quantities`." msgstr "" #: ../../content/applications/sales/subscriptions.rst:213 -msgid ":guilabel:`Create on Order` field: this enables secondary actions in Odoo such as creating a new :guilabel:`Task` in a chosen :guilabel:`Project` :icon:`fa-building-o`, :guilabel:`Event Registration` or :guilabel:`Course Access`. If none of the selectable actions in this field's drop-down menu are needed, then choose :guilabel:`Nothing` for the field' value." +msgid "Optionally set up information on the :doc:`Attributes & Variants ` tab if the subscription contains multiple choices for customers (i.e. food delivery, tailored fashion boxes, etc.)." msgstr "" #: ../../content/applications/sales/subscriptions.rst:217 -msgid ":doc:`Attributes & Variants ` tab if the subscription contains multiple choices for customers (i.e. food delivery, tailored fashion boxes, etc.)." +msgid "In the :guilabel:`Recurring Prices` tab, clarify the pricing options for the subscription. For each option available, click :guilabel:`Add a price rule` to add a new row." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:219 -msgid ":guilabel:`Purchase` tab if the product is sourced from a vendor, such as part of reseller (retail) or subcontracting operations." +#: ../../content/applications/sales/subscriptions.rst:221 +msgid "Longer :guilabel:`Recurring Plan` time periods usually feature discounts to incentivize customers to lock in a price and create a predictable revenue stream for businesses." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:222 -msgid "In the :guilabel:`Recurring Prices` tab, clarify the pricing options for the subscription. For each option available, click :guilabel:`Add a price rule` to add a new row." +#: ../../content/applications/sales/subscriptions.rst:227 +msgid "Manually creating a subscriptions quotation" msgstr "" -#: ../../content/applications/sales/subscriptions.rst:226 -msgid "Longer time :guilabel:`Recurring Plan` time periods are typically incentivized with cost savings. Consider dropping the total :guilabel:`Recurring Price` values to offer customers a discount while supporting the business's financial runway." +#: ../../content/applications/sales/subscriptions.rst:229 +msgid "A new customer subscription can be created by going to either the :menuselection:`Sales`` or :menuselection:`Subscriptions` app dashboards, then clicking :guilabel:`New`. On the quotation form, fill in the necessary fields such as :guilabel:`Customer` and :guilabel:`Recurring Plan`, as well as the :guilabel:`Order Lines` tab." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:230 -msgid "Last, if the subscription is meant to be sold on the **eCommerce** website, click the :icon:`fa-globe` :menuselection:`Go To Website` smart button and in the product page header, click the gray slider from :guilabel:`Unpublished` to the green :guilabel:`Published` status." +#: ../../content/applications/sales/subscriptions.rst:234 +msgid "Additionally, any of the following can also be added to the quotation:" msgstr "" -#: ../../content/applications/sales/subscriptions.rst:237 -msgid "Create a subscriptions quotation" +#: ../../content/applications/sales/subscriptions.rst:236 +msgid ":guilabel:`Expiration` date: indicates when the subscription offer is no longer valid." msgstr "" #: ../../content/applications/sales/subscriptions.rst:239 -msgid "Manually create a new customer subscription by navigating to either the :menuselection:`Sales` or :menuselection:`Subscriptions` app dashboards, and then clicking :guilabel:`New`." +msgid "Expiration dates pair well with :doc:`discounts ` to incentivize faster purchases, since the discount expires with the quotation if it is not turned into a sales order within the specified date range." msgstr "" #: ../../content/applications/sales/subscriptions.rst:243 -msgid "Products that have been marked as :guilabel:`Subscriptions` on their product forms, and are also sold on the **eCommerce** website will *automatically* create and confirm subscription quotations in the backend of Odoo." -msgstr "" - -#: ../../content/applications/sales/subscriptions.rst:248 -msgid "Sales orders with a defined recurring plan automatically become subscriptions." -msgstr "" - -#: ../../content/applications/sales/subscriptions.rst:250 -msgid "On the quotation form, fill in the necessary fields such as :guilabel:`Customer` and :guilabel:`Recurring Plan`, as well as the :guilabel:`Order Lines` tab." -msgstr "" - -#: ../../content/applications/sales/subscriptions.rst:253 -msgid "Optionally, specify a:" -msgstr "" - -#: ../../content/applications/sales/subscriptions.rst:255 -msgid ":doc:`Quotation Template `, if one is readily available to help populate the form fields." -msgstr "" - -#: ../../content/applications/sales/subscriptions.rst:257 -msgid ":guilabel:`Expiration` date, to indicate when the subscription offer is no longer valid." -msgstr "" - -#: ../../content/applications/sales/subscriptions.rst:260 -msgid "Expiration dates pair well with :doc:`discounts ` to incentivize faster purchases, since the discount will expire with the quotation if it's not turned into a sales order within the specified date range." -msgstr "" - -#: ../../content/applications/sales/subscriptions.rst:264 -msgid ":doc:`Pricelist `, if one is available and appropriate to use (i.e., summer sale discount, VIP customer, etc.)." -msgstr "" - -#: ../../content/applications/sales/subscriptions.rst:266 -msgid ":guilabel:`Payment Terms`, to set a specified time window for when the subscription must be paid. This is not to be confused for when the quotation is *confirmed* and becomes a sales order, to where, payment may then be obtained immediately or within a certain amount of days, weeks, months, etc." +msgid ":guilabel:`Payment Terms`: specifies a time frame by which the subscription must be paid once confirmed as a sales order." msgstr "" #: ../../content/applications/sales/subscriptions.rst:-1 msgid "A completed example of a new subscription quotation in Odoo." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:275 -msgid "Define different invoice and delivery addresses by enabling the :doc:`Customer Addresses ` feature." +#: ../../content/applications/sales/subscriptions.rst:252 +msgid "Confirmation" msgstr "" -#: ../../content/applications/sales/subscriptions.rst:281 -msgid "Confirmation" +#: ../../content/applications/sales/subscriptions.rst:254 +msgid "Send the quotation to the customer for confirmation by clicking on :guilabel:`Send By Email`, or confirm it immediately by clicking on :guilabel:`Confirm`. Click on :guilabel:`Preview` to preview the customer portal where the customer can view their quotation, sign and pay it, and communicate with you." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:283 -msgid "Send the quotation to the customer for confirmation by clicking on :guilabel:`Send By Email`, or confirm it immediately by clicking on :guilabel:`Confirm`." +#: ../../content/applications/sales/subscriptions.rst:259 +msgid "If an :guilabel:`Online signature` or :guilabel:`Online payment` is required to confirm the quotation, set the checkboxes next to either (or both) of these labels in the :guilabel:`Other Info` tab, under the :guilabel:`SALES` section." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:287 -msgid "Click on :guilabel:`Preview` to preview the customer portal where the customer can view their quotation, sign and pay it, and communicate with you." +#: ../../content/applications/sales/subscriptions.rst:264 +msgid "Automatically created subscriptions quotations" msgstr "" -#: ../../content/applications/sales/subscriptions.rst:290 -msgid "If an :guilabel:`Online signature` or :guilabel:`Online payment` is required to confirm the quotation, set the checkboxes next to either (or both) of these labels in the :guilabel:`Other Info` tab, under the :guilabel:`SALES` section." +#: ../../content/applications/sales/subscriptions.rst:266 +msgid "Products that have been marked as :guilabel:`Subscriptions` on their product forms, and are also sold on the **eCommerce** website *automatically* create and confirm subscription quotations in Odoo. Sales orders with defined recurring plans automatically become subscriptions." msgstr "" -#: ../../content/applications/sales/subscriptions.rst:295 +#: ../../content/applications/sales/subscriptions.rst:271 msgid ":doc:`/applications/finance/accounting/payments/online`" msgstr "" -#: ../../content/applications/sales/subscriptions.rst:296 +#: ../../content/applications/sales/subscriptions.rst:272 msgid ":doc:`Payment providers and payment methods `" msgstr "" @@ -18639,7 +18781,7 @@ msgid "To create an automated rule, start by navigating to :menuselection:`Subsc msgstr "" #: ../../content/applications/sales/subscriptions/automatic_alerts.rst:19 -msgid "The :guilabel:`Automation Rules` page shows each rule's :guilabel:`Name`, :guilabel:`Action To Do`, what the automated rule will :guilabel:`Trigger On`, and the :guilabel:`Company` to which the rule applies." +msgid "The :guilabel:`Automation Rules` page shows each rule's :guilabel:`Name`, :guilabel:`Action To Do`, what the automated rule is set to :guilabel:`Trigger On`, and the :guilabel:`Company` to which the rule applies." msgstr "" #: ../../content/applications/sales/subscriptions/automatic_alerts.rst:23 @@ -18747,7 +18889,7 @@ msgid "The :guilabel:`Action` section dictates what action occurs when an automa msgstr "" #: ../../content/applications/sales/subscriptions/automatic_alerts.rst:91 -msgid "In the :guilabel:`Action To Do` field, choose the action that will occur once the automated rule is triggered. When clicked, the following options become available on a drop-down menu:" +msgid "In the :guilabel:`Action To Do` field, choose the action that occurs once the automated rule is triggered. When clicked, the following options become available on a drop-down menu:" msgstr "" #: ../../content/applications/sales/subscriptions/automatic_alerts.rst:94 @@ -18799,70 +18941,198 @@ msgid "A :guilabel:`Trigger Now` button appears at the top of the automation rul msgstr "" #: ../../content/applications/sales/subscriptions/automatic_alerts.rst:128 -msgid "When the :guilabel:`Trigger Now` button is clicked, Odoo will trigger the action on *all* linked subscriptions, regardless of possible timed conditions." +msgid "When the :guilabel:`Trigger Now` button is clicked, Odoo triggers the action on *all* linked subscriptions, regardless of possible timed conditions." msgstr "" #: ../../content/applications/sales/subscriptions/automatic_alerts.rst:132 msgid "Sending a SMS text message in Odoo requires In-App Purchase (IAP) credit or tokens. For more information on :abbr:`IAP (In-App Purchase)`, visit :doc:`../../essentials/in_app_purchase`. For more information on sending SMS messages, visit :doc:`../../marketing/sms_marketing`." msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:137 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:136 msgid "If :guilabel:`Timed Condition` is selected in the :guilabel:`Trigger On` field, the following fields appear:" msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:140 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:139 msgid ":guilabel:`Trigger Date`: represents when the condition should be triggered. If left blank, the action is created upon subscription creation *and* updates." msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:142 -msgid ":guilabel:`Delay After Trigger`: select a delayed amount of time (:guilabel:`Minutes`, :guilabel:`Hours`, :guilabel:`Days`, or :guilabel:`Months`) for Odoo to wait before triggering the configured action. If a negative number is entered, the \"delay\" will occur *before* the :guilabel:`Trigger Date`." +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:141 +msgid ":guilabel:`Delay After Trigger`: select a delayed amount of time (:guilabel:`Minutes`, :guilabel:`Hours`, :guilabel:`Days`, or :guilabel:`Months`) for Odoo to wait before triggering the configured action. If a negative number is entered, the \"delay\" occurs *before* the :guilabel:`Trigger Date`." msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:148 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:147 msgid "Activity section" msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:150 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:149 msgid "If :guilabel:`Create next activity` is selected in the :guilabel:`Action To Do` field, an :guilabel:`Activity` section appears at the bottom of the :guilabel:`Automation Rules` form." msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:153 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:152 msgid ":guilabel:`Activity Type`: select an pre-configured activity type from the drop-down menu." msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:154 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:153 msgid ":guilabel:`Title`: enter a custom title for the chosen activity." msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:155 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:154 msgid ":guilabel:`Note`: leave a note for the employee to whom the activity is assigned." msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:156 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:155 msgid ":guilabel:`Due Date In`: enter an amount of days within which the activity should be completed." msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:157 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:156 msgid ":guilabel:`Assign To`: choose to assign the specified activity to either: :guilabel:`Subscription Salesperson`, :guilabel:`Sales Team Leader`, or :guilabel:`Specific Users`." msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:161 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:160 msgid "If :guilabel:`Specific Users` is selected as the :guilabel:`Assign To` option, a new :guilabel:`Specific Users` field appears beneath it, where a specific employee(s) can be chosen as the assignee(s) for the configured activity." msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:166 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:165 #: ../../content/applications/sales/subscriptions/closing.rst:103 -#: ../../content/applications/sales/subscriptions/renewals.rst:93 +#: ../../content/applications/sales/subscriptions/renewals.rst:56 #: ../../content/applications/sales/subscriptions/reports.rst:403 #: ../../content/applications/sales/subscriptions/scheduled_actions.rst:195 #: ../../content/applications/sales/subscriptions/upselling.rst:107 msgid ":doc:`../subscriptions`" msgstr "" -#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:167 +#: ../../content/applications/sales/subscriptions/automatic_alerts.rst:166 msgid ":doc:`../../essentials/in_app_purchase`" msgstr "" +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:3 +msgid "Subscriptions and automatic payments" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:5 +msgid "By default, the **Subscriptions** app will automatically generate quotations and invoices for customers, but it can also support automatic payments. Setting up automatic payments requires additional configuration, including choosing an automatic payment provider and either setting up a customer portal or an **eCommerce** website. Here's an overview of how to get started." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:11 +msgid "Setting up a payment processor that supports automatic payments" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:13 +msgid "Setting up automatic recurring payments requires using a payment provider that supports tokenization. Tokenization lets customers save their payment details, such as credit card or banking account information, for automatic billing. The following payment providers support tokenization:" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:17 +msgid ":doc:`Adyen <../../finance/payment_providers/adyen>`" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:18 +msgid ":doc:`Authorize.net <../../finance/payment_providers/authorize>`" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:19 +msgid ":doc:`Flutterwave <../../finance/payment_providers/flutterwave>`" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:20 +msgid ":doc:`Razorpay <../../finance/payment_providers/razorpay>`" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:21 +msgid ":doc:`Stripe <../../finance/payment_providers/stripe>`" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:22 +msgid ":doc:`Xendit <../../finance/payment_providers/xendit>`" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:24 +msgid "Here are the steps to setting up automatic payments." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:26 +msgid "Choose a payment provider that supports tokenization." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:27 +msgid "Follow the provider's own setup guide to create an account and begin configuring their API credentials in Odoo." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:29 +msgid ":ref:`Enable ` the payment provider." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:30 +msgid ":ref:`Configure the payment methods ` for the chosen payment provider." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:32 +msgid ":ref:`Configure the tokenization ` for the chosen payment provider." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:36 +msgid "How customers can set up automatic payments" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:38 +msgid "Once these steps are complete, payment providers will be able to create tokens with customers' saved payment details during the checkout process. Saved payment details can then be used for future online or recurring subscription charges. Customers will also be able to log into their :doc:`customer portal <../../general/users/portal>` and enter their payment information there." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:43 +msgid "Some payment providers will automatically save customers' payment information as part of the checkout process. Others will give them the option to save their information for future payments. If customers choose not to save their payment information, they will not be able to make automatic payments." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:49 +msgid "Building an **eCommerce** website requires the :doc:`Website <../../websites/website>` app." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:52 +msgid "What happens if an automatic payment fails?" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:54 +msgid "When an automatic payment fails, the sales order is updated with:" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:56 +msgid "a :guilabel:`Payment Failure` tag" +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:57 +msgid "the :guilabel:`Contract in exception` checkbox ticked (in the :guilabel:`Subscription` section of the :guilabel:`Other Info` tab)." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:60 +msgid "Being marked :guilabel:`Contract in exception` prevents scheduled actions from running, which keeps the system from accidentally double-charging the customer if the automatic payment actually went through. Because the status of the payment failed to register with the system, users must manually check if the payment has been made before automatic payments and other scheduled actions can resume." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:65 +msgid "To do this, navigate to :menuselection:`Subscriptions app --> Subscriptions --> Quotations`. Click into the desired subscription, then check the Chatter to see if the payment was made." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:68 +msgid "If the payment *was not* made, first enter :doc:`developer mode <../../general/developer_mode>`. Then, click the :guilabel:`Other Info` tab, and untick the checkbox next to :guilabel:`Contract in exception`. Reload the sales order and confirm that the :guilabel:`Payment Failure` tag is gone." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:72 +msgid "If the payment *was* made, a new invoice must be made and posted manually. This automatically updates the next invoice date of the subscription. Once the invoice is created, enter :doc:`developer mode <../../general/developer_mode>` and navigate to the new sales order. Click the :guilabel:`Other Info` tab, and untick the checkbox next to :guilabel:`Contract in exception`. Reload the sales order and confirm that the :guilabel:`Payment Failure` tag is gone." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:-1 +msgid "The contract in exception option selected with the payment failure tag shown." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:81 +msgid "The :guilabel:`Contract in exception` option selected with the :guilabel:`Payment Failure` tag shown." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:84 +msgid "In both cases, once the :guilabel:`Contract in exception` checkbox is no longer ticked, Odoo handles renewals automatically again. If the subscription remains in :guilabel:`Payment Failure`, it is ignored by Odoo until the sales order is closed." +msgstr "" + +#: ../../content/applications/sales/subscriptions/automatic_payments.rst:90 +msgid ":doc:`../../general/users/portal`" +msgstr "" + #: ../../content/applications/sales/subscriptions/closing.rst:3 msgid "Close subscriptions" msgstr "" @@ -19063,43 +19333,11 @@ msgstr "" msgid "Renewal quotation in the Odoo Subscriptions application." msgstr "" -#: ../../content/applications/sales/subscriptions/renewals.rst:56 -msgid "On rare occasions, automatic payments can fail to register properly, which results in a :guilabel:`Payment Failure` tag on the sales order and the :guilabel:`Contract in exception` checkbox being automatically ticked in the :guilabel:`Subscription` section of the sales order's :guilabel:`Other Info` tab." -msgstr "" - -#: ../../content/applications/sales/subscriptions/renewals.rst:61 -msgid "Being marked :guilabel:`Contract in exception` prevents scheduled actions from running, which keeps the system from accidentally double-charging the customer if the automatic payment actually went through. Because the status of the payment failed to register with the system, users must manually check if the payment has been made before automatic payments and other scheduled actions can resume." -msgstr "" - -#: ../../content/applications/sales/subscriptions/renewals.rst:67 -msgid "To do this, navigate to :menuselection:`Subscriptions app --> Subscriptions --> Quotations`. Click into the desired subscription, then check the Chatter to see if the payment was made." -msgstr "" - -#: ../../content/applications/sales/subscriptions/renewals.rst:70 -msgid "If the payment *was not* made, first enter :doc:`developer mode <../../general/developer_mode>`. Then, click the :guilabel:`Other Info` tab, and untick the checkbox next to :guilabel:`Contract in exception`. Reload the sales order and confirm that the :guilabel:`Payment Failure` tag is gone." -msgstr "" - -#: ../../content/applications/sales/subscriptions/renewals.rst:75 -msgid "If the payment *was* made, a new invoice must be made and posted manually. This automatically updates the next invoice date of the subscription. Once the invoice is created, enter :doc:`developer mode <../../general/developer_mode>` and navigate to the new sales order. Click the :guilabel:`Other Info` tab, and untick the checkbox next to :guilabel:`Contract in exception`. Reload the sales order and confirm that the :guilabel:`Payment Failure` tag is gone." -msgstr "" - -#: ../../content/applications/sales/subscriptions/renewals.rst:0 -msgid "The contract in exception option selected with the payment failure tag shown." -msgstr "" - -#: ../../content/applications/sales/subscriptions/renewals.rst:85 -msgid "The :guilabel:`Contract in exception` option selected with the :guilabel:`Payment Failure` tag shown." -msgstr "" - -#: ../../content/applications/sales/subscriptions/renewals.rst:88 -msgid "In both cases, once the :guilabel:`Contract in exception` checkbox is no longer ticked, Odoo handles renewals automatically again. If the subscription remains in :guilabel:`Payment Failure`, it is ignored by Odoo until the sales order is closed." -msgstr "" - -#: ../../content/applications/sales/subscriptions/renewals.rst:94 +#: ../../content/applications/sales/subscriptions/renewals.rst:57 msgid ":doc:`../sales/sales_quotations/create_quotations`" msgstr "" -#: ../../content/applications/sales/subscriptions/renewals.rst:95 +#: ../../content/applications/sales/subscriptions/renewals.rst:58 msgid ":doc:`../sales/sales_quotations/get_paid_to_validate`" msgstr "" @@ -19371,7 +19609,7 @@ msgid "In the Odoo **Subscriptions** app, there are four different reporting pag msgstr "" #: ../../content/applications/sales/subscriptions/reports.rst:210 -msgid "To access, analyze, and customize various reports related to subscriptions, navigate to :menuselection:`Subscriptions app`, and click the :guilabel:`Reporting` drop-down menu in the header to reveal the following reporting pages:" +msgid "To access, analyze, and customize various reports related to subscriptions, navigate to :menuselection:`Subscriptions app --> Reporting` drop-down menu in the header to reveal the following reporting pages:" msgstr "" #: ../../content/applications/sales/subscriptions/reports.rst:214 diff --git a/locale/sources/services.pot b/locale/sources/services.pot index 174749b8fa..8b408b1a86 100644 --- a/locale/sources/services.pot +++ b/locale/sources/services.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 18.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-17 08:58+0000\n" +"POT-Creation-Date: 2025-11-18 11:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2738,147 +2738,6 @@ msgstr "" msgid ":doc:`Allow customers to close their tickets `" msgstr "" -#: ../../content/applications/services/helpdesk/overview/stages.rst:3 -msgid "Stages" -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:5 -msgid "*Stages* are used to organize the **Helpdesk** pipeline and track the progress of tickets. Stages are customizable, and can be renamed to fit the needs of each team." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:9 -msgid "Create or modify stages" -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:12 -msgid ":ref:`Developer mode ` **must** be activated to access the stages menu. To activate developer mode, go to :menuselection:`Settings app --> General Settings --> Developer Tools`, and click :guilabel:`Activate the developer mode`." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:16 -msgid "To view or modify **Helpdesk** stages, go to :menuselection:`Helpdesk app --> Configuration --> Stages`." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:19 -msgid "The default list view on the :guilabel:`Stages` page displays the stages currently available in the **Helpdesk** app. They are listed in the order they appear in the pipeline." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:22 -msgid "To change the order of the stages, click the :icon:`oi-draggable` :guilabel:`(draggable)` icon, to the left of the stage name, and drag it to the desired place on the list." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:-1 -msgid "View of the stage list page emphasizing the buttons used to change the order the stages\n" -"appear in the list." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:30 -msgid "Change the stage order on the Kanban view of a **Helpdesk** team's pipeline by dragging and dropping individual columns." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:33 -msgid "To create a new stage, click the :guilabel:`New` button at the top-left of the stage list. Doing so reveals a blank stage form." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:36 -msgid "Choose a :guilabel:`Name` for the new stage." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:-1 -msgid "View of a stage's settings page in Odoo Helpdesk." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:42 -msgid "Add email and SMS templates to stages" -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:44 -msgid "When an :guilabel:`Email Template` is added to a stage, a preconfigured email is automatically sent to the customer when a ticket reaches that specific stage in the pipeline. Likewise, adding an :guilabel:`SMS Template` triggers a preconfigured SMS text message to send to the customer." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:49 -msgid "SMS text messaging is an :doc:`In-App Purchase (IAP) ` service that requires prepaid credits to work. Refer to `SMS Pricing FAQ `_ for additional information." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:53 -msgid "To select an existing email template, select it from the :guilabel:`Email Template` field. After choosing a template, click on the :icon:`oi-arrow-right` :guilabel:`(right arrow)` icon to the right of the field to edit the chosen template." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:57 -msgid "To create a new template from this form, click the field, and enter a title for the new template. Then, select :guilabel:`Create and edit` from the drop-down menu that appears, and complete the form details." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:61 -msgid "Follow the same steps to select, edit, or create an :guilabel:`SMS Template`." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:-1 -msgid "View of an SMS template setup page in Odoo Helpdesk." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:67 -msgid ":doc:`/applications/general/companies/email_template`" -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:70 -msgid "Fold a stage" -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:72 -msgid "By default, stages are unfolded in the Kanban view of either tickets dashboard: :guilabel:`My Tickets` (:menuselection:`Helpdesk app --> Tickets --> My Tickets`) or :guilabel:`All Tickets` (:menuselection:`Helpdesk app --> Tickets --> All Tickets`)." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:76 -msgid "Tickets in an unfolded stage are visible in the pipeline under the stage name, and are considered *open*." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:79 -msgid "Stages can be configured to be folded in the Kanban view of a tickets page." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:81 -msgid "The name of the folded stages are still visible, but the tickets in the stage are hidden from view." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:83 -msgid "To fold a stage, tick the :guilabel:`Folded in Kanban` checkbox on the :guilabel:`Stages` form." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:86 -msgid "Tickets that reach a *folded* stage are considered *closed*. Closing a ticket before the work is completed can result in reporting and communication issues. This setting should **only** be enabled for stages that are considered *closing* stages." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:91 -msgid "Temporarily fold a stage" -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:93 -msgid "Stages can be temporarily folded in the Kanban view of the tickets pipeline, as well." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:95 -msgid "View a specific team's pipeline by navigating to :menuselection:`Helpdesk app`, and clicking the team's Kanban card." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:98 -msgid "Hover the cursor at the top of the desired stage to fold temporarily, then click the :icon:`fa-gear` :guilabel:`(gear)` icon that appears, and select :guilabel:`Fold` from the drop-down menu." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:-1 -msgid "Kanban view of a Helpdesk stage, with the temporary fold option emphasized." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:105 -msgid "Manually folding a stage from the Kanban view is temporary and does **not** close the tickets in the stage." -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:109 -msgid "Assign stages to a team" -msgstr "" - -#: ../../content/applications/services/helpdesk/overview/stages.rst:111 -msgid "Make a selection in the :guilabel:`Helpdesk Teams` field on the :guilabel:`Stages` form. More than one team may be selected, since the same stage can be assigned to multiple teams." -msgstr "" - #: ../../content/applications/services/planning.rst:5 msgid "Planning" msgstr "" @@ -3000,7 +2859,7 @@ msgid "The :guilabel:`Working Hours` and the :guilabel:`Allocated Time` in Plann msgstr "" #: ../../content/applications/services/planning.rst:110 -msgid ":ref:`Payroll documentation on working schedules `" +msgid ":doc:`../hr/payroll/working_schedules`" msgstr "" #: ../../content/applications/services/planning.rst:113 @@ -3056,15 +2915,15 @@ msgid "Shift templates" msgstr "" #: ../../content/applications/services/planning.rst:151 -msgid "To create a shift template, click :guilabel:`New` on any schedule, then fill in the :ref:`details of the shift `. In order for the shift to be saved as a template, tick :guilabel:`Save as Template`." +msgid "To create a shift template, click :guilabel:`New` on any schedule, then fill in the :ref:`details of the shift `. In order for the shift to be saved as a template, click :guilabel:`Save Template`." msgstr "" #: ../../content/applications/services/planning.rst:-1 -msgid "Shift form with the option `save template` ticked." +msgid "Shift form." msgstr "" #: ../../content/applications/services/planning.rst:158 -msgid "Alternatively, you can go to :menuselection:`Planning --> Configuration --> Shift Templates`, then click :guilabel:`New`. Fill in the :guilabel:`Start Hour` and :guilabel:`Shift Duration`. The shift’s :guilabel:`End Time` is then calculated based on the :guilabel:`Working Hours`, taking into account working time as well as breaks." +msgid "Alternatively, you can go to :menuselection:`Planning --> Configuration --> Shift Templates`, then click :guilabel:`New`. Fill in the :guilabel:`Start Hour` and :guilabel:`Span`. The shift’s :guilabel:`End Time` is then calculated based on the :guilabel:`Working Hours`, taking into account working time as well as breaks." msgstr "" #: ../../content/applications/services/planning.rst:164 @@ -3160,58 +3019,54 @@ msgid ":guilabel:`Sales Order Item`: If the Sales app is installed in your datab msgstr "" #: ../../content/applications/services/planning.rst:225 -msgid ":guilabel:`Repeat`: Tick the checkbox and configure the :guilabel:`Repeat Every` field according to your needs. The following rules apply to recurring shifts:" +msgid ":guilabel:`Repeat`: Click the :icon:`fa-repeat` :guilabel:`(repeat)` button and configure the :guilabel:`Repeat every` fields according to your needs. The following rules apply to recurring shifts:" msgstr "" -#: ../../content/applications/services/planning.rst:228 +#: ../../content/applications/services/planning.rst:229 msgid "All fields (e.g., :guilabel:`Resource`, :guilabel:`Role`, :guilabel:`Project`) are copied from the original shift except for the date, which is adjusted according to the :guilabel:`Repeat Every` field." msgstr "" -#: ../../content/applications/services/planning.rst:231 +#: ../../content/applications/services/planning.rst:232 msgid "Recurrences are planned but not published." msgstr "" -#: ../../content/applications/services/planning.rst:232 +#: ../../content/applications/services/planning.rst:233 msgid "By default, planned shifts are created six months in advance, after which they are created gradually. To change the time frame, :ref:`activate the Developer mode `, then go to :menuselection:`Planning --> Configuration --> Settings` and edit the :guilabel:`Recurring Shifts`." msgstr "" -#: ../../content/applications/services/planning.rst:237 -msgid ":guilabel:`Save as Template`: When this option is ticked, a shift template is created with the same :guilabel:`Start and End hours`, :guilabel:`Allocated time`, :guilabel:`Role`, and :guilabel:`Project`." -msgstr "" - -#: ../../content/applications/services/planning.rst:240 +#: ../../content/applications/services/planning.rst:238 msgid ":guilabel:`Additional note sent to the employee`: Click on the field to add a note." msgstr "" -#: ../../content/applications/services/planning.rst:241 +#: ../../content/applications/services/planning.rst:239 msgid ":guilabel:`Date`: Choose the date and time of your shift. This is the only mandatory field when creating a shift." msgstr "" -#: ../../content/applications/services/planning.rst:243 +#: ../../content/applications/services/planning.rst:241 msgid ":guilabel:`Allocated time`: Is calculated based on the date and the employee’s :guilabel:`Working Schedule`. See more in :ref:`Shift Templates `." msgstr "" -#: ../../content/applications/services/planning.rst:246 +#: ../../content/applications/services/planning.rst:244 msgid "Click :guilabel:`Publish & Save` to confirm the shift and send the assigned employee their schedule by email." msgstr "" -#: ../../content/applications/services/planning.rst:250 +#: ../../content/applications/services/planning.rst:248 msgid "The draft is visible on the admin planning view and can be identified by diagonal lines. The employee is only notified of the shift once it's published." msgstr "" -#: ../../content/applications/services/planning.rst:253 +#: ../../content/applications/services/planning.rst:251 msgid "Two kinds of notifications are sent to the employees depending on their account configuration:" msgstr "" -#: ../../content/applications/services/planning.rst:255 +#: ../../content/applications/services/planning.rst:253 msgid "Employees without user accounts are redirected to a dedicated **Planning portal**." msgstr "" -#: ../../content/applications/services/planning.rst:256 +#: ../../content/applications/services/planning.rst:254 msgid "Employees with a user account are redirected to the :guilabel:`My Planning` view in the backend view of Odoo." msgstr "" -#: ../../content/applications/services/planning.rst:260 +#: ../../content/applications/services/planning.rst:258 msgid "The **split shifts** tool allows to easily split a long shift into segments. To do so, hover the mouse over the desired shift and click the :icon:`fa-scissors` (:guilabel:`scissors`) icon." msgstr "" @@ -3219,104 +3074,104 @@ msgstr "" msgid "Split shifts tool." msgstr "" -#: ../../content/applications/services/planning.rst:269 +#: ../../content/applications/services/planning.rst:267 msgid "Open shifts and auto planning" msgstr "" -#: ../../content/applications/services/planning.rst:271 +#: ../../content/applications/services/planning.rst:269 msgid "The :guilabel:`Auto Plan` button allows you to assign **Open shifts** (shifts with no resource assigned) and create and assign shifts linked to sales orders or project." msgstr "" -#: ../../content/applications/services/planning.rst:274 +#: ../../content/applications/services/planning.rst:272 msgid "The following features have an impact on auto planning:" msgstr "" -#: ../../content/applications/services/planning.rst:276 +#: ../../content/applications/services/planning.rst:274 msgid "**Roles**: Open shifts are only assigned to resources (employees or materials) that have the corresponding role assigned. It is not possible to use the :guilabel:`Auto Plan` feature for employee with no roles." msgstr "" -#: ../../content/applications/services/planning.rst:279 +#: ../../content/applications/services/planning.rst:277 msgid "**Default roles**: The default role assigned to a resource is given priority over the other roles they have assigned to them." msgstr "" -#: ../../content/applications/services/planning.rst:281 +#: ../../content/applications/services/planning.rst:279 msgid "**Conflicts**: Employees or materials cannot be assigned multiple shifts at the same time." msgstr "" -#: ../../content/applications/services/planning.rst:282 +#: ../../content/applications/services/planning.rst:280 msgid "**Time off**: The employees’ time off is taken into account, as well as public holidays." msgstr "" -#: ../../content/applications/services/planning.rst:283 +#: ../../content/applications/services/planning.rst:281 msgid "**Working hours**: Are taken into account when assigning shifts to employees or materials. It is not possible to use the :guilabel:`Auto Plan` feature for an employee who is working :ref:`flexible hours `." msgstr "" -#: ../../content/applications/services/planning.rst:286 +#: ../../content/applications/services/planning.rst:284 msgid "**Contracts**: If the employee has an active contract, they won't be assigned shifts that fall outside of their contract period." msgstr "" -#: ../../content/applications/services/planning.rst:289 +#: ../../content/applications/services/planning.rst:287 msgid "Click :guilabel:`Publish` to confirm the schedule and notify the employees of their planning." msgstr "" -#: ../../content/applications/services/planning.rst:294 +#: ../../content/applications/services/planning.rst:292 msgid "Switching shifts and unassignment" msgstr "" -#: ../../content/applications/services/planning.rst:296 +#: ../../content/applications/services/planning.rst:294 msgid "Two features are available to allow employees to make changes to their schedule: **switching shifts** and **unassignment**." msgstr "" -#: ../../content/applications/services/planning.rst:300 +#: ../../content/applications/services/planning.rst:298 msgid "These features are mutually exclusive. Switching shifts is possible by default and cannot be disabled. However, once the **Allow unassignment** feature is enabled, it replaces the option to switch shifts." msgstr "" -#: ../../content/applications/services/planning.rst:305 +#: ../../content/applications/services/planning.rst:303 msgid "Switching shifts" msgstr "" -#: ../../content/applications/services/planning.rst:307 +#: ../../content/applications/services/planning.rst:305 msgid "Once shifts are planned and published, employees receive an email notification. If an employee wishes to switch a shift, they can click the unwanted shift and click :guilabel:`Ask to switch`." msgstr "" -#: ../../content/applications/services/planning.rst:310 +#: ../../content/applications/services/planning.rst:308 msgid "The shift remains assigned to the original employee, but in the schedule, a notification informing that the assigned employee would like to switch shifts is visible on the shift." msgstr "" -#: ../../content/applications/services/planning.rst:313 +#: ../../content/applications/services/planning.rst:311 msgid "The shift is then displayed to other employees who share the same role, and if they wish to assign it to themselves, they can click the :guilabel:`I take it` button." msgstr "" -#: ../../content/applications/services/planning.rst:317 -#: ../../content/applications/services/planning.rst:335 +#: ../../content/applications/services/planning.rst:315 +#: ../../content/applications/services/planning.rst:333 msgid "The following rules apply:" msgstr "" -#: ../../content/applications/services/planning.rst:319 +#: ../../content/applications/services/planning.rst:317 msgid "Only the shifts matching the employee's roles are displayed as available to them." msgstr "" -#: ../../content/applications/services/planning.rst:320 +#: ../../content/applications/services/planning.rst:318 msgid "Switching shifts is not available for shifts in the past." msgstr "" -#: ../../content/applications/services/planning.rst:323 +#: ../../content/applications/services/planning.rst:321 msgid "Unassignment" msgstr "" -#: ../../content/applications/services/planning.rst:325 +#: ../../content/applications/services/planning.rst:323 msgid "To allow employees to unassign themselves from shifts, go to :menuselection:`Planning --> Configuration --> Settings`, then tick the checkbox :guilabel:`Allow Unassignment`. Then, specify the maximum number of days that the employees can unassign themselves before the shift." msgstr "" -#: ../../content/applications/services/planning.rst:330 +#: ../../content/applications/services/planning.rst:328 msgid "Once shifts are planned and published, employees receive an email notification. If shift unassignment is allowed, the employees can click the :guilabel:`I am unavailable` button, and the shift reverts to an open shift." msgstr "" -#: ../../content/applications/services/planning.rst:337 +#: ../../content/applications/services/planning.rst:335 msgid "Only the shifts matching the employee's roles are displayed in their schedule." msgstr "" -#: ../../content/applications/services/planning.rst:338 +#: ../../content/applications/services/planning.rst:336 msgid "Unassigning shifts is not available for shifts in the past." msgstr "" diff --git a/locale/sources/websites.pot b/locale/sources/websites.pot index 9302a12174..23130b26b7 100644 --- a/locale/sources/websites.pot +++ b/locale/sources/websites.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo 18.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-17 08:58+0000\n" +"POT-Creation-Date: 2025-11-18 11:05+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -249,6 +249,105 @@ msgstr "" msgid "`Odoo Tutorials: eCommerce `_" msgstr "" +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:3 +msgid "B2B and B2C" +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:5 +msgid "Odoo eCommerce is designed to fulfill the needs of both B2B and B2C companies. It allows you to configure :doc:`prices `, manage :doc:`access ` for specific customers, and :ref:`customize the website ` to support B2B, B2C, or both business models." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:13 +#: ../../content/applications/websites/ecommerce/products/prices.rst:3 +msgid "Prices" +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:15 +msgid "While B2C businesses sell directly to the end consumer with a :ref:`tax-included ` price, B2B businesses usually :ref:`exclude taxes ` and may even prefer to hide prices altogether, showcasing only their products instead. To configure a B2B-specific ecommerce shop, make sure the :ref:`Tax-Excluded ` option is enabled, and complete the configuration to :ref:`hide the pricing `." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:24 +msgid "To make sure that only customers with an :ref:`account and granted access ` can see the prices, go to :menuselection:`Website --> eCommerce --> Customers`, click the :icon:`fa-caret-down` :guilabel:`(dropdown)` icon from the search bar, and select the :guilabel:`Archived` filter. Then click the :guilabel:`Public user` card, go to the :guilabel:`Sales & Purchase` tab, and add the zero-priced pricelist configured to :ref:`cover all countries `. Keep the :guilabel:`Public User` contact :guilabel:`Archived` at all times. Website visitors now see the products without prices, while only customers with an :ref:`account invitation ` and an assigned :ref:`pricelist ` can view the pricing in the customer portal." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:36 +msgid ":doc:`/applications/finance/accounting/taxes/B2B_B2C`" +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:37 +msgid ":ref:`Discounts `" +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:40 +msgid "Access request" +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:42 +msgid "When running a B2B business, you usually :ref:`hide the pricing ` on the web shop and make it available for :ref:`logged-in users ` only. To prevent anyone from signing up freely, set the :ref:`Customer Account ` setting option to :guilabel:`On invitation`. To create a page where customers request access, open the :doc:`website editor <../website/web_design>`, :ref:`create a form `, customize it, and in the :guilabel:`Action` field, select :guilabel:`Create a customer`." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:51 +msgid "You can assign tags created on a contact form under :menuselection:`Website --> Configuration --> Customers` to identify what kind of customers have submitted the form. To do so, select a field in the form while in :guilabel:`Edit` mode, click the :guilabel:`+ Field` button under the :guilabel:`Customize` tab, and set the field's :guilabel:`Type` to :guilabel:`Tags`. Toggle the tags that should be automatically assigned when a customer fills in the form and set the field's :guilabel:`Visibility` to :guilabel:`Hidden`." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:58 +msgid "When a customer submits the form, a new contact is automatically created in the database. The contact is assigned the first pricelist from the list of available pricelists, and, if applicable, the specified tags." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:62 +msgid "Submitted requests can be found under the :menuselection:`Website --> eCommerce --> Customers`. Select the customer you want to :ref:`grant portal access ` to. Once done, the selected customer is able to view the B2B prices and products. Make sure the correct pricelist is assigned to their contact form." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:69 +msgid "It is also possible to hide the entire shop from the public using the :ref:`Ecommerce Access ` setting and only make it available for logged-in customers." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:72 +msgid "Configure the :ref:`checkout policy ` to allow/disallow guest checkout for B2C businesses." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:74 +msgid "Enable the :ref:`Shared Customer Accounts ` feature to allow customers to use the same account on :ref:`all ` your websites." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:79 +msgid ":doc:`customer_accounts`" +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:84 +#: ../../content/applications/websites/website/configuration/multi_website.rst:3 +msgid "Multiple websites" +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:86 +msgid "Settings are website-specific, which means it is possible to configure different behaviors for each website. For example, you can set up a B2C website that allows :ref:`guest checkout ` and displays :ref:`tax-included prices `, and a B2B website that requires :ref:`sign-in ` and shows :ref:`tax-excluded prices `. However, each :ref:`pricelist ` can only be assigned to one website at a time. If you want to use the same pricelist on several websites, duplicate the pricelist and assign each copy to its corresponding website." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:97 +msgid "If you are running a B2B and B2C business, we *strongly* recommend to create two :doc:`separate websites <../website/configuration/multi_website>` and assign a :ref:`zero-priced pricelist ` to the B2B website and a regular pricelist to the B2C website. In case, you prefer using a single website, configure it using :ref:`country groups ` and assigning :ref:`pricelists ` to customers, and deactivate the :ref:`Selectable ` option." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:106 +#: ../../content/applications/websites/ecommerce/products/catalog.rst:258 +msgid "Additional features" +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:109 +msgid "Invoice" +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:111 +msgid "Depending on the type of business (B2B or B2C), you might want to issue an invoice. An invoice can either be generated automatically (for B2B) or on demand of the customer (for B2C). This process can be automated if (and when) the online payment is :ref:`confirmed `. To automate invoicing, enable the :ref:`Automatic Invoice ` setting. If this feature has not been enabled, the customer only receives an order confirmation." +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:120 +msgid "B2B fields at checkout" +msgstr "" + +#: ../../content/applications/websites/ecommerce/b2b_b2c.rst:122 +msgid "Use the :guilabel:`Show B2B fields` toggle in the :doc:`website editor <../website/web_design>` to display B2B-specific additional fields like :guilabel:`VAT` or :guilabel:`Company Name` during the :ref:`delivery ` step." +msgstr "" + #: ../../content/applications/websites/ecommerce/checkout.rst:3 msgid "Ordering and checkout" msgstr "" @@ -394,211 +493,143 @@ msgid "Re-order button" msgstr "" #: ../../content/applications/websites/ecommerce/checkout.rst:128 -msgid "Checkout policy" -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:130 -msgid "To allow customers to checkout as guests or force them to sign in/create an account, go to :menuselection:`Website --> Configuration --> Settings`, scroll down to the :guilabel:`Shop - Checkout Process` section, and configure the :guilabel:`Sign in/up at checkout` setting. The following options are available:" -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:135 -msgid ":guilabel:`Optional`: Customers can check out as guests and register later via the order confirmation email to track their order." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:137 -msgid ":guilabel:`Disabled (buy as guest)`: Customers can checkout as guests without creating an account." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:138 -msgid ":guilabel:`Mandatory (no guest checkout)`: Customers must sign in or create an account at the :ref:`Review Order ` step to complete their purchase." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:142 -msgid "B2B access management" -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:144 -msgid "To restrict checkout to selected B2B customers:" -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:146 -msgid "Go to :menuselection:`Website --> Configuration --> Settings`, and in the :guilabel:`Shop - Checkout Process` section, enable the :ref:`Mandatory (no guest checkout) ` option." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:149 -msgid "Scroll down to the :guilabel:`Privacy` section, go to :guilabel:`Customer Account`, and select :guilabel:`On invitation`." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:151 -msgid "Go to :menuselection:`Website --> eCommerce --> Customers`, switch to the :guilabel:`List` view, and select the customers you wish to grant access to your :doc:`portal <../../general/users/portal>`." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:154 -msgid "Click the :icon:`fa-cog` :guilabel:`Actions` button, then :guilabel:`Grant portal access`." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:155 -msgid "Review the selected customers in the :guilabel:`Portal Access Management` pop-up and click :guilabel:`Grant Access`." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:158 -msgid "Once done, the relevant customers receive an email confirming their account creation, including instructions on setting a password and activating their account." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:162 -msgid "You can revoke access or re-invite a customer using the related buttons in the :guilabel:`Portal Access Management` pop-up." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:164 -msgid "Users can only have one :doc:`portal access <../../general/users/portal>` per email." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:165 -msgid "Settings are website-specific, so you could set up a B2C website that allows guest checkout and a B2B website with mandatory sign-in." -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:169 -msgid ":doc:`Customer accounts documentation `" -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:170 -msgid ":doc:`Portal access documentation <../../general/users/portal>`" -msgstr "" - -#: ../../content/applications/websites/ecommerce/checkout.rst:175 msgid "Checkout steps" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:177 +#: ../../content/applications/websites/ecommerce/checkout.rst:130 msgid "During the checkout process, customers are taken through the following steps:" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:179 +#: ../../content/applications/websites/ecommerce/checkout.rst:132 msgid ":ref:`Review order `" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:180 +#: ../../content/applications/websites/ecommerce/checkout.rst:133 msgid ":ref:`Delivery `" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:181 +#: ../../content/applications/websites/ecommerce/checkout.rst:134 msgid ":ref:`Extra info (if enabled) `" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:182 +#: ../../content/applications/websites/ecommerce/checkout.rst:135 msgid ":ref:`Payment `" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:183 +#: ../../content/applications/websites/ecommerce/checkout.rst:136 msgid ":ref:`Order confirmation `" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:187 +#: ../../content/applications/websites/ecommerce/checkout.rst:140 msgid "Each step can be customized using the website editor by adding :doc:`building blocks <../website/web_design/building_blocks>` or opening the :guilabel:`Customize` tab to enable various checkout options." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:192 +#: ../../content/applications/websites/ecommerce/checkout.rst:145 msgid "Content added through building blocks is **specific** to each step." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:197 +#: ../../content/applications/websites/ecommerce/checkout.rst:148 +msgid "Restrict access to the :ref:`shop ` and :ref:`checkout ` for specific customers, e.g., in a :doc:`B2B ` business setup." +msgstr "" + +#: ../../content/applications/websites/ecommerce/checkout.rst:155 msgid "Review order" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:199 +#: ../../content/applications/websites/ecommerce/checkout.rst:157 msgid "The :guilabel:`Review Order` step allows customers to see the items they added to their cart, adjust quantities, or :guilabel:`Remove` products. Information related to the product prices and taxes applied are also displayed. Customers can then click the :guilabel:`Checkout` button to continue to the :ref:`Delivery ` step." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:204 +#: ../../content/applications/websites/ecommerce/checkout.rst:162 msgid "Open the website editor to :ref:`enable ` checkout options such as:" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:207 +#: ../../content/applications/websites/ecommerce/checkout.rst:165 msgid ":guilabel:`Suggested Accessories`: to showcase :ref:`accessory products `;" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:209 +#: ../../content/applications/websites/ecommerce/checkout.rst:167 msgid ":guilabel:`Promo Code`: to allow customers to redeem :ref:`gift cards ` or apply :doc:`discount codes <../../sales/sales/products_prices/loyalty_discount>`;" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:211 +#: ../../content/applications/websites/ecommerce/checkout.rst:169 msgid ":guilabel:`Add to Wishlist`: :ref:`Enable wishlists ` to allow signed-in users to remove a product from their cart and add it to their wishlist using the :guilabel:`Save for later` option." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:216 +#: ../../content/applications/websites/ecommerce/checkout.rst:174 msgid "If a :doc:`fiscal position <../../finance/accounting/taxes/fiscal_positions>` is detected automatically, the product tax is determined based on the customer's IP address." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:218 +#: ../../content/applications/websites/ecommerce/checkout.rst:176 msgid "If the installed :doc:`payment provider <../../finance/payment_providers>` supports :ref:`express checkout `, a dedicated button is displayed, allowing customers to go straight from the cart to the confirmation page without filling out the contact form." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:226 +#: ../../content/applications/websites/ecommerce/checkout.rst:184 #: ../../content/applications/websites/ecommerce/shipping.rst:3 msgid "Delivery" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:228 +#: ../../content/applications/websites/ecommerce/checkout.rst:186 msgid "Once they have reviewed their order:" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:230 +#: ../../content/applications/websites/ecommerce/checkout.rst:188 msgid "Unsigned-in customers are prompted to :guilabel:`Sign in` or enter their :guilabel:`Email address`, along with their delivery address and phone details;" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:232 +#: ../../content/applications/websites/ecommerce/checkout.rst:190 msgid "Signed-in customers can select the appropriate :guilabel:`Delivery address`." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:234 +#: ../../content/applications/websites/ecommerce/checkout.rst:192 msgid "They can then :doc:`choose a delivery method `, select or enter their :guilabel:`Billing Address` (or toggle the :guilabel:`Same as delivery address` switch if the billing and delivery addresses are identical), and click :guilabel:`Confirm` to proceed to the next step." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:239 -msgid "For B2B customers, you can also :ref:`enable ` optional :guilabel:`VAT` and :guilabel:`Company name` fields by toggling the :guilabel:`Show B2B Fields` option in the website editor." +#: ../../content/applications/websites/ecommerce/checkout.rst:197 +msgid "For B2B customers, you can also :ref:`enable ` optional :ref:`B2B fields ` in the website editor." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:242 +#: ../../content/applications/websites/ecommerce/checkout.rst:199 msgid "You can add a checkbox for users without an account to sign up for a newsletter. To do so, go to :menuselection:`Website --> Configuration --> Settings`. Under the :guilabel:`Shop - Checkout Process` section, enable the :guilabel:`Newsletter` feature and select a :guilabel:`Newsletter List`." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:250 +#: ../../content/applications/websites/ecommerce/checkout.rst:207 msgid "Extra info" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:252 +#: ../../content/applications/websites/ecommerce/checkout.rst:209 msgid "You can add an :guilabel:`Extra Info` step in the checkout process to collect additional customer information through an online form, which is then included in the :ref:`sales order `. To do so, :ref:`enable ` the :guilabel:`Extra Step` option in the website editor. The form can be :ref:`customized ` as needed." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:259 +#: ../../content/applications/websites/ecommerce/checkout.rst:216 msgid "Alternatively, go to :menuselection:`Website --> Configuration --> Settings`, scroll to the :guilabel:`Shop - Checkout Process` section, enable :guilabel:`Extra Step During Checkout`, and click :guilabel:`Save`. Click :icon:`fa-arrow-right` :guilabel:`Configure Form` to customize it." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:266 +#: ../../content/applications/websites/ecommerce/checkout.rst:223 msgid "Payment" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:268 +#: ../../content/applications/websites/ecommerce/checkout.rst:225 msgid "At the :guilabel:`Payment` step, customers :guilabel:`Choose a payment method`, enter their payment details, and click :guilabel:`Pay now`." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:271 +#: ../../content/applications/websites/ecommerce/checkout.rst:228 msgid "You can require customers to agree to your :doc:`terms and conditions <../../finance/accounting/customer_invoices/terms_conditions>` before payment. To :ref:`enable ` this option, go to the website editor and toggle the :guilabel:`Accept Terms & Conditions` feature." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:277 +#: ../../content/applications/websites/ecommerce/checkout.rst:234 msgid "Enable the :ref:`developer mode ` and click the :icon:`fa-bug` (:guilabel:`bug`) icon to display an :ref:`availability ` report for payment providers and payment methods, which helps diagnose potential availability issues on the payment form." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:285 +#: ../../content/applications/websites/ecommerce/checkout.rst:242 msgid "Order confirmation" msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:287 +#: ../../content/applications/websites/ecommerce/checkout.rst:244 msgid "The final step of the checkout process is the :guilabel:`Order confirmation`, which provides a summary of the customer's purchase details." msgstr "" -#: ../../content/applications/websites/ecommerce/checkout.rst:291 +#: ../../content/applications/websites/ecommerce/checkout.rst:248 msgid ":doc:`Order handling documentation `" msgstr "" @@ -608,43 +639,151 @@ msgid "Customer accounts" msgstr "" #: ../../content/applications/websites/ecommerce/customer_accounts.rst:5 -msgid "Having customer accounts on an eCommerce allows customers to access all their documents from a single place. To access their account, customers must be **logged-in** on the eCommerce website, click on their **username** in the top-right corner of the screen, and click :guilabel:`My Account`. From there, customers can access their :guilabel:`quotations`, :guilabel:`orders`, :guilabel:`invoices`, etc." +msgid "Using customer accounts for an ecommerce shop enables you to :ref:`manage customers `, control access to the :ref:`shop `, the :ref:`checkout `, or the :ref:`customer portal `, and support both :doc:`B2B and B2C operations `." msgstr "" -#: ../../content/applications/websites/ecommerce/customer_accounts.rst:-1 -msgid "Customer account log-in" +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:11 +msgid "After logging in, customers can access their :doc:`customer portal <../../general/users/portal>` by clicking their username in the top-right corner of the screen and selecting :guilabel:`My Account`. From there, they can view all their documents in one place, such as quotations, orders, invoices, and more." msgstr "" -#: ../../content/applications/websites/ecommerce/customer_accounts.rst:16 -msgid "Customers can only have an account if the :ref:`sign in/up at checkout ` option allows for account creation." +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:-1 +msgid "Customer account access" msgstr "" #: ../../content/applications/websites/ecommerce/customer_accounts.rst:20 -msgid "Similarly to the rest of the website, the customer account page can be customized with **content blocks** and other features through the **website builder**." +msgid "The customer account page can be customized with building blocks and other features through the :doc:`website builder <../website/web_design>`." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:26 +msgid "Customer account creation" +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:28 +msgid "You can choose whether customer accounts and document access are available to everyone or restricted to invited users only. To do so, go to :menuselection:`Website --> Configuration --> Settings`, then scroll down to the :guilabel:`Privacy` section. Under :guilabel:`Customer Account`, select one of the following options:" +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:33 +msgid ":guilabel:`On invitation`: Customers can only create an account if the website owner sends them an invitation." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:35 +msgid ":guilabel:`Free sign up`: Every website visitor can create an account and sign in. They will get access to the :doc:`portal <../../general/users/portal>` by default." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:40 +msgid "To send an email invitation to a customer:" +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:42 +msgid "Go to :menuselection:`Website --> eCommerce --> Customers`." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:43 +msgid "Select a customer or click :guilabel:`New` to create one, ensuring an :guilabel:`Email` address is set." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:45 +msgid "Click the :icon:`fa-cog` :guilabel:`(Actions)` icon next to the record's name at the top-left and select :guilabel:`Grant portal access`." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:47 +msgid "In the :guilabel:`Portal Access Management` pop-up, click :guilabel:`Grant Access` to send the invitation." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:51 +msgid "To invite multiple customers at once, switch to the customers :icon:`oi-view-list` :guilabel:`List` view, select several customers, click the :icon:`fa-cog` :guilabel:`Actions` button, and select :guilabel:`Grant portal access`." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:55 +msgid "Once done, the customer(s) receive an email confirming their account creation, including instructions on setting a password and activating their account." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:59 +msgid "When selecting the :guilabel:`Free sign up`, a clickable :guilabel:`Don't have an account?` link appears under the login form on the website." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:61 +msgid "The :guilabel:`On invitation` option is especially useful for :ref:`B2B ` businesses that prefer to keep :ref:`prices hidden ` on the website and grant access only to invited customers." msgstr "" -#: ../../content/applications/websites/ecommerce/customer_accounts.rst:24 -msgid ":doc:`/applications/general/users/portal`" +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:66 +msgid "It is possible to configure a website form with a :guilabel:`Create a Customer` :ref:`action ` to automatically create a customer record in the backend when filled in." msgstr "" -#: ../../content/applications/websites/ecommerce/customer_accounts.rst:27 +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:71 msgid "Access restriction" msgstr "" -#: ../../content/applications/websites/ecommerce/customer_accounts.rst:29 -msgid "It is possible to allow or restrict the documents to which customers have access through the website builder. Log in your **own** account with your Odoo database credentials, and go to :menuselection:`Edit --> Customize`. From the website builder menu, enable or disable the documents customers can have access to." +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:73 +msgid "Once a customer account is created, it is still possible to adjust the access rights either globally or for individual users:" msgstr "" -#: ../../content/applications/websites/ecommerce/customer_accounts.rst:-1 -msgid "Documents to which customers have access to from their account" +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:76 +msgid ":ref:`Revoke access or re-invite a customer ` using the related buttons in the :guilabel:`Portal Access Management` pop-up." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:78 +msgid "Restrict :ref:`access to the shop `;" +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:79 +msgid "Decide whether customers need to create an account to :ref:`complete the checkout `." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:83 +msgid "It is also possible to define the types of documents customers have access to. To do so, click your username in the upper-right corner of the website, select :guilabel:`My Account` and open the :doc:`website builder <../website/web_design>`. On the :guilabel:`Customize` tab, enable or disable access to specific documents as needed." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:91 +msgid "Shop access" +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:93 +msgid "To restrict access to the entire online shop for users who are not logged-in, go to :menuselection:`Website --> Configuration --> Settings`, scroll to :guilabel:`Privacy` and under :guilabel:`Ecommerce Access`, select :guilabel:`Logged in users`. Select :guilabel:`All users` if the shop should be visible to every website visitor." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:99 +msgid "To restrict access to the shop's pricing, use :ref:`pricelists ` with :ref:`country groups `." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:105 +msgid "Checkout access" +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:107 +msgid "To allow customers to checkout as guests or force them to sign in/create an account, go to :menuselection:`Website --> Configuration --> Settings`, scroll down to the :guilabel:`Shop - Checkout Process` section, and configure the :guilabel:`Sign in/up at checkout` setting. The following options are available:" +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:112 +msgid ":guilabel:`Optional`: Customers can check out as guests and register later via the order confirmation email to track their order." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:114 +msgid ":guilabel:`Disabled (buy as guest)`: Customers can checkout as guests without creating an account." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:115 +msgid ":guilabel:`Mandatory (no guest checkout)`: Customers must sign in or create an account at the :ref:`Review Order ` step to complete their purchase." msgstr "" -#: ../../content/applications/websites/ecommerce/customer_accounts.rst:39 +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:119 +msgid "Settings are specific to each website, allowing you to configure a B2C website with guest checkout and a B2B website that requires customers to sign in." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:121 +msgid "To use the :ref:`wishlist ` feature, customers must create an account to save their favorite items for later." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:127 msgid "Multi-website account" msgstr "" -#: ../../content/applications/websites/ecommerce/customer_accounts.rst:41 -msgid "If you own multiple websites, you can make customer accounts available across **all** websites. Then, the customer only needs one account. To do so, go to :menuselection:`Website --> Configuration --> Settings --> Privacy section`, and enable :guilabel:`Shared Customer Accounts`." +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:129 +msgid "When managing multiple websites, it is possible to make customer accounts available across *all* websites, allowing each customer to use a single account. To do so, go to :menuselection:`Website --> Configuration --> Settings`, in the :guilabel:`Privacy` section, enable the :guilabel:`Shared Customer Accounts` option." +msgstr "" + +#: ../../content/applications/websites/ecommerce/customer_accounts.rst:135 +msgid "When operating both :ref:`B2B and B2C online shops `, it is recommended to use separate websites for each business model." msgstr "" #: ../../content/applications/websites/ecommerce/order_handling.rst:3 @@ -780,7 +919,7 @@ msgid "Invoice and legal requirements" msgstr "" #: ../../content/applications/websites/ecommerce/order_handling.rst:106 -msgid "The final step of an ecommerce order is to generate the invoice and send it to the customer. Depending on the type of business (B2B or B2C), an invoice can either be generated automatically (B2B) or on demand of the customer (B2C). This process can be automated if (and when) the online payment is :ref:`confirmed `." +msgid "The final step of an ecommerce order is to generate the invoice and send it to the customer. Depending on your needs, an invoice can either be generated automatically or on demand of the customer. This process can be automated if (and when) the online payment is :ref:`confirmed `." msgstr "" #: ../../content/applications/websites/ecommerce/order_handling.rst:111 @@ -806,7 +945,7 @@ msgstr "" #: ../../content/applications/websites/ecommerce/payments.rst:14 #: ../../content/applications/websites/website/configuration.rst:5 -#: ../../content/applications/websites/website/configuration/cookies_bar.rst:15 +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:21 #: ../../content/applications/websites/website/reporting/link_tracker.rst:10 msgid "Configuration" msgstr "" @@ -1671,10 +1810,6 @@ msgstr "" msgid "eCommerce categories can also be added as :ref:`mega menu items ` for quick access." msgstr "" -#: ../../content/applications/websites/ecommerce/products/catalog.rst:258 -msgid "Additional features" -msgstr "" - #: ../../content/applications/websites/ecommerce/products/catalog.rst:260 msgid "You can access and enable additional feature buttons such as a :guilabel:`Add to cart` or :guilabel:`Wishlist` button or a :guilabel:`Comparison list`. To do so, open the website editor, click the desired feature buttons. All three buttons appear when hovering the mouse over a product's image." msgstr "" @@ -1767,10 +1902,6 @@ msgstr "" msgid "To adjust the settings, click :guilabel:`Edit` and select the related :doc:`building block <../../website/web_design/building_blocks>`. In the :guilabel:`Customize` tab, scroll to the :guilabel:`Alternative Products` section and modify the settings as needed to tailor the display to your preferences." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:3 -msgid "Prices" -msgstr "" - #: ../../content/applications/websites/ecommerce/products/prices.rst:5 msgid "Odoo offers multiple options to configure prices on the ecommerce. For example, you can apply :ref:`prices per unit `, offer :ref:`discounts `, and set up :ref:`pricelists `." msgstr "" @@ -1792,7 +1923,7 @@ msgid ":doc:`/applications/finance/accounting/taxes/avatax`" msgstr "" #: ../../content/applications/websites/ecommerce/products/prices.rst:24 -msgid "Choosing the displayed price tax usually depends on a country's regulations or the type of customers (B2B vs. B2C). To select the type of price displayed, go to :menuselection:`Website --> Configuration --> Settings`, select the website, scroll down to the :guilabel:`Shop - Products` section, and under :guilabel:`Display Product Prices` select between:" +msgid "Choosing the displayed price tax usually depends on a country's regulations or the type of customers (:doc:`B2B vs. B2C <../b2b_b2c>`). To select the type of price displayed, go to :menuselection:`Website --> Configuration --> Settings`, select the website, scroll down to the :guilabel:`Shop - Products` section, and under :guilabel:`Display Product Prices` select between:" msgstr "" #: ../../content/applications/websites/ecommerce/products/prices.rst:29 @@ -1811,31 +1942,35 @@ msgstr "" msgid "Switch the :ref:`Tax indication ` toggle on in the website editor to explicitly indicate if the price is `Tax excluded` or `Tax included` on the product page." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:45 +#: ../../content/applications/websites/ecommerce/products/prices.rst:41 +msgid "Enable specific :ref:`B2B fields ` in the :ref:`delivery step ` during the checkout using the :doc:`website editor `." +msgstr "" + +#: ../../content/applications/websites/ecommerce/products/prices.rst:48 msgid "Price per unit" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:47 +#: ../../content/applications/websites/ecommerce/products/prices.rst:50 msgid "To display a :doc:`price per unit ` alongside the sales price on the product page, follow these steps:" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:51 +#: ../../content/applications/websites/ecommerce/products/prices.rst:54 msgid "Go to :menuselection:`Website --> Configuration --> Settings`, scroll to the :guilabel:`Shop - Products` section, and enable :guilabel:`Product Reference Price`." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:53 +#: ../../content/applications/websites/ecommerce/products/prices.rst:56 msgid ":ref:`Navigate to the product form `." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:54 +#: ../../content/applications/websites/ecommerce/products/prices.rst:57 msgid "Set the product's :guilabel:`Sales price` and select the unit (e.g., :guilabel:`Units`)." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:55 +#: ../../content/applications/websites/ecommerce/products/prices.rst:58 msgid "In the :guilabel:`Base Unit Count` field, enter the number of units in the product, then select the relevant unit from the dropdown list." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:59 +#: ../../content/applications/websites/ecommerce/products/prices.rst:62 msgid "Imagine you want to sell a 2-liter bucket of paint for $60, i.e., $30 per liter." msgstr "" @@ -1843,7 +1978,7 @@ msgstr "" msgid "Cost per unit pricing on the product form." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:64 +#: ../../content/applications/websites/ecommerce/products/prices.rst:67 msgid "The price per units, in this case per liter, is shown next to the sales price on the product page." msgstr "" @@ -1851,55 +1986,55 @@ msgstr "" msgid "Unit pricing on the product page." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:71 +#: ../../content/applications/websites/ecommerce/products/prices.rst:74 msgid "The price per unit may be mandatory in some countries." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:74 +#: ../../content/applications/websites/ecommerce/products/prices.rst:77 msgid ":doc:`/applications/inventory_and_mrp/inventory/product_management/configure/uom`" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:79 +#: ../../content/applications/websites/ecommerce/products/prices.rst:82 msgid "Pricelists" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:81 +#: ../../content/applications/websites/ecommerce/products/prices.rst:84 msgid "Pricelists in Odoo allow to manage flexible pricing rules and to offer different prices and discounts based on currencies, time periods, purchase volumes, :ref:`customers' location `, and/or customer type. To enable pricelists for eCommerce, go to :menuselection:`Website --> Configuration --> Settings`, scroll down to the :guilabel:`Shop - Products` section, enable :guilabel:`Pricelists`, and :guilabel:`Save`. Then, click :guilabel:`Pricelists` or go to :menuselection:`Website --> eCommerce --> Pricelists` and :ref:`configure ` the relevant pricelists." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:90 +#: ../../content/applications/websites/ecommerce/products/prices.rst:93 msgid "In the :guilabel:`Ecommerce` tab, configure options specific to online sales, such as assigning a :guilabel:`Website` to a pricelist, allowing customers to :ref:`select it `, and/or adding an :ref:`E-commerce Promotional Code `." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:96 +#: ../../content/applications/websites/ecommerce/products/prices.rst:99 msgid "If you are using several websites and you want to use the same pricelist on several of them, you need to duplicate the pricelist for each website. If you do not assign any website, the pricelist will not be used, unless it is :ref:`selectable `." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:100 +#: ../../content/applications/websites/ecommerce/products/prices.rst:103 msgid "Pricelists can also be :ref:`assigned to a specific customer `." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:104 +#: ../../content/applications/websites/ecommerce/products/prices.rst:107 msgid "When pricelists are enabled in the Sales app, they are automatically enabled in the eCommerce app, and vice versa." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:106 +#: ../../content/applications/websites/ecommerce/products/prices.rst:109 msgid "In the list of pricelists, order the pricelists by priority: the first takes precedence over the second, the second over the third, and so on." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:108 +#: ../../content/applications/websites/ecommerce/products/prices.rst:111 msgid "It is also possible to create specific pricelists for :ref:`variants `." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:112 +#: ../../content/applications/websites/ecommerce/products/prices.rst:115 msgid ":doc:`/applications/sales/sales/products_prices/prices/pricing`" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:117 +#: ../../content/applications/websites/ecommerce/products/prices.rst:120 msgid "Selectable pricelists" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:119 +#: ../../content/applications/websites/ecommerce/products/prices.rst:122 msgid "Selectable pricelists are useful, for example, when selling products in :doc:`multiple currencies ` and allow customers to choose a pricelist using the catalog's pricelist selector located next to the :ref:`search bar `." msgstr "" @@ -1907,55 +2042,55 @@ msgstr "" msgid "Pricelist selector on the ecommerce." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:127 +#: ../../content/applications/websites/ecommerce/products/prices.rst:130 msgid "To make a pricelist selectable, enable :guilabel:`Selectable`." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:130 +#: ../../content/applications/websites/ecommerce/products/prices.rst:133 msgid "If a pricelist is designated as :guilabel:`Selectable`, and is not assigned to a specific website, then the pricelist is selectable on **all** websites." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:132 +#: ../../content/applications/websites/ecommerce/products/prices.rst:135 msgid "If a pricelist does *not* appear in the selector, it may be due to the following situations:" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:134 +#: ../../content/applications/websites/ecommerce/products/prices.rst:137 msgid "Only one pricelist is defined as :guilabel:`Selectable` and the :ref:`contact has a pricelist assigned `." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:136 +#: ../../content/applications/websites/ecommerce/products/prices.rst:139 msgid "Multiple selectable pricelists exist, but only those matching the customer's :ref:`country group ` are shown. It is strongly recommended to disable the :guilabel:`Selectable` option when using pricelists with country groups on the ecommerce." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:142 +#: ../../content/applications/websites/ecommerce/products/prices.rst:145 msgid ":ref:`sales/products/currencies/currency-specific-pricelists`" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:147 +#: ../../content/applications/websites/ecommerce/products/prices.rst:150 msgid "GeoIP & country groups" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:149 +#: ../../content/applications/websites/ecommerce/products/prices.rst:152 msgid "It is possible to display a specific pricelist based on the visitor's location and IP address by assigning :ref:`country groups ` to pricelists." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:154 +#: ../../content/applications/websites/ecommerce/products/prices.rst:157 msgid "To do so, :ref:`navigate to the relevant pricelist form ` and select the appropriate :guilabel:`Country Groups`. Create or edit as many pricelists for specific regions as needed. For instance, select :guilabel:`European Union` to apply the pricelist to all EU member states." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:159 +#: ../../content/applications/websites/ecommerce/products/prices.rst:162 msgid "To create a new country group, click :guilabel:`Search more` in the dropdown list, then :guilabel:`New`. Add a :guilabel:`Group Name` and select the relevant :guilabel:`Countries`. Use :ref:`Custom filters ` if needed." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:164 +#: ../../content/applications/websites/ecommerce/products/prices.rst:167 msgid "Each country group must contain at least one country." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:167 +#: ../../content/applications/websites/ecommerce/products/prices.rst:170 msgid "Use the following filter if you want to add all non-EU countries to the country group." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:169 +#: ../../content/applications/websites/ecommerce/products/prices.rst:172 msgid "`Country Group` + `is not in` + `European Union`" msgstr "" @@ -1963,51 +2098,51 @@ msgstr "" msgid "Filter for country group creation." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:175 +#: ../../content/applications/websites/ecommerce/products/prices.rst:178 msgid "When using GeoIP to determine the appropriate pricelist, **all** pricelists used on the ecommerce must have a country group assigned." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:177 +#: ../../content/applications/websites/ecommerce/products/prices.rst:180 msgid "It is strongly recommended to disable the :guilabel:`Selectable` option when using pricelists with country groups. Indeed, all pricelists with the relevant country group are automatically applied to the catalog but if one of them is marked as :ref:`Selectable `, the others will disappear as soon as customers select the selectable pricelist." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:184 +#: ../../content/applications/websites/ecommerce/products/prices.rst:187 msgid "Imagine you create three pricelists:" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:186 +#: ../../content/applications/websites/ecommerce/products/prices.rst:189 msgid "`EU regular prices` with the `EU` country group assigned" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:187 +#: ../../content/applications/websites/ecommerce/products/prices.rst:190 msgid "`EU prices with discounts` with the `EU` country group assigned" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:188 +#: ../../content/applications/websites/ecommerce/products/prices.rst:191 msgid "`US prices` with the `US` country group assigned" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:190 +#: ../../content/applications/websites/ecommerce/products/prices.rst:193 msgid "If the :guilabel:`Selectable` option is enabled for `EU regular prices` and `US prices`, and the customer is from the European Union, only the pricelists `EU regular prices` and `EU prices with discounts` will be available. However, since the `EU prices with discount` list is not selectable, it will disappear once the customer selects the `EU regular prices` list and prices will be displayed based on the `EU regular prices` pricelist on the catalog." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:198 +#: ../../content/applications/websites/ecommerce/products/prices.rst:201 msgid "Pricelist application" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:200 +#: ../../content/applications/websites/ecommerce/products/prices.rst:203 msgid "On the ecommerce, the *default* pricelist is automatically selected for public, non-logged in users when no country group is assigned. If :ref:`GeoIP and country groups ` are used, public users see the pricelist of their country group by default. Logged-in users with :ref:`assigned pricelists ` see the assigned pricelist by default **if it is assigned to the website** they are visiting. If not, the website's default pricelist is applied (i.e., the first available pricelist assigned to the website and without a country group, following the sequence order)." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:208 +#: ../../content/applications/websites/ecommerce/products/prices.rst:211 msgid "Assigned pricelists take precedence over country-based pricelists, when applicable, unless the assigned pricelist is linked to a different country group." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:212 +#: ../../content/applications/websites/ecommerce/products/prices.rst:215 msgid "A customer from the United States visits the website. They do not have a portal account. The :guilabel:`United States` pricelist is applied." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:215 +#: ../../content/applications/websites/ecommerce/products/prices.rst:218 msgid "A different visitor, also from the United States, has the :guilabel:`Loyal Customer Discount` pricelist assigned in their contact form. This assignment takes precedence over the country group assignation, so the :guilabel:`Loyal Customer Discount` is applied." msgstr "" @@ -2015,27 +2150,27 @@ msgstr "" msgid "An example of various pricelists assigned to a website." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:226 +#: ../../content/applications/websites/ecommerce/products/prices.rst:229 msgid "Discounts" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:229 +#: ../../content/applications/websites/ecommerce/products/prices.rst:232 msgid "Discounts programs" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:231 +#: ../../content/applications/websites/ecommerce/products/prices.rst:234 msgid "To enable :doc:`discount programs ` for your ecommerce, go to :menuselection:`Website --> Configuration --> Settings`, scroll down to the :guilabel:`Shop - Products` section, and enable the :guilabel:`Discounts, Loyalty & Gift Card` feature." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:236 +#: ../../content/applications/websites/ecommerce/products/prices.rst:239 msgid ":ref:`Configure ` the discount program, make sure the :guilabel:`Website` option is enabled, and add the relevant :ref:`Pricelist ` and :guilabel:`Website` on the program form, if needed." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:243 +#: ../../content/applications/websites/ecommerce/products/prices.rst:246 msgid "Permanent product discount" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:245 +#: ../../content/applications/websites/ecommerce/products/prices.rst:248 msgid "If the price of a specific product has been permanently reduced, the strikethrough strategy is commonly used. This involves showing the new discounted price, with the original price crossed out alongside it." msgstr "" @@ -2043,71 +2178,71 @@ msgstr "" msgid "Price strikethrough." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:252 +#: ../../content/applications/websites/ecommerce/products/prices.rst:255 msgid "To display a permanently discounted price, navigate to :menuselection:`Website --> Configuration --> Settings`, scroll down to the :guilabel:`Shop - Products`, enable the :guilabel:`Comparison Price` option, and :guilabel:`Save`. Then, :ref:`go to the product form `, enter the new (discounted) price in the :guilabel:`Sales Price` field and the original one (strikethrough) in the :guilabel:`Compare to Price` field." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:260 +#: ../../content/applications/websites/ecommerce/products/prices.rst:263 msgid "The :guilabel:`Compare to Price` field must contain a price that is higher than the :guilabel:`Sales Price` for the original price to appear with a strikethrough." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:264 +#: ../../content/applications/websites/ecommerce/products/prices.rst:267 msgid "The :guilabel:`Compare to Price` is not displayed if discounted pricelists apply. If you want to use the :guilabel:`Compare to price` with another discount, configure a pricelist with a :ref:`promotional code `." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:269 +#: ../../content/applications/websites/ecommerce/products/prices.rst:272 msgid "Discounted pricelists" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:271 +#: ../../content/applications/websites/ecommerce/products/prices.rst:274 msgid "It is also possible to create :ref:`pricelists with discounts `. To do so, :ref:`create a pricelist ` and :ref:`configure the discount `." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:275 +#: ../../content/applications/websites/ecommerce/products/prices.rst:278 msgid "If a :ref:`pricelist ` contains a :ref:`Discount ` price type, the price is striked through for applicable customers, even if the :ref:`Comparison Price ` feature has not been enabled." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:281 +#: ../../content/applications/websites/ecommerce/products/prices.rst:284 msgid "If using pricelists with :ref:`country groups `, the discounted pricelist must be assigned the same country group as the one used for the non-discounted pricelist." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:287 +#: ../../content/applications/websites/ecommerce/products/prices.rst:290 msgid "E-commerce promotional code" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:289 +#: ../../content/applications/websites/ecommerce/products/prices.rst:292 msgid "To offer a discounted pricelist for customers with a specific discount code, access the relevant :ref:`pricelist form `, go to the :guilabel:`Ecommerce` tab, and add an :guilabel:`E-commerce Promotional Code`, e.g., `SUMMERSALE10%`. Then, go to the :guilabel:`Price Rules` tab, click :guilabel:`Add a line`, and :ref:`configure the discount `. When a customer inserts the code during the :ref:`checkout process `, this discount is granted according to the :guilabel:`Price Rules` configuration." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:298 +#: ../../content/applications/websites/ecommerce/products/prices.rst:301 msgid "Make sure that the :ref:`Promo Code ` option in the website editor is enabled and, if using :ref:`country groups `, that the discounted pricelist has the same country group assigned as the non-discounted pricelist." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:306 +#: ../../content/applications/websites/ecommerce/products/prices.rst:309 msgid "Hide prices" msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:308 -msgid "Some businesses, such as B2B shops or companies that sell luxury or custom items, often prefer to showcase their products online without displaying their prices." +#: ../../content/applications/websites/ecommerce/products/prices.rst:311 +msgid "Some businesses, such as :ref:`B2B shops ` or companies that sell luxury or custom items, often prefer to showcase their products online without displaying their prices." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:311 +#: ../../content/applications/websites/ecommerce/products/prices.rst:314 msgid "To hide product prices on the ecommerce, go to :menuselection:`Website --> Configuration --> Settings`, enable :guilabel:`Prevent Sale of Zero Priced Product` in the :guilabel:`Shop - Products` section, and enter a redirect URL in the :guilabel:`Button URL` field. The :guilabel:`Add to Cart` button on the product page is then replaced by a :guilabel:`Contact us` button, which can be :ref:`customized ` if needed." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:317 +#: ../../content/applications/websites/ecommerce/products/prices.rst:320 msgid "After enabling this feature, either set the price to `0` for all desired products or create a :ref:`pricelist ` with all product prices set to `0`. Ensure the pricelist is assigned to the correct website and is listed first among the website's pricelists." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:322 +#: ../../content/applications/websites/ecommerce/products/prices.rst:325 msgid "Ensure no pricelist used on the ecommerce has been marked as :guilabel:`Selectable` to prevent accidentally displaying the zero-priced pricelist." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:324 +#: ../../content/applications/websites/ecommerce/products/prices.rst:327 msgid "To hide prices from public visitors while keeping them visible to logged-in customers, create a zero-priced pricelist to be used for non-logged-in customers and :ref:`assign ` a regular pricelist (with actual prices) to customers with :ref:`portal access `." msgstr "" -#: ../../content/applications/websites/ecommerce/products/prices.rst:330 +#: ../../content/applications/websites/ecommerce/products/prices.rst:333 msgid ":doc:`../customer_accounts`" msgstr "" @@ -4880,57 +5015,157 @@ msgid "Cookies bar" msgstr "" #: ../../content/applications/websites/website/configuration/cookies_bar.rst:5 -msgid "**Cookies** are small text files sent to your device when you visit a website. They are processed and stored by your browser and track user information like login details, preferences, and browsing history. **Essential cookies** are necessary for the website to function, while **optional cookies** are used to analyze behavior or display ads." +msgid "**Cookies** are small text files sent to your device when you visit a website. They are processed and stored by your browser and record visitor information like login details, preferences, and browsing history. **Essential cookies** are necessary for the website to function, while **optional cookies** are used to analyze behavior or display ads." msgstr "" #: ../../content/applications/websites/website/configuration/cookies_bar.rst:10 -msgid "Data protection laws require notifying users about data collection methods and purposes. **Cookies bar** fulfill this obligation by informing users on their first visit and allowing them to decide whether to store all or only essential cookies on their device." +msgid "Data protection laws require notifying visitors about data collection methods and purposes. **Cookies bar** fulfill this obligation by informing visitors on their first visit and allowing them to decide whether to store all or only essential cookies on their device." msgstr "" -#: ../../content/applications/websites/website/configuration/cookies_bar.rst:17 -msgid "To enable the cookies bar on your website, go to :menuselection:`Website --> Configuration --> Settings` and enable :guilabel:`Cookies Bar` in the :guilabel:`Privacy` section." +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:15 +msgid "Cookies bars are required to obtain visitors' consent for optional cookies only. Consent is not required for essential cookies." msgstr "" -#: ../../content/applications/websites/website/configuration/cookies_bar.rst:21 -msgid "The :ref:`Cookies Policy ` page (/cookie-policy`) is automatically created when you enable the cookies bar." +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:18 +msgid "Odoo is compliant with `Google consent mode v2 `_." msgstr "" -#: ../../content/applications/websites/website/configuration/cookies_bar.rst:27 -msgid "Customization" +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:23 +msgid "To add a cookies bar on your website, go to :menuselection:`Website --> Configuration --> Settings` and enable :guilabel:`Cookies Bar` in the :guilabel:`Privacy` section. This activates :guilabel:`Block tracking 3rd-party services` by default, including social media, video hosting platforms, and Google services. Click :guilabel:`Add domains to the block list` to include other external websites. These services remain blocked on your website until visitors accept optional cookies." msgstr "" -#: ../../content/applications/websites/website/configuration/cookies_bar.rst:29 -msgid "To adapt the display of the cookies bar, click :guilabel:`Edit`, go to the :guilabel:`Invisible Elements` section at the bottom of the panel, and click :guilabel:`Cookies Bar`. You can modify the :guilabel:`Layout` and :guilabel:`Size` of the cookies bar, and enable :guilabel:`Backdrop` to gray out the page in the background when the cookies bar is displayed on the screen." +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:31 +msgid "Using third-party cookies without a cookies bar does not prevent them from being triggered. Only the presence of a cookie bar **and** the visitor’s refusal ensure that these cookies are blocked." msgstr "" -#: ../../content/applications/websites/website/configuration/cookies_bar.rst:35 -msgid "Click anywhere in the building block to further customize the appearance of the cookies bar using :guilabel:`Block`, :guilabel:`Column` and/or :guilabel:`Inline Text` customization options." +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:37 +msgid "Cookies policy" msgstr "" -#: ../../content/applications/websites/website/configuration/cookies_bar.rst:38 -msgid "To edit the contents of the cookies bar (i.e., the consent message), click directly in the building block." +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:39 +msgid "When you enable the cookies bar for your website, Odoo creates the **Cookie Policy** page (`/cookie-policy`) containing a list of cookies set by default, with their purpose and examples." msgstr "" -#: ../../content/applications/websites/website/configuration/cookies_bar.rst:44 -msgid "Cookies policy" +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:48 +msgid "Category" +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:49 +msgid "Role" msgstr "" -#: ../../content/applications/websites/website/configuration/cookies_bar.rst:46 -msgid "When you enable the cookies bar for your website, Odoo creates the **Cookie Policy** page (`/cookie-policy`) containing a non-exhaustive list of cookies, with their purpose and examples. To access it, click the :guilabel:`Cookie Policy` hyperlink in the cookies bar or open the page from :menuselection:`Website --> Site --> Pages`." +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:50 +msgid "Name" msgstr "" #: ../../content/applications/websites/website/configuration/cookies_bar.rst:51 -msgid "To adapt the content of the page according to your needs, click the :guilabel:`Edit` button." +msgid "Essential - Session & Security" msgstr "" -#: ../../content/applications/websites/website/configuration/cookies_bar.rst:54 -msgid "You could add a link to this page in your website's footer, for example." +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:52 +msgid "Authenticate visitors, protect visitor data and allow the website to deliver the services visitors expects, such as maintaining the content of their cart, or allowing file uploads. The website will not work properly without these cookies." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:55 +msgid "session_id (Odoo)" +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:56 +msgid "Essential - Preferences" msgstr "" #: ../../content/applications/websites/website/configuration/cookies_bar.rst:57 +msgid "Remember information about the preferred look or behavior of the website, such as the preferred language or region. The website will continue to function without these cookies, but the visitor’s experience may be affected." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:60 +msgid "frontend_lang (Odoo)" +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:61 +msgid "Optional - Interaction History" +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:62 +msgid "Collect information about your interactions with the website, the pages you've seen, and any specific marketing campaign that brought you to the website. The website will work without these cookies, but some features or services may not perform optimally." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:65 +msgid "im_livechat_previous_operator (Odoo), utm_campaign (Odoo), utm_source (Odoo), utm_medium (Odoo)" +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:69 +msgid "Optional - Advertising & Marketing" +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:70 +msgid "Make advertising more engaging to visitors and more valuable to publishers and advertisers, such as providing more relevant ads when you visit other websites that display ads or to improve reporting on ad campaign performance. Note that some third-party services may install additional cookies on your browser in order to identify you." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:74 +msgid "__gads (Google), __gac (Google)" +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:76 +msgid "Optional - Analytics" +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:77 +msgid "Understand how visitors engage with the website, via Google Analytics. The website will still work without these cookies." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:79 +msgid "_ga (Google), _gat (Google), _gid (Google), _gac_* (Google)" +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:85 +msgid "It is not possible to let visitors customize or select which optional cookies they want to allow." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:88 +msgid "You could add a link to this page in your website's footer, for example." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:93 +msgid "Edit the Cookies policy page" +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:95 +msgid "To access it, click the :guilabel:`Cookie Policy` hyperlink in the cookies bar or open the page from :menuselection:`Website --> Site --> Pages`." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:98 +msgid "To adapt the content of the page according to your needs, click the :guilabel:`Edit` button." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:101 +msgid "You have to list every cookie you added yourself on the `/cookie-policy` page including their name, role, category and duration." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:105 +msgid "To check the duration of cookies, use your browser’s developer tools." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:108 msgid ":doc:`Pages <../structure/pages>`" msgstr "" +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:113 +msgid "Customization" +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:115 +msgid "To adapt the display of the cookies bar on your website, click :guilabel:`Edit` on the website editor, go to the :guilabel:`Invisible Elements` section at the bottom of the panel, and click :guilabel:`Cookies Bar`. You can modify the :guilabel:`Layout` and :guilabel:`Size` of the cookies bar, and enable :guilabel:`Backdrop` to gray out the page in the background when the cookies bar is displayed on the screen." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:121 +msgid "Click anywhere in the building block to further customize the appearance of the cookies bar using :guilabel:`Block`, :guilabel:`Column` and/or :guilabel:`Inline Text` customization options." +msgstr "" + +#: ../../content/applications/websites/website/configuration/cookies_bar.rst:124 +msgid "To edit the contents of the cookies bar (i.e., the consent message), click directly in the building block." +msgstr "" + #: ../../content/applications/websites/website/configuration/domain_names.rst:3 msgid "Domain names" msgstr "" @@ -5427,7 +5662,7 @@ msgid "Mapping a domain name to an Odoo.sh branch" msgstr "" #: ../../content/applications/websites/website/configuration/domain_names.rst:368 -msgid ":ref:`Odoo.sh branches: settings tab `" +msgid ":ref:`Odoo.sh branches: settings tab `" msgstr "" #: ../../content/applications/websites/website/configuration/domain_names.rst:373 @@ -5670,10 +5905,6 @@ msgstr "" msgid ":doc:`domain_names`" msgstr "" -#: ../../content/applications/websites/website/configuration/multi_website.rst:3 -msgid "Multiple websites" -msgstr "" - #: ../../content/applications/websites/website/configuration/multi_website.rst:5 msgid "Odoo allows you to create multiple websites from the same database. This can be useful, for example, if you have multiple brands operating under your organization, or to create separate websites for different products/services, or different audiences. In these cases, having different websites can help avoid confusion and make it easier to tailor your digital outreach strategies and reach your target audience." msgstr "" @@ -6735,7 +6966,7 @@ msgstr "" #: ../../content/applications/websites/website/structure/header_footer.rst:34 #: ../../content/applications/websites/website/structure/header_footer.rst:111 #: ../../content/applications/websites/website/structure/header_footer.rst:153 -#: ../../content/applications/websites/website/structure/header_footer.rst:173 +#: ../../content/applications/websites/website/structure/header_footer.rst:193 msgid "To finalize changes, click on :guilabel:`Save`." msgstr "" @@ -6792,7 +7023,7 @@ msgid "Access the Menu editor while in Edit mode." msgstr "" #: ../../content/applications/websites/website/structure/header_footer.rst:81 -msgid "Adding menu items" +msgid "Add menu items" msgstr "" #: ../../content/applications/websites/website/structure/header_footer.rst:83 @@ -6911,43 +7142,79 @@ msgstr "" msgid "Pick the :guilabel:`Size`: either :guilabel:`Full-Width` or :guilabel:`Narrow`." msgstr "" +#: ../../content/applications/websites/website/structure/header_footer.rst:156 +msgid "Hide a dynamic menu item for non-logged in users" +msgstr "" + #: ../../content/applications/websites/website/structure/header_footer.rst:158 +msgid "To hide a dynamic menu item (i.e., a menu item generated automatically by Odoo, for example, when you install an app or module, such as `Events`, `Courses`, etc.) for non-logged in users, follow these steps:" +msgstr "" + +#: ../../content/applications/websites/website/structure/header_footer.rst:162 +msgid ":ref:`Enable developer mode `." +msgstr "" + +#: ../../content/applications/websites/website/structure/header_footer.rst:163 +msgid "Go to :menuselection:`Website --> Configuration --> Menus`." +msgstr "" + +#: ../../content/applications/websites/website/structure/header_footer.rst:164 +msgid "Expand the list of menus for the relevant website if needed, then click the menu item you wish to hide." +msgstr "" + +#: ../../content/applications/websites/website/structure/header_footer.rst:166 +msgid "In the :guilabel:`Visible Groups` section, click :guilabel:`Add a line` under :guilabel:`Group Name`." +msgstr "" + +#: ../../content/applications/websites/website/structure/header_footer.rst:168 +msgid "Search for the group :guilabel:`User types / Portal`, select it, then click :guilabel:`Select`." +msgstr "" + +#: ../../content/applications/websites/website/structure/header_footer.rst:169 +msgid "Save." +msgstr "" + +#: ../../content/applications/websites/website/structure/header_footer.rst:172 +msgid "To hide the `Shop` menu item, :doc:`restrict ecommerce access to logged-in users <../../ecommerce/customer_accounts>`." +msgstr "" + +#: ../../content/applications/websites/website/structure/header_footer.rst:178 msgid "Footer design" msgstr "" -#: ../../content/applications/websites/website/structure/header_footer.rst:160 +#: ../../content/applications/websites/website/structure/header_footer.rst:180 msgid "To modify the footer, click on :guilabel:`Edit`, click on the footer, and in the :guilabel:`Footer` section of the :guilabel:`Customize` tab in the website editor:" msgstr "" -#: ../../content/applications/websites/website/structure/header_footer.rst:163 +#: ../../content/applications/websites/website/structure/header_footer.rst:183 msgid "Select a :guilabel:`Template`." msgstr "" -#: ../../content/applications/websites/website/structure/header_footer.rst:164 +#: ../../content/applications/websites/website/structure/header_footer.rst:184 msgid "Choose its :guilabel:`Colors`." msgstr "" -#: ../../content/applications/websites/website/structure/header_footer.rst:165 +#: ../../content/applications/websites/website/structure/header_footer.rst:185 msgid "Choose a :guilabel:`Slideout Effect`: :guilabel:`Regular` (i.e., no effect), :guilabel:`Slide Hover`, or :guilabel:`Shadow`." msgstr "" -#: ../../content/applications/websites/website/structure/header_footer.rst:167 +#: ../../content/applications/websites/website/structure/header_footer.rst:187 msgid "Toggle the :guilabel:`Copyright` switch to hide or show the copyright." msgstr "" -#: ../../content/applications/websites/website/structure/header_footer.rst:168 +#: ../../content/applications/websites/website/structure/header_footer.rst:188 msgid "Choose the :guilabel:`Border` size." msgstr "" -#: ../../content/applications/websites/website/structure/header_footer.rst:169 +#: ../../content/applications/websites/website/structure/header_footer.rst:189 msgid "Add a :guilabel:`Shadow`." msgstr "" -#: ../../content/applications/websites/website/structure/header_footer.rst:170 +#: ../../content/applications/websites/website/structure/header_footer.rst:190 msgid "Add a :guilabel:`Scroll Top Button` and choose its position." msgstr "" -#: ../../content/applications/websites/website/structure/header_footer.rst:171 +#: ../../content/applications/websites/website/structure/header_footer.rst:191 msgid "Hide or show the footer by toggling the :guilabel:`Page visibility` switch." msgstr "" @@ -7276,235 +7543,299 @@ msgid "Optimize SEO" msgstr "" #: ../../content/applications/websites/website/structure/seo.rst:32 -msgid "Meta tags" +msgid "If you change the title of a blog post or the name of a product, the link to the related webpage is automatically updated. The old link still functions as Odoo creates a :ref:`301 redirect `, maintaining the SEO." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:34 -msgid "Meta tags are HTML elements that provide information about a webpage to search engines and website visitors. They play a crucial role in SEO by helping search engines understand the content and context of a webpage and attract visitors with appealing content. There are two types of meta tags in Odoo:" +#: ../../content/applications/websites/website/structure/seo.rst:37 +msgid "Keywords and Meta tags" msgstr "" #: ../../content/applications/websites/website/structure/seo.rst:39 -msgid ":guilabel:`Title` tags specify a webpage's title and are displayed as a clickable link in search engine results. They should be concise, descriptive, and relevant to the page's content. You can update the title tag of your webpage or keep it empty to use the default value based on the page’s content." +msgid "There are two types of keywords in SEO, which serve different purposes." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:44 -msgid ":guilabel:`Description` tags summarize the webpage's content, often displayed in search engine results below the title. They are used to encourage the user to visit the page. You can update the description tag of your webpage or keep it empty to use the default value based on the page’s content." -msgstr "" - -#: ../../content/applications/websites/website/structure/seo.rst:50 -msgid "The :guilabel:`Preview` card displays how the title and description tags should appear in search results. It also includes the URL of your page." +#: ../../content/applications/websites/website/structure/seo.rst:42 +msgid "In-text keywords" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:54 -msgid "Keywords" +#: ../../content/applications/websites/website/structure/seo.rst:44 +msgid "In-text keywords appear naturally throughout a page’s visible content (titles, headings, and body text) and help search engines determine the topic and relevance of the page. These keywords have a real impact on ranking. They cannot be edited in the :guilabel:`optimize SEO` pop-up." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:56 -msgid "Keywords are one of the main elements of SEO. A website that is well optimized for search engines speaks the same language as potential visitors, with keywords for SEO helping them to connect to your site." +#: ../../content/applications/websites/website/structure/seo.rst:49 +msgid "It is strongly recommended to only use one H1 title per page for SEO." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:60 -msgid "You can enter the keywords you consider essential in the :guilabel:`Keyword` field and click :guilabel:`ADD` to see how they are used at different levels in your content (H1, H2, page title, page description, page content) and the related searches in Google. The tool also suggests relevant keywords to drive your web traffic. The more keywords are present on your webpage, the better." +#: ../../content/applications/websites/website/structure/seo.rst:52 +msgid "Meta tags and meta keywords" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:66 -msgid "It is strongly recommended to only use one H1 title per page for SEO." +#: ../../content/applications/websites/website/structure/seo.rst:54 +msgid "**Meta tags** are HTML elements that provide information about a webpage to search engines and website visitors. They play a crucial role in SEO by helping search engines understand the content and context of a webpage and attract visitors with appealing content. They can be edited in the :guilabel:`optimize SEO` pop-up. There are two types of meta tags in Odoo:" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:69 -msgid "Image for social share" +#: ../../content/applications/websites/website/structure/seo.rst:59 +msgid ":guilabel:`Title` tags specify a webpage's title and are displayed as a clickable link in search engine results. They should be concise, descriptive, and relevant to the page's content. You can update the title tag of your webpage or keep it empty to use the default value based on the page’s content." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:71 -msgid "When you share your page on social media, your logo image is selected, but you can upload any other image by clicking the upward arrow." +#: ../../content/applications/websites/website/structure/seo.rst:64 +msgid ":guilabel:`Description` tags summarize the webpage's content, often displayed in search engine results below the title. They are used to encourage the user to visit the page. You can update the description tag of your webpage or keep it empty to use the default value based on the page’s content." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:75 -msgid "The :guilabel:`Social Preview` card displays how the page's information would appear when shared." +#: ../../content/applications/websites/website/structure/seo.rst:70 +msgid "The :guilabel:`Preview` card displays how the title and description tags should appear in search results. It also includes the URL of your page." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:77 -msgid "If you change the title of a blog post or the name of a product, the changes apply automatically everywhere on your website. The old link still functions when external websites use a :ref:`301 redirect `, maintaining the SEO link juice." +#: ../../content/applications/websites/website/structure/seo.rst:73 +msgid "**Meta keywords** are placed in a hidden HTML tag ``. Once used to describe a page’s topic, this tag is now ignored by major search engines and has little or no impact on SEO. To edit :guilabel:`Keywords`, enter the keywords you consider essential in this field and click :guilabel:`Add` to see how they are used at different levels in your content (H1, H2, page title, page description, page content) and the related searches in Google. The tool also suggests relevant keywords." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:82 +#: ../../content/applications/websites/website/structure/seo.rst:81 #: ../../content/applications/websites/website/web_design/elements.rst:64 msgid "Images" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:84 +#: ../../content/applications/websites/website/structure/seo.rst:83 msgid "The size of images has a significant impact on page speed, which is an essential criterion for search engines to optimize SEO ranking." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:88 +#: ../../content/applications/websites/website/structure/seo.rst:87 msgid "Compare how your website ranks using `Google Page Speed `_ or `Pingdom Website Speed Test `_." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:91 +#: ../../content/applications/websites/website/structure/seo.rst:90 msgid "Odoo automatically compresses uploaded images and converts them to `Webp`. With this file format, photos are smaller, which increases the page loading speed and, therefore, gives a better ranking in SEO. All images used in Odoo official :doc:`themes <../web_design/themes>` are also compressed by default. If you are using a third-party theme, it may provide images that are not compressed efficiently." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:97 +#: ../../content/applications/websites/website/structure/seo.rst:96 msgid "**To modify an image** from your website, select the image, click :guilabel:`Edit`, then go to the :guilabel:`Customize` tab, and adapt the :guilabel:`Format` in the :guilabel:`Image` section." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:-1 -msgid "automated image compression" -msgstr "" - -#: ../../content/applications/websites/website/structure/seo.rst:104 +#: ../../content/applications/websites/website/structure/seo.rst:100 msgid "Alt tags are used to provide context to what an image is displaying, informing search engine crawlers and allowing them to index an image correctly. Adding alt tags keywords in the :guilabel:`Description` field is essential from an SEO perspective. This description is added to the HTML code of your image, and it is shown when the image cannot be displayed." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:110 -msgid "Advanced features" -msgstr "" - -#: ../../content/applications/websites/website/structure/seo.rst:113 -msgid "Structured data markup" -msgstr "" - -#: ../../content/applications/websites/website/structure/seo.rst:115 -msgid "Structured data markup is used to generate rich snippets in search engine results. It is a way for websites to send structured data to search engine robots, helping them understand your content and create well-presented search results." +#: ../../content/applications/websites/website/structure/seo.rst:106 +msgid "Image for social share" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:119 -msgid "By default, Google supports many `rich snippets `_ for content types, including Reviews, People, Products, Businesses, Events, and Organizations." +#: ../../content/applications/websites/website/structure/seo.rst:108 +msgid "When you share your page on social media, your website logo is selected by default, but you can search the :doc:`Unsplash image library <../../../general/integrations/unsplash>` or upload any other image by clicking the :icon:`fa-upload` :guilabel:`(upload)` button." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:122 -msgid "Microdata is a set of tags, introduced with HTML5, that help search engines better understand your content and display it in a relevant way. Odoo implements microdata as defined in the schema.org `specification `_ for events, eCommerce products, forum posts, and contact addresses. This allows your product pages to be displayed in Google using extra information like the price and rating of a product:" +#: ../../content/applications/websites/website/structure/seo.rst:113 +msgid "You can set a default social share image. Go to :menuselection:`Website --> Configuration --> Settings` in the :guilabel:`SEO`section and tick the :guilabel:`Default Social Share Image` checkbox." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:-1 -msgid "snippets in search engine results" +#: ../../content/applications/websites/website/structure/seo.rst:117 +msgid "The :guilabel:`Social Preview` card displays how the page's information would appear when shared." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:132 -msgid "robots.txt" +#: ../../content/applications/websites/website/structure/seo.rst:121 +msgid "Indexation" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:134 -msgid "A `robots.txt` file instructs search engine crawlers which parts of a website they are permitted to access. Its primary purpose is to:" +#: ../../content/applications/websites/website/structure/seo.rst:123 +msgid "Website indexation is the process by which search engines, such as Google, discover, analyze, and store information about a website's content in their database. Search engine bots, known as crawlers or spiders, visit web pages and follow links to collect data, including text, images, and other media. The purpose of indexation is to make a website's content searchable and discoverable to users. Without being indexed, a website or a specific page on that site will not appear in search engine results, regardless of how relevant or well-designed it is. Indexation is a fundamental step in :abbr:`SEO (Search Engine Optimization)`, serving as the foundation for a website's visibility and organic traffic." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:137 -msgid "**Prevent overloading the website:** By guiding crawlers away from certain sections, robots.txt helps manage server load." +#: ../../content/applications/websites/website/structure/seo.rst:133 +msgid "**When you first create your website on Odoo, it will not appear directly in search engine results.** Search engines need time to crawl and index it, which can take anywhere from a few days to several weeks. For Google, you can use the :doc:`Search Console <../configuration/google_search_console>` and request indexing for specific URLs, though this does not guarantee faster results. If you have an existing website and are migrating, your previous website may still appear instead of the new one during that timeframe." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:139 -msgid "**Control access to resources and detailed descriptions:** It can prevent crawlers from accessing media files (images, videos), CSS stylesheets, and JavaScript files, and from reading the content (text) of specific pages." +#: ../../content/applications/websites/website/structure/seo.rst:141 +msgid "SEO impact when migrating your existing website to Odoo" msgstr "" #: ../../content/applications/websites/website/structure/seo.rst:143 -msgid "When indexing your website, search engines first look at the robots.txt file. Odoo automatically creates one robot.txt file available on `mydatabase.odoo.com/robots.txt`." +msgid "In most cases, migrating to Odoo will not negatively impact your SEO. While no platform can guarantee that rankings will remain unchanged, follow these best practices to significantly reduce the risk." msgstr "" #: ../../content/applications/websites/website/structure/seo.rst:147 -msgid "Reputable bots adhere to robots.txt; others may require blocking via :ref:`Cloudflare ` on your custom domain." +msgid "Keep your existing content." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:151 -msgid "Edit robots.txt" +#: ../../content/applications/websites/website/structure/seo.rst:149 +msgid "Implement :ref:`redirects ` from old URLs to their new counterparts." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:153 -msgid "By editing a robots.txt file, you can control which site pages are accessible to search engine crawlers. To add custom instructions to the file, go to :menuselection:`Website --> Configuration --> Settings`, scroll down to the :guilabel:`SEO` section, and click :guilabel:`Edit robots.txt`." +#: ../../content/applications/websites/website/structure/seo.rst:151 +msgid "Monitor traffic and indexation to make sure that everything is going well, using :doc:`../configuration/google_search_console`." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:158 -msgid "If you do not want robots to crawl the `/about-us` page of your site, you can edit the robots.txt file to add `Disallow: /about-us`." +#: ../../content/applications/websites/website/structure/seo.rst:153 +msgid "By doing this, you help search engines reindex your site and maintain your visibility in search results." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:162 -msgid "While `robots.txt` prevents content from being crawled, **it does not guarantee that a page will not be indexed**. A page can still appear in search results if it is linked to from other crawled pages (indexed by \"reference\"). Google generally does not recommend using robots.txt to block webpages that you wish to keep out of search results entirely." +#: ../../content/applications/websites/website/structure/seo.rst:157 +msgid "It is normal to experience a traffic decrease in the first days." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:168 +#: ../../content/applications/websites/website/structure/seo.rst:160 msgid "Prevent a page from being indexed" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:170 +#: ../../content/applications/websites/website/structure/seo.rst:162 msgid "To effectively prevent a page from appearing in search engine results, use one of the following methods:" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:173 +#: ../../content/applications/websites/website/structure/seo.rst:165 msgid "**noindex tag:** Access the page's :ref:`properties ` and toggle the :guilabel:`Indexed` switch off." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:177 +#: ../../content/applications/websites/website/structure/seo.rst:169 msgid "This option is not yet available for :ref:`dynamic pages `." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:179 +#: ../../content/applications/websites/website/structure/seo.rst:171 msgid "**404 or 403:** Configure the page to return a 404 (Not Found) or 403 (Forbidden) HTTP status code. These codes signal to search engines that the page does not exist or is inaccessible, leading to its eventual removal from the index." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:183 +#: ../../content/applications/websites/website/structure/seo.rst:175 msgid "**404:** :ref:`Configure a 404 redirection. `" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:184 +#: ../../content/applications/websites/website/structure/seo.rst:176 msgid "**403:** Access the page's :ref:`properties ` and toggle the :guilabel:`Visibility` switch off or :ref:`unpublish the page `." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:187 +#: ../../content/applications/websites/website/structure/seo.rst:179 msgid "**Google Search Console:** Use Google Search Console to request the removal of specific URLs from Google's index." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:191 +#: ../../content/applications/websites/website/structure/seo.rst:183 msgid ":doc:`../configuration/google_search_console`" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:192 +#: ../../content/applications/websites/website/structure/seo.rst:184 msgid ":doc:`pages`" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:195 -msgid "Sitemap" +#: ../../content/applications/websites/website/structure/seo.rst:187 +msgid "Prevent a website from being indexed" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:197 -msgid "The sitemap points out website pages and their relation to each other to search engine robots. Odoo generates a `/sitemap.xml` file, including all URLs. For performance reasons, this file is cached and updated every 12 hours." +#: ../../content/applications/websites/website/structure/seo.rst:189 +msgid "To prevent a website from appearing in search engine results, go to :menuselection:`Configuration --> Settings`, then in the :guilabel:`Website Info` section, add a random value in the :guilabel:`Domain` field. Doing so automatically inserts the following tag into the page source:" +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:198 +msgid "This tag instructs search engines not to index the site. After applying the change, it may take several days or weeks for search engines to update their results and remove the website." msgstr "" #: ../../content/applications/websites/website/structure/seo.rst:202 +msgid "This can be used to prevent websites from test databases from appearing in search results." +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:205 +msgid "Sitemap" +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:207 +msgid "The sitemap points out website pages and their relation to each other to search engine crawlers. Odoo generates a `/sitemap.xml` file, including all URLs. For performance reasons, this file is cached and updated every 12 hours." +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:212 msgid "If your website has a lot of pages, Odoo automatically creates a Sitemap Index file, respecting the `sitemaps.org protocol `_, grouping sitemap URLs in 45000 chunks per file." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:206 +#: ../../content/applications/websites/website/structure/seo.rst:216 msgid "Every sitemap entry has three attributes that are computed automatically:" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:208 +#: ../../content/applications/websites/website/structure/seo.rst:218 msgid "``: the URL of a page." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:209 +#: ../../content/applications/websites/website/structure/seo.rst:219 msgid "``: last modification date of the resource, computed automatically based on the related object. For a page related to a product, this could be the last modification date of the product or the page." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:212 +#: ../../content/applications/websites/website/structure/seo.rst:222 msgid "``: modules may implement their priority algorithm based on their content (for example, a forum might assign a priority based on the number of votes on a specific post). The priority of a static page is defined by its priority field, which is normalized (16 is the default)." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:217 -msgid "To prevent pages from appearing in a sitemap, go to :menuselection:`Site --> Properties`, click the :guilabel:`Publish` tab, and turn off the :guilabel:`Indexed` feature." +#: ../../content/applications/websites/website/structure/seo.rst:227 +msgid "To prevent pages from appearing in a sitemap, go to :menuselection:`Site --> Properties`, and toggle off the :guilabel:`Indexed` feature." msgstr "" #: ../../content/applications/websites/website/structure/seo.rst:0 -msgid "disabling the “Indexed” checkbox" +msgid "toggle off the “Indexed” field" +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:234 +msgid "robots.txt" +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:236 +msgid "A `robots.txt` file instructs search engine crawlers which parts of a website they are permitted to access. Its primary purpose is to:" +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:239 +msgid "**Prevent overloading the website:** By guiding crawlers away from certain sections, robots.txt helps manage server load." +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:241 +msgid "**Control access to resources and detailed descriptions:** It can prevent crawlers from accessing media files (images, videos), CSS stylesheets, and JavaScript files, and from reading the content (text) of specific pages." +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:245 +msgid "When indexing your website, search engines first look at the robots.txt file. Odoo automatically creates one robot.txt file available on `mydatabase.odoo.com/robots.txt`." +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:249 +msgid "Reputable bots adhere to robots.txt; others may require blocking via :ref:`Cloudflare ` on your custom domain." +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:253 +msgid "Edit robots.txt" +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:255 +msgid "By editing a robots.txt file, you can control which site pages are accessible to search engine crawlers. To add custom instructions to the file, go to :menuselection:`Website --> Configuration --> Settings`, scroll down to the :guilabel:`SEO` section, and click :guilabel:`Edit robots.txt`." +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:260 +msgid "If you do not want robots to crawl the `/about-us` page of your site, you can edit the robots.txt file to add `Disallow: /about-us`." +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:264 +msgid "While `robots.txt` prevents content from being crawled, **it does not guarantee that a page will not be indexed**. A page can still appear in search results if it is linked to from other crawled pages (indexed by \"reference\"). Google generally does not recommend using robots.txt to block webpages that you wish to keep out of search results entirely." +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:270 +msgid "Advanced features" +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:273 +msgid "Structured data markup" +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:275 +msgid "Structured data markup is used to generate rich snippets in search engine results. It is a way for websites to send structured data to search engine crawlers, helping them understand your content and create well-presented search results." +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:279 +msgid "By default, Google supports many `rich snippets `_ for content types, including Reviews, People, Products, Businesses, Events, and Organizations." +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:282 +msgid "Microdata is a set of tags, introduced with HTML5, that help search engines better understand your content and display it in a relevant way. Odoo implements microdata as defined in the schema.org `specification `_ for events, eCommerce products, forum posts, and contact addresses. This allows your product pages to be displayed in Google using extra information like the price and rating of a product:" +msgstr "" + +#: ../../content/applications/websites/website/structure/seo.rst:-1 +msgid "snippets in search engine results" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:224 +#: ../../content/applications/websites/website/structure/seo.rst:292 msgid "Hreflang HTML tags" msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:226 +#: ../../content/applications/websites/website/structure/seo.rst:294 msgid "Odoo automatically includes `hreflang` and `x-default` tags in the code of your website's multilingual pages. These HTML attributes are crucial in informing search engines about a specific page's language and geographical targeting." msgstr "" -#: ../../content/applications/websites/website/structure/seo.rst:231 +#: ../../content/applications/websites/website/structure/seo.rst:299 msgid ":doc:`../configuration/translate`" msgstr "" @@ -7576,35 +7907,35 @@ msgstr "" msgid "Example of a form block" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:62 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:64 msgid "Action" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:64 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:66 msgid "By default, when the form is submitted, an email containing the information entered by the visitor is automatically sent. Depending on the apps installed on your database, additional actions that can automatically create records may become available. To choose a different action, click :guilabel:`Edit`, click the form, navigate to the :guilabel:`Customize` tab, and select the desired :guilabel:`Action`:" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:70 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:72 msgid ":guilabel:`Apply for a Job` (:doc:`Recruitment `)" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:71 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:73 msgid ":guilabel:`Create a Customer` (:doc:`eCommerce <../../ecommerce>`)" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:72 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:74 msgid ":guilabel:`Create a Ticket` (:doc:`Helpdesk `)" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:73 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:75 msgid ":guilabel:`Create an Opportunity` (:doc:`CRM `)" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:74 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:76 msgid ":guilabel:`Subscribe to Newsletter` (:doc:`Email Marketing `)" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:75 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:77 msgid ":guilabel:`Create a Task` (:doc:`Project `)" msgstr "" @@ -7612,23 +7943,23 @@ msgstr "" msgid "Editing a form to change its action" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:80 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:82 msgid "By default, submitting the form redirects visitors to a *Thank you* page. Use the :guilabel:`URL` field to send them to a different page. Alternatively, you can choose not to redirect and keep them on the form's page by selecting :guilabel:`Nothing` or :guilabel:`Show Message` in the :guilabel:`On Success` field." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:86 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:88 msgid "Fields" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:88 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:90 msgid "To add a new field to the form, navigate to the :guilabel:`Customize tab` and click the :guilabel:`+ Field` button next to the :guilabel:`Form` or :guilabel:`Field` section. To modify the new (or any other) field on the form, select the field, then use the options available in the :guilabel:`Field` section of the :guilabel:`Customize` tab. For example, you can:" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:93 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:95 msgid "Change the field :guilabel:`Type`." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:96 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:98 msgid "It is also possible to select an :guilabel:`Existing Field` from the database and use the data it contains. The fields available depend on the selected action. Property fields added to the database can also be used." msgstr "" @@ -7636,71 +7967,71 @@ msgstr "" msgid "All types of form fields" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:105 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:107 msgid "Some fields are visually similar, but the data entered must follow a specific format." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:107 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:109 msgid "Edit the field's :guilabel:`Label` and adapt its :guilabel:`Position`." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:108 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:110 msgid "Enable a field :guilabel:`Description`. Click the default description on the form to modify it." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:109 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:111 msgid "Add a :guilabel:`Placeholder` or :guilabel:`Default value`." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:110 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:112 msgid "Specify if the field is :guilabel:`Required`." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:111 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:113 msgid "Edit the field's :doc:`visibility ` settings." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:112 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:114 msgid "Add an :ref:`animation `." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:114 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:116 msgid "Once you have made the desired changes, click :guilabel:`Save`." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:117 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:119 msgid "Add an Odoo contact form on a non-Odoo website" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:119 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:121 msgid "You can display an Odoo contact form on another website using an iframe. To do so, follow these steps:" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:122 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:124 msgid "**Prepare the Odoo form:** Create a contact form on a page in Odoo Website and remove the :ref:`header design ` and the :ref:`footer design `. Make sure only the contact form remains on the page." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:125 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:127 msgid "**Generate an embeddable code:** Copy the URL of the Odoo form page and paste it into an iframe generator, such as `La Digitale.dev `_ or `iFrame Generator `_ . Adjust the width and height for proper display." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:129 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:131 msgid "**Add the embedded code to the non-Odoo website:** Open the relevant page’s HTML (in the code editor or CMS) and insert the embedded code where the form should be displayed." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:133 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:135 msgid "Example of an embedded code:" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:153 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:155 msgid "Embed code" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:155 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:157 msgid "Embedding code allows you to integrate content from third-party services into a page, such as videos from YouTube, maps from Google Maps, social media posts from Instagram, etc." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:158 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:160 msgid "After adding the block to a page, click the block, then go to the :guilabel:`Customize` tab and click :guilabel:`Edit`. Replace the placeholder code with your custom embed code." msgstr "" @@ -7708,23 +8039,23 @@ msgstr "" msgid "Add the link to the embedded code you want to point to" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:165 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:167 msgid "Do not copy/paste code you do not understand, as it could put your data at risk." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:170 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:172 msgid "Move, switch, or delete a building block" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:172 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:174 msgid "Pull the turquoise borders on the block to reduce or increase the space at the top or bottom of it." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:174 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:176 msgid "Change the block order by clicking :icon:`fa-chevron-up` (:guilabel:`chevron up`) or :icon:`fa-chevron-down` (:guilabel:`chevron down`) and move the block on the page by clicking :icon:`fa-arrows` (:guilabel:`arrows`). When you have multiple :ref:`columns `, move a column to the left or right by clicking :icon:`fa-chevron-left` (:guilabel:`chevron left`) or :icon:`fa-chevron-right` (:guilabel:`chevron right`)." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:181 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:183 msgid "To delete a block, click :icon:`fa-trash` (:guilabel:`trash`)." msgstr "" @@ -7732,35 +8063,35 @@ msgstr "" msgid "Extend margins on building block" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:187 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:189 msgid "Quickly change the block category by clicking :icon:`fa-exchange` (:guilabel:`exchange`)." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:192 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:194 msgid "Edit a building block" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:194 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:196 msgid "To edit the content of a building block, click on it and go to the :guilabel:`Customize` tab. Available customization options vary depending on the type of block selected." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:198 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:200 msgid ":doc:`Web design elements `" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:199 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:201 msgid ":doc:`Visibility `" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:202 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:204 msgid "Background" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:204 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:206 msgid "To modify the background of a building block, select the block, go to the :guilabel:`Customize` tab, and click the color dot or another :guilabel:`Background` option. You can change the color and/or add an image, video, and/or shape. Once you've selected a shape, new fields appear to allow you to customize the shape." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:210 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:212 msgid "Position an element (image, text, etc.) behind or in front of another one by using the :guilabel:`Send to back` or :guilabel:`Bring to front` icons." msgstr "" @@ -7768,7 +8099,7 @@ msgstr "" msgid "Change block position" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:216 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:218 msgid "To resize a block, click and drag the dots around its edges to adjust it as needed." msgstr "" @@ -7776,23 +8107,23 @@ msgstr "" msgid "Adapt block size" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:222 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:224 msgid ":doc:`General theme `" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:225 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:227 msgid "Layout: grid and columns" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:227 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:229 msgid "For most building blocks, you can choose between two layout styles: :ref:`grid ` or :ref:`columns (cols) `. To change the default layout style, click the block, go to the :guilabel:`Customize` tab, and set the :guilabel:`Layout` field to :guilabel:`Grid` or :guilabel:`Cols`." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:235 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:237 msgid "Grid" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:237 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:239 msgid "The :guilabel:`Grid` layout allows you to reposition and resize elements, such as images or text, by dragging and dropping them. When :guilabel:`Grid` is selected, additional options are available to :guilabel:`Add Elements` by clicking :guilabel:`Image`, :guilabel:`Text`, or :guilabel:`Button`." msgstr "" @@ -7800,67 +8131,67 @@ msgstr "" msgid "When the grid layout is selected, choose an image and drag and drop it where needed." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:247 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:249 msgid "Cols" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:249 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:251 msgid "Choosing the :guilabel:`Cols` layout allows you to determine the number of elements per line within the block. To do so, select the block to modify, click the dropdown next to the :guilabel:`Cols` field, and adjust the number. You can then modify a specific column's settings using the options in the :guilabel:`Column` section of the :guilabel:`Customize` tab." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:255 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:257 msgid "By default, :doc:`on mobile devices `, only one element (column) is visible per line to ensure that content remains easily readable and accessible on smaller screens. To adjust the value, click the :icon:`fa-mobile` (:guilabel:`mobile icon`) at the top of the website editor and adapt the number of columns. Shapes are hidden by default on mobiles." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:263 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:265 msgid "Duplicate a building block" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:265 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:267 msgid "To duplicate a building block, click the :icon:`fa-clone` (:guilabel:`duplicate`) icon at the top of the :guilabel:`Customize` tab. Once duplicated, the new block appears on the page beneath the original one." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:272 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:274 msgid "Save a custom building block" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:274 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:276 msgid "You can save a customized building block to reuse it elsewhere. To do so, select it, navigate to the :guilabel:`Customize` tab, and click the :icon:`fa-floppy-o` (:guilabel:`floppy disk`) icon. Click the :guilabel:`Save and reload` button in the popup to confirm saving your custom block." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:278 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:280 msgid "To add a saved building block to the page, navigate to the :guilabel:`Blocks` tab and drag and drop the :guilabel:`Custom` block from the :guilabel:`Categories` section. In the popup that opens, click the desired block in the :guilabel:`Custom` category." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:283 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:285 msgid "In the :guilabel:`Insert a block` popup, click :icon:`fa-pencil` (:guilabel:`edit`) to rename the custom block or :icon:`fa-trash` (:guilabel:`delete`) to delete it." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:289 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:291 msgid "Create an anchor link" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:291 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:293 msgid "Anchor links are hyperlinks that direct users to a **specific section** of a page. To create an anchor link for a block, follow these steps:" msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:294 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:296 msgid "Click :guilabel:`Edit` and select the block you want to link to." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:295 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:297 msgid "Click :icon:`fa-link` (:guilabel:`link`) at the top of the :guilabel:`Customize` tab." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:296 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:298 msgid "To edit the default anchor name, click :guilabel:`Edit` in the green popup message that opens." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:297 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:299 msgid "Replace the anchor name and click :guilabel:`Save & copy`." msgstr "" -#: ../../content/applications/websites/website/web_design/building_blocks.rst:299 +#: ../../content/applications/websites/website/web_design/building_blocks.rst:301 msgid "Once the anchor is saved, you can :ref:`link to it ` from anywhere on your website." msgstr ""