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}')
# Get all listening ports
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
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')
@ -64,17 +64,18 @@ clean:
html: $(HTML_BUILD_DIR)/_static/style.css
@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."
hot_reload: SPHINXOPTS += -A collapse_menu=True
hot_reload:
live: SPHINXOPTS += -A collapse_menu=True
live:
@echo "Starting Live Server..."
$(SPHINX_AUTO_BUILD) $(SOURCE_DIR) $(HTML_BUILD_DIR) \
--port 8000 --host $(SERVER_IP) \
--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'" \
$(SPHINXOPTS) -c $(CONFIG_DIR) -b html -q
$(SPHINXOPTS) -c $(CONFIG_DIR) -b 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
```
- {ref}`odoo_online/upgrade`
- {ref}`odoo_online/duplicate`
- {ref}`odoo_online/rename`
- {ref}`odoo_online/download`
- {ref}`odoo_online/domains`
- {ref}`odoo_online/tags`
- {ref}`odoo_online/delete`
- {ref}`odoo_online/contact-support`
- {ref}`odoo_online/users`
- {ref}`odoo-online-upgrade`
- {ref}`odoo-online-duplicate`
- {ref}`odoo-online-rename`
- {ref}`odoo-online-download`
- {ref}`odoo-online-domains`
- {ref}`odoo-online-tags`
- {ref}`odoo-online-delete`
- {ref}`odoo-online-contact-support`
- {ref}`odoo-online-users`
(odoo-online-upgrade)=

View File

@ -42,7 +42,7 @@ To resolve the issue:
:::{tip}
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
@ -81,7 +81,7 @@ To resolve the issue, either:
- **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.
- {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
after a few days, when the next verification occurs.

View File

@ -10,7 +10,7 @@ substitutions:
(activities-important)=
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-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
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/list>`, or {ref}`activities view <activities/activity>` of an application.
<activities-chatter>` thread, {ref}`Kanban view <activities-kanban>`, {ref}`list view
<activities-list>`, or {ref}`activities view <activities-activity>` of an application.
(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
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
: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.
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
: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.
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.
:::{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`
{guilabel}`(plus)` icon that appears, and then {ref}`fill out the Schedule Activity form
<activities/form>`.
<activities-form>`.
```{image} activities/activity-view.png
:align: center
@ -130,9 +130,9 @@ To schedule an activity for a record, hover over the corresponding field. Click
### Schedule Activity form
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:
the {ref}`Kanban view <activities/kanban>`, {ref}`list view <activities/list>`, or {ref}`activity
view <activities/activity>`.
<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
view <activities-activity>`.
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
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.
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
{guilabel}`Days`, {guilabel}`Weeks`, or {guilabel}`Months`.
- {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
are based on the tags configured for the selected {guilabel}`Workspace`.
- {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
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.
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
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.
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.
:::
- {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
{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`
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.

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
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
can be imported.
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
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.
:::{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
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
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:
- {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.
- {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
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}
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
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.
:::
@ -409,11 +409,11 @@ respective contacts:
### 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:
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`.
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.
@ -518,7 +518,7 @@ the companies, and then the people.
## Update data in Odoo
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

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
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}
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
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.

View File

@ -15,7 +15,7 @@ two generic views are dedicated to reporting: the graph and pivot views.
### 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
but can be found elsewhere. Click the **graph view button** located at the top right to access
it.
@ -28,7 +28,7 @@ it.
### 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
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}
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>`,
{ref}`decimal <studio/fields/simple-fields/decimal>`, {ref}`monetary
<studio/fields/simple-fields/monetary>`) can be measured. In addition, the {guilabel}`Count`
records. Only numerical fields ({ref}`integer <studio-fields-simple-fields-integer>`,
{ref}`decimal <studio-fields-simple-fields-decimal>`, {ref}`monetary
<studio-fields-simple-fields-monetary>`) can be measured. In addition, the {guilabel}`Count`
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
<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.
:::{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
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
<search/filters>`, {ref}`Group By <search/group>`, and {ref}`Favorites <search/favorites>` drop-down
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
menus.
(search-values)=
@ -15,7 +15,7 @@ to search for, and select the desired option from the drop-down menu to apply th
```{eval-rst}
.. 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 -->
Reporting --> Sales`), search for `Mitch`, and click the :guilabel:`⏵ (right arrow)` next to
: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}
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
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
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)=
@ -77,7 +77,7 @@ applied conditions. However, selecting filters from different groups requires re
### 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
{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,
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
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.
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

View File

@ -9,21 +9,21 @@ substitutions:
```{toctree}
:titlesonly: true
payment_providers/wire_transfer
payment_providers/adyen
payment_providers/amazon_payment_services
payment_providers/asiapay
payment_providers/authorize
payment_providers/buckaroo
payment_providers/demo
payment_providers/flutterwave
payment_providers/mercado_pago
payment_providers/mollie
payment_providers/paypal
payment_providers/razorpay
payment_providers/stripe
payment_providers/worldline
payment_providers/xendit
payment-providers-wire-transfer
payment-providers-adyen
payment-providers-amazon-payment-services
payment-providers-asiapay
payment-providers-authorize
payment-providers-buckaroo
payment-providers-demo
payment-providers-flutterwave
payment-providers-mercado-pago
payment-providers-mollie
payment-providers-paypal
payment-providers-razorpay
payment-providers-stripe
payment-providers-worldline
payment-providers-xendit
```
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"