Compare commits

...

2 Commits

Author SHA1 Message Date
71c1aeb355 update 2025-02-28 08:38:23 +07:00
507ec45616 update 2025-02-28 03:47:22 +07:00
11 changed files with 125 additions and 73 deletions

View File

@ -33,7 +33,7 @@ REDIRECTS = redirects
SERVER_IP := $(shell ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}') SERVER_IP := $(shell ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
# Get all listening ports # Get all listening ports
LISTENING_PORTS := $(shell ss -tuln | awk 'NR>1 {print $$4}' | awk -F: '{print $$NF}' | sort -n | uniq) LISTENING_PORTS := $(shell ss -tuln | awk 'NR>1 {print $$4}' | awk -F: '{print $$NF}' | sort -n | uniq)
LOGFILE := $(BUILD_DIR)/live_server.log
# Default port # Default port
OPEN_PORTS := $(shell ss -tuln | awk 'NR>1 {print $$4}' | awk -F: '{print $$NF}' | sort -n | uniq) OPEN_PORTS := $(shell ss -tuln | awk 'NR>1 {print $$4}' | awk -F: '{print $$NF}' | sort -n | uniq)
SELECTED_PORT := $(shell echo "$(OPEN_PORTS)" | awk 'NR==1') SELECTED_PORT := $(shell echo "$(OPEN_PORTS)" | awk 'NR==1')
@ -64,17 +64,18 @@ clean:
html: $(HTML_BUILD_DIR)/_static/style.css html: $(HTML_BUILD_DIR)/_static/style.css
@echo "Starting build..." @echo "Starting build..."
$(SPHINX_BUILD) -q -c $(CONFIG_DIR) -b html $(SPHINXOPTS) $(SOURCE_DIR) $(HTML_BUILD_DIR) $(SPHINX_BUILD) -q -c $(CONFIG_DIR) -b html $(SPHINXOPTS) $(SOURCE_DIR) $(HTML_BUILD_DIR) >> $(LOGFILE)
@echo "Build finished." @echo "Build finished."
hot_reload: SPHINXOPTS += -A collapse_menu=True live: SPHINXOPTS += -A collapse_menu=True
hot_reload: live:
@echo "Starting Live Server..." @echo "Starting Live Server..."
$(SPHINX_AUTO_BUILD) $(SOURCE_DIR) $(HTML_BUILD_DIR) \ $(SPHINX_AUTO_BUILD) $(SOURCE_DIR) $(HTML_BUILD_DIR) \
--port 8000 --host $(SERVER_IP) \ --port 8000 --host $(SERVER_IP) \
--watch $(THEME) --watch $(LOCALE) --watch $(STATIC) --watch $(REDIRECTS) --watch $(THEME_STATIC) --watch . \ --watch $(THEME) --watch $(LOCALE) --watch $(STATIC) --watch $(REDIRECTS) --watch $(THEME_STATIC) --watch . \
--pre-build "sh -c 'mkdir -p $(HTML_BUILD_DIR)/_static && python3 -m pysassc $(THEME)/static/style.scss $(HTML_BUILD_DIR)/_static/style.css'" \ --pre-build "sh -c 'mkdir -p $(HTML_BUILD_DIR)/_static && python3 -m pysassc $(THEME)/static/style.scss $(HTML_BUILD_DIR)/_static/style.css'" \
$(SPHINXOPTS) -c $(CONFIG_DIR) -b html -q $(SPHINXOPTS) -c $(CONFIG_DIR) -b html
# To call *after* `make html` # To call *after* `make html`

View File

@ -26,15 +26,15 @@ database name. It is only displayed if an upgrade is available.
:alt: Accessing the database management options :alt: Accessing the database management options
``` ```
- {ref}`odoo_online/upgrade` - {ref}`odoo-online-upgrade`
- {ref}`odoo_online/duplicate` - {ref}`odoo-online-duplicate`
- {ref}`odoo_online/rename` - {ref}`odoo-online-rename`
- {ref}`odoo_online/download` - {ref}`odoo-online-download`
- {ref}`odoo_online/domains` - {ref}`odoo-online-domains`
- {ref}`odoo_online/tags` - {ref}`odoo-online-tags`
- {ref}`odoo_online/delete` - {ref}`odoo-online-delete`
- {ref}`odoo_online/contact-support` - {ref}`odoo-online-contact-support`
- {ref}`odoo_online/users` - {ref}`odoo-online-users`
(odoo-online-upgrade)= (odoo-online-upgrade)=

View File

@ -42,7 +42,7 @@ To resolve the issue:
:::{tip} :::{tip}
If a test or a development database is needed, you can {ref}`duplicate a database If a test or a development database is needed, you can {ref}`duplicate a database
<on-premise/duplicate>`. <on-premise-duplicate>`.
::: :::
- Verify that **no databases share the same UUID** (Universally Unique Identifier) by opening your - Verify that **no databases share the same UUID** (Universally Unique Identifier) by opening your
@ -81,7 +81,7 @@ To resolve the issue, either:
- **Add more users** to your subscription by clicking the {guilabel}`Upgrade your subscription` link - **Add more users** to your subscription by clicking the {guilabel}`Upgrade your subscription` link
displayed in the message to validate the upsell quotation and pay for the extra users. displayed in the message to validate the upsell quotation and pay for the extra users.
- {ref}`Deactivate users <users/deactivate>` and **reject** the upsell quotation. - {ref}`Deactivate users <users-deactivate>` and **reject** the upsell quotation.
Once your database has the correct number of users, the expiration message disappears automatically Once your database has the correct number of users, the expiration message disappears automatically
after a few days, when the next verification occurs. after a few days, when the next verification occurs.

View File

@ -10,7 +10,7 @@ substitutions:
(activities-important)= (activities-important)=
The icon used to display activities varies, depending on the {ref}`activity type The icon used to display activities varies, depending on the {ref}`activity type
<activities/types>`: <activities-types>`:
- {icon}`fa-clock-o` {guilabel}`(clock)` icon: the default activities icon. - {icon}`fa-clock-o` {guilabel}`(clock)` icon: the default activities icon.
- {icon}`fa-phone` {guilabel}`(phone)` icon: a phone call is scheduled. - {icon}`fa-phone` {guilabel}`(phone)` icon: a phone call is scheduled.
@ -23,8 +23,8 @@ The icon used to display activities varies, depending on the {ref}`activity type
## Schedule activities ## Schedule activities
Activities can be scheduled on any page of the database that contains a {ref}`chatter Activities can be scheduled on any page of the database that contains a {ref}`chatter
<activities/chatter>` thread, {ref}`Kanban view <activities/kanban>`, {ref}`list view <activities-chatter>` thread, {ref}`Kanban view <activities-kanban>`, {ref}`list view
<activities/list>`, or {ref}`activities view <activities/activity>` of an application. <activities-list>`, or {ref}`activities view <activities-activity>` of an application.
(activities-chatter)= (activities-chatter)=
@ -34,7 +34,7 @@ Activities can be created from the chatter on any record.
To schedule a new activity, click the {guilabel}`Activities` button, located at the top of the To schedule a new activity, click the {guilabel}`Activities` button, located at the top of the
chatter. In the {guilabel}`Schedule Activity` pop-up window that appears, {ref}`fill out the chatter. In the {guilabel}`Schedule Activity` pop-up window that appears, {ref}`fill out the
Schedule Activity form <activities/form>`. Schedule Activity form <activities-form>`.
```{image} activities/chatter.png ```{image} activities/chatter.png
:align: center :align: center
@ -50,7 +50,7 @@ Activities can also be created from the {icon}`oi-view-kanban` {guilabel}`(Kanba
To do so, click on the {{ clock }} located at the bottom of an individual record. To do so, click on the {{ clock }} located at the bottom of an individual record.
Click {guilabel}`+ Schedule An Activity`, then proceed to {ref}`fill out the Schedule Activity form Click {guilabel}`+ Schedule An Activity`, then proceed to {ref}`fill out the Schedule Activity form
<activities/form>`. <activities-form>`.
```{image} activities/schedule-kanban-activity.png ```{image} activities/schedule-kanban-activity.png
:align: center :align: center
@ -72,7 +72,7 @@ If the {guilabel}`Activities` column is hidden, reveal it using the {icon}`oi-se
{guilabel}`(settings adjust)` icon in the far-right of the top row. {guilabel}`(settings adjust)` icon in the far-right of the top row.
Then, click on the {{ clock }} for the record the activity is being added to, and click {guilabel}`+ Then, click on the {{ clock }} for the record the activity is being added to, and click {guilabel}`+
Schedule an activity`. Proceed to {ref}`fill out the Schedule Activity form <activities/form>` that Schedule an activity`. Proceed to {ref}`fill out the Schedule Activity form <activities-form>` that
appears. appears.
:::{note} :::{note}
@ -118,7 +118,7 @@ regardless of the activity type, or the view.
To schedule an activity for a record, hover over the corresponding field. Click the {icon}`fa-plus` To schedule an activity for a record, hover over the corresponding field. Click the {icon}`fa-plus`
{guilabel}`(plus)` icon that appears, and then {ref}`fill out the Schedule Activity form {guilabel}`(plus)` icon that appears, and then {ref}`fill out the Schedule Activity form
<activities/form>`. <activities-form>`.
```{image} activities/activity-view.png ```{image} activities/activity-view.png
:align: center :align: center
@ -130,9 +130,9 @@ To schedule an activity for a record, hover over the corresponding field. Click
### Schedule Activity form ### Schedule Activity form
Activities can be scheduled from many different places, such as from the {ref}`chatter Activities can be scheduled from many different places, such as from the {ref}`chatter
<activities/chatter>` of a record, or from one of multiple views in an application, when available: <activities-chatter>` of a record, or from one of multiple views in an application, when available:
the {ref}`Kanban view <activities/kanban>`, {ref}`list view <activities/list>`, or {ref}`activity the {ref}`Kanban view <activities-kanban>`, {ref}`list view <activities-list>`, or {ref}`activity
view <activities/activity>`. view <activities-activity>`.
Enter the following information on the form: Enter the following information on the form:
@ -212,7 +212,7 @@ activities that are {guilabel}`Late`, due {guilabel}`Today`, and scheduled in th
### Request a document ### Request a document
The option to {guilabel}`Request a Document` is available at the bottom of the list of {ref}`all The option to {guilabel}`Request a Document` is available at the bottom of the list of {ref}`all
scheduled activities <activities/all>`, the option to {guilabel}`Request a Document` appears. Click scheduled activities <activities-all>`, the option to {guilabel}`Request a Document` appears. Click
{guilabel}`Request a Document`, and a {guilabel}`Request a file` pop-up window appears. {guilabel}`Request a Document`, and a {guilabel}`Request a file` pop-up window appears.
Enter the following information on the form: Enter the following information on the form:
@ -225,7 +225,7 @@ Enter the following information on the form:
reveal a drop-down menu. Select the desired time-frame option from the list. The options are reveal a drop-down menu. Select the desired time-frame option from the list. The options are
{guilabel}`Days`, {guilabel}`Weeks`, or {guilabel}`Months`. {guilabel}`Days`, {guilabel}`Weeks`, or {guilabel}`Months`.
- {guilabel}`Workspace`: using the drop-down menu, select the specific {ref}`Workspace - {guilabel}`Workspace`: using the drop-down menu, select the specific {ref}`Workspace
<documents/workspaces>` the document is being uploaded to. <documents-workspaces>` the document is being uploaded to.
- {guilabel}`Tags`: select any desired tags from the drop-down menu. The available tags displayed - {guilabel}`Tags`: select any desired tags from the drop-down menu. The available tags displayed
are based on the tags configured for the selected {guilabel}`Workspace`. are based on the tags configured for the selected {guilabel}`Workspace`.
- {guilabel}`Message`: enter a message to clarify the document request in this field. - {guilabel}`Message`: enter a message to clarify the document request in this field.
@ -264,7 +264,7 @@ example, to view and edit the activities available for the *CRM* application, go
### Edit activity types ### Edit activity types
To edit an existing {ref}`activity type <activities/types>`, click on the activity type, and the To edit an existing {ref}`activity type <activities-types>`, click on the activity type, and the
activity type form loads. activity type form loads.
Make any desired changes to the activity type form. The form automatically saves, but it can be Make any desired changes to the activity type form. The form automatically saves, but it can be
@ -273,7 +273,7 @@ saved manually at any time by clicking the {guilabel}`Save Manually` option, rep
### Create new activity types ### Create new activity types
To create a new {ref}`activity type <activities/types>`, click {guilabel}`New` from the To create a new {ref}`activity type <activities-types>`, click {guilabel}`New` from the
{guilabel}`Activity Types` page, and a blank activity type form loads. {guilabel}`Activity Types` page, and a blank activity type form loads.
Enter a {guilabel}`Name` for the activity type at the top of the form, then enter the following Enter a {guilabel}`Name` for the activity type at the top of the form, then enter the following
@ -296,7 +296,7 @@ information on the form.
Available activity types vary based on the installed applications in the database. Available activity types vary based on the installed applications in the database.
::: :::
- {guilabel}`Folder`: select a specific {ref}`workspace <documents/workspaces>` folder to save a - {guilabel}`Folder`: select a specific {ref}`workspace <documents-workspaces>` folder to save a
document to. This field **only** appears if {guilabel}`Upload Document` is selected for the document to. This field **only** appears if {guilabel}`Upload Document` is selected for the
{guilabel}`Action`. {guilabel}`Action`.
@ -315,7 +315,7 @@ information on the form.
::: :::
- {guilabel}`Keep Done`: tick this checkbox to keep activities that have been marked as `Done` - {guilabel}`Keep Done`: tick this checkbox to keep activities that have been marked as `Done`
visible in the {ref}`activity view <activities/activity>`. visible in the {ref}`activity view <activities-activity>`.
- {guilabel}`Default Note`: enter any notes to appear with the activity. - {guilabel}`Default Note`: enter any notes to appear with the activity.

View File

@ -41,7 +41,7 @@ several options for the data to export:
1. With the {guilabel}`I want to update data (import-compatable export)` option ticked, the system 1. With the {guilabel}`I want to update data (import-compatable export)` option ticked, the system
only shows the fields that can be imported. This is helpful in the case where the {ref}`existing only shows the fields that can be imported. This is helpful in the case where the {ref}`existing
records need to be updated <essentials/update-data>`. This works like a filter. Leaving the box records need to be updated <essentials-update-data>`. This works like a filter. Leaving the box
unticked, gives many more field options because it shows all the fields, not just the ones that unticked, gives many more field options because it shows all the fields, not just the ones that
can be imported. can be imported.
2. When exporting, there is the option to export in two formats: `.csv` and `.xls`. With `.csv`, 2. When exporting, there is the option to export in two formats: `.csv` and `.xls`. With `.csv`,
@ -75,7 +75,7 @@ because then, the only data exported is what should be modified and re-imported.
## Import data into Odoo ## Import data into Odoo
Importing data into Odoo is extremely helpful during implementation, or in times where data needs to Importing data into Odoo is extremely helpful during implementation, or in times where data needs to
be {ref}`updated in bulk <essentials/update-data>`. The following documentation covers how to import be {ref}`updated in bulk <essentials-update-data>`. The following documentation covers how to import
data into an Odoo database. data into an Odoo database.
:::{warning} :::{warning}
@ -115,7 +115,7 @@ Open the view of the object to which the data should be imported/populated, clic
``` ```
Click {icon}`fa-download`{guilabel}`Import Template for Customers` at the center of the page to Click {icon}`fa-download`{guilabel}`Import Template for Customers` at the center of the page to
download a {ref}`template <essentials/export_import_data/adapt-a-template>` and populate it with download a {ref}`template <essentials-export-import-data-adapt-a-template>` and populate it with
the company's own data. Such templates can be imported in one click since the data mapping is the company's own data. Such templates can be imported in one click since the data mapping is
already preconfigured. already preconfigured.
@ -182,9 +182,9 @@ from previous software to facilitate the transition to Odoo.
Setting an ID is not mandatory when importing, but it helps in many cases: Setting an ID is not mandatory when importing, but it helps in many cases:
- {ref}`Update imports <essentials/update-data>`: import the same file several times without - {ref}`Update imports <essentials-update-data>`: import the same file several times without
creating duplicates. creating duplicates.
- {ref}`Import relation fields <export_import_data/relation-fields>`. - {ref}`Import relation fields <export-import-data-relation-fields>`.
To recreate relationships between different records, the unique identifier from the original To recreate relationships between different records, the unique identifier from the original
application should be used to map it to the {guilabel}`External ID` (ID) column in Odoo. application should be used to map it to the {guilabel}`External ID` (ID) column in Odoo.
@ -288,7 +288,7 @@ the {guilabel}`Formatting` options (displayed under the {guilabel}`Import` {abbr
:::{important} :::{important}
If the {abbr}`CSV (Comma-separated Values)` file has a tabulation as a separator, Odoo does If the {abbr}`CSV (Comma-separated Values)` file has a tabulation as a separator, Odoo does
**not** detect the separations. The file format options need to be modified in the spreadsheet **not** detect the separations. The file format options need to be modified in the spreadsheet
application. See the following {ref}`Change CSV file format <export_import_data/change-csv>` application. See the following {ref}`Change CSV file format <export_import_data-change-csv>`
section. section.
::: :::
@ -409,11 +409,11 @@ respective contacts:
### Import image files ### Import image files
To import image files along with the {ref}`uploaded <essentials/export_import_data/get-started>` To import image files along with the {ref}`uploaded <essentials-export-import-data-get-started>`
CSV or Excel file, follow the next steps: CSV or Excel file, follow the next steps:
1. Add the image file names to the relevant {guilabel}`Image` column in the data file. 1. Add the image file names to the relevant {guilabel}`Image` column in the data file.
2. {ref}`Upload the data file <essentials/export_import_data/get-started>` or reload it by 2. {ref}`Upload the data file <essentials-export-import-data-get-started>` or reload it by
clicking {guilabel}`Load Data File`. clicking {guilabel}`Load Data File`.
3. Click {guilabel}`Upload your files` under the {guilabel}`Files to import` section. 3. Click {guilabel}`Upload your files` under the {guilabel}`Files to import` section.
4. Select the relevant image files. The number of files selected appears next to the button. 4. Select the relevant image files. The number of files selected appears next to the button.
@ -518,7 +518,7 @@ the companies, and then the people.
## Update data in Odoo ## Update data in Odoo
Existing data can be updated in bulk through a data import, as long as the {ref}`External ID Existing data can be updated in bulk through a data import, as long as the {ref}`External ID
<essentials/external-id>` remains consistent. <essentials-external-id>` remains consistent.
### Prepare data export ### Prepare data export

View File

@ -23,7 +23,7 @@ Catalog](https://iap.odoo.com/iap/all-in-app-services).
{{ IAP }} services do **not** need to be configured or set up before use. Odoo users can simply click on {{ IAP }} services do **not** need to be configured or set up before use. Odoo users can simply click on
the service in the app to activate it. However, each service requires its own prepaid credits, and the service in the app to activate it. However, each service requires its own prepaid credits, and
when they run out, users **must** {ref}`buy more <iap/buying_credits>` in order to keep using it. when they run out, users **must** {ref}`buy more <iap-buying-credits>` in order to keep using it.
:::{note} :::{note}
Enterprise Odoo users with a valid subscription get free credits to test IAP features before Enterprise Odoo users with a valid subscription get free credits to test IAP features before
@ -103,7 +103,7 @@ related to SMS functionality in Odoo, review the documentation below:
Every time an {{ IAP }} service is used, the prepaid credits for that service are spent. Odoo prompts Every time an {{ IAP }} service is used, the prepaid credits for that service are spent. Odoo prompts
the purchase of more credits when there are not enough credits left to continue using a service. the purchase of more credits when there are not enough credits left to continue using a service.
Email alerts can also be set up for when {ref}`credits are low <in_app_purchase/low-credits>`. Email alerts can also be set up for when {ref}`credits are low <in-app-purchase-low-credits>`.
Credits are purchased in *Packs* from the [Odoo IAP Catalog](https://iap.odoo.com/iap/all-in-app-services), and pricing is specific to each service. Credits are purchased in *Packs* from the [Odoo IAP Catalog](https://iap.odoo.com/iap/all-in-app-services), and pricing is specific to each service.

View File

@ -15,7 +15,7 @@ two generic views are dedicated to reporting: the graph and pivot views.
### Graph view ### Graph view
The {ref}`graph view <reporting/using-graph>` is used to visualize your records' data, helping you The {ref}`graph view <reporting-using-graph>` is used to visualize your records' data, helping you
identify patterns and trends. The view is often found under the {guilabel}`Reporting` menu of apps identify patterns and trends. The view is often found under the {guilabel}`Reporting` menu of apps
but can be found elsewhere. Click the **graph view button** located at the top right to access but can be found elsewhere. Click the **graph view button** located at the top right to access
it. it.
@ -28,7 +28,7 @@ it.
### Pivot view ### Pivot view
The {ref}`pivot view <reporting/using-pivot>` is used to aggregate your records' data and break it The {ref}`pivot view <reporting-using-pivot>` is used to aggregate your records' data and break it
down for analysis. The view is often found under the {guilabel}`Reporting` menu of apps but can be down for analysis. The view is often found under the {guilabel}`Reporting` menu of apps but can be
found elsewhere. Click the **pivot view button** located at the top right to access it. found elsewhere. Click the **pivot view button** located at the top right to access it.
@ -46,14 +46,14 @@ edit it, click {guilabel}`Measures` and choose one or, only for pivots, multiple
:::{note} :::{note}
When you select a measure, Odoo aggregates the values recorded on that field for the filtered When you select a measure, Odoo aggregates the values recorded on that field for the filtered
records. Only numerical fields ({ref}`integer <studio/fields/simple-fields/integer>`, records. Only numerical fields ({ref}`integer <studio-fields-simple-fields-integer>`,
{ref}`decimal <studio/fields/simple-fields/decimal>`, {ref}`monetary {ref}`decimal <studio-fields-simple-fields-decimal>`, {ref}`monetary
<studio/fields/simple-fields/monetary>`) can be measured. In addition, the {guilabel}`Count` <studio-fields-simple-fields-monetary>`) can be measured. In addition, the {guilabel}`Count`
option is used to count the total number of filtered records. option is used to count the total number of filtered records.
::: :::
After choosing what you want to measure, you can define how the data should be {ref}`grouped After choosing what you want to measure, you can define how the data should be {ref}`grouped
<search/group>` depending on the dimension you want to analyze. By default, the data is often <search-group>` depending on the dimension you want to analyze. By default, the data is often
grouped by *Date > Month*, which is used to analyze the evolution of a measure over the months. grouped by *Date > Month*, which is used to analyze the evolution of a measure over the months.
:::{tip} :::{tip}

View File

@ -2,8 +2,8 @@
Odoo allows for the searching, filtering, and grouping of records in a view to display only the most Odoo allows for the searching, filtering, and grouping of records in a view to display only the most
relevant records. The search bar is located at the top of the view, start typing to {ref}`search for relevant records. The search bar is located at the top of the view, start typing to {ref}`search for
values <search/values>`, or click the {guilabel}`🔽 (down arrow)` icon to access the {ref}`Filter values <search-values>`, or click the {guilabel}`🔽 (down arrow)` icon to access the {ref}`Filter
<search/filters>`, {ref}`Group By <search/group>`, and {ref}`Favorites <search/favorites>` drop-down <search-filters>`, {ref}`Group By <search-group>`, and {ref}`Favorites <search-favorites>` drop-down
menus. menus.
(search-values)= (search-values)=
@ -15,7 +15,7 @@ to search for, and select the desired option from the drop-down menu to apply th
```{eval-rst} ```{eval-rst}
.. example:: .. example::
Instead of adding a :ref:`custom filter <search/custom-filters>` to select records where Instead of adding a :ref:`custom filter <search-custom-filters>` to select records where
*Mitchell Admin* is the salesperson on the *Sales Analysis* report (:menuselection:`Sales app --> *Mitchell Admin* is the salesperson on the *Sales Analysis* report (:menuselection:`Sales app -->
Reporting --> Sales`), search for `Mitch`, and click the :guilabel:`⏵ (right arrow)` next to Reporting --> Sales`), search for `Mitch`, and click the :guilabel:`⏵ (right arrow)` next to
:guilabel:`Search Salesperson for: Mitch`, and select :guilabel:`Mitchell Admin`. :guilabel:`Search Salesperson for: Mitch`, and select :guilabel:`Mitchell Admin`.
@ -27,7 +27,7 @@ to search for, and select the desired option from the drop-down menu to apply th
:::{note} :::{note}
Using the search field is equivalent to using the *contains* operator when adding a {ref}`custom Using the search field is equivalent to using the *contains* operator when adding a {ref}`custom
filter <search/custom-filters>`. If a partial value is entered, and the desired field is directly filter <search-custom-filters>`. If a partial value is entered, and the desired field is directly
selected (without selecting the {guilabel}`⏵ (right arrow)`), *all* records containing the typed selected (without selecting the {guilabel}`⏵ (right arrow)`), *all* records containing the typed
characters for the selected field are included. characters for the selected field are included.
::: :::
@ -38,7 +38,7 @@ characters for the selected field are included.
Filters are used to select records that meet specific criteria. The default selection of records is Filters are used to select records that meet specific criteria. The default selection of records is
specific to each view, but can be modified by selecting one (or several) {ref}`preconfigured filters specific to each view, but can be modified by selecting one (or several) {ref}`preconfigured filters
<search/preconfigured-filters>`, or by adding a {ref}`custom filter <search/custom-filters>`. <search-preconfigured-filters>`, or by adding a {ref}`custom filter <search-custom-filters>`.
(search-preconfigured-filters)= (search-preconfigured-filters)=
@ -77,7 +77,7 @@ applied conditions. However, selecting filters from different groups requires re
### Custom filters ### Custom filters
If the {ref}`preconfigured filters <search/preconfigured-filters>` are not specific enough, add a If the {ref}`preconfigured filters <search-preconfigured-filters>` are not specific enough, add a
custom filter. To do so, click the {guilabel}`🔽 (down arrow)` icon in the search bar, then select custom filter. To do so, click the {guilabel}`🔽 (down arrow)` icon in the search bar, then select
{menuselection}`Filters --> Add Custom Filter`. {menuselection}`Filters --> Add Custom Filter`.
@ -106,7 +106,7 @@ structure of a filter rule:
are nested within another field. These fields have an {guilabel}`> (arrow)` icon beside them, are nested within another field. These fields have an {guilabel}`> (arrow)` icon beside them,
which can be selected to reveal the nested fields. which can be selected to reveal the nested fields.
2. The second inline field is the conditional *operator* used to compare the field name to the 2. The second inline field is the conditional *operator* used to compare the field name to the
value. The {ref}`available conditional operators <reference/orm/domains>` are specific to the value. The {ref}`available conditional operators <reference-orm-domains>` are specific to the
field's data type. field's data type.
3. The third inline field is the variable *value* of the field name. The value input may appear as a 3. The third inline field is the variable *value* of the field name. The value input may appear as a
drop-down menu, a text input, a number input, a date/time input, a boolean selector, or it may be drop-down menu, a text input, a number input, a date/time input, a boolean selector, or it may be
@ -173,7 +173,7 @@ the {guilabel}`Group By` options from the drop-down menu.
.. example:: .. example::
To group the records by salesperson on the *Sales Analysis* report (:menuselection:`Sales app --> To group the records by salesperson on the *Sales Analysis* report (:menuselection:`Sales app -->
Reporting --> Sales`), click the :guilabel:`Salesperson` option from the :guilabel:`Group By` Reporting --> Sales`), click the :guilabel:`Salesperson` option from the :guilabel:`Group By`
drop-down menu. The view changes to group the records by salesperson, without filtering out any drop-down menu. The view changes to group the records by salesperson, without filtering out any
records. records.
.. image:: search/group.png .. image:: search/group.png

View File

@ -17,7 +17,7 @@ country's fiscal requirements.
Odoo should automatically install the required fiscal localization modules based on the company's Odoo should automatically install the required fiscal localization modules based on the company's
country when the related app is installed. Refer to the {ref}`list of countries country when the related app is installed. Refer to the {ref}`list of countries
<fiscal_localizations/countries-list>` to view the currently supported countries and access their <fiscal_localizations/countries-list>` to view the currently supported countries and access their
specific documentation. specific documentation.
:::{note} :::{note}
Each company in a multi-company environment can use different fiscal localization modules. Each company in a multi-company environment can use different fiscal localization modules.

View File

@ -9,21 +9,21 @@ substitutions:
```{toctree} ```{toctree}
:titlesonly: true :titlesonly: true
payment_providers/wire_transfer payment-providers-wire-transfer
payment_providers/adyen payment-providers-adyen
payment_providers/amazon_payment_services payment-providers-amazon-payment-services
payment_providers/asiapay payment-providers-asiapay
payment_providers/authorize payment-providers-authorize
payment_providers/buckaroo payment-providers-buckaroo
payment_providers/demo payment-providers-demo
payment_providers/flutterwave payment-providers-flutterwave
payment_providers/mercado_pago payment-providers-mercado-pago
payment_providers/mollie payment-providers-mollie
payment_providers/paypal payment-providers-paypal
payment_providers/razorpay payment-providers-razorpay
payment_providers/stripe payment-providers-stripe
payment_providers/worldline payment-providers-worldline
payment_providers/xendit payment-providers-xendit
``` ```
Odoo embeds several **payment providers** that allow your customers to pay online, on their Odoo embeds several **payment providers** that allow your customers to pay online, on their

51
fix-link.sh Executable file
View File

@ -0,0 +1,51 @@
#!/bin/bash
# Check if input file is provided
if [ $# -ne 1 ]; then
echo "Usage: $0 <input_file>"
exit 1
fi
input_file="$1"
# Check if file exists
if [ ! -f "$input_file" ]; then
echo "Error: File '$input_file' not found"
exit 1
fi
# Process each line of the input file
while IFS= read -r line || [ -n "$line" ]; do
# Skip empty lines
[ -z "$line" ] && continue
# Extract filepath (everything before first colon)
filepath=$(echo "$line" | cut -d: -f1)
# Extract status (WARNING)
status="WARNING"
# Split based on different patterns
if [[ "$line" =~ "WARNING: toctree contains reference to nonexisting document" ]]; then
description="toctree contains reference to nonexisting document"
data=$(echo "$line" | sed "s|^.*$description ||")
elif [[ "$line" =~ "WARNING: undefined label:" ]]; then
description="undefined label:"
data=$(echo "$line" | sed "s|^.*$description ||")
else
# For the first line with deprecated substitutions
description=$(echo "$line" | sed "s|^.*WARNING: ||" | sed "s| \[.*$||")
data=$(echo "$line" | grep -o "\[.*$" | tr -d '[]')
fi
# Replace /, \, and _ with - in data
modified_data=$(echo "$data" | tr '/\\_' '-')
# Print the results
echo "filepath = $filepath"
echo "status = $status"
echo "description = $description"
echo "data = $modified_data"
echo "-------------------"
done < "$input_file"