Compare commits
69 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f0548c755b | |||
| 07122aa8a8 | |||
| 9490048209 | |||
| c31d61cb5b | |||
| 085613f63e | |||
| 0292755fe1 | |||
| 6d7d9aacb7 | |||
| 71b426177a | |||
| b29eae5102 | |||
| 3218baee71 | |||
| 08a3f15732 | |||
| d458c753b5 | |||
| 740cf75f94 | |||
| 6395455f0b | |||
| 381ae7793b | |||
| 7d8368e553 | |||
| 07ef80ec47 | |||
| 973c9a1f5a | |||
| d7b4114728 | |||
| 2e661006e5 | |||
| 7c2a16b28d | |||
| 44b4138a45 | |||
| 7b6f0d9226 | |||
| 24bf905cd9 | |||
| f3d2381bf4 | |||
| 117aae0771 | |||
| 9c4d9b35dc | |||
| bd5fdcfbb4 | |||
| 8b7c7f4b6e | |||
| eed7e42a14 | |||
| 11cc952979 | |||
| 9049311711 | |||
| 51369b1001 | |||
| 1e551ebb73 | |||
| 9dfef5e151 | |||
| 4a927f0d46 | |||
| 9b3e9a3c8e | |||
| 987a40cb29 | |||
| e6ffeb0da4 | |||
| cfd0fbe6b0 | |||
| dfa899e959 | |||
| 76d6a9a84e | |||
| 343d8cafb4 | |||
| 72ccbd43d7 | |||
| 4caa891ad8 | |||
| dcb48c3dc4 | |||
| 8b7be69be6 | |||
| 81f28e0793 | |||
| f1a607a9c7 | |||
| 9368181d04 | |||
| d87271002b | |||
| 783ab8f2c0 | |||
| da0360cdd5 | |||
| e17d6d7689 | |||
| e174fa9e3e | |||
| 3d2422b3bd | |||
| d7eb8f014b | |||
| 9a2921ba52 | |||
| c42963cda9 | |||
| 38ce2431e5 | |||
| 5c43477540 | |||
| e56cfe5e48 | |||
| 5627bea8aa | |||
| 3f048e7997 | |||
| a13bf9b24f | |||
| 615d282910 | |||
| f820f189a2 | |||
| 1d17ceda3c | |||
| 4b5b008063 |
@@ -1,7 +1,7 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:administration]
|
||||
[o:odoo:p:odoo-18-doc:r:administration]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/administration.po
|
||||
source_file = locale/sources/administration.pot
|
||||
type = POT
|
||||
@@ -11,7 +11,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:applications]
|
||||
[o:odoo:p:odoo-18-doc:r:applications]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/applications.po
|
||||
source_file = locale/sources/applications.pot
|
||||
type = POT
|
||||
@@ -21,7 +21,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:essentials]
|
||||
[o:odoo:p:odoo-18-doc:r:essentials]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
|
||||
source_file = locale/sources/essentials.pot
|
||||
type = POT
|
||||
@@ -31,7 +31,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:finance]
|
||||
[o:odoo:p:odoo-18-doc:r:finance]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/finance.po
|
||||
source_file = locale/sources/finance.pot
|
||||
type = POT
|
||||
@@ -41,7 +41,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:general]
|
||||
[o:odoo:p:odoo-18-doc:r:general]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/general.po
|
||||
source_file = locale/sources/general.pot
|
||||
type = POT
|
||||
@@ -51,7 +51,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:hr]
|
||||
[o:odoo:p:odoo-18-doc:r:hr]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/hr.po
|
||||
source_file = locale/sources/hr.pot
|
||||
type = POT
|
||||
@@ -61,7 +61,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:index]
|
||||
[o:odoo:p:odoo-18-doc:r:index]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/index.po
|
||||
source_file = locale/sources/index.pot
|
||||
type = POT
|
||||
@@ -71,7 +71,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:inventory_and_mrp]
|
||||
[o:odoo:p:odoo-18-doc:r:inventory_and_mrp]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
|
||||
source_file = locale/sources/inventory_and_mrp.pot
|
||||
type = POT
|
||||
@@ -81,7 +81,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:marketing]
|
||||
[o:odoo:p:odoo-18-doc:r:marketing]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
|
||||
source_file = locale/sources/marketing.pot
|
||||
type = POT
|
||||
@@ -91,7 +91,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:productivity]
|
||||
[o:odoo:p:odoo-18-doc:r:productivity]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
|
||||
source_file = locale/sources/productivity.pot
|
||||
type = POT
|
||||
@@ -101,7 +101,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:sales]
|
||||
[o:odoo:p:odoo-18-doc:r:sales]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/sales.po
|
||||
source_file = locale/sources/sales.pot
|
||||
type = POT
|
||||
@@ -111,7 +111,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:services]
|
||||
[o:odoo:p:odoo-18-doc:r:services]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/services.po
|
||||
source_file = locale/sources/services.pot
|
||||
type = POT
|
||||
@@ -121,7 +121,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:user_settings]
|
||||
[o:odoo:p:odoo-18-doc:r:user_settings]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/settings.po
|
||||
source_file = locale/sources/settings.pot
|
||||
type = POT
|
||||
@@ -131,7 +131,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:studio]
|
||||
[o:odoo:p:odoo-18-doc:r:studio]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/studio.po
|
||||
source_file = locale/sources/studio.pot
|
||||
type = POT
|
||||
@@ -141,7 +141,7 @@ replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:websites]
|
||||
[o:odoo:p:odoo-18-doc:r:websites]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/websites.po
|
||||
source_file = locale/sources/websites.pot
|
||||
type = POT
|
||||
|
||||
@@ -231,18 +231,12 @@ sphinx.transforms.i18n.docname_to_domain = (
|
||||
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
||||
versions_names = {
|
||||
'master': "Master",
|
||||
'18.0': "Odoo 18",
|
||||
'saas-17.4': "Odoo Online",
|
||||
'saas-17.2': "Odoo Online",
|
||||
'saas-17.1': "Odoo Online",
|
||||
'17.0': "Odoo 17",
|
||||
'saas-16.4': "Odoo Online",
|
||||
'saas-16.3': "Odoo Online",
|
||||
'saas-16.2': "Odoo Online",
|
||||
'saas-16.1': "Odoo Online",
|
||||
'16.0': "Odoo 16",
|
||||
'saas-15.2': "Odoo Online",
|
||||
'15.0': "Odoo 15",
|
||||
'14.0': "Odoo 14",
|
||||
}
|
||||
|
||||
# The language names that should be shown in the language switcher, if the config option `languages`
|
||||
@@ -251,7 +245,9 @@ languages_names = {
|
||||
'de': 'DE',
|
||||
'en': 'EN',
|
||||
'es': 'ES',
|
||||
'es_419': 'ES (LATAM)',
|
||||
'fr': 'FR',
|
||||
'id': 'ID',
|
||||
'it': 'IT',
|
||||
'ja': 'JA',
|
||||
'ko': 'KR',
|
||||
@@ -261,6 +257,7 @@ languages_names = {
|
||||
'sv': 'SV',
|
||||
'th': 'TH',
|
||||
'uk': 'UA',
|
||||
'vi': 'VI',
|
||||
'zh_CN': 'ZH (CN)',
|
||||
'zh_TW': 'ZH (TW)'
|
||||
}
|
||||
|
||||
@@ -217,6 +217,26 @@ Production and staging builds are excluded, visitors can only see their status.
|
||||
|
||||
.. _odoosh-gettingstarted-settings-modules-installation:
|
||||
|
||||
GitHub commit statuses
|
||||
======================
|
||||
|
||||
This option enables Odoo.sh to push commit statuses to your GitHub repository when a build is
|
||||
created or updated. It requires a GitHub token with permissions to push commit statuses to the
|
||||
repository. Refer to `GitHub's documentation on personal access tokens <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens>`_
|
||||
for instructions to create yours.
|
||||
|
||||
.. note::
|
||||
GitHub's **fine-grained personal tokens** have an expiration date and will be disabled if they
|
||||
fail to update the commit status. You can replace the token at any time on Odoo.sh.
|
||||
|
||||
The commit statuses pushed to GitHub can have the following contexts:
|
||||
|
||||
- :guilabel:`ci/odoo.sh (dev)`: status of a development build
|
||||
- :guilabel:`ci/odoo.sh (staging)`: status of a staging build
|
||||
- :guilabel:`ci/odoo.sh (production)`: status of a production build
|
||||
- :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
|
||||
|
||||
Custom domains
|
||||
==============
|
||||
|
||||
|
||||
@@ -61,8 +61,8 @@ To resolve the issue:
|
||||
your **network and firewall settings** allow the Odoo server to open outgoing connections
|
||||
towards:
|
||||
|
||||
- `services.odoo.com` on port `443` (or `80`)
|
||||
- for older deployments, `services.openerp.com` on port `443` (or `80`)
|
||||
- Odoo 18.0 and above: `services.odoo.com` on port `443` (or `80`)
|
||||
- Odoo 17.0 and below: `services.openerp.com` on port `443` (or `80`)
|
||||
|
||||
These ports must be kept open even after registering a database, as the update notification runs
|
||||
once a week.
|
||||
|
||||
@@ -31,24 +31,24 @@ This matrix shows the support status of every version.
|
||||
- On-Premise
|
||||
- Release date
|
||||
- End of support
|
||||
* - Odoo saas~17.4
|
||||
* - **Odoo 18.0**
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
- October 2024
|
||||
- October 2027 (planned)
|
||||
* - Odoo SaaS 17.4
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- July 2024
|
||||
-
|
||||
* - Odoo saas~17.2
|
||||
* - Odoo SaaS 17.2
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- April 2024
|
||||
-
|
||||
* - Odoo saas~17.1
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- January 2024
|
||||
-
|
||||
* - **Odoo 17.0**
|
||||
- |green|
|
||||
- |green|
|
||||
@@ -60,31 +60,25 @@ This matrix shows the support status of every version.
|
||||
- |green|
|
||||
- |green|
|
||||
- October 2022
|
||||
- November 2025 (planned)
|
||||
- October 2025 (planned)
|
||||
* - **Odoo 15.0**
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
- |red|
|
||||
- |red|
|
||||
- |red|
|
||||
- October 2021
|
||||
- November 2024 (planned)
|
||||
- October 2024
|
||||
* - **Odoo 14.0**
|
||||
- |red|
|
||||
- |red|
|
||||
- |red|
|
||||
- October 2020
|
||||
- November 2023
|
||||
* - **Odoo 13.0**
|
||||
- |red|
|
||||
- |red|
|
||||
- |red|
|
||||
- October 2019
|
||||
- October 2022
|
||||
* - Older versions
|
||||
- |red|
|
||||
- |red|
|
||||
- |red|
|
||||
- Before 2019
|
||||
- Before 2022
|
||||
- Before 2020
|
||||
- Before 2023
|
||||
|
||||
.. admonition:: Legend
|
||||
|
||||
|
||||
@@ -430,10 +430,8 @@ Upgrade services not covered by the SLA
|
||||
The following upgrade-related services are **not** included:
|
||||
|
||||
- the **cleaning** of pre-existing data and configurations while upgrading;
|
||||
- the upgrade of **custom modules created in-house or by third parties**, including Odoo partners;
|
||||
- lines of **code added to standard modules**, i.e., customizations created outside the Studio app,
|
||||
code entered manually, and :ref:`automated actions using Python code
|
||||
<studio/automated-actions/action>`; and
|
||||
- the upgrade of **additional modules not covered by a maintenance contract** that are created
|
||||
in-house or by third parties, including Odoo partners; and
|
||||
- **training** on using the upgraded version's features and workflows.
|
||||
|
||||
.. seealso::
|
||||
|
||||
@@ -10,3 +10,4 @@ Odoo essentials
|
||||
essentials/contacts
|
||||
essentials/export_import_data
|
||||
essentials/in_app_purchase
|
||||
essentials/keyboard_shortcuts
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
Contacts
|
||||
========
|
||||
|
||||
The *Contacts* application comes installed on all Odoo databases. Contacts are created for customers
|
||||
the company does business with through Odoo. A contact is a repository of vital business
|
||||
information, facilitating communication and business transactions.
|
||||
Contacts are created in the **Contacts** application for customers the company does business with
|
||||
through Odoo. A contact is a repository of vital business information, facilitating communication
|
||||
and business transactions.
|
||||
|
||||
Contact form
|
||||
============
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
==================
|
||||
Keyboard shortcuts
|
||||
==================
|
||||
|
||||
Users in Odoo can utilize several keyboard shortcuts to navigate through modules, execute actions,
|
||||
and manage data.
|
||||
|
||||
.. tip::
|
||||
Hold :kbd:`Ctrl` to view the keyboard shortcuts assigned to each element on the interface.
|
||||
|
||||
.. image:: keyboard_shortcuts/menu-shortcuts.png
|
||||
:align: center
|
||||
:alt: A selection of keyboard shortcuts in Odoo.
|
||||
|
||||
.. important::
|
||||
Some keyboard shortcuts may not be available on different versions of Odoo or effective depending
|
||||
on browsers, extensions, or other individual settings.
|
||||
|
||||
Keyboard shortcuts by operating system
|
||||
======================================
|
||||
|
||||
Below is a list of some of the most commonly used keyboard shortcuts within Odoo, listed by
|
||||
operating system.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Description
|
||||
- Windows / Linux
|
||||
- macOS
|
||||
* - Previous breadcrumb
|
||||
- :kbd:`Alt` + :kbd:`B`
|
||||
- :kbd:`Ctrl` + :kbd:`B`
|
||||
* - Create new record
|
||||
- :kbd:`Alt` + :kbd:`C`
|
||||
- :kbd:`Ctrl` + :kbd:`C`
|
||||
* - Odoo Home Page
|
||||
- :kbd:`Alt` + :kbd:`H`
|
||||
- :kbd:`Ctrl` + :kbd:`H`
|
||||
* - Discard changes
|
||||
- :kbd:`Alt` + :kbd:`J`
|
||||
- :kbd:`Ctrl` + :kbd:`J`
|
||||
* - Save changes
|
||||
- :kbd:`Alt` + :kbd:`S`
|
||||
- :kbd:`Ctrl` + :kbd:`S`
|
||||
* - Next page
|
||||
- :kbd:`Alt` + :kbd:`N`
|
||||
- :kbd:`Ctrl` + :kbd:`N`
|
||||
* - Previous page
|
||||
- :kbd:`Alt` + :kbd:`P`
|
||||
- :kbd:`Ctrl` + :kbd:`P`
|
||||
* - Search
|
||||
- :kbd:`Alt` + :kbd:`Q`
|
||||
- :kbd:`Ctrl` + :kbd:`Q`
|
||||
* - Select menus
|
||||
- :kbd:`Alt` + :kbd:`1-9`
|
||||
- :kbd:`Ctrl` + :kbd:`1-9`
|
||||
* - Create a new To-Do
|
||||
- :kbd:`Alt` + :kbd:`Shift` + :kbd:`T`
|
||||
- :kbd:`Ctrl` + :kbd:`Shift` + :kbd:`T`
|
||||
* - Search a Knowledge article
|
||||
- :kbd:`Alt` + :kbd:`F`
|
||||
- :kbd:`Ctrl` + :kbd:`F`
|
||||
* - Share a Knowledge article
|
||||
- :kbd:`Alt` + :kbd:`Shift` + :kbd:`S`
|
||||
- :kbd:`Ctrl` + :kbd:`Shift` + :kbd:`S`
|
||||
* - Open command palette
|
||||
- :kbd:`Ctrl` + :kbd:`K`
|
||||
- :kbd:`Command` + :kbd:`K`
|
||||
|
||||
.. tip::
|
||||
After opening the command palette, search using the following keyboard shortcuts:
|
||||
|
||||
- :kbd:`/`: search for menus, applications, and modules.
|
||||
- :kbd:`@`: search for users.
|
||||
- :kbd:`#`: search for **Discuss** channels.
|
||||
- :kbd:`?`: search for **Knowledge** articles.
|
||||
|
||||
Enter a name (or term) in the search bar, or use the arrow keys to scroll through the available
|
||||
options. Then, click :kbd:`Ctrl` + :kbd:`Enter` to open the selected app, module, or menu in a
|
||||
new tab.
|
||||
|
||||
.. image:: keyboard_shortcuts/command-palete.png
|
||||
:align: center
|
||||
:alt: The command palette in Odoo, with the menu search option selected.
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
@@ -193,3 +193,4 @@ Payments` tab. To display the outstanding accounts column, click on the toggle b
|
||||
bank/reconciliation
|
||||
bank/reconciliation_models
|
||||
bank/foreign_currency
|
||||
bank/loans
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
================
|
||||
Loans management
|
||||
================
|
||||
|
||||
Odoo's loan management gives a comprehensive list of all loans undertaken by your company in order
|
||||
to maintain a holistic and forecasted view of upcoming due dates (e.g., cash forecast). Set up
|
||||
amortization schedules—or import them—and let Odoo automatically handle monthly interest and
|
||||
principal adjustments so that your financial reports are always accurate with minimal effort.
|
||||
|
||||
Create a new loan
|
||||
-----------------
|
||||
|
||||
Create a new loan by going to :menuselection:`Accounting --> Accounting --> Loans`. When creating a
|
||||
new loan, there are three options for how to create amortization schedules:
|
||||
|
||||
- importing it from a supported file;
|
||||
- calculating it from multiple input values (e.g., the :guilabel:`Amount Borrowed`, the
|
||||
:guilabel:`Duration`, etc.) using the :guilabel:`Compute` button;
|
||||
- manually filling in the lines of the schedule.
|
||||
|
||||
In each case, three different fields are required for each line of the amortization schedule: the
|
||||
:guilabel:`Date`, the :guilabel:`Principal`, and the :guilabel:`Interest`.
|
||||
|
||||
The :guilabel:`Amount Borrowed`, :guilabel:`Interest`, and :guilabel:`Duration` fields will be red
|
||||
if the sum of the lines does not match the total of the amortization schedule lines.
|
||||
|
||||
Loan entries mechanism
|
||||
----------------------
|
||||
|
||||
When the amount borrowed is credited to a bank account, it should be transferred to a long-term
|
||||
account (defined in the :guilabel:`Loan Settings` tab). Then, upon the validation of the loan, Odoo
|
||||
creates the necessary journal entries so that there is always a holistic and forecasted view of
|
||||
upcoming due dates. The entire process is completely automated with a long-term and short-term
|
||||
principal reclassification mechanism.
|
||||
|
||||
For each line of the amortization schedule, Odoo creates the following entries:
|
||||
|
||||
A payment entry on the same date that
|
||||
- debits the principal amount to the long-term account;
|
||||
- debits the interest amount to the expense account;
|
||||
- credits the payment amount to the short-term account: this is the amount that will be
|
||||
withdrawn by the bank.
|
||||
|
||||
A reclassification entry on the same date that
|
||||
- debits the sum of the principal amounts of the next 12 months to the long-term account;
|
||||
- credits the sum of the principal amounts of the next 12 months to the short-term account.
|
||||
|
||||
A reversed entry of the reclassification entry on *the next day* that simply reverses the previous
|
||||
one.
|
||||
|
||||
With this mechanism, month after month, the short-term account is always up to date with the
|
||||
current short-term due amounts.
|
||||
|
||||
Closing a loan
|
||||
--------------
|
||||
|
||||
By default, a loan will be closed whenever its last payment entry is posted. However, it can also
|
||||
be manually closed (e.g., because it is being paid off early) by clicking on the :guilabel:`Close`
|
||||
button. A wizard will appear asking from which date the loan should be closed. All draft entries
|
||||
after this date will be deleted too.
|
||||
|
||||
A loan can also be cancelled. In that case, all entries will be deleted even if they were already
|
||||
posted.
|
||||
|
||||
Loans Analysis Report
|
||||
---------------------
|
||||
|
||||
By going to :menuselection:`Accounting --> Reporting --> Loans Analysis`, you can access a
|
||||
report with a pivot view of your ongoing loans. By default, the report shows the principal,
|
||||
interest, and total payment for each year for the loan duration.
|
||||
@@ -33,19 +33,28 @@ Make sure the default settings are correctly configured for your business. To do
|
||||
|
||||
Journal
|
||||
The deferral entries are posted in this journal.
|
||||
Deferred Expense Account
|
||||
Expenses are deferred on this Current Asset account until they are recognized.
|
||||
Deferred Revenue Account
|
||||
Deferred Revenue
|
||||
Revenues are deferred on this Current Liability account until they are recognized.
|
||||
Generate Entries
|
||||
By default, Odoo :ref:`automatically generates <customer_invoices/deferred/generate_on_validation>`
|
||||
the deferral entries when you post a customer invoice. However, you can also choose to
|
||||
:ref:`generate them manually <customer_invoices/deferred/generate_manually>` by selecting the
|
||||
:guilabel:`Manually & Grouped` option instead.
|
||||
Amount Computation
|
||||
Suppose an invoice of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
|
||||
computation accounts for $100 each month, while the :guilabel:`Based on days` computation
|
||||
accounts for different amounts depending on the number of days in each month.
|
||||
Based on
|
||||
Suppose an invoice of $1200 must be deferred over 12 months.
|
||||
|
||||
- The :guilabel:`Months` option accounts for $100 each month prorated to the number of days in
|
||||
that month (e.g., $50 for the first month if the :guilabel:`Start Date` is set to the 15th of
|
||||
the month).
|
||||
|
||||
- The :guilabel:`Full Months` option considers each month started to be full (e.g., $100 for the
|
||||
first month even if the :guilabel:`Start Date` is set to the 15th of the month); this means that
|
||||
with the :guilabel:`Full Months` option, a full $100 is recognized in the first partial month,
|
||||
eliminating the need for a 13th month to recognize any remainder as would be the case when using
|
||||
the :guilabel:`Months` option.
|
||||
|
||||
- The :guilabel:`Days` option accounts for different amounts depending on the number of days in
|
||||
each month (e.g., ~$102 for January and ~$92 for February).
|
||||
|
||||
.. _customer_invoices/deferred/generate_on_validation:
|
||||
|
||||
|
||||
@@ -69,8 +69,9 @@ When new products arrive, the new average cost for each product is recomputed us
|
||||
- **Incoming Qty**: count of products arriving in the new shipment;
|
||||
- **Purchase Price**: estimated price of products at the reception of products (since vendor bills
|
||||
may arrive later). The amount includes not only the price for the products, but also added costs,
|
||||
such as shipping, taxes, and :ref:`landed costs <inventory/reporting/landed_costs>`. At reception
|
||||
of the vendor bill, this price is adjusted;
|
||||
such as shipping, taxes, and :doc:`landed costs
|
||||
<../../../inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs>`. At
|
||||
reception of the vendor bill, this price is adjusted;
|
||||
- **Final Qty**: quantity of on-hand stock after the stock move.
|
||||
|
||||
.. _inventory/avg_cost/definite_rule:
|
||||
|
||||
@@ -7,20 +7,20 @@ Payments
|
||||
In Odoo, payments can either be automatically linked to an invoice or bill or be stand-alone records
|
||||
for use at a later date:
|
||||
|
||||
- If a payment is **linked to an invoice or bill**, it reduces/settles the amount due of the
|
||||
invoice. You can have multiple payments related to the same invoice.
|
||||
- If a payment is **linked to an invoice or bill**, it reduces/settles the amount due on the
|
||||
invoice. Multiple payments on the same invoice are possible.
|
||||
|
||||
- If a payment is **not linked to an invoice or bill**, the customer has an outstanding credit with
|
||||
your company, or your company has an outstanding debit with a vendor. You can use those
|
||||
outstanding amounts to reduce/settle unpaid invoices/bills.
|
||||
the company, or the company has an outstanding debit with a vendor. Those outstanding amounts
|
||||
reduce/settle unpaid invoices/bills.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Internal transfers <payments/internal_transfers>`
|
||||
- :doc:`bank/reconciliation`
|
||||
- `Odoo Tutorials: Bank Configuration
|
||||
<https://www.odoo.com/slides/slide/bank-configuration-1880>`_
|
||||
<https://www.odoo.com/slides/slide/bank-configuration-6832>`_
|
||||
|
||||
.. _payments/register:
|
||||
.. _accounting/payments/from-invoice-bill:
|
||||
|
||||
Registering payment from an invoice or bill
|
||||
===========================================
|
||||
@@ -29,11 +29,12 @@ When clicking :guilabel:`Register payment` in a customer invoice or vendor bill,
|
||||
journal entry and changes the amount due according to the payment amount. The counterpart is
|
||||
reflected in an :ref:`outstanding <bank/outstanding-accounts>` **receipts** or **payments** account.
|
||||
At this point, the customer invoice or vendor bill is marked as :guilabel:`In payment`. Then, when
|
||||
the outstanding account is reconciled with a bank statement line, the invoice or vendor bill changes
|
||||
to the :guilabel:`Paid` status.
|
||||
the outstanding account is reconciled with a bank transaction line, the invoice or vendor bill
|
||||
changes to the :guilabel:`Paid` status.
|
||||
|
||||
The information icon near the payment line displays more information about the payment. You can
|
||||
access additional information, such as the related journal, by clicking :guilabel:`View`.
|
||||
The :icon:`fa-info-circle` information icon next to the payment line displays more
|
||||
information about the payment. To access additional information, such as the related journal, click
|
||||
:guilabel:`View`.
|
||||
|
||||
.. image:: payments/information-icon.png
|
||||
:alt: See detailed information of a payment.
|
||||
@@ -41,65 +42,89 @@ access additional information, such as the related journal, by clicking :guilabe
|
||||
.. note::
|
||||
- The customer invoice or vendor bill must be in the :guilabel:`Posted` status to register the
|
||||
payment.
|
||||
- If you unreconcile a payment, it still appears in your books but is no longer linked to the
|
||||
- If a payment is unreconciled, it still appears in the books but is no longer linked to the
|
||||
invoice.
|
||||
- If you (un)reconcile a payment in a different currency, a journal entry is automatically
|
||||
- If a payment is (un)reconciled in a different currency, a journal entry is automatically
|
||||
created to post the currency exchange gains/losses (reversal) amount.
|
||||
- If you (un)reconcile a payment and an invoice having cash basis taxes, a journal entry is
|
||||
automatically created to post the cash basis tax (reversal) amount.
|
||||
- If a payment is (un)reconciled and an invoice with cash-basis taxes, a journal entry is
|
||||
automatically created to post the cash-basis tax (reversal) amount.
|
||||
|
||||
.. tip::
|
||||
- If your main bank account is set as an :ref:`outstanding account
|
||||
<bank/outstanding-accounts>`, and the payment is registered in Odoo (not through a related
|
||||
bank statement), invoices and bills are directly registered as :guilabel:`Paid`.
|
||||
If the main bank account is set as an :ref:`outstanding account
|
||||
<bank/outstanding-accounts>`, and the payment is registered in Odoo (not through a related
|
||||
bank transaction), invoices and bills are directly registered as :guilabel:`Paid`.
|
||||
|
||||
.. _accounting/payments/not-tied:
|
||||
|
||||
Registering payments not tied to an invoice or bill
|
||||
===================================================
|
||||
|
||||
When a new payment is registered via :menuselection:`Customers / Vendors --> Payments` menu, it is
|
||||
not directly linked to an invoice or bill. Instead, the account receivable or the account payable is
|
||||
When a new payment is registered via :menuselection:`Customers / Vendors --> Payments`, it is not
|
||||
directly linked to an invoice or bill. Instead, the account receivable or the account payable is
|
||||
matched with the **outstanding account** until it is manually matched with its related invoice or
|
||||
bill.
|
||||
|
||||
.. _accounting/payments/matching-invoices-bills:
|
||||
|
||||
Matching invoices and bills with payments
|
||||
-----------------------------------------
|
||||
|
||||
A blue banner appears when you validate a new invoice/bill and an **outstanding payment** exists for
|
||||
this specific customer or vendor. It can easily be matched from the invoice or bill by clicking
|
||||
:guilabel:`ADD` under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
|
||||
A blue banner appears when validating a new invoice/bill and an **outstanding payment** exists for
|
||||
this specific customer or vendor. To match it with the invoice or bill, click :guilabel:`ADD`
|
||||
under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
|
||||
|
||||
.. image:: payments/add-option.png
|
||||
:alt: Shows the ADD option to reconcile an invoice or a bill with a payment.
|
||||
|
||||
The invoice or bill is now marked as :guilabel:`In payment` until it is reconciled with its
|
||||
corresponding bank statement.
|
||||
corresponding bank transaction.
|
||||
|
||||
.. _payments/batch-payments:
|
||||
.. _accounting/payments/group-payments:
|
||||
|
||||
Batch payment
|
||||
-------------
|
||||
Group payments
|
||||
--------------
|
||||
|
||||
Batch payments allow you to group different payments to ease :doc:`reconciliation
|
||||
<bank/reconciliation>`. They are also useful when you deposit :doc:`checks <payments/checks>` to the
|
||||
bank or for :doc:`SEPA payments <payments/pay_sepa>`. To do so, go to :menuselection:`Accounting -->
|
||||
Customers --> Batch Payments` or :menuselection:`Accounting --> Vendors --> Batch Payments`. In the
|
||||
list view of payments, you can select and group several payments in a batch by clicking
|
||||
:menuselection:`Action --> Create Batch Payment`.
|
||||
Group payments allow combining outgoing and incoming payments from the same contact into a single
|
||||
payment to simplify the process and improve payment usability. To register a group payment:
|
||||
|
||||
#. Go to :menuselection:`Accounting --> Customers --> Invoices/Credit Notes` or
|
||||
:menuselection:`Accounting --> Vendors --> Bills/Refunds`.
|
||||
#. Select the relevant invoices/credit notes or bills/refunds linked to a specific contact.
|
||||
#. Click the :icon:`fa-cog` (:guilabel:`Action menu`) icon and select :guilabel:`Register Payment`.
|
||||
#. In the :guilabel:`Register Payment` window, select the :guilabel:`Journal`, the
|
||||
:guilabel:`Payment Method`, and the :guilabel:`Payment Date`.
|
||||
#. Enable the :guilabel:`Group Payments` option and click :guilabel:`Create payment`.
|
||||
|
||||
The invoices or bills are now marked as :guilabel:`In payment` until they are reconciled with the
|
||||
corresponding bank transactions. The credit notes or refunds are marked as :guilabel:`Paid`.
|
||||
|
||||
.. _accounting/payments/batch-payments:
|
||||
|
||||
Batch payments
|
||||
--------------
|
||||
|
||||
Batch payments allow grouping payments from multiple contacts to ease
|
||||
:doc:`reconciliation <bank/reconciliation>`. They are also useful when depositing :doc:`checks
|
||||
<payments/checks>` to the bank or for :doc:`SEPA payments <payments/pay_sepa>`. To do so, go to
|
||||
:menuselection:`Accounting --> Customers --> Batch Payments` or :menuselection:`Accounting -->
|
||||
Vendors --> Batch Payments`. In the list view of payments, to group several payments in a
|
||||
batch, select them and click :menuselection:`Action --> Create Batch Payment`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`payments/batch`
|
||||
- :doc:`payments/batch_sdd`
|
||||
|
||||
.. _payments/matching:
|
||||
.. _accounting/payments/matching:
|
||||
|
||||
Payments matching
|
||||
-----------------
|
||||
|
||||
The :guilabel:`Payments matching` tool opens all unreconciled customer invoices or vendor bills and
|
||||
allows you to process them individually, matching all payments and invoices in one place. You can
|
||||
reach this tool from the :menuselection:`Accounting Dashboard --> Customer Invoices / Vendor Bills`,
|
||||
click the drop-down menu button (:guilabel:`⋮`), and select :guilabel:`Payments Matching`, or go to
|
||||
:menuselection:`Accounting --> Accounting --> Reconciliation`.
|
||||
allows them to be processed individually, matching all payments and invoices in one place. Go to the
|
||||
:guilabel:`Accounting Dashboard`, click the :icon:`fa-ellipsis-v` (:guilabel:`dropdown menu`)
|
||||
button from the :guilabel:`Customer Invoices` or :guilabel:`Vendor Bills` journals, and select
|
||||
:guilabel:`Payments Matching`, or go to :menuselection:`Accounting --> Accounting -->
|
||||
Reconciliation`.
|
||||
|
||||
.. image:: payments/payments-journal.png
|
||||
:alt: Payments matching menu in the drop-down menu.
|
||||
@@ -107,39 +132,49 @@ click the drop-down menu button (:guilabel:`⋮`), and select :guilabel:`Payment
|
||||
.. note::
|
||||
During the :doc:`reconciliation <bank/reconciliation>`, if the sum of the debits and credits does
|
||||
not match, there is a remaining balance. This either needs to be reconciled at a later date or
|
||||
needs to be written off directly.
|
||||
written off directly.
|
||||
|
||||
.. _accounting/payments/batch-payments-matching:
|
||||
|
||||
Batch payments matching
|
||||
-----------------------
|
||||
|
||||
You can use the **batch reconciliation feature** to reconcile several outstanding payments or
|
||||
invoices simultaneously for a specific customer or vendor. Go to your **Accounting Dashboard** and
|
||||
open your **bank journal**. In the **bank reconciliation** view, select a **transaction**, and click
|
||||
the :guilabel:`Batch Payments` tab. From here, you can reconcile your
|
||||
:doc:`batch payments <payments/batch>` with your outstanding payments or invoices.
|
||||
Use the batch reconciliation feature to reconcile several outstanding payments or invoices
|
||||
simultaneously for a specific customer or vendor. Go to :menuselection:`Accounting --> Reporting -->
|
||||
Aged Receivable / Aged Payable`. All transactions that have not yet been reconciled for that
|
||||
contact are visible, and when a customer or vendor is selected, the :guilabel:`Reconcile` option is
|
||||
displayed.
|
||||
|
||||
.. image:: payments/reconcile-option.png
|
||||
:alt: The batch payment reconcile option.
|
||||
|
||||
.. _accounting/payments/partial-payment:
|
||||
|
||||
Registering a partial payment
|
||||
=============================
|
||||
|
||||
To register a **partial payment**, click :guilabel:`Register payment` from the related invoice or
|
||||
bill, and enter the amount received or paid. Upon entering the amount, a prompt appears to decide
|
||||
whether to :guilabel:`Keep open` the invoice or bill, or :guilabel:`Mark as fully paid`. Select
|
||||
:guilabel:`Keep open` and click :guilabel:`Create payment`. The invoice or bill is now marked as
|
||||
:guilabel:`Partial`. Select :guilabel:`Mark as fully paid` if you wish to settle the invoice or bill
|
||||
with a difference in the amount.
|
||||
To register a partial payment, click on :guilabel:`Register Payment` from the related invoice or
|
||||
bill. In the case of a partial payment (when the :guilabel:`Amount` paid is less than the total
|
||||
remaining amount on the invoice or the bill), the :guilabel:`Payment Difference` field displays the
|
||||
outstanding balance. There are two options:
|
||||
|
||||
.. image:: payments/payment-difference.png
|
||||
:alt: Partial payment of an invoice or bill.
|
||||
- :guilabel:`Keep open`: Keep the invoice or the bill open and mark it with a :guilabel:`Partial`
|
||||
banner;
|
||||
- :guilabel:`Mark as fully paid`: Select an account in the :guilabel:`Post Difference In` field and
|
||||
change the :guilabel:`Label` if needed. A journal entry will be created to balance the accounts
|
||||
payable or receivable with the selected account.
|
||||
|
||||
Reconciling payments with bank statements
|
||||
=========================================
|
||||
.. image:: payments/partial-payment.png
|
||||
:alt: register a partial payment
|
||||
|
||||
.. _accounting/payments/reconciling-payments:
|
||||
|
||||
Reconciling payments with bank transactions
|
||||
===========================================
|
||||
|
||||
Once a payment has been registered, the status of the invoice or bill is :guilabel:`In payment`. The
|
||||
next step is :doc:`reconciling <bank/reconciliation>` it with the related bank statement line to
|
||||
have the transaction finalized and the invoice or bill marked as :guilabel:`Paid`.
|
||||
next step is :doc:`reconciling <bank/reconciliation>` it with the related bank transaction line to
|
||||
finalize the payment workflow and mark the invoice or bill as :guilabel:`Paid`.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
@@ -24,8 +24,9 @@ the details.
|
||||
.. image:: reporting/reporting-annotate.png
|
||||
:alt: Annotate reports.
|
||||
|
||||
To export reports in PDF or XLSX format, click :guilabel:`PDF` or :guilabel:`XLSX` at the top of the
|
||||
page.
|
||||
To export reports in PDF or XLSX format, click :guilabel:`PDF` at the top or click the
|
||||
:icon:`fa-caret-down` (:guilabel:`down arrow`) icon next to the :guilabel:`PDF` button and
|
||||
select :guilabel:`XLSX`.
|
||||
|
||||
To compare values across periods, click the :guilabel:`Comparison` menu and select the periods you
|
||||
want to compare.
|
||||
|
||||
@@ -62,10 +62,10 @@ Then, to close the fiscal year:
|
||||
<accounting/reporting/aged-payable>` reports.
|
||||
- Audit all accounts, being sure to fully understand all transactions and their nature, making
|
||||
sure to include loans and fixed assets.
|
||||
- Optionally, run :ref:`payments matching <payments/matching>` to validate any open vendor bills
|
||||
and customer invoices with their payments. While this step is optional, it could assist the
|
||||
year-end closing process if all outstanding payments and invoices are reconciled, potentially
|
||||
finding errors or mistakes in the system.
|
||||
- Optionally, run :ref:`payments matching <accounting/payments/matching>` to validate any open
|
||||
vendor bills and customer invoices with their payments. While this step is optional, it could
|
||||
assist the year-end closing process if all outstanding payments and invoices are reconciled,
|
||||
potentially finding errors or mistakes in the system.
|
||||
|
||||
Next, the accountant likely verifies balance sheet items and book entries for:
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ appropriately completed:
|
||||
- :guilabel:`Vendor`: Odoo automatically fills some information based on the vendor's registered
|
||||
information, previous purchase orders, or bills.
|
||||
- :guilabel:`Bill Reference`: add the sales order reference provided by the vendor and is used to do
|
||||
the :ref:`matching <payments/matching>` when you receive the products.
|
||||
the :ref:`matching <accounting/payments/matching>` when you receive the products.
|
||||
- :guilabel:`Auto-Complete`: select a past bill/purchase order to automatically complete the
|
||||
document. The :guilabel:`Vendor` field should be completed prior to completing this field.
|
||||
- :guilabel:`Bill Date`: is the issuance date of the document.
|
||||
|
||||
@@ -33,19 +33,28 @@ Make sure the default settings are correctly configured for your business. To do
|
||||
|
||||
Journal
|
||||
The deferral entries are posted in this journal.
|
||||
Deferred Expense Account
|
||||
Deferred Expense
|
||||
Expenses are deferred on this Current Asset account until they are recognized.
|
||||
Deferred Revenue Account
|
||||
Revenues are deferred on this Current Liability account until they are recognized.
|
||||
Generate Entries
|
||||
By default, Odoo :ref:`automatically generates <vendor_bills/deferred/generate_on_validation>`
|
||||
the deferral entries when you post a vendor bill. However, you can also choose to
|
||||
:ref:`generate them manually <vendor_bills/deferred/generate_manually>` by selecting the
|
||||
:guilabel:`Manually & Grouped` option instead.
|
||||
Amount Computation
|
||||
Suppose a bill of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
|
||||
computation recognizes $100 each month, while the :guilabel:`Based on days` computation recognizes
|
||||
different amounts depending on the number of days in each month.
|
||||
Based on
|
||||
Suppose a bill of $1200 must be deferred over 12 months.
|
||||
|
||||
- The :guilabel:`Months` option accounts for $100 each month prorated to the number of days in
|
||||
that month (e.g., $50 for the first month if the :guilabel:`Start Date` is set to the 15th of
|
||||
the month).
|
||||
|
||||
- The :guilabel:`Full Months` option considers each month started to be full (e.g., $100 for the
|
||||
first month even if the :guilabel:`Start Date` is set to the 15th of the month); this means that
|
||||
with the :guilabel:`Full Months` option, a full $100 is recognized in the first partial month,
|
||||
eliminating the need for a 13th month to recognize any remainder as would be the case when using
|
||||
the :guilabel:`Months` option.
|
||||
|
||||
- The :guilabel:`Days` option accounts for different amounts depending on the number of days in
|
||||
each month (e.g., ~$102 for January and ~$92 for February).
|
||||
|
||||
.. _vendor_bills/deferred/generate_on_validation:
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ created and populated based on the scanned invoices.
|
||||
|
||||
.. seealso::
|
||||
- `Test Odoo's invoice digitization <https://www.odoo.com/app/invoice-automation>`_
|
||||
- `Odoo Tutorials: Invoice Digitization with OCR
|
||||
<https://www.odoo.com/slides/slide/digitize-bills-with-ocr-1712>`_
|
||||
- `Odoo Tutorials: Vendor Bill Digitization
|
||||
<https://www.odoo.com/slides/slide/vendor-bill-digitization-7065>`_
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
@@ -619,9 +619,9 @@ document, an automatic validation can be set in :menuselection:`Accounting --> S
|
||||
Argentinean Localization --> Validate document in the AFIP`, considering the following levels:
|
||||
|
||||
- :guilabel:`Not available:` the verification is not done (this is the default value);
|
||||
- :guilabel:`Available:` the verification is done. In case the number is not valid it, only displays
|
||||
- :guilabel:`Available:` the verification is done. In case the number is not valid, it only displays
|
||||
a warning but still allows the vendor bill to be posted;
|
||||
- :guilabel:`Required:` the verification is done and it does not allow the user to post the vendor
|
||||
- :guilabel:`Required:` the verification is done, and it does not allow the user to post the vendor
|
||||
bill if the document number is not valid.
|
||||
|
||||
.. image:: argentina/verify-vendor-bills.png
|
||||
|
||||
@@ -136,6 +136,7 @@ Correction letter, Invalidate invoice number range), an API call is made using c
|
||||
.. note::
|
||||
- Odoo is a certified partner of Avalara Brazil.
|
||||
- You can `buy IAP credit on odoo.com <https://iap.odoo.com/iap/in-app-services/819>`_.
|
||||
- On creation, new databases receive 500 free credits.
|
||||
|
||||
Credential configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -139,7 +139,7 @@ Positions`.
|
||||
The following fiscal positions are available by default:
|
||||
|
||||
- :guilabel:`Alberta (AB)`
|
||||
- :guilabel:`British Colombia (BC)`
|
||||
- :guilabel:`British Columbia (BC)`
|
||||
- :guilabel:`Manitoba (MB)`
|
||||
- :guilabel:`New Brunswick (NB)`
|
||||
- :guilabel:`Newfoundland and Labrador (NL)`
|
||||
|
||||
@@ -39,12 +39,9 @@ localization.
|
||||
- Adds the *Propuesta F29* and *Balance Tributario (8 columnas)* reports.
|
||||
* - :guilabel:`Chile - E-invoicing`
|
||||
- `l10n_cl_edi`
|
||||
- Includes all technical and functional requirements to generate and receive electronic
|
||||
invoices online based on the :abbr:`SII (Servicio de Impuestos Internos)` regulations.
|
||||
* - :guilabel:`Chile - Electronic Receipt`
|
||||
- `l10n_cl_boletas`
|
||||
- Includes all technical and functional requirements to generate and receive electronic
|
||||
invoices digitally based on the :abbr:`SII (Servicio de Impuestos Internos)` regulations.
|
||||
- Includes all technical and functional requirements to receive and generate **electronic
|
||||
receipts** and **invoices** online based on the :abbr:`SII (Servicio de Impuestos Internos)`
|
||||
regulations.
|
||||
* - :guilabel:`Electronic Exports of Goods for Chile`
|
||||
- `l10n_cl_edi_exports`
|
||||
- Includes technical and functional requirements to generate electronic invoices for exporting
|
||||
|
||||
@@ -170,9 +170,8 @@ triggered and is being processed. You have to click on *Refresh State* to check
|
||||
German Tax Accounting Standards: Odoo's guide to GoBD Compliance
|
||||
================================================================
|
||||
|
||||
**GoBD** stands for `Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern,
|
||||
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff
|
||||
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_.
|
||||
**GoBD** stands for *Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern,
|
||||
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff*.
|
||||
In short, it is a **guideline for the proper management and storage of books, records, and documents
|
||||
in electronic form, as well as for data access**, that is relevant for the German tax authority, tax
|
||||
declaration, and balance sheet.
|
||||
@@ -191,7 +190,7 @@ What do you need to know about GoBD when relying on accounting software?
|
||||
|
||||
.. note::
|
||||
If you can, the best way to understand GoBD is to Read the `Official GoBD text
|
||||
<https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2019-11-28-GoBD.pdf>`_.
|
||||
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_.
|
||||
It is a bit long but quite readable for non-experts. But in short, here is what to expect:
|
||||
|
||||
The **GoBD is binding for companies that have to present accounts, which includes SMEs, freelancers,
|
||||
@@ -312,7 +311,7 @@ offer our customer any legal certainty.
|
||||
|
||||
.. important::
|
||||
The BMF actually states the following in the `Official GoBD text
|
||||
<https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2019-11-28-GoBD.pdf>`_:
|
||||
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_:
|
||||
|
||||
- 180. Positive attestations on the correctness of the bookkeeping - and thus on the correctness
|
||||
of IT-based bookkeeping systems - are not issued either in the context of a tax field audit or
|
||||
|
||||
@@ -567,3 +567,95 @@ goods (i.e :guilabel:`Opening Stock` + purchases during the period - :guilabel:`
|
||||
|
||||
.. image:: india/profit-and-loss-report.png
|
||||
:alt: Profit and Loss report
|
||||
|
||||
.. _india/tds-tcs-threshold:
|
||||
|
||||
TDS/TCS threshold alert
|
||||
=======================
|
||||
|
||||
:abbr:`TDS (tax deducted at source)` and :abbr:`TCS (tax collected at source)` are tax provisions
|
||||
under Indian law, triggered when transaction amounts exceed specified thresholds. This alert
|
||||
notifies users when the value of invoices or bills surpasses these limits, prompting the application
|
||||
of the appropriate TDS/TCS.
|
||||
|
||||
To configure Odoo to advise you on when to apply TDS/TCS, set the :guilabel:`TDS/TCS section`
|
||||
field on the corresponding account in the chart of accounts. Odoo will display a banner suggesting
|
||||
the TDS/TCS section under which tax might be applicable when recording an invoice or bill.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
#. Navigate to :menuselection:`Accounting --> Configuration --> Settings`
|
||||
#. In the :guilabel:`Indian Integration` section, enable the :guilabel:`TDS and TCS` feature.
|
||||
#. Navigate to :menuselection:`Accounting --> Configuration --> Chart of Accounts`.
|
||||
#. Click :guilabel:`View` on the desired account, and set the :guilabel:`TDS/TCS Section` field.
|
||||
|
||||
.. note::
|
||||
The TDS/TCS sections are pre-configured with threshold limits. If you need to modify these
|
||||
limits, go to :menuselection:`Accounting --> Configuration --> Taxes`. In the :guilabel:`Advanced
|
||||
Options` tab, click on the :icon:`fa-arrow-right` :guilabel:`(internal link)` icon of the
|
||||
:guilabel:`Section` field.
|
||||
|
||||
.. image:: india/tds-tcs-section-modify.png
|
||||
:alt: TDS/TCS section modify
|
||||
|
||||
Applying TCS/TDS on invoices and bills
|
||||
--------------------------------------
|
||||
|
||||
Based on the account used on the customer invoice or vendor bill, Odoo checks the TCS/TDS threshold
|
||||
limit. If the limit specified in the :guilabel:`TCS/TDS Section` of the account is exceeded, Odoo
|
||||
displays an alert that suggests applying the appropriate TCS/TDS. The alert will disappear once the
|
||||
TCS/TDS is applied.
|
||||
|
||||
.. image:: india/tcs-warning.png
|
||||
:alt: TCS advice
|
||||
|
||||
**TCS** is directly applicable in the tax on the invoice lines. To apply **TDS**, click the
|
||||
:guilabel:`TDS Entry` smart button on the vendor bill/payment. The popup window allows specifying
|
||||
the TDS details. Confirm the entry to apply the TDS.
|
||||
|
||||
.. image:: india/tds-apply.png
|
||||
:alt: TDS application
|
||||
|
||||
In Odoo, the aggregate total is calculated for partners sharing the same PAN number, across all company branches.
|
||||
|
||||
.. example::
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 10 20 10 20 15
|
||||
|
||||
* - **Branch**
|
||||
- **Customer**
|
||||
- **Invoice**
|
||||
- **Transaction Amount (₹)**
|
||||
- **PAN Number**
|
||||
* - IN - MH
|
||||
- XYZ Enterprise - GJ
|
||||
- Invoice 1
|
||||
- ₹50,000
|
||||
- ABCPX1234E
|
||||
* - IN - MH
|
||||
- XYZ Enterprise - GJ
|
||||
- Invoice 2
|
||||
- ₹30,000
|
||||
- ABCPX1234E
|
||||
* - IN - MH
|
||||
- XYZ Enterprise - MH
|
||||
- Invoice 3
|
||||
- ₹40,000
|
||||
- ABCPX1234E
|
||||
* - IN - DL
|
||||
- XYZ Enterprise - GJ
|
||||
- Invoice 4
|
||||
- ₹20,000
|
||||
- ABCPX1234E
|
||||
* - IN - GJ
|
||||
- XYZ Enterprise - MH
|
||||
- Invoice 5
|
||||
- ₹60,000
|
||||
- ABCPX1234E
|
||||
|
||||
- **Aggregate total** = 50,000 + 30,000 + 40,000 + 20,000 + 60,000 = ₹200,000
|
||||
- The aggregate total for all customers (XYZ Enterprise - GJ, MH, DL) sharing the PAN number
|
||||
ABCPX1234E across all branches is ₹200,000.
|
||||
|
||||
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
@@ -369,7 +369,7 @@ the SAT documentation, there are two types of payments:
|
||||
- `PPD` (Pago en Parcialidades o Diferido/Payment in Installements or Deferred)
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../inventory_and_mrp/inventory/product_management/inventory_valuation/integrating_landed_costs`
|
||||
:doc:`../../inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs`
|
||||
|
||||
The difference lies in the *Due Date* or *Payment Terms* of the invoice.
|
||||
|
||||
@@ -883,8 +883,8 @@ Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
In order to track the correct customs number for a specific invoice, Odoo uses :doc:`landed costs
|
||||
<../../inventory_and_mrp/inventory/product_management/inventory_valuation/integrating_landed_costs>`.
|
||||
Go to :menuselection:`Inventory --> Configuration --> Settings --> Valuation`. Make sure that
|
||||
<../../inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs>`. Go to
|
||||
:menuselection:`Inventory --> Configuration --> Settings --> Valuation`. Make sure that
|
||||
:guilabel:`Landed Costs` is activated.
|
||||
|
||||
Begin by creating a *service*-type product called, `Pedimento`. In the :guilabel:`Purchase` tab,
|
||||
|
||||
@@ -2,33 +2,80 @@
|
||||
Peru
|
||||
====
|
||||
|
||||
.. |SUNAT| replace:: :abbr:`SUNAT (Superintendencia Nacional de Aduanas y de Administración Tributaria)`
|
||||
.. |SUNAT| replace:: :abbr:`SUNAT (Superintendencia Nacional de Aduanas y de Administración
|
||||
Tributaria)`
|
||||
.. |GRE| replace:: :abbr:`GRE (Guía de Remisión Electrónica)`
|
||||
.. |RUS| replace:: :abbr:`RUS (Régimen Único Simplificado)`
|
||||
.. |EDI| replace:: :abbr:`EDI (Electronic Data Interchange)`
|
||||
|
||||
Introduction
|
||||
============
|
||||
Modules
|
||||
=======
|
||||
|
||||
The Peruvian localization has been improved and extended, in this version the next modules are
|
||||
available:
|
||||
:ref:`Install <general/install>` the following modules to utilize all the current features of the
|
||||
Peruvian localization.
|
||||
|
||||
- **l10n_pe**: Adds accounting features for the Peruvian localization, which represent the minimal
|
||||
configuration required for a company to operate in Peru and under the SUNAT regulations and
|
||||
guidelines. The main elements included in this module are: Chart of account, taxes,
|
||||
document types.
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
- **l10n_pe_edi**: includes all technical and functional requirements to generate and validate
|
||||
Electronic Invoice, based on the SUNAT specification to create and process valid electronic
|
||||
documents, for more technical detail you can access the
|
||||
`SUNAT EDI specifications <https://cpe.sunat.gob.pe/node/88/>`_,
|
||||
that keeps track of new changes and updates.
|
||||
The features of this module are based on the resolutions published on the
|
||||
`SUNAT Legislation <https://www.sunat.gob.pe/legislacion/general/index.html/>`_.
|
||||
* - Name
|
||||
- Technical name
|
||||
- Description
|
||||
* - :guilabel:`Peru - Accounting`
|
||||
- `l10n_pe`
|
||||
- Adds accounting features for the Peruvian localization, which represent the minimal
|
||||
configuration required for a company to operate in Peru and under the SUNAT regulations and
|
||||
guidelines. The main elements included in this module are the chart of accounts, taxes,
|
||||
document types.
|
||||
* - :guilabel:`Peru - E-invoicing`
|
||||
- `l10n_pe_edi`
|
||||
- Includes all technical and functional requirements to generate and receive electronic
|
||||
invoices online based on the SUNAT regulations.
|
||||
* - :guilabel:`Peru - Accounting Reports`
|
||||
- `l10n_pe_reports`
|
||||
- Includes the following financial reports:
|
||||
|
||||
- 1st set of main financial reports:
|
||||
|
||||
- Registro de Ventas e Ingresos (RVIE) - 14.4
|
||||
- Registro de Compras Electrónico (RCE) - 8.4
|
||||
- Registro de Compras Electrónico - Información de Operaciones con Sujetos no Domiciliados
|
||||
(RCE) - 8.5
|
||||
|
||||
- 2nd set of financial reports:
|
||||
|
||||
- PLE 5.1 General Journal
|
||||
- PLE 5.3 Chart of Accounts
|
||||
- PLE 6.1 General Ledger
|
||||
|
||||
- 3rd set of financial reports:
|
||||
|
||||
- PLE 1.1 Libro de Caja
|
||||
- PLE 1.2 Libro de Bancos
|
||||
|
||||
* - :guilabel:`Peruvian - Electronic Delivery Note`
|
||||
- `l10n_pe_edi_stock`
|
||||
- Adds the delivery guide (Guía de Remisión), which is needed as proof that you are sending
|
||||
goods between A and B. It is only when a delivery order is validated that the delivery guide
|
||||
can be created.
|
||||
* - :guilabel:`Peruvian eCommerce`
|
||||
- `l10n_pe_website_sale`
|
||||
- Enables the identification type in eCommerce checkout forms and the ability to generate
|
||||
electronic invoices.
|
||||
* - :guilabel:`Peruvian - Point of Sale with PE Doc`
|
||||
- `l10n_pe_pos`
|
||||
- Enables contact fiscal information to be editable from a PoS Session to generate electronic
|
||||
invoices and refunds.
|
||||
|
||||
.. note::
|
||||
- Odoo automatically installs the appropriate package for the company according to the country
|
||||
selected at the creation of the database.
|
||||
- The *Peruvian - Electronic Delivery Guide* module depends on the *Inventory* application to be
|
||||
installed.
|
||||
|
||||
.. seealso::
|
||||
- `App Tour - Localización de Peru <https://youtu.be/Ic3mGovkf8Y>`_
|
||||
- `Smart Tutorial - Localización de Peru <https://www.odoo.com/slides/smart-tutorial-localizacion-de-peru-133>`_
|
||||
- `Smart Tutorial - Localización de Peru (videos for workflows and configurations)
|
||||
<https://www.odoo.com/slides/smart-tutorial-localizacion-de-peru-133>`_
|
||||
|
||||
Configuration
|
||||
=============
|
||||
@@ -41,7 +88,6 @@ dependency with *Peru - Accounting*. In case this last one is not installed, Odo
|
||||
automatically within EDI.
|
||||
|
||||
.. image:: peru/peru-modules.png
|
||||
:align: center
|
||||
:alt: The "Module" filter is set on "Peru"
|
||||
|
||||
.. note::
|
||||
@@ -57,9 +103,7 @@ the establishment code assigned by the SUNAT when companies register their RUC (
|
||||
Registration):
|
||||
|
||||
.. image:: peru/peru-company.png
|
||||
:align: center
|
||||
:alt: Company data for Peru including RUC and Address type code
|
||||
|
||||
:alt: Company data for Peru including RUC and Address type code.
|
||||
|
||||
.. tip::
|
||||
In case the Address type code is unknown, you can set it as the default value: 0000. Be aware
|
||||
@@ -68,7 +112,6 @@ Registration):
|
||||
.. note::
|
||||
The NIF should be set following the RUC format.
|
||||
|
||||
|
||||
Chart of Account
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -105,7 +148,6 @@ Here are some terms that are essential on the Peruvian localization:
|
||||
- **SOL Credentials**: Sunat Operaciones en Línea. User and password are provided by the SUNAT and
|
||||
grant access to Online Operations systems.
|
||||
|
||||
|
||||
Signature Provider
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -126,8 +168,7 @@ This is the default and the suggested option, considering the digital ceritifica
|
||||
part of the service.
|
||||
|
||||
.. image:: peru/peru-IAP.png
|
||||
:align: center
|
||||
:alt: IAP option as signature providers
|
||||
:alt: IAP option as signature providers.
|
||||
|
||||
What is the IAP?
|
||||
^^^^^^^^^^^^^^^^
|
||||
@@ -190,8 +231,7 @@ document validation directly to Digiflow. In this case you need to consider:
|
||||
- Provide your SOL credentials.
|
||||
|
||||
.. image:: peru/peru-Digiflow.png
|
||||
:align: center
|
||||
:alt: Digiflow
|
||||
:alt: Digiflow.
|
||||
|
||||
SUNAT
|
||||
*****
|
||||
@@ -230,18 +270,16 @@ certificate with the extension ``.pfx`` is required. Proceed to this section and
|
||||
password.
|
||||
|
||||
.. image:: peru/peru-Certificate.png
|
||||
:align: center
|
||||
:alt: EDI Certificate wizard
|
||||
:alt: EDI Certificate wizard.
|
||||
|
||||
Multicurrency
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
The official currency exchange rate in Peru is provided by the Bank of Peru. Odoo can connect
|
||||
directly to its services and get the currency rate either automatically or manually.
|
||||
The official currency exchange rate in Peru is provided by the SUNAT. Odoo can connect directly to
|
||||
its services and get the currency rate either automatically or manually.
|
||||
|
||||
.. image:: peru/peru-multicurrency.png
|
||||
:align: center
|
||||
:alt: Bank of Peru is displayed in Multicurrency Service option
|
||||
.. image:: peru/l10n-pe-banksync-sunat.png
|
||||
:alt: SUNAT displayed in Multicurrency Service option.
|
||||
|
||||
Please refer to the next section in our documentation for more information about
|
||||
:doc:`multicurrencies <../accounting/get_started/multi_currency>`.
|
||||
@@ -258,8 +296,7 @@ As part of the localization module the taxes are created automatically with thei
|
||||
financial account and electronic invoice configuration.
|
||||
|
||||
.. image:: peru/peru-taxes.png
|
||||
:align: center
|
||||
:alt: List of default taxes
|
||||
:alt: List of default taxes.
|
||||
|
||||
EDI Configuration
|
||||
*****************
|
||||
@@ -269,9 +306,7 @@ the taxes created by default have this data included, but in case you create new
|
||||
sure you fill in the fields:
|
||||
|
||||
.. image:: peru/peru-taxes-edi.png
|
||||
:align: center
|
||||
:alt: Taxes EDI data for Peru
|
||||
|
||||
:alt: Taxes EDI data for Peru.
|
||||
|
||||
Fiscal Positions
|
||||
~~~~~~~~~~~~~~~~
|
||||
@@ -297,8 +332,7 @@ The information required for the document types is included by default so the us
|
||||
to fill anything on this view:
|
||||
|
||||
.. image:: peru/peru-document-type.png
|
||||
:align: center
|
||||
:alt: Document Type list
|
||||
:alt: Document Type list.
|
||||
|
||||
.. warning::
|
||||
Currently the documents supported on customer invoices are: Invoice, Boleta, Debit Note and
|
||||
@@ -324,8 +358,7 @@ This section indicates which EDI workflow is used in the invoice, for Peru we mu
|
||||
“Peru UBL 2.1”.
|
||||
|
||||
.. image:: peru/peru-journal-edi.png
|
||||
:align: center
|
||||
:alt: Journal EDI field
|
||||
:alt: Journal EDI field.
|
||||
|
||||
.. warning::
|
||||
By default, the value Factur-X (FR) is always displayed, make sure you can uncheck it manually.
|
||||
@@ -341,9 +374,7 @@ available on the Partner form, this information is essential for most transactio
|
||||
the sender company and in the customer, make sure you fill in this information in your records.
|
||||
|
||||
.. image:: peru/peru-id-type.png
|
||||
:align: center
|
||||
:alt: Partner identification type
|
||||
|
||||
:alt: Partner identification type.
|
||||
|
||||
Product
|
||||
~~~~~~~
|
||||
@@ -352,9 +383,7 @@ Additional to the basic information in your products, for the Peruvian localizat
|
||||
Code on the product is a required value to be configured.
|
||||
|
||||
.. image:: peru/peru-unspc-code.png
|
||||
:align: center
|
||||
:alt: UNSPC Code on products
|
||||
|
||||
:alt: UNSPC Code on products.
|
||||
|
||||
Usage and testing
|
||||
=================
|
||||
@@ -374,16 +403,14 @@ fields required as part of the Peru EDI:
|
||||
document type if needed and select Boleta for example.
|
||||
|
||||
.. image:: peru/peru-invoice-document-type.png
|
||||
:align: center
|
||||
:alt: Invoice document type field on invoices
|
||||
:alt: Invoice document type field on invoices.
|
||||
|
||||
- **Operation type**: This value is required for Electronic Invoice and indicates the transaction
|
||||
type, the default value is “Internal Sale” but another value can be selected manually when needed,
|
||||
for example Export of Goods.
|
||||
|
||||
.. image:: peru/peru-operation-type.png
|
||||
:align: center
|
||||
:alt: Invoice operation type field on invoices
|
||||
:alt: Invoice operation type field on invoices.
|
||||
|
||||
- **EDI Affectation Reason**: In the invoice lines, additional to the Tax there is a field “EDI
|
||||
Affectation Reason” that determines the tax scope based on the SUNAT list that is displayed.
|
||||
@@ -391,8 +418,7 @@ fields required as part of the Peru EDI:
|
||||
you can manually select another one when creating the invoice.
|
||||
|
||||
.. image:: peru/peru-tax-affectation-reason.png
|
||||
:align: center
|
||||
:alt: Tax affectation reason in invoice line
|
||||
:alt: Tax affectation reason in invoice line.
|
||||
|
||||
Invoice validation
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
@@ -402,8 +428,7 @@ action registers the account move and triggers the Electronic invoice workflow t
|
||||
OSE and the SUNAT. The following message is displayed at the top of the invoice:
|
||||
|
||||
.. image:: peru/peru-posted-invoice.png
|
||||
:align: center
|
||||
:alt: Sending of EDI Invoice in blue
|
||||
:alt: Sending of EDI Invoice in blue.
|
||||
|
||||
Asynchronous means that the document is not sent automatically after the invoice has been posted.
|
||||
|
||||
@@ -417,16 +442,14 @@ done either automatically by Odoo with a *cron* that runs every hour, or the use
|
||||
immediately by clicking on the button “Sent now”.
|
||||
|
||||
.. image:: peru/peru-sent-manual.png
|
||||
:align: center
|
||||
:alt: Send EDI manually
|
||||
:alt: Send EDI manually.
|
||||
|
||||
**Sent**: Indicates the document was sent to the OSE and was successfully validated. As part of
|
||||
the validation a ZIP file is downloaded and a message is logged in the chatter indicating the
|
||||
correct Government validation.
|
||||
|
||||
.. image:: peru/peru-invoice-sent.png
|
||||
:align: center
|
||||
:alt: Message on chatter when the invoice is valid
|
||||
:alt: Message on chatter when the invoice is valid.
|
||||
|
||||
In case there is a validation error the Electronic Invoice status remains in “To be sent” so the
|
||||
corrections can be made and the invoice can be sent again.
|
||||
@@ -453,8 +476,7 @@ If a validation error is received, you have two options:
|
||||
changes, and then send the invoice again to the SUNAT for another validation.
|
||||
|
||||
.. image:: peru/peru-errors.png
|
||||
:align: center
|
||||
:alt: List of common errors on invoices
|
||||
:alt: List of common errors on invoices.
|
||||
|
||||
For more detail please refert to `Common errors in SUNAT
|
||||
<https://www.nubefact.com/codigos-error-sunat/>`_.
|
||||
@@ -466,8 +488,7 @@ After the invoice is accepted and validated by the SUNAT, the invoice PDF report
|
||||
The report includes a QR code, indicating the invoice is a valid fiscal document.
|
||||
|
||||
.. image:: peru/peru-PDF.png
|
||||
:align: center
|
||||
:alt: Invoice PDF report
|
||||
:alt: Invoice PDF report.
|
||||
|
||||
IAP Credits
|
||||
~~~~~~~~~~~
|
||||
@@ -480,8 +501,7 @@ additional credits are required, you can easily buy them by accessing the link p
|
||||
the message.
|
||||
|
||||
.. image:: peru/peru-credits-IAP.png
|
||||
:align: center
|
||||
:alt: Buying credits in the IAP
|
||||
:alt: Buying credits in the IAP.
|
||||
|
||||
In the IAP service includes packages with different pricing based on the number of credits.
|
||||
The price list in the IAP is always displayed in EUR.
|
||||
@@ -497,8 +517,7 @@ If the invoice was already sent and validated by the SUNAT, the correct way to p
|
||||
clicking on the button Request Cancellation:
|
||||
|
||||
.. image:: peru/peru-cancellation.png
|
||||
:align: center
|
||||
:alt: Request invoice cancellation button
|
||||
:alt: Request invoice cancellation button.
|
||||
|
||||
In order to cancel an invoice, please provide a cancellation Reason.
|
||||
|
||||
@@ -511,22 +530,20 @@ immediately by clicking on the button “Send now”. Once it is sent, a cancell
|
||||
created, as a result the next message and CDR File are logged in the chatter:
|
||||
|
||||
.. image:: peru/peru-cancellation-cdr.png
|
||||
:align: center
|
||||
:alt: Cancellation CDR sent by the SUNAT
|
||||
:alt: Cancellation CDR sent by the SUNAT.
|
||||
|
||||
**Cancelled**: Indicates the cancellation request was sent to the OSE and was successfully
|
||||
validated. As part of the validation a ZIP file is downloaded and a message is logged in the
|
||||
chatter indicating the correct Government validation.
|
||||
|
||||
.. image:: peru/peru-cancelled.png
|
||||
:align: center
|
||||
:alt: nvoice after cancellation
|
||||
:alt: Invoice after cancellation.
|
||||
|
||||
.. warning::
|
||||
One credit is consumed on each cancellation request.
|
||||
|
||||
Cancellation process
|
||||
********************
|
||||
Export invoices
|
||||
***************
|
||||
|
||||
When creating exportation invoices, take into account the next considerations:
|
||||
|
||||
@@ -535,8 +552,7 @@ When creating exportation invoices, take into account the next considerations:
|
||||
- The taxes included in the invoice lines should be EXP taxes.
|
||||
|
||||
.. image:: peru/peru-exp-invoice.png
|
||||
:align: center
|
||||
:alt: Exportation invoices main data
|
||||
:alt: Exportation invoices main data.
|
||||
|
||||
Advance Payments
|
||||
****************
|
||||
@@ -555,13 +571,11 @@ When creating invoices that is subject to Detractions, take into account the nex
|
||||
#. All the products included in the invoice must have these fields configured:
|
||||
|
||||
.. image:: peru/peru-detraction.png
|
||||
:align: center
|
||||
:alt: Detraction fields on products
|
||||
:alt: Detraction fields on products.
|
||||
|
||||
#. Operation type in your invoice must be ``1001``
|
||||
|
||||
.. image:: peru/peru-detraction-invoice.png
|
||||
:align: center
|
||||
:alt: Detraction code on invoices.
|
||||
|
||||
Credit Notes
|
||||
@@ -572,8 +586,7 @@ for this just click on the button “Add Credit Note”, a part of the Peruvian
|
||||
to prove a Credit Reason selecting one of the options in the list.
|
||||
|
||||
.. image:: peru/peru-credit-note.png
|
||||
:align: center
|
||||
:alt: Add Credit Note from invoice
|
||||
:alt: Add Credit Note from invoice.
|
||||
|
||||
.. tip::
|
||||
When creating your first credit Note, select the Credit Method: Partial Refund, this allows you
|
||||
@@ -582,8 +595,7 @@ to prove a Credit Reason selecting one of the options in the list.
|
||||
By default the Credit Note is set in the document type:
|
||||
|
||||
.. image:: peru/peru-credit-note-document.png
|
||||
:align: center
|
||||
:alt: Credit Note document type
|
||||
:alt: Credit Note document type.
|
||||
|
||||
To finish the workflow please follow the instructions on :doc:`our page about Credit Notes
|
||||
<../accounting/customer_invoices/credit_notes>`.
|
||||
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 15 KiB |
@@ -717,7 +717,7 @@ Create batch payment
|
||||
Now, record each payment in Odoo using the |NACHA| payment method.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Register Payments in Odoo <payments/register>`
|
||||
:ref:`Register Payments in Odoo <accounting/payments/from-invoice-bill>`
|
||||
|
||||
.. important::
|
||||
Be aware of the cut-off time for same-day payments. Either the file needs to have a future date
|
||||
|
||||
@@ -17,11 +17,10 @@ Online payments
|
||||
payment_providers/flutterwave
|
||||
payment_providers/mercado_pago
|
||||
payment_providers/mollie
|
||||
payment_providers/ogone
|
||||
payment_providers/paypal
|
||||
payment_providers/razorpay
|
||||
payment_providers/sips
|
||||
payment_providers/stripe
|
||||
payment_providers/worldline
|
||||
payment_providers/xendit
|
||||
|
||||
Odoo embeds several **payment providers** that allow your customers to pay online, on their
|
||||
@@ -126,18 +125,18 @@ Online payment providers
|
||||
- Full only
|
||||
- Full and partial
|
||||
-
|
||||
* - :doc:`SIPS <payment_providers/sips>`
|
||||
- The provider's website
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
* - :doc:`Stripe <payment_providers/stripe>`
|
||||
- Odoo
|
||||
- |V|
|
||||
- Full only
|
||||
- Full and partial
|
||||
- |V|
|
||||
* - :doc:`Worldline <payment_providers/worldline>`
|
||||
- The provider's website
|
||||
- |V|
|
||||
-
|
||||
-
|
||||
-
|
||||
* - :doc:`Xendit <payment_providers/xendit>`
|
||||
- The provider's website
|
||||
-
|
||||
@@ -457,11 +456,10 @@ other payments.
|
||||
- :doc:`payment_providers/demo`
|
||||
- :doc:`payment_providers/mercado_pago`
|
||||
- :doc:`payment_providers/mollie`
|
||||
- :doc:`payment_providers/ogone`
|
||||
- :doc:`payment_providers/paypal`
|
||||
- :doc:`payment_providers/razorpay`
|
||||
- :doc:`payment_providers/sips`
|
||||
- :doc:`payment_providers/stripe`
|
||||
- :doc:`payment_providers/worldline`
|
||||
- :doc:`payment_providers/xendit`
|
||||
- :doc:`../websites/ecommerce/checkout_payment_shipping/payments`
|
||||
- :doc:`accounting/bank`
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
=====
|
||||
Ogone
|
||||
=====
|
||||
|
||||
`Ogone <https://www.ingenico.com/>`_, also known as **Ingenico Payment Services** is a France-based
|
||||
company that provides the technology involved in secure electronic transactions.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`payment_providers/add_new`
|
||||
- `Ogone's documentation <https://epayments-support.ingenico.com/get-started/>`_.
|
||||
|
||||
.. warning::
|
||||
The provider Ogone is deprecated. It is recommended to use :doc:`stripe` instead.
|
||||
|
||||
Settings in Ogone
|
||||
=================
|
||||
|
||||
Create an API user
|
||||
------------------
|
||||
|
||||
Log into your Ogone account and head to the :guilabel:`Configuration` tab.
|
||||
|
||||
You need to create an **API user** to be used in the creation of transactions from Odoo. While you
|
||||
can use your main account to do so, using an **API user** ensures that if the credentials used in
|
||||
Odoo are leaked, no access to your Ogone configuration is possible. Additionally, passwords for
|
||||
**API users** do not need to be updated regularly, unlike normal users.
|
||||
|
||||
To create an **API user**, go to :menuselection:`Configuration --> Users` and click on
|
||||
:guilabel:`New User`. The following fields must be configured:
|
||||
|
||||
.. _ogone/ogone:
|
||||
|
||||
- :guilabel:`UserID`: you can choose anything you want.
|
||||
- :guilabel:`User's Name, E-mail and Timezone`: you can enter the information you want.
|
||||
- :guilabel:`Profile`: should be set to :guilabel:`Admin`.
|
||||
- :guilabel:`Special user for API`: should be checked.
|
||||
|
||||
After the creation of the user, you are required to generate a password. Save the password and
|
||||
**UserID**, as they will be required later on during the setup.
|
||||
|
||||
.. tip::
|
||||
If you already have an user set up, make sure it is activated without any error. If not, simply
|
||||
click the :guilabel:`Activate(Errors)` button to reset the user.
|
||||
|
||||
Set up Ogone for Odoo
|
||||
---------------------
|
||||
|
||||
Ogone must now be configured to accept payments from Odoo. Head to :menuselection:`Configuration -->
|
||||
Technical Information --> Global Security Parameters`, select :guilabel:`SHA-512` as
|
||||
:guilabel:`Hash Algorithm` and :guilabel:`UTF-8` as :guilabel:`character encoding`. Then, go to the
|
||||
:guilabel:`Data and Origin verification` tab of the same page and leave the URL field of the
|
||||
:guilabel:`e-Commerce and Alias Gateway` section blank.
|
||||
|
||||
.. tip::
|
||||
If you need to use another algorithm, such as `sha-1` or `sha-256`, within Odoo, activate the
|
||||
:ref:`developer mode <developer-mode>` and go to the **Payment Providers** page in
|
||||
:menuselection:`Accounting --> Configuration --> Payment Providers`. Click on :guilabel:`Ogone`,
|
||||
and in the :guilabel:`Credentials` tab, select the algorithm you wish to use in the
|
||||
:guilabel:`Hash function` field.
|
||||
|
||||
You are now required to generate **SHA-IN** passphrases. **SHA-IN** and **SHA-OUT** passphrases are
|
||||
used to digitally sign the transaction requests and responses between Odoo and Ogone. By using these
|
||||
secret passphrases and the `sha-1` algorithm, both systems can ensure that the information they
|
||||
receive from the other was not altered or tampered with.
|
||||
|
||||
Enter the same **SHA-IN** passphrase in both :guilabel:`Checks for e-Commerce & Alias Gateway` and
|
||||
:guilabel:`Checks for DirectLink and Batch (Automatic)`. You can leave the IP address field blank.
|
||||
|
||||
Your **SHA-IN** and **SHA-OUT** passphrases should be different, and between 16 and 32 characters
|
||||
long. Make sure to use the same **SHA-IN** and **SHA-OUT** passphrases throughout the entire Ogone
|
||||
configuration, as Odoo only allows a single **SHA-IN** and single **SHA-OUT** passphrase.
|
||||
|
||||
In order to retrieve the **SHA-OUT** key, log into your Ogone account, go to
|
||||
:menuselection:`Configuration --> Technical Information --> Transaction feedback --> All
|
||||
transaction submission modes`, and get or generate your **API Key** and **Client Key**. Be careful
|
||||
to copy your API key as you’ll not be allowed to get it later without generating a new one.
|
||||
|
||||
When done, head to :menuselection:`Configuration --> Technical Information --> Transaction Feedback`
|
||||
and check the following options:
|
||||
|
||||
- The :guilabel:`URL` fields for :guilabel:`HTTP redirection in the browser` can be left empty, as
|
||||
Odoo will specify these URLs for every transaction request.
|
||||
- :guilabel:`I would like to receive transaction feedback parameters on the redirection URLs`:
|
||||
should be checked.
|
||||
- :guilabel:`Direct HTTP server-to-server request`: should to be set to `Online but switch to a
|
||||
deferred request when the online request fails`.
|
||||
- Both **URL** fields should contain the same following URL, with `<example>` replaced by your
|
||||
database: `https://<example>/payment/ogone/return`.
|
||||
|
||||
- :guilabel:`Dynamic eCommerce Parameters` should contain the following values: `ALIAS`, `AMOUNT`,
|
||||
`CARDNO`, `CN`, `CURRENCY`, `IP`, `NCERROR` `ORDERID`, `PAYID`, `PM`, `STATUS`, `TRXDATE`. Other
|
||||
parameters can be included (if you have another integration with Ogone that requires them), but
|
||||
are not advised.
|
||||
- In the :guilabel:`All transaction submission modes` section, fill out **SHA-OUT** passphrase and
|
||||
disable `HTTP request for status change`.
|
||||
|
||||
To allow your customers to save their credit card credentials for future use, head to
|
||||
:menuselection:`Configuration --> Alias --> My alias information`. From this tab, you can configure
|
||||
how the user can have its card details saved, for how long the information is saved, if a checkbox
|
||||
to save the card information should be displayed, etc.
|
||||
|
||||
Settings in Odoo
|
||||
================
|
||||
|
||||
To set up Ogone in Odoo, head to :menuselection:`Accounting --> Configuration --> Payment Providers`
|
||||
and open the Ogone provider. In the :guilabel:`Credentials` tab, enter the **PSPID** of your Ogone
|
||||
account, and fill out the other fields as configured in your :ref:`Ogone portal <ogone/ogone>`.
|
||||
@@ -2,7 +2,7 @@
|
||||
PayPal
|
||||
======
|
||||
|
||||
`Paypal <https://www.paypal.com/>`_ is an American online payment provider available worldwide, and
|
||||
`Paypal <https://www.paypal.com/>`_ is an American online payment provider available worldwide and
|
||||
one of the few that does not charge a subscription fee.
|
||||
|
||||
.. note::
|
||||
@@ -10,112 +10,71 @@ one of the few that does not charge a subscription fee.
|
||||
<https://www.paypal.com/webapps/mpp/country-worldwide>`_, only `a selection of currencies are
|
||||
supported <https://developer.paypal.com/docs/reports/reference/paypal-supported-currencies>`_.
|
||||
|
||||
Settings in PayPal
|
||||
==================
|
||||
.. _payment_providers/paypal/configuration-paypal:
|
||||
|
||||
To access your PayPal account settings, log into PayPal, open the :guilabel:`Account Settings`, and
|
||||
open the :guilabel:`Website payments` menu.
|
||||
Configuration in PayPal
|
||||
=======================
|
||||
|
||||
.. image:: paypal/paypal-account.png
|
||||
:align: center
|
||||
:alt: PayPal account menu
|
||||
#. `Log into your PayPal Developer Dashboard <https://developer.paypal.com/dashboard/>`_.
|
||||
#. Click :guilabel:`Apps & Credentials` and click :guilabel:`Create App`.
|
||||
#. Enter an :guilabel:`App Name` and click :guilabel:`Create App`.
|
||||
#. Copy the :guilabel:`Client ID` and :guilabel:`Secret` and save them for
|
||||
:ref:`later <payment_providers/paypal/configuration-odoo>`.
|
||||
|
||||
.. important::
|
||||
Note that for PayPal to work **in Odoo**, the options :ref:`Auto Return <paypal/auto-return>` and
|
||||
:ref:`PDT <paypal/pdt>` **must** be enabled.
|
||||
If you use customer names or addresses that include accented or non-Latin characters, you
|
||||
**must** configure the encoding format of the payment request sent by Odoo to PayPal to avoid
|
||||
transaction failures without notice. To do so, access the `PayPal button language encoding
|
||||
setting <https://www.paypal.com/cgi-bin/websrc?cmd=_profile-language-encoding>`_, click
|
||||
:guilabel:`More Options`, and set the :guilabel:`Encoding` field to :guilabel:`UTF-8`.
|
||||
|
||||
.. _paypal/auto-return:
|
||||
|
||||
Auto Return
|
||||
-----------
|
||||
|
||||
The **Auto Return** feature automatically redirects customers to Odoo once the payment is processed.
|
||||
|
||||
From :guilabel:`Website payments`, go to :menuselection:`Website preferences --> Update --> Auto
|
||||
return for website payments --> Auto return` and select :guilabel:`On`. Enter the address of your
|
||||
Odoo database (e.g., `https://yourcompany.odoo.com`) in the :guilabel:`Return URL` field, and
|
||||
:guilabel:`Save`.
|
||||
|
||||
.. note::
|
||||
Any URL does the job. Odoo only needs the setting to be enabled since it uses another URL.
|
||||
|
||||
.. _paypal/pdt:
|
||||
|
||||
Payment Data Transfer (PDT)
|
||||
---------------------------
|
||||
|
||||
:abbr:`PDT (Payment Data Transfer)` allows to receive payment confirmations, displays the payment
|
||||
status to the customers, and verifies the authenticity of the payments. From :menuselection:`Website
|
||||
preferences --> Update`, scroll down to :guilabel:`Payment data transfer` and select :guilabel:`On`.
|
||||
If you are trying PayPal as a test, access your :ref:`PayPal Sandbox account
|
||||
<payment_providers/paypal/testing>` and `configure the encoding format for your sandbox account
|
||||
<https://sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`_.
|
||||
|
||||
.. tip::
|
||||
PayPal displays your **PDT Identity Token** as soon as :ref:`Auto return <paypal/auto-return>`
|
||||
and :ref:`Payment Data Transfer (PDT) <paypal/pdt>` are enabled. If you need the **PDT Identity
|
||||
Token**, disable and re-enable :guilabel:`Payment data transfer` to display the token again.
|
||||
For encrypted website payments & EWP_SETTINGS errors, please check the `PayPal documentation
|
||||
<https://developer.paypal.com/docs/online/>`_.
|
||||
|
||||
PayPal Account Optional
|
||||
-----------------------
|
||||
.. _payment_providers/paypal/configuration-odoo:
|
||||
|
||||
We advise not to prompt customers to log in with a PayPal account upon payment. It is better and
|
||||
more accessible for customers to pay with a debit/credit card. To disable that prompt, go to
|
||||
:menuselection:`Account Settings --> Website payments --> Update` and select :guilabel:`On` for
|
||||
:guilabel:`PayPal account optional`.
|
||||
Configuration in Odoo
|
||||
=====================
|
||||
|
||||
Payment Messages Format
|
||||
-----------------------
|
||||
#. :ref:`Navigate to the payment provider PayPal <payment_providers/add_new>`.
|
||||
#. In the :guilabel:`Credentials` tab, enter the :guilabel:`Email` linked to your PayPal account,
|
||||
then fill in the :guilabel:`Client ID` and :guilabel:`Client Secret` fields with the values you
|
||||
saved at the step :ref:`payment_providers/paypal/configuration-paypal`.
|
||||
#. Click :guilabel:`Generate your webhook` to create the :guilabel:`Webhook ID`.
|
||||
#. Set the :guilabel:`State` field to :guilabel:`Enabled`, and make sure the PayPal payment provider
|
||||
is :guilabel:`Published`.
|
||||
#. Configure the remaining options as desired.
|
||||
|
||||
If you use accented characters (or anything other than primary Latin characters) for customer names
|
||||
or addresses, then you **must** configure the encoding format of the payment request sent by Odoo to
|
||||
PayPal. If you do not, some transactions fail without notice.
|
||||
.. _payment_providers/paypal/testing:
|
||||
|
||||
To do so, go to `your production account <https://www.paypal.com/cgi-bin/customerprofileweb
|
||||
?cmd=_profile-language-encoding>`_. Then, click :guilabel:`More Options` and set the two default
|
||||
encoding formats as :guilabel:`UTF-8`.
|
||||
Testing
|
||||
=======
|
||||
|
||||
.. tip::
|
||||
- For Encrypted Website Payments & EWP_SETTINGS error, please check the `Paypal documentation
|
||||
<https://developer.paypal.com/docs/online/>`_.
|
||||
- Configure your :ref:`Paypal Sandbox account <paypal/testing>`, then follow this
|
||||
`link <https://sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`_
|
||||
to configure the encoding format in a test environment.
|
||||
PayPal provides two sandbox accounts that you can use to simulate live transactions:
|
||||
|
||||
Settings in Odoo
|
||||
================
|
||||
|
||||
.. seealso::
|
||||
:ref:`payment_providers/add_new`
|
||||
|
||||
Odoo needs your **API Credentials** to connect with your PayPal account. To do so, go to
|
||||
:menuselection:`Accounting --> Configuration --> Payment Providers` and :guilabel:`Activate` PayPal.
|
||||
Then, enter your PayPal account credentials in the :guilabel:`Credentials` tab:
|
||||
|
||||
- :guilabel:`Email`: the login email address in Paypal;
|
||||
- :guilabel:`PDT Identity Token`: the key used to verify the authenticity of transactions.
|
||||
|
||||
.. _paypal/testing:
|
||||
|
||||
Test environment
|
||||
================
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
Thanks to PayPal sandbox accounts, you can test the entire payment flow in Odoo.
|
||||
|
||||
Log into the `Paypal Developer Site <https://developer.paypal.com/>`_ using your PayPal credentials,
|
||||
which creates two sandbox accounts:
|
||||
|
||||
- A business account (to use as merchants, e.g.,
|
||||
`pp.merch01-facilitator@example.com <mailto:pp.merch01-facilitator@example.com>`_);
|
||||
- A default personal account (to use as shoppers, e.g.,
|
||||
`pp.merch01-buyer@example.com <mailto:pp.merch01-buyer@example.com>`_).
|
||||
|
||||
Log into PayPal sandbox using the merchant account and follow the same configuration instructions.
|
||||
Enter your sandbox credentials in Odoo (:menuselection:`Accounting --> Configuration --> Payment
|
||||
Providers --> PayPal` in the :guilabel:`Credentials` tab, and make sure the status is set on
|
||||
:guilabel:`Test Mode`.
|
||||
|
||||
Run a test transaction from Odoo using the sandbox personal account.
|
||||
- A business account (to use as the merchant account, e.g., `ab-1abc12345678@business.example.com`);
|
||||
- A default personal account (to use as the shopper account, e.g.,
|
||||
`ba-9cba87654321@personal.example.com`).
|
||||
|
||||
To test the PayPal payment workflow in Odoo:
|
||||
|
||||
#. Log into the `Paypal Developer Site <https://developer.paypal.com/>`_ using your PayPal
|
||||
credentials and go to :menuselection:`Testing Tools --> Sandbox Accounts`.
|
||||
#. Click the :icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) icon next to the sandbox business account
|
||||
and select :guilabel:`View/Edit account`.
|
||||
#. Copy the :guilabel:`Email`, :guilabel:`Client ID`, and :guilabel:`Secret` and save them for the
|
||||
next step.
|
||||
#. In Odoo, :ref:`configure the PayPal payment provider <payment_providers/paypal/configuration-odoo>`
|
||||
with the values saved at the previous step and set the :guilabel:`State` field to
|
||||
:guilabel:`Test Mode`.
|
||||
|
||||
You can then run a test transaction from Odoo using the sandbox personal account.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`payment_providers/test-mode`
|
||||
- :doc:`../payment_providers`
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
====
|
||||
SIPS
|
||||
====
|
||||
|
||||
`SIPS <https://sips.worldline.com/>`_ is an online payments solution from the multinational
|
||||
Worldline.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
.. seealso::
|
||||
- :ref:`payment_providers/add_new`
|
||||
|
||||
Credentials tab
|
||||
---------------
|
||||
|
||||
Odoo needs your **API Credentials** to connect with your SIPS account, which comprise:
|
||||
|
||||
- **Merchant ID**: The ID solely used to identify the merchant account with SIPS.
|
||||
- **Secret Key**: The key to sign the merchant account with SIPS.
|
||||
- **Secret Key Version**: The version of the key, pre-filled.
|
||||
- **Interface Version**: Pre-filled, don't change it.
|
||||
|
||||
You can copy your credentials from your SIPS environment info documentation, in the section
|
||||
**PROD**, and paste them in the related fields under the **Credentials** tab.
|
||||
|
||||
.. important::
|
||||
If you are trying SIPS as a test, with the *TEST* credentials, change the **State** to *Test
|
||||
Mode*. We recommend doing this on a test Odoo database, rather than on your main database.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../payment_providers`
|
||||
@@ -0,0 +1,68 @@
|
||||
=========
|
||||
Worldline
|
||||
=========
|
||||
|
||||
`Worldline <https://worldline.com/>`_ is a France-based company and the world's fourth largest
|
||||
payment provider.
|
||||
|
||||
Settings in Worldline
|
||||
=====================
|
||||
|
||||
.. _worldline/API-user:
|
||||
|
||||
Create an API user
|
||||
------------------
|
||||
|
||||
It is recommended to set up an **API user** to create transactions from Odoo to ensure that your
|
||||
Worldline configuration remains safe even if credentials are compromised. Additionally, API users do
|
||||
not require frequent password updates like regular accounts.
|
||||
|
||||
To create an **API user**, proceed as follows:
|
||||
|
||||
#. Log into your `Worldline Merchant Portal <https://merchant-portal.preprod.worldline-solutions.com/dashboard>`_,
|
||||
click the :icon:`fa-th` (:guilabel:`menu`) icon, and select :guilabel:`Back Office`.
|
||||
#. Go to :menuselection:`Configuration --> Users` and click on :guilabel:`New User`.
|
||||
#. Configure the following fields:
|
||||
|
||||
#. Specify a :guilabel:`UserID`, :guilabel:`User's name`, :guilabel:`E-mail address`, and
|
||||
:guilabel:`Timezone` of your choice.
|
||||
#. Set the :guilabel:`Profile` field to :guilabel:`Admin`.
|
||||
#. Enable :guilabel:`Special user for API`.
|
||||
|
||||
.. tip::
|
||||
If you have already set up a user, make sure it is activated without any error.
|
||||
|
||||
.. _worldline/set-up:
|
||||
|
||||
Set up Worldline for Odoo
|
||||
-------------------------
|
||||
|
||||
Worldline must now be configured to accept payments from Odoo.
|
||||
|
||||
#. From your merchant portal, go to :menuselection:`Developer --> Payment API` and click on
|
||||
:guilabel:`Generate API key`. Copy the :guilabel:`API key ID` and the :guilabel:`Secret API key`
|
||||
and save them for :ref:`later <wordline/odoo-configuration>`.
|
||||
#. Go to :menuselection:`Developer --> Webhooks` and click on :guilabel:`Generate webhook keys`.
|
||||
Copy the :guilabel:`Webhook ID` and the associated :guilabel:`Secret webhook key` and
|
||||
save them for :ref:`later <wordline/odoo-configuration>`.
|
||||
#. | Click :guilabel:`Add webhook endpoint`, enter your Odoo database's URL followed by
|
||||
`/payment/worldline/webhook` in the :guilabel:`Endpoint url` field, and :guilabel:`Confirm`.
|
||||
| For example: `https://example.odoo.com/payment/worldline/webhook`.
|
||||
|
||||
.. _wordline/odoo-configuration:
|
||||
|
||||
Settings in Odoo
|
||||
================
|
||||
|
||||
To set up Worldline in Odoo:
|
||||
|
||||
#. :ref:`Navigate to the payment provider Worldline <payment_providers/add_new>` and change its
|
||||
state to :guilabel:`Enabled`.
|
||||
#. In the :guilabel:`Credentials` tab, enter the :guilabel:`PSPID` of your Worldline account and
|
||||
fill in the :guilabel:`API Key`, :guilabel:`API Secret`, :guilabel:`Webhook Key`, and
|
||||
:guilabel:`Webhook Secret` with the values you saved at the step :ref:`Set up Worldline for
|
||||
Odoo <worldline/set-up>`.
|
||||
#. Configure the rest of the options to your liking.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../payment_providers`
|
||||
@@ -141,7 +141,7 @@ SPF, DKIM and DMARC documentation of common providers
|
||||
- `GoDaddy CNAME record <https://www.godaddy.com/help/add-a-cname-record-19236>`_
|
||||
- `NameCheap <https://www.namecheap.com/support/knowledgebase/article.aspx/317/2237/how-do-i-add-txtspfdkimdmarc-records-for-my-domain/>`_
|
||||
- `CloudFlare DNS <https://support.cloudflare.com/hc/en-us/articles/360019093151>`_
|
||||
- `Google Domains <https://support.google.com/domains/answer/3290350?hl=en>`_
|
||||
- `Squarespace DNS records <https://support.squarespace.com/hc/en-us/articles/360002101888-Adding-custom-DNS-records-to-your-Squarespace-managed-domain>`_
|
||||
- `Azure DNS <https://docs.microsoft.com/en-us/azure/dns/dns-getstarted-portal>`_
|
||||
|
||||
To fully test the configuration, use the `Mail-Tester <https://www.mail-tester.com/>`_ tool, which
|
||||
|
||||
@@ -317,3 +317,43 @@ To change the default behavior, enable :ref:`developer-mode`, then go to :menuse
|
||||
.. important::
|
||||
These parameters are only used to prevent the creation of new records. They **do not prevent
|
||||
replies** from being added to the chatter.
|
||||
|
||||
Allow alias domain system parameter
|
||||
===================================
|
||||
|
||||
Incoming aliases are set in the Odoo database to create records by receiving incoming emails. To
|
||||
view aliases set in the Odoo database, first activate the :ref:`developer mode <developer-mode>`.
|
||||
Then, go to :menuselection:`Settings app --> Technical --> Aliases`.
|
||||
|
||||
The following system parameter, `mail.catchall.domain.allowed`, set with allowed alias domain
|
||||
values, separated by commas, filters out correctly addressed emails to aliases. Setting the domains
|
||||
for which the alias can create a ticket, lead, opportunity, etc., eliminates false positives where
|
||||
email addresses with only the prefix alias, not the domain, are present.
|
||||
|
||||
In some instances, matches have been made in the Odoo database when an email is received with the
|
||||
same alias prefix and a different domain on the incoming email address. This is true in the sender,
|
||||
recipient, and :abbr:`CC (Carbon Copy)` email addresses of an incoming email.
|
||||
|
||||
.. example::
|
||||
When Odoo receives emails with the `commercial` prefix alias in the sender, recipient, or
|
||||
:abbr:`CC (Carbon Copy)` email addresses (e.g. commercial\@example.com), the database falsely
|
||||
treats the email as the full `commercial` alias, with a different domain, and therefore, creates
|
||||
a ticket/lead/opportunity/etc.
|
||||
|
||||
To add the `mail.catchall.domain.allowed` system parameter, first, activate the :ref:`developer mode
|
||||
<developer-mode>`. Then, go to :menuselection:`Settings app --> Technical --> System Parameters`.
|
||||
Click :guilabel:`New`. Then, type in `mail.catchall.domain.allowed` for the :guilabel:`Key` field.
|
||||
|
||||
Next, for the :guilabel:`Value` field, add the domains separated by commas. Manually
|
||||
:icon:`fa-cloud-upload` :guilabel:`(Save)`, and the system parameter takes immediate effect.
|
||||
|
||||
.. image:: email_servers_inbound/allowed-domain.png
|
||||
:alt: mail.catchall.domain.allowed system parameter set.
|
||||
|
||||
Local-part based incoming detection
|
||||
===================================
|
||||
|
||||
When creating a new alias, there is an option to enable :guilabel:`Local-part based incoming
|
||||
detection`. If enabled, Odoo only requires the local-part to match for routing an incoming email. If
|
||||
this feature is turned off, Odoo requires the whole email address to match for routing an incoming
|
||||
email.
|
||||
|
||||
|
After Width: | Height: | Size: 7.1 KiB |
@@ -97,8 +97,8 @@ printer.
|
||||
:alt: Edit the printer connected to the IoT box.
|
||||
|
||||
.. note::
|
||||
Epson and Star receipt printers and Zebra label printers do not need a driver to work. Make sure
|
||||
that no driver is selected for those printers.
|
||||
Epson receipt printers and Zebra label printers do not need a driver to work. Make sure that no
|
||||
driver is selected for those printers.
|
||||
|
||||
The printer is detected but is not recognized correctly
|
||||
-------------------------------------------------------
|
||||
|
||||
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 6.8 KiB |
@@ -174,6 +174,7 @@ document.
|
||||
- :doc:`appraisals/new_appraisals`
|
||||
- :doc:`appraisals/goals`
|
||||
- :doc:`appraisals/appraisal_analysis`
|
||||
- :doc:`appraisals/skills_evolution`
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
@@ -181,3 +182,4 @@ document.
|
||||
appraisals/new_appraisals
|
||||
appraisals/goals
|
||||
appraisals/appraisal_analysis
|
||||
appraisals/skills_evolution
|
||||
|
||||
@@ -24,13 +24,12 @@ Each appraisal card displays the following information:
|
||||
|
||||
- **Name**: the employee's name.
|
||||
- **Department**: the department the employee is associated with.
|
||||
- **Company**: the company the employee works for. This only appears in a multi-company
|
||||
database.
|
||||
- **Company**: the company the employee works for. This only appears in a multi-company database.
|
||||
- **Date**: the date the appraisal was requested, or is scheduled for in the future.
|
||||
- **Activities**: any :doc:`activities <../../essentials/activities>` that are scheduled for the
|
||||
appraisal, such as *Meetings* or *Phone Calls*.
|
||||
- **Manager**: the employee's manager, indicated by the profile icon in the bottom-right
|
||||
corner of an appraisal card.
|
||||
- **Manager**: the employee's manager, indicated by the profile icon in the bottom-right corner of
|
||||
an appraisal card.
|
||||
- **Status banner**: the status of the appraisal. A banner appears if an appraisal is marked as
|
||||
either *Canceled* or *Done*. If no banner is present, that means the appraisal has not happened,
|
||||
or has not been scheduled yet.
|
||||
@@ -274,8 +273,9 @@ Once the appraisal is marked as *Done*, the :guilabel:`Mark as Done` button disa
|
||||
button.
|
||||
|
||||
Then, click the :guilabel:`Confirm` button that appears, and make any modifications needed. Once
|
||||
all modifications are complete, click the the :guilabel:`Mark as Done` button again.
|
||||
all modifications are complete, click the :guilabel:`Mark as Done` button again.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../appraisals/goals`
|
||||
- :doc:`../appraisals/appraisal_analysis`
|
||||
- :doc:`../appraisals/skills_evolution`
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
================
|
||||
Skills evolution
|
||||
================
|
||||
|
||||
In Odoo's **Appraisals** app, it is possible to view employee's skills as they progress over time in
|
||||
the :ref:`Skills Evolution <appraisals/identify-skills-evolution>` report, also known as the
|
||||
*Appraisal Skills Report*.
|
||||
|
||||
Managers can use this to see who is achieving their various skill goals set on their appraisals, who
|
||||
is meeting their skill deadlines, who has the highest performance in terms of skill development, and
|
||||
more.
|
||||
|
||||
The *Skills Evolution* report also provides the ability to :ref:`search for employees with specific
|
||||
skills <appraisals/identify-skills>` at certain levels, which can be helpful for scenarios where
|
||||
specific skills are required.
|
||||
|
||||
.. _appraisals/identify-skills-evolution:
|
||||
|
||||
Skills evolution report
|
||||
=======================
|
||||
|
||||
To access this *Skills Evolution* report, navigate to :menuselection:`Appraisals app --> Reporting
|
||||
--> Skills Evolution`.
|
||||
|
||||
Doing so reveals the :guilabel:`Appraisal Skills Report` page, which displays a report of all
|
||||
skills, grouped by employee, in alphabetical order, by default.
|
||||
|
||||
.. note::
|
||||
Skill levels are **only** updated after an appraisal is marked as done. Any skill level changes
|
||||
from ongoing appraisals that have **not** been finalized are **not** included in this report.
|
||||
|
||||
All the :guilabel:`Employee` lines are expanded, with all the various skill types nested below. Each
|
||||
individual skill type is collapsed, by default. To view the individual skills contained within a
|
||||
skill type, click anywhere on the skill type line to expand the data.
|
||||
|
||||
Each skill has the following information listed:
|
||||
|
||||
- :guilabel:`Employee`: the name of the employee.
|
||||
- :guilabel:`Skill Type`: the category the skill falls under.
|
||||
- :guilabel:`Skill`: the specific, individual skill.
|
||||
- :guilabel:`Previous Skill Level`: the level the employee had previously achieved for the skill.
|
||||
- :guilabel:`Previous Skill Progress`: the previous percentage of competency achieved for the skill
|
||||
(based on the :guilabel:`Skill Level`).
|
||||
- :guilabel:`Current Skill Level`: the current level the employee has achieved for the skill.
|
||||
- :guilabel:`Current Skill Progress`: the current percentage of competency achieved for the skill.
|
||||
- :guilabel:`Justification`: any notes entered on the skill, explaining the progress.
|
||||
|
||||
The color of the skill text indicates any changes from the previous appraisal. Skill levels that
|
||||
have increased since the last appraisal appear in green, as an *Improvement*. Skill levels that have
|
||||
**not** changed appear in black, as *No Change*. Skills that have regressed appear in red, as
|
||||
*Regression*.
|
||||
|
||||
This report can be modified to find specific information by adjusting the :ref:`filters
|
||||
<search/filters>` and :ref:`groupings <search/group>` set in the search bar at the top.
|
||||
|
||||
.. image:: skills_evolution/skills-report.png
|
||||
:align: center
|
||||
:alt: A report showing all the skills grouped by employee.
|
||||
|
||||
.. _appraisals/identify-skills:
|
||||
|
||||
Use case: Identify employees with specific skills
|
||||
=================================================
|
||||
|
||||
Since the :guilabel:`Appraisal Skills Report` organizes all skills by employee, it can be difficult
|
||||
to find employees with a specific skill at a specific level. To find these employees, a custom
|
||||
filter must be used.
|
||||
|
||||
In this example, the report is modified to show employees with an expert level of Javascript
|
||||
knowledge. To view only those employees, first remove all active filters in the search bar.
|
||||
|
||||
Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, then click
|
||||
:guilabel:`Add Custom Filter` beneath the :icon:`fa-filters` :guilabel:`Filters` column to load an
|
||||
:guilabel:`Add Custom Filter` pop-up window.
|
||||
|
||||
Using the drop-down menu in the first field, select :guilabel:`Skill`. Then, keep the second field
|
||||
as-is, and select :guilabel:`Javascript` from the third drop-down menu in the third field.
|
||||
|
||||
Next, click :guilabel:`New Rule`, and another line appears. In this second line, select
|
||||
:guilabel:`Current Skill Level` for the first drop-down field, leave the second field as-is, then
|
||||
select :guilabel:`Expert` for the third drop-down field.
|
||||
|
||||
After the :guilabel:`New Rule` button is clicked, the word :guilabel:`"any"` in the sentence
|
||||
:guilabel:`Match any of the following rules:`, changes from plain text into a drop-down menu. Click
|
||||
the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon after the word :guilabel:`any`, and select
|
||||
:guilabel:`all`.
|
||||
|
||||
Finally, click the :guilabel:`Add` button.
|
||||
|
||||
.. image:: skills_evolution/javascript.png
|
||||
:align: center
|
||||
:alt: The Custom Filter pop-up with the parameters set.
|
||||
|
||||
Now, only employees that have an :guilabel:`Expert` level for the skill :guilabel:`Javascript`
|
||||
appear. In this example, only :guilabel:`Marc Demo` meets these criteria.
|
||||
|
||||
.. image:: skills_evolution/results.png
|
||||
:align: center
|
||||
:alt: The employees with expert Javascript skills.
|
||||
|
||||
Use case: Assess highest improvement
|
||||
====================================
|
||||
|
||||
Another way to modify the :guilabel:`Appraisal Skills Report` is to identify the employee who has
|
||||
the highest amount of improved skills over a specific period of time.
|
||||
|
||||
To view this information, first remove the default filter in the search bar. Next, click the
|
||||
:icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, then click
|
||||
:guilabel:`Improvement` beneath the :icon:`fa-filter` :guilabel:`Filters` column. Enabling this
|
||||
filter only presents skills that have improved.
|
||||
|
||||
It is possible to view the skills that have improved over a period of time, such as a specific
|
||||
quarter, or month. With the search bar drop-down menu still expanded, click :guilabel:`Add Custom
|
||||
Filter` at the bottom of the :icon:`fa-filter` :guilabel:`Filters` column, and an :guilabel:`Add
|
||||
Custom Filter` pop-up window appears.
|
||||
|
||||
Select :guilabel:`Create Date` for the first drop-down field, then select :guilabel:`is between` for
|
||||
the second drop-down field. Once :guilabel:`is between` is selected, a second field appears after
|
||||
the last field. Using the calendar selector, select the date range to apply the filter to. Once all
|
||||
the fields are properly formatted, click :guilabel:`Add`.
|
||||
|
||||
The custom filter presents only the skills that have improved during the specified time period,
|
||||
organized by employee.
|
||||
|
||||
.. example::
|
||||
To determine the employee with the most amount of improved skills for the third quarter, remove
|
||||
the default filter in the search bar of the :guilabel:`Appraisal Skills Report`. Next, activate
|
||||
the :guilabel:`Improvement` filter, then click :guilabel:`Add Custom Filter` at the bottom of the
|
||||
:icon:`fa-filter` :guilabel:`Filters` column.
|
||||
|
||||
In the resulting :guilabel:`Add Custom Filter` pop-up window, select :guilabel:`Create Date` for
|
||||
the first drop-down field, then select :guilabel:`is between` for the second drop-down field. Two
|
||||
date fields appear after :guilabel:`is between` is selected.
|
||||
|
||||
Using the calendar selector, set the first date to :guilabel:`07/01/2024` and the second date to
|
||||
:guilabel:`09/30/2024`, then click :guilabel:`Add`.
|
||||
|
||||
These filters present only the skills that have improved during the third quarter (between July
|
||||
1st and September 30th, 2024), organized by employee.
|
||||
|
||||
.. image:: skills_evolution/custom-filter.png
|
||||
:alt: The Custom Filter pop-up with the parameters set.
|
||||
|
||||
To view the number of employees and skills in further detail, click the :icon:`oi-view-pivot`
|
||||
:guilabel:`(Pivot)` icon in the top-right corner to view the data in a pivot table. This presents a
|
||||
pivot table with the employees populating the rows, and the only visible column represents the total
|
||||
number of improved skills.
|
||||
|
||||
To expand more rows or columns to view which skill types had the most overall improvement, click
|
||||
:icon:`fa-plus-square` :guilabel:`Total` above the :guilabel:`Count` column, then click
|
||||
:guilabel:`Skill Type` from the resulting drop-down menu. This organizes the total improved skills
|
||||
by their respective skill type.
|
||||
|
||||
.. example::
|
||||
In this example, it is determined that :guilabel:`Charles Reginald` had the largest improvement
|
||||
in the third quarter, with six improved skills. Additionally, they also had the most skill
|
||||
improvements for both :guilabel:`Languages` (three) and :guilabel:`Programming Languages` (two).
|
||||
|
||||
.. image:: skills_evolution/largest-improvement.png
|
||||
:alt: The pivot table showing the skill improvements for the third quarter.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Odoo essentials reporting <../../essentials/reporting>`
|
||||
- :doc:`../../essentials/search`
|
||||
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 33 KiB |
@@ -13,4 +13,6 @@ Odoo *Employees* organizes a company's employee records, contracts, and departme
|
||||
|
||||
employees/new_employee
|
||||
employees/departments
|
||||
employees/certifications
|
||||
employees/offboarding
|
||||
employees/retention_report
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
==============
|
||||
Certifications
|
||||
==============
|
||||
|
||||
When jobs require specific knowledge, it is necessary to track employee certifications to ensure the
|
||||
necessary knowledge and certifications are in place.
|
||||
|
||||
Certifications include classes, tests, professional seminars, and more. There are no restrictions in
|
||||
terms of what type of certification records can be added in Odoo.
|
||||
|
||||
.. important::
|
||||
To access the *Employee Certifications* report, the **Surveys** app **must** be installed.
|
||||
|
||||
View certifications
|
||||
===================
|
||||
|
||||
To view a full list of all employee certifications, navigate to :menuselection:`Employees app -->
|
||||
Reporting --> Certifications`.
|
||||
|
||||
All certifications appear in a list view, grouped by employee. Each certification entry displays the
|
||||
following:
|
||||
|
||||
- :guilabel:`Employee`: the employee's name, along with their avatar image.
|
||||
- :guilabel:`Name`: the title of the certification.
|
||||
- :guilabel:`Validity Start`: when the employee received the certification.
|
||||
- :guilabel:`Validity End`: when the certification expires.
|
||||
- :guilabel:`Certification`: the corresponding course in the **Surveys** app that was completed by
|
||||
the employee, if applicable.
|
||||
|
||||
The entries are also color-coded. Current certifications that are still valid appear in black,
|
||||
expired certifications appear in red, and certifications that are going to expire within the next
|
||||
90 days appear in orange.
|
||||
|
||||
.. image:: certifications/certifications.png
|
||||
:align: center
|
||||
:alt: The list of employee certifications.
|
||||
|
||||
.. important::
|
||||
**Only** certification records with the *Display Type* set to *Certification* on their
|
||||
:ref:`certification form <employees/certifications-form>` appear on the :guilabel:`Employee
|
||||
Certifications` report. All other certifications appear in the resume section of the
|
||||
:doc:`employee form <new_employee>`.
|
||||
|
||||
View certifications by expiration status
|
||||
----------------------------------------
|
||||
|
||||
When managing a large number of employees with a variety of certifications, it can be difficult to
|
||||
determine which employees need to keep necessary certifications current in the default list view. In
|
||||
this scenario, it is beneficial to view the certifications by expiration status.
|
||||
|
||||
To do so, navigate to :menuselection:`Employees app --> Reporting --> Certifications`. Next, click
|
||||
the :icon:`fa-caret-down` :guilabel:`(down arrow)` in the search bar, then click :guilabel:`Add
|
||||
Custom Group`, revealing a drop-down menu. Click :guilabel:`Expiration Status`, then click away from
|
||||
the drop-down menu to close it.
|
||||
|
||||
After doing so, all the certifications are organized by status, starting with :guilabel:`Expired`
|
||||
certifications, then certifications that are :guilabel:`Expiring` soon (within the next 90 days),
|
||||
and lastly, certifications that are still :guilabel:`Valid`.
|
||||
|
||||
This view provides an easy way to see which employees have certifications that are going to expire
|
||||
soon, to determine which employees need to take action to keep their certifications current.
|
||||
|
||||
.. image:: certifications/status.png
|
||||
:align: center
|
||||
:alt: The list of employee certifications, grouped by status.
|
||||
|
||||
.. _employees/certifications-form:
|
||||
|
||||
Log a certification
|
||||
===================
|
||||
|
||||
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:
|
||||
|
||||
- :guilabel:`Title`: Enter a short description for the certification in this field.
|
||||
- :guilabel:`Employee`: Using the drop-down menu, select the employee who received the
|
||||
certification.
|
||||
- :guilabel:`Type`: Using the drop-down menu, select the type of certification received. This field
|
||||
determines where on the employee's resume the certification appears. To create a new
|
||||
:guilabel:`Type`, enter the type in the field, then click :guilabel:`Create "type"`.
|
||||
|
||||
The default options are:
|
||||
|
||||
- :guilabel:`Experience`: Select this option to have the certification appear in the *Experience*
|
||||
section of the *Resume* tab on the :doc:`employee form <new_employee>`.
|
||||
- :guilabel:`Education`: Select this option to have the certification appear in the *Education*
|
||||
section of the *Resume* tab on the :doc:`employee form <new_employee>`.
|
||||
- :guilabel:`Internal Certification`: Select this option to have the certification appear in the
|
||||
*Internal Certification* section of the *Resume* tab on the :doc:`employee form <new_employee>`.
|
||||
- :guilabel:`Completed Internal Training`: Select this option to have the certification appear in
|
||||
*Completed Internal Training* section of the *Resume* tab on the :doc:`employee form
|
||||
<new_employee>`.
|
||||
|
||||
- :guilabel:`Display Type`: Select the visibility of the certification in this field. The default
|
||||
options are:
|
||||
|
||||
- :guilabel:`Classic`: Select this option to have the certification appear in the *Resume* section
|
||||
of the employee form, and **not** appear on the *Employee Certifications* report.
|
||||
- :guilabel:`Course`: Select this option to have the certification appear in the *Resume* section
|
||||
of the employee form, and **not** appear on the *Employee Certifications* report. Once this
|
||||
option is selected, a :guilabel:`Course` field appears beneath the :guilabel:`Display Type`
|
||||
field. Using the drop-down menu, select the course the employee took. The course is created in
|
||||
the **Surveys** app.
|
||||
- :guilabel:`Certification`: Select this option to have the certification appear in the *Resume*
|
||||
section of the employee form, **and** appear on the *Employee Certifications* report. Once this
|
||||
is selected, a :guilabel:`Certification` field appears beneath the :guilabel:`Display
|
||||
Type` field. Using the drop-down menu, select the certification the employee took.
|
||||
|
||||
- :guilabel:`Description`: Enter a description for the certification in this field.
|
||||
- :guilabel:`Duration`: Click into the first field, and a calendar pop-over window appears. Click on
|
||||
the start and end dates for the certification validity period. When the correct dates are
|
||||
selected, click :icon:`fa-check` :guilabel:`Apply`, and both fields are populated.
|
||||
|
||||
.. image:: certifications/osha.png
|
||||
:align: center
|
||||
:alt: A certification form filled out for an OSHA certificate for construction.
|
||||
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 33 KiB |
@@ -0,0 +1,103 @@
|
||||
=========================
|
||||
Employee retention report
|
||||
=========================
|
||||
|
||||
It is possible to determine the retention rate for a company by modifying an existing report.
|
||||
|
||||
First, navigate to :menuselection:`Employees app --> Reporting --> Contracts` to open the
|
||||
:guilabel:`Employee Analysis` report. This report shows the number of all employees for the
|
||||
:guilabel:`Last 365 Days`, in a default :icon:`fa-line-chart` :guilabel:`Line Chart`.
|
||||
|
||||
.. image:: retention_report/employees-analysis.png
|
||||
:align: center
|
||||
:alt: The default Employees Analysis report.
|
||||
|
||||
Next, click the :guilabel:`Measures` :icon:`fa-caret-down` button in the upper-left corner,
|
||||
revealing a drop-down menu. Click :guilabel:`# Departure Employee` in the list, then click away from
|
||||
the drop-down menu to close it. Now, the report shows all the employees who were archived for the
|
||||
:guilabel:`Last 365 Days`.
|
||||
|
||||
To view this information in an easier format, click the :icon:`oi-view-pivot` :guilabel:`(Pivot)`
|
||||
icon in the upper-right corner, and the data is presented in a pivot table.
|
||||
|
||||
The various employees, organized by department, populate the rows. The columns display the following
|
||||
totals: the monthly :guilabel:`Wage`, the :guilabel:`Fuel Card` budget, total :guilabel:`Annual
|
||||
Employee Budget` (also referred to as the *annual salary*), the number of :guilabel:`New Employees`,
|
||||
as well as the number of :guilabel:`Departure Employees` (employees who left).
|
||||
|
||||
.. image:: retention_report/pivot-departures.png
|
||||
:align: center
|
||||
:alt: The Employees Analysis report, modified to show departed employees only.
|
||||
|
||||
Employee retention rate comparison report
|
||||
=========================================
|
||||
|
||||
It is possible to compare data only for employees who left, compared to the total current employees,
|
||||
between two separate time periods. This is commonly referred to as the *employee retention rate*.
|
||||
|
||||
To view these metrics, first open the :guilabel:`Employee Analysis` report by navigating to
|
||||
:menuselection:`Employees app --> Reporting --> Contracts`. Click the :icon:`oi-view-pivot`
|
||||
:guilabel:`(Pivot)` icon in the upper-right corner to view the information in a pivot table.
|
||||
|
||||
Next, click the :guilabel:`Measures` :icon:`fa-caret-down` button in the upper-left corner,
|
||||
revealing a drop-down menu. Click :guilabel:`# New Employees`, :guilabel:`Annual Employee Budget`,
|
||||
:guilabel:`Fuel Card`, and :guilabel:`Wage` in the list, to deselect these metrics and hide them in
|
||||
the table. Then, click :guilabel:`Count` at the bottom of the list to enable that metric.
|
||||
|
||||
Click away from the drop-down menu to close it. Now, the report shows all the employees who left the
|
||||
company (:guilabel:`# Departure Employee`), as well as the total number of employees
|
||||
(:guilabel:`Count`), for the :guilabel:`Last 365 Days`.
|
||||
|
||||
To compare the data for the current year with the previous year, click the :icon:`fa-caret-down`
|
||||
:guilabel:`(down arrow)` in the search bar, revealing multiple filter and grouping options. Click
|
||||
:guilabel:`Last 365 Days` in the :icon:`fa-filter` :guilabel:`Filters` column, to turn off that
|
||||
filter. Then, click :guilabel:`Date`, and click the current year (in this example, :guilabel:`2024`)
|
||||
from the resulting drop-down menu.
|
||||
|
||||
Once a selection is made beneath :guilabel:`Date` in the :icon:`fa-filter` :guilabel:`Filters`
|
||||
column, a :icon:`fa-adjust` :guilabel:`Comparison` column appears. Click :guilabel:`Date: Previous
|
||||
Year` in the new column, then click off of the drop-down menu to close it.
|
||||
|
||||
.. note::
|
||||
In Odoo, in order to access the :icon:`fa-adjust` :guilabel:`Comparison` column, a specific time
|
||||
*other than* :guilabel:`Last 365 Days` **must** be selected. If not, the :icon:`fa-adjust`
|
||||
:guilabel:`Comparison` column is **not** visible.
|
||||
|
||||
Now, the pivot table displays the total number of employees who left the company (:guilabel:`#
|
||||
Departure Employee`), as well as the total number of employees (:guilabel:`Count`) in the columns.
|
||||
These are further divided by the two different years, and also displays the :guilabel:`Variation`
|
||||
between the two.
|
||||
|
||||
The rows display the departments, and lists each individual employee for each department, in the
|
||||
rows.
|
||||
|
||||
For a more concise view of this report, click :icon:`fa-minus-square-o` :guilabel:`Total` above the
|
||||
top row of the departments and employees, to collapse the rows. Now, the table presents the total
|
||||
number of employees who left the company for both years, compared to the total number of employees
|
||||
for both years, including the difference, in a percentage.
|
||||
|
||||
.. example::
|
||||
In this example, :guilabel:`3` employees out of :guilabel:`83` left in 2023, and :guilabel:`8`
|
||||
employees out of :guilabel:`202` left in 2024. There was a :guilabel:`166.67%` increase in the
|
||||
employees who left in 2024 as compared to 2023. Additionally, there was a :guilabel:`143.37%`
|
||||
increase in the total number of employees in 2024 as compared to 2023.
|
||||
|
||||
.. image:: retention_report/comparison-years.png
|
||||
:align: center
|
||||
:alt: The report modified to show the difference between two years of employees who left.
|
||||
|
||||
To view more detailed rates for each department, click :icon:`fa-plus-square` :guilabel:`Total` in
|
||||
the single row, revealing a drop-down menu, and click :guilabel:`Department`. Click away from the
|
||||
drop-down to close it, and now the pivot table displays the total number of employees who left
|
||||
(:guilabel:`# Departure Employee`), the total number of employees (:guilabel:`Count`), and the
|
||||
:guilabel:`Variation` (in a percentage) for both 2023 and 2024, organized by department.
|
||||
|
||||
.. example::
|
||||
In this example, it can be determined that the :guilabel:`Management` department had the best
|
||||
retention rate in 2024 as compared to 2023, with a :guilabel:`Variation` rate of
|
||||
:guilabel:`-100%`. Additionally, it can be determined that the :guilabel:`Management / Research &
|
||||
Development` department had the most turnover, with a :guilabel:`Variation` of :guilabel:`300%`.
|
||||
|
||||
.. image:: retention_report/department-totals.png
|
||||
:align: center
|
||||
:alt: The expanded employee retention report by department.
|
||||
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
@@ -192,6 +192,12 @@ The order of the list does not affect the database in any way. However, it may b
|
||||
the vehicle categories in a specific order, for example, by size, or the numbers of passengers the
|
||||
vehicle can carry.
|
||||
|
||||
.. note::
|
||||
When used with the **Inventory** app, the :guilabel:`Max Weight` and :guilabel:`Max Volume`
|
||||
fields track a vehicle's capacity. This helps manage in-house deliveries by :doc:`showing how
|
||||
much space and weight remain for loading products
|
||||
<../../inventory_and_mrp/inventory/shipping_receiving/setup_configuration/dispatch>`.
|
||||
|
||||
.. image:: models/categories.png
|
||||
:align: center
|
||||
:alt: List view of the models in the fleet.
|
||||
|
||||
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 14 KiB |
@@ -665,25 +665,6 @@ field.
|
||||
|
||||
.. _payroll/salary-attachment-types:
|
||||
|
||||
Salary attachment types
|
||||
-----------------------
|
||||
|
||||
Salary attachments, also thought of as "wage garnishments", are portions of earnings taken out of a
|
||||
payslip for something specific. Much like all other aspects of payroll configurations, the types of
|
||||
salary attachments **must** be defined.
|
||||
|
||||
To view the currently configured salary attachments, navigate to :menuselection:`Payroll app -->
|
||||
Configuration --> Salary --> Salary Attachment Types`. The default salary attachment types are
|
||||
:guilabel:`Attachment of Salary`, :guilabel:`Assignment of Salary`, and :guilabel:`Child Support`.
|
||||
|
||||
To make a new type of salary attachment, click the :guilabel:`New` button. Then, enter the
|
||||
:guilabel:`Name`, the :guilabel:`Code` (used in the salary rules to compute payslips), and decide if
|
||||
it should have :guilabel:`No End Date`.
|
||||
|
||||
.. image:: payroll/new-attachment.png
|
||||
:align: center
|
||||
:alt: A new salary attachment form filled in.
|
||||
|
||||
Salary package configurator
|
||||
===========================
|
||||
|
||||
@@ -960,14 +941,20 @@ form.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`payroll/contracts`
|
||||
- :doc:`payroll/payslips`
|
||||
- :doc:`payroll/work_entries`
|
||||
- :doc:`payroll/salary_attachments`
|
||||
- :doc:`payroll/payslips`
|
||||
- :doc:`payroll/reporting`
|
||||
- :doc:`payroll/work_entry_analysis`
|
||||
- :doc:`payroll/salary_attachment`
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
payroll/contracts
|
||||
payroll/work_entries
|
||||
payroll/salary_attachments
|
||||
payroll/payslips
|
||||
payroll/reporting
|
||||
payroll/work_entry_analysis
|
||||
payroll/salary_attachment
|
||||
|
||||
@@ -178,97 +178,11 @@ spreadsheet view with the report added to it.
|
||||
.. _payroll/doc-storage:
|
||||
|
||||
.. note::
|
||||
If the *Documents* app is **not** installed, the :guilabel:`Insert in Spreadsheet` option places
|
||||
the newly-created spreadsheet in the *Dashboards* app.
|
||||
If the **Documents** app is **not** installed, the :guilabel:`Insert in Spreadsheet` option
|
||||
places the newly-created spreadsheet in the **Dashboards** app.
|
||||
|
||||
If the *Documents* application **is** installed, the spreadsheet has the option to be stored in
|
||||
either the *Dashboards* app or *Documents* app.
|
||||
|
||||
Work entry analysis
|
||||
-------------------
|
||||
|
||||
The default :guilabel:`Work entry analysis` report provides an overview of the validated work
|
||||
entries for the current month. To view this report, navigate to :menuselection:`Payroll app -->
|
||||
Reporting --> Work Entry Analysis`.
|
||||
|
||||
The work entries appear in a pivot table, with the default filters of `Current month: (Month)(Year)`
|
||||
and `Validated`. The various types of :doc:`work_entries` are listed on the left-hand side (x-axis),
|
||||
while the :guilabel:`Total` values appear along the top (the y-axis).
|
||||
|
||||
To change the displayed view, click the :guilabel:`➕ (plus)` icon next to the word
|
||||
:guilabel:`Total`, then click on one of the grouping options. The available options are
|
||||
:guilabel:`Work Entry Type`, :guilabel:`Employee`, and :guilabel:`Department`. If in a multi-company
|
||||
database, a :guilabel:`Company` option also appears.
|
||||
|
||||
To add a new group to sort the data, click :guilabel:`Add Custom Group`, then click one of the
|
||||
presented options.
|
||||
|
||||
.. tip::
|
||||
Wherever a :guilabel:`➕ (plus)` icon appears on a pivot table, the information can be further
|
||||
grouped. Click on a :guilabel:`➕ (plus)` icon to reveal the available grouping options.
|
||||
|
||||
Click on a :guilabel:`➖ (minus)` icon anywhere on the pivot table to remove that respective
|
||||
grouping.
|
||||
|
||||
It is possible to compare the current :guilabel:`Work entry analysis` report to the previous month
|
||||
or the previous year. To view these comparisons, click the :guilabel:`⬇️ (down arrow)` icon in the
|
||||
search bar to reveal the various :ref:`filter <payroll/filters>` and grouping options.
|
||||
|
||||
In the section titled :guilabel:`Comparison`, click on either :guilabel:`Current Month: Previous
|
||||
Period` or :guilabel:`Current Month: Previous Year`. The report updates and displays the previous
|
||||
time period values, as well as the :guilabel:`Variation` between the two.
|
||||
|
||||
.. image:: reporting/work-entry-comparison.png
|
||||
:align: center
|
||||
:alt: A pivot table comparing the work entries of the current month and the previous month.
|
||||
|
||||
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.
|
||||
|
||||
The data can also be inserted into a spreadsheet. Click the :guilabel:`Insert in Spreadsheet` button
|
||||
and 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.
|
||||
|
||||
.. note::
|
||||
The work entry analysis spreadsheet is :ref:`stored in the same locations <payroll/doc-storage>`
|
||||
as a pivot table.
|
||||
|
||||
Salary attachment report
|
||||
------------------------
|
||||
|
||||
The :guilabel:`Salary Attachment Report` shows all deductions or allocations per employee, such as
|
||||
child support payments and wage garnishments. To view this report, navigate to
|
||||
:menuselection:`Payroll app --> Reporting --> Salary Attachment Report`.
|
||||
|
||||
.. image:: reporting/attachment-of-salary.png
|
||||
:align: center
|
||||
:alt: View the Attachment of Salary report that shows all salary garnishments.
|
||||
|
||||
The employees are listed in the left-side column, while the different deductions are listed in the
|
||||
top row, organized by deduction and monthly individual payslips.
|
||||
|
||||
The report can be exported as an XLSX file, or inserted into a spreadsheet, using the corresponding
|
||||
buttons at the top.
|
||||
|
||||
Click the :guilabel:`Measures` button to reveal the options of what data can be displayed.
|
||||
:guilabel:`Assignment of salary`, :guilabel:`Attachment of salary`, :guilabel:`Child support`, and
|
||||
:guilabel:`Count` can all be selected or deselected by clicking on the item. If an item has a
|
||||
checkmark next to it, that information is displayed.
|
||||
|
||||
.. image:: reporting/attachment-measures.png
|
||||
:align: center
|
||||
:alt: Select the options to be displayed in the Salary Attachment Report.
|
||||
|
||||
The :guilabel:`Salary Attachment Report` can be compared to the report for the previous time period
|
||||
or the previous year. To view these comparisons, click the :guilabel:`⬇️ (down arrow)` icon in the
|
||||
search bar to reveal the various :ref:`filter <payroll/filters>` and grouping options.
|
||||
|
||||
In the section titled :guilabel:`Comparison`, click on either :guilabel:`Payslip End Date: Previous
|
||||
Period` or :guilabel:`Payslip End Date: Previous Year`. The report updates and displays the
|
||||
previous time period values, as well as the :guilabel:`Variation` between the two.
|
||||
If the **Documents** application *is* installed, the spreadsheet has the option to be stored in
|
||||
either the **Dashboards** app or **Documents** app.
|
||||
|
||||
.. _payroll/filters:
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 28 KiB |
@@ -0,0 +1,63 @@
|
||||
========================
|
||||
Salary attachment report
|
||||
========================
|
||||
|
||||
*Salary attachments* in Odoo refer to a portion of an employee's earnings that are designated for
|
||||
a specific purpose, both voluntary and involuntary. These can include contributions to a retirement
|
||||
plan, repayment of a loan, wage garnishments, or child support.
|
||||
|
||||
Voluntary salary attachments, such as repaying a loan, or contributing to a charity on a monthly
|
||||
basis, are considered *Assignments of Salary* in Odoo. Salary attachments that are required, such as
|
||||
a lawsuit settlement repayment, or repaying a tax lien, are considered *Attachments of Salary* in
|
||||
Odoo. Child support payments have their own category, and are simply referred to as *Child Support*
|
||||
in Odoo.
|
||||
|
||||
To view this report, navigate to :menuselection:`Payroll app --> Reporting --> Salary Attachment
|
||||
Report`. The :guilabel:`Salary Attachment Report` shows all deductions or allocations per employee,
|
||||
organized by payslip, in a default pivot table. The default filter is the end of the current year
|
||||
(:guilabel:`Payslip End Date: (year)`). The employees populate the rows, while the various
|
||||
deductions populate the columns, organized by type of deduction, and further grouped by individual
|
||||
payslip.
|
||||
|
||||
The default report contains **all** payslips for the current year, so the report typically contains
|
||||
a large number of columns. This could make it difficult to view all the data at once, as the report
|
||||
may be very wide and require scrolling to view all the data.
|
||||
|
||||
To view a condensed version of salary attachments, and have all the salary attachment columns
|
||||
visible on one page, click the :icon:`fa-minus-square-o` :guilabel:`Total` icon at the top of the
|
||||
report, above the various payslips.
|
||||
|
||||
This presents the salary attachments for the current year, and only displays three columns,
|
||||
:guilabel:`Attachment of Salary`, :guilabel:`Assignment of Salary`, and :guilabel:`Child Support.`
|
||||
|
||||
Each entry displays the total amount paid for each specific type of salary attachment, for each
|
||||
employee.
|
||||
|
||||
.. image:: salary_attachment/salary-attachment.png
|
||||
:alt: The Attachment of Salary report that shows all salary garnishments in a condensed view.
|
||||
|
||||
The report can be downloaded as an XLSX file, or :doc:`inserted into a spreadsheet
|
||||
<../../productivity/spreadsheet/insert>` using the corresponding buttons at the top.
|
||||
|
||||
Click the :guilabel:`Measures` button to reveal the options of what data is displayed.
|
||||
:guilabel:`Assignment of salary`, :guilabel:`Attachment of salary`, and :guilabel:`Child support`
|
||||
are all selected and visible, by default, while the :guilabel:`Count` option is not.
|
||||
|
||||
Click an option to either show or hide that particular metric. A :icon:`fa-check`
|
||||
:guilabel:`(checkmark)` icon indicates the data is visible.
|
||||
|
||||
Compare to previous year
|
||||
========================
|
||||
|
||||
The :guilabel:`Salary Attachment Report` can be compared to the report for the previous time period
|
||||
or the previous year.
|
||||
|
||||
To view these comparisons, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the
|
||||
search bar, then click either :guilabel:`Payslip End Date: Previous Period` or :guilabel:`Payslip
|
||||
End Date: Previous Year`, beneath the :icon:`fa-adjust` :guilabel:`Comparison` column.
|
||||
|
||||
The report updates and displays the current time period values, and the previous time period values,
|
||||
as well as the :guilabel:`Variation` between the two, in a percentage.
|
||||
|
||||
.. image:: salary_attachment/comparison-attachment.png
|
||||
:alt: The salary attachment report modified to compare to the previous year.
|
||||
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 23 KiB |
@@ -0,0 +1,154 @@
|
||||
==================
|
||||
Salary attachments
|
||||
==================
|
||||
|
||||
Salary attachments are portions of earnings taken directly out of a payslip for a specific purpose,
|
||||
whether voluntary or required.
|
||||
|
||||
When the deduction is voluntary, they are typically considered *deductions*. When the deduction is
|
||||
court-ordered, or involuntary, it is sometimes referred to as a *wage garnishment*. In Odoo, these
|
||||
are all universally called, *salary attachments*.
|
||||
|
||||
.. _payroll/salary-attachment/types:
|
||||
|
||||
Salary attachment types
|
||||
=======================
|
||||
|
||||
To view the currently configured salary attachment types, navigate to :menuselection:`Payroll app
|
||||
--> Configuration --> Salary Attachment Types`. The default salary attachment types are:
|
||||
:guilabel:`Attachment of Salary`, :guilabel:`Assignment of Salary`, and :guilabel:`Child Support`.
|
||||
|
||||
Each salary attachment type displays the :guilabel:`Name` of the attachment type, the
|
||||
:guilabel:`Code` used when calculating payslips, a checkbox to indicate if there is :guilabel:`No
|
||||
End Date`, and whether it is :guilabel:`Country` specific (or universal).
|
||||
|
||||
.. image:: salary_attachments/attachment-types.png
|
||||
:alt: The default salary attachment types.
|
||||
|
||||
Create new salary attachment types
|
||||
----------------------------------
|
||||
|
||||
.. danger::
|
||||
Upon installation of the **Payroll** application, the pre-configured default salary attachment
|
||||
types are linked to a variety of rules that are linked to various salary structures, as well as
|
||||
the installed :ref:`localization package <fiscal_localizations/packages>`.
|
||||
|
||||
It is **not** recommended to alter or modify **any** of the preconfigured salary attachment
|
||||
types, especially if they have been previously used on payslips in the database. Doing so may
|
||||
affect various salary rules, and can prevent the creation of payslips.
|
||||
|
||||
A new salary attachment type *can* be created, but this should only be done when absolutely
|
||||
necessary. All salary attachments can be associated with one of the three default salary
|
||||
attachment types.
|
||||
|
||||
To make a new type of salary attachment, click the :guilabel:`New` button, and a blank
|
||||
:guilabel:`Salary Attachment Types` form loads. Enter the :guilabel:`Name` for the new salary
|
||||
attachment type in the corresponding field. Next, enter the :guilabel:`Code` used in the salary
|
||||
rules to compute payslips. Last, tick the :guilabel:`No End Date` checkbox if this salary attachment
|
||||
never expires.
|
||||
|
||||
If in a multi-company database, with locations in multiple countries, a :guilabel:`Country` field
|
||||
also appears on the :guilabel:`Salary Attachment Types` form. Select the country the attachment
|
||||
applies to, or leave blank if it is universal.
|
||||
|
||||
.. _payroll/salary-attachment/create:
|
||||
|
||||
Create a salary attachment
|
||||
==========================
|
||||
|
||||
All salary attachments must be configured separately for each employee, for each type of salary
|
||||
attachment. To view the currently configured salary attachments, navigate to :menuselection:`Payroll
|
||||
app --> Contracts --> Salary Attachments`.
|
||||
|
||||
All salary attachments appear in a default list view, and displays the name of the
|
||||
:guilabel:`Employees`, :guilabel:`Description`, the salary attachment :guilabel:`Type`, the
|
||||
:guilabel:`Monthly Amount`, :guilabel:`Start Date`, and current :guilabel:`Status`.
|
||||
|
||||
To create a new salary attachment, click the :guilabel:`New` button in the top-left corner, and a
|
||||
blank :guilabel:`Salary Attachment` form loads. Enter the following information on the form:
|
||||
|
||||
- :guilabel:`Employees`: Using the drop-down menu, select the desired employees. Multiple employees
|
||||
can be listed in this field.
|
||||
- :guilabel:`Description`: Enter a short description of the salary attachment.
|
||||
- :guilabel:`Type`: Using the drop-down menu, select the specific :ref:`salary attachment type
|
||||
<payroll/salary-attachment/types>`.
|
||||
- :guilabel:`Start Date`: Using the calendar selector, select the date the salary attachment goes
|
||||
into effect.
|
||||
- :guilabel:`Estimated End Date`: This field is **not** modifiable, and **only** appears after the
|
||||
:guilabel:`Monthly Amount` field is populated. This field is the estimated date when the salary
|
||||
attachment will be completed. Today's date populates the field by default. Then, when the
|
||||
:guilabel:`Total Amount` field is populated, this date is updated.
|
||||
- :guilabel:`Document`: If any documentation is needed, such as a court order, click the
|
||||
:guilabel:`Upload your file` button, and a file explorer window loads. Select the desired document
|
||||
to attach it to the record. Only **one** document can be attached to a salary attachment.
|
||||
- :guilabel:`Monthly Amount`: Enter the amount taken out of each paycheck every month in this field.
|
||||
- :guilabel:`Total Amount`: This field **only** appears if the :ref:`salary attachment type
|
||||
<payroll/salary-attachment/types>` has no end date (the :guilabel:`No End Date` option is
|
||||
**not** ticked.)
|
||||
|
||||
.. image:: salary_attachments/salary-attachment-form.png
|
||||
:alt: The salary attachment form with all fields filled out.
|
||||
|
||||
Since the salary attachment form auto saves as the fields are populated, after making a salary
|
||||
attachment for an individual employee, there is no further action required.
|
||||
|
||||
If creating salary attachments for multiple employees on a single salary attachment form, after the
|
||||
form is filled out, click the :guilabel:`Create Individual Attachments` button. This creates
|
||||
separate salary attachments for each of the employees listed in the :guilabel:`Employees` field.
|
||||
|
||||
After the separate salary attachments have been created, the screen returns to the :guilabel:`Salary
|
||||
Attachment` dashboard, but with a :guilabel:`Description` filter, populated with the description
|
||||
filled in on the salary attachment form. All the salary attachments have a status of
|
||||
:guilabel:`Running`, since they are currently active. Clear the filter in the search box to view the
|
||||
default :guilabel:`Salary Attachment` dashboard in its entirety.
|
||||
|
||||
Manage salary attachments
|
||||
=========================
|
||||
|
||||
Salary attachments can have one of three statuses: *Running*, *Completed*, or *Canceled*. To view
|
||||
the current status of all salary attachments, navigate to :menuselection:`Payroll app --> Contracts
|
||||
--> Salary Attachments`.
|
||||
|
||||
All salary attachments appear in the order they were configured. To view the salary attachments by
|
||||
a particular metric, such as the :guilabel:`Status`, or :guilabel:`Type`, click on the column title
|
||||
to sort by that specific column.
|
||||
|
||||
Completed salary attachments
|
||||
----------------------------
|
||||
|
||||
When a salary attachment is created, it has a status of :guilabel:`Running`. Once the salary
|
||||
attachment is finished (the *Total Amount* entered on the :ref:`salary attachment form
|
||||
<payroll/salary-attachment/create>` has been paid in full), the status automatically changes to
|
||||
*Completed*, and the employee no longer has the money taken out of future paychecks.
|
||||
|
||||
If a salary attachment has been fulfilled, but has not automatically changed to *Completed*, the
|
||||
record can be manually updated. To change the status, open the *Salary Attachment* dashboard by
|
||||
navigating to :menuselection:`Payroll app --> Contracts --> Salary Attachments`.
|
||||
|
||||
Click on the record to update, and the detailed :guilabel:`Salary Attachment` form loads. On the
|
||||
individual :guilabel:`Salary Attachment` record, click the :guilabel:`Mark as Completed` button in
|
||||
the upper-left corner, and the status changes to :guilabel:`Completed`.
|
||||
|
||||
.. example::
|
||||
The following is an example of when a payroll manager may need to manually change a salary
|
||||
attachment from :guilabel:`Active` to :guilabel:`Cancelled`.
|
||||
|
||||
Rose Smith has a salary attachment for a lawsuit settlement, where she is required to pay
|
||||
$3,000.00. A salary attachment is created that takes $250.00 a month out of Rose's paycheck, to
|
||||
go towards this settlement payment.
|
||||
|
||||
After six months, Rose has paid $1,500.00 from her salary. She received a tax refund, and uses
|
||||
the money to pay off the remainder of the lawsuit settlement. After sending the relevant
|
||||
documentation to the payroll manager, showing the settlement has been paid in full, the payroll
|
||||
manager manually changes the status of her salary attachment to :guilabel:`Completed`.
|
||||
|
||||
Cancel salary attachments
|
||||
-------------------------
|
||||
|
||||
Any salary attachment can be cancelled at any time. To cancel a salary attachment, click on the
|
||||
individual attachment record from the main :guilabel:`Salary Attachment` dashboard to open the
|
||||
record. From the :guilabel:`Salary Attachment` record, click the :guilabel:`Cancel` button to cancel
|
||||
the salary attachment, and stop having the designated money taken out of future paychecks.
|
||||
|
||||
.. seealso::
|
||||
:doc:`salary_attachment`
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 18 KiB |
@@ -59,8 +59,8 @@ Enter the following information on the form:
|
||||
this field is left blank, it automatically populates once an employee is selected. The default
|
||||
entry is `Attendance: (Employee)`.
|
||||
- :guilabel:`Employee`: select the employee the work entry is for, using the drop-down menu.
|
||||
- :guilabel:`Work Entry Type`: select the :ref:`work entry type <payroll/work-entries-config>` using
|
||||
the drop-down menu.
|
||||
- :guilabel:`Work Entry Type`: select the :ref:`work entry type <payroll/work-entries>` using the
|
||||
drop-down menu.
|
||||
- :guilabel:`From` and :guilabel:`To`: enter the start (:guilabel:`From`) and end (:guilabel:`To`)
|
||||
dates and times for the work entry.
|
||||
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
===================
|
||||
Work entry analysis
|
||||
===================
|
||||
|
||||
The default *Work Entries Analysis* report provides an overview of the validated work entries for
|
||||
the current month. To view this report, navigate to :menuselection:`Payroll app --> Reporting -->
|
||||
Work Entry Analysis`.
|
||||
|
||||
The work entries appear in a pivot table, with the default filters of :guilabel:`Current month:
|
||||
(Month)(Year)` and :guilabel:`Validated`. The various types of :doc:`work_entries` populate the
|
||||
rows, while the :guilabel:`Total` values populate the only visible column.
|
||||
|
||||
To change the displayed information, click :icon:`fa-plus-square` :guilabel:`Total` above the main
|
||||
column, revealing a drop-down menu of available metrics. Click on one of the available groupings,
|
||||
and the data is further organized by that selected metric. The default options are :guilabel:`Work
|
||||
Entry Type`, :guilabel:`Employee`, and :guilabel:`Department`. If in a multi-company database, a
|
||||
:guilabel:`Company` option also appears.
|
||||
|
||||
Work entry analysis comparison
|
||||
==============================
|
||||
|
||||
It is possible to compare the work entries from one time period to a previous time period. To view
|
||||
this comparison, first navigate to :menuselection:`Payroll app --> Reporting --> Work Entry
|
||||
Analysis`.
|
||||
|
||||
Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, revealing a
|
||||
drop-down menu. Under the :icon:`fa-adjust` :guilabel:`Comparison` section, click on either
|
||||
:guilabel:`Current Month: Previous Period` or :guilabel:`Current Month: Previous Year`.
|
||||
|
||||
The report updates and displays the data for the current time period, data for the selected previous
|
||||
time period, as well as the :guilabel:`Variation` between the two, in a percentage.
|
||||
|
||||
.. image:: work_entry_analysis/work-entry-comparison.png
|
||||
:alt: A pivot table comparing the work entries of the current month and the previous month.
|
||||
|
||||
.. note::
|
||||
If no work entries for a specific :ref:`work entry type <payroll/work-entries>` 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.
|
||||
|
||||
Additionally, if the default :guilabel:`Current month: (Month)(Year)` filter is removed from the
|
||||
search bar, the :guilabel:`Comparison` column does **not** appear; there must be a time-frame
|
||||
selected to view the :guilabel:`Comparison` column.
|
||||
|
||||
Use case: overtime report comparison
|
||||
====================================
|
||||
|
||||
It is possible to alter the *Work Entries Analysis* report to show a comparison of only overtime
|
||||
work entries, grouped by employee, for a specific time period. To view this data, first navigate to
|
||||
the default *Work entry analysis* report by going to :menuselection:`Payroll app --> Reporting -->
|
||||
Work Entry Analysis`.
|
||||
|
||||
Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, revealing a
|
||||
drop-down menu. Under the :icon:`fa-filter` :guilabel:`Filters` column, click :guilabel:`Add Custom
|
||||
Filter`, and a :guilabel:`Add Custom Filter` pop-up window appears.
|
||||
|
||||
Using the drop-down menu, select :guilabel:`Work Entry Type` for the first field, leave the middle
|
||||
field as-is (with :guilabel:`is in` populating the field), and select :guilabel:`Overtime Hours` for
|
||||
the last field. Click :guilabel:`Add`, and all other work entry types disappear, and
|
||||
:guilabel:`Overtime Hours` appear in the sole row.
|
||||
|
||||
To compare overtime from the current month to the previous month, to see which month had more
|
||||
overtime logged, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon again in the search
|
||||
bar. Under the :icon:`fa-adjust` :guilabel:`Comparison` section, click :guilabel:`Current Month:
|
||||
Previous Period`. Click away from the drop-down menu to close it.
|
||||
|
||||
Now, the report displays the :guilabel:`Overtime Hours` for the current month and the previous
|
||||
month, along with the :guilabel:`Variation`, in a percentage.
|
||||
|
||||
To view which employees received the most overtime, click :icon:`fa-plus-square` :guilabel:`Overtime
|
||||
Hours`, revealing a drop-down menu of options. Click :guilabel:`Employee`, and all employees with
|
||||
overtime work entries for either the current or previous month appears.
|
||||
|
||||
In this example, it can be determined that :guilabel:`Marc Demo` worked the most overtime in
|
||||
:guilabel:`August 2024`, whereas :guilabel:`Beth Evans` worked the most overtime hours in
|
||||
:guilabel:`September 2024`. Additionally, :guilabel:`Mitchell Admin` had the largest variation
|
||||
change, with a :guilabel:`-100%` change from :guilabel:`August 2024` to :guilabel:`September 2024`.
|
||||
|
||||
.. image:: work_entry_analysis/variation.png
|
||||
:alt: A pivot table comparing the overtime from September 2024 with August 2024.
|
||||
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 22 KiB |
@@ -167,6 +167,8 @@ warehouse. Next, in the :guilabel:`Applicable on` section, tick the :guilabel:`P
|
||||
|
||||
Route with "Packagings" selected, with "Products" and "Warehouses" not selected.
|
||||
|
||||
.. _inventory/product_management/route-on-packaging:
|
||||
|
||||
Apply route on packaging
|
||||
------------------------
|
||||
|
||||
|
||||
@@ -9,4 +9,6 @@ Inventory valuation
|
||||
|
||||
inventory_valuation/inventory_valuation_config
|
||||
inventory_valuation/using_inventory_valuation
|
||||
inventory_valuation/integrating_landed_costs
|
||||
inventory_valuation/landed_costs
|
||||
inventory_valuation/valuation_by_lots
|
||||
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
Landed costs
|
||||
============
|
||||
|
||||
.. _inventory/reporting/landed_costs:
|
||||
|
||||
.. |RfQ| replace:: :abbr:`RfQ (Request for Quotation)`
|
||||
.. |PO| replace:: :abbr:`PO (Purchase Order)`
|
||||
.. |FIFO| replace:: :abbr:`FIFO (First In First Out)`
|
||||
@@ -32,8 +30,7 @@ Costs` feature in the :guilabel:`Valuation` section.
|
||||
Click the :guilabel:`Default Journal` drop-down menu to reveal a list of accounting journals. Select
|
||||
a journal for which all accounting entries related to landed costs should be recorded.
|
||||
|
||||
.. image:: integrating_landed_costs/integrating-landed-costs-enabled-setting.png
|
||||
:align: center
|
||||
.. image:: landed_costs/integrating-landed-costs-enabled-setting.png
|
||||
:alt: Landed Costs feature and resulting Default Journal field in the Inventory settings.
|
||||
|
||||
Create landed cost product
|
||||
@@ -65,17 +62,16 @@ appears below it, prompting a selection. Clicking that drop-down menu reveals th
|
||||
- :guilabel:`By Weight`: splits the cost, according to the weight of the products in the receipt.
|
||||
- :guilabel:`By Volume`: splits the cost, according to the volume of the products in the receipt.
|
||||
|
||||
.. image:: integrating_landed_costs/integrating-landed-costs-landed-cost-product.png
|
||||
:align: center
|
||||
.. image:: landed_costs/integrating-landed-costs-landed-cost-product.png
|
||||
:alt: Is a Landed Cost checkbox and Default Split Method on service type product form.
|
||||
|
||||
When creating new vendor bills, this product can be added as an invoice line as a landed cost.
|
||||
|
||||
.. important::
|
||||
To apply a landed cost on a vendor bill, the products included in the original |PO| **must**
|
||||
belong to a *Product Category* with its *Force Removal Strategy* set to |FIFO|. The *Costing
|
||||
Method* can be set to either |AVCO| or |FIFO|, and the valuation method can be :doc:`manual
|
||||
<using_inventory_valuation>` or :doc:`automatic <inventory_valuation_config>`.
|
||||
To apply a landed cost on a vendor bill, products in the original |PO| **must** belong to a
|
||||
*Product Category* with a *Costing Method* of either |AVCO| or |FIFO|, and the valuation method
|
||||
can be :doc:`manual <using_inventory_valuation>` or :doc:`automatic
|
||||
<inventory_valuation_config>`.
|
||||
|
||||
Create purchase order
|
||||
=====================
|
||||
@@ -105,8 +101,7 @@ menu in the :guilabel:`Product` column to select the previously-created landed c
|
||||
the :icon:`fa-cloud-upload` :guilabel:`(cloud with arrow)` icon to manually save and update the
|
||||
draft bill.
|
||||
|
||||
.. image:: integrating_landed_costs/integrating-landed-costs-checkboxes.png
|
||||
:align: center
|
||||
.. image:: landed_costs/integrating-landed-costs-checkboxes.png
|
||||
:alt: Landed Costs column checkboxes for product and landed cost.
|
||||
|
||||
In the :guilabel:`Landed Costs` column, the product ordered from the vendor does **not** have its
|
||||
@@ -115,8 +110,7 @@ costs from all other costs displayed on the bill.
|
||||
|
||||
Additionally, at the top of the form, a :guilabel:`Create Landed Costs` button appears.
|
||||
|
||||
.. image:: integrating_landed_costs/integrating-landed-costs-create-button.png
|
||||
:align: center
|
||||
.. image:: landed_costs/integrating-landed-costs-create-button.png
|
||||
:alt: Create Landed Costs button on vendor bill.
|
||||
|
||||
Add landed cost
|
||||
@@ -131,8 +125,7 @@ product line in the :guilabel:`Additional Costs` tab.
|
||||
From the :guilabel:`Landed Cost` form, click the :guilabel:`Transfers` drop-down menu, and select
|
||||
which transfer the landed cost belongs to.
|
||||
|
||||
.. image:: integrating_landed_costs/integrating-landed-costs-transfers-menu.png
|
||||
:align: center
|
||||
.. image:: landed_costs/integrating-landed-costs-transfers-menu.png
|
||||
:alt: Landed cost form with selected receipt transfer.
|
||||
|
||||
.. tip::
|
||||
@@ -171,6 +164,5 @@ To view the valuation of *every* product, including landed costs, navigate to
|
||||
Click into the journal entry to view the :guilabel:`Journal Items`, and other information about
|
||||
the entry.
|
||||
|
||||
.. image:: integrating_landed_costs/integrating-landed-costs-journal-entry.png
|
||||
:align: center
|
||||
.. image:: landed_costs/integrating-landed-costs-journal-entry.png
|
||||
:alt: Journal Entry form for landed cost created from vendor bill.
|
||||
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
@@ -108,6 +108,8 @@ available during a prior specified date can be seen and selected.
|
||||
the teal :guilabel:`➡️ (right arrow)` button to the right of the :guilabel:`Reference` column
|
||||
value.
|
||||
|
||||
.. _inventory/product_management/update-unit-price:
|
||||
|
||||
Update product unit price
|
||||
-------------------------
|
||||
|
||||
|
||||
@@ -0,0 +1,209 @@
|
||||
================================
|
||||
Valuation by lots/serial numbers
|
||||
================================
|
||||
|
||||
Track :doc:`inventory valuation <using_inventory_valuation>` by :doc:`lots or serial numbers
|
||||
<../../product_management/product_tracking>` to:
|
||||
|
||||
#. :ref:`Compare and differentiate purchasing cost <inventory/product_management/view-valuation>`,
|
||||
based on lot or serial numbers.
|
||||
#. Track the actual cost of manufactured products, based on the real cost of each tracked component
|
||||
used.
|
||||
#. Depreciate specific lot or serial numbers when they :doc:`sit in stock for too long
|
||||
<../../warehouses_storage/reporting/aging>`.
|
||||
|
||||
.. important::
|
||||
Please read this :doc:`introduction to inventory valuation <inventory_valuation_config>` before
|
||||
setting up valuation by lot/serial numbers.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To enable valuation by lots or serial numbers, begin by enabling the :ref:`Lots and Serial Numbers
|
||||
feature <inventory/product_management/enable-lot-serial>`. After that, go to
|
||||
:menuselection:`Inventory app --> Products --> Products`, and select the desired product, or create
|
||||
a new product, by clicking :guilabel:`New`.
|
||||
|
||||
On the product form, in the :guilabel:`Category` field, choose a product category. Ensure the
|
||||
product category's :ref:`Costing Method <inventory/warehouses_storage/costing_methods>` is set to
|
||||
*First In First Out (FIFO)* or *Average Cost (AVCO)*.
|
||||
|
||||
.. tip::
|
||||
To check the costing method set on the product category, hover over the :guilabel:`Category`
|
||||
field, and click the :icon:`oi-arrow-right` :guilabel:`(Internal Link)` icon.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Costing methods <inventory/warehouses_storage/costing_methods>`
|
||||
|
||||
Next, activate the product to be tracked by lots or serial numbers by ticking the :guilabel:`Track
|
||||
Inventory` checkbox. Then, click the adjacent field that appears, and choose either :guilabel:`By
|
||||
Lots` or :guilabel:`By Unique Serial Number` from the resulting drop-down menu.
|
||||
|
||||
Doing so makes the :guilabel:`Valuation by Lot/Serial number` checkbox appear below it. Tick that
|
||||
checkbox, and the configuration to track valuation by lot or serial numbers is complete.
|
||||
|
||||
.. figure:: valuation_by_lots/product-form.png
|
||||
:alt: Product form showing the Valuation by Lot or Serial Number feature.
|
||||
|
||||
Product form showing the Valuation by Lot or Serial Number feature
|
||||
|
||||
Valuation layers
|
||||
================
|
||||
|
||||
To understand how valuation by lots and serial numbers works, consider these scenarios:
|
||||
|
||||
#. :ref:`Purchase and sell products <inventory/product_management/valuation-cost-example>`: cost is
|
||||
calculated based on the *product category's* costing method.
|
||||
#. :ref:`Create new lot/serial numbers <inventory/product_management/valuation-cost-new>` using an
|
||||
inventory adjustment: value of the new lot/serial number is assigned to the cost from the product
|
||||
form.
|
||||
#. Inventory adjustment to update quantities for an :ref:`existing lot/serial number
|
||||
<inventory/product_management/valuation-cost-existing>`: value is assigned based on the most
|
||||
recent cost for that lot/serial number.
|
||||
|
||||
For both :abbr:`AVCO (Average Cost)` and :abbr:`FIFO (First In First Out)` methods, the *Cost* field
|
||||
on the product form is calculated using this formula:
|
||||
|
||||
:math:`Avg~Cost = \frac{Total~Value}{Total~Qty}`
|
||||
|
||||
.. _inventory/product_management/valuation-cost-example:
|
||||
|
||||
Purchase products
|
||||
-----------------
|
||||
|
||||
Consider how purchasing products affect the inventory valuation, in the table below.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* -
|
||||
- Quantity
|
||||
- Lot number
|
||||
- Math
|
||||
- Average cost on product form
|
||||
* - Empty stock
|
||||
- 0.00
|
||||
-
|
||||
-
|
||||
- $0
|
||||
* - Day 1: Receive one product at $10/unit
|
||||
- 1.00
|
||||
- LOT 1
|
||||
- :math:`\frac{10}{1}`
|
||||
- $10
|
||||
* - Day 2: Receive another product at $20/unit
|
||||
- 1.00
|
||||
- LOT 2
|
||||
- :math:`\frac{10+20}{2}`
|
||||
- $15
|
||||
|
||||
.. figure:: valuation_by_lots/lip-gloss.png
|
||||
:alt: Show Cost on the product form.
|
||||
|
||||
As a result, the product form displays an average cost of $15 in the **Cost** field.
|
||||
|
||||
.. _inventory/product_management/valuation-cost-new:
|
||||
|
||||
Create new lot/serial number
|
||||
----------------------------
|
||||
|
||||
Creating a new lot/serial number through an :doc:`inventory adjustment
|
||||
<../../warehouses_storage/inventory_management/count_products>` assigns the same value as the cost
|
||||
on the product form.
|
||||
|
||||
To make an inventory adjustment, and assign a lot number, go to :menuselection:`Inventory app -->
|
||||
Operations --> Physical Inventory`. Then, click :guilabel:`New`.
|
||||
|
||||
In the new inventory adjustment line that appears, set the :guilabel:`Product`, create the
|
||||
:guilabel:`Lot/Serial Number`, set the :guilabel:`Counted Quantity`, and click :icon:`fa-floppy-o`
|
||||
:guilabel:`Apply`.
|
||||
|
||||
To view the valuation layer, go to :menuselection:`Inventory app --> Reporting --> Valuation`. The
|
||||
:guilabel:`Total Value` per unit matches the *Cost* on the product form.
|
||||
|
||||
.. example::
|
||||
Continuing the example in the table above, when the product cost is `$15`, the valuation for a
|
||||
newly-created `LOT3` is also be `$15`.
|
||||
|
||||
.. image:: valuation_by_lots/create-new.png
|
||||
:alt: Show inventory adjustment valuation.
|
||||
|
||||
.. _inventory/product_management/valuation-cost-existing:
|
||||
|
||||
Existing lot/serial number
|
||||
--------------------------
|
||||
|
||||
When adjusting the quantity of an existing lot/serial number, the value is based on the most recent
|
||||
valuation layer for that specific lot/serial number.
|
||||
|
||||
.. example::
|
||||
Continuing the example in the table above, the value for `LOT 1` is `$10`.
|
||||
|
||||
So, when the quantity is updated from `1.00` to `2.00`, the additional quantity is also valued at
|
||||
`$10`, reflecting the latest valuation layer for `LOT 1`.
|
||||
|
||||
.. figure:: valuation_by_lots/existing.png
|
||||
:alt: Show valuation of LOT 1 getting updated.
|
||||
|
||||
The inventory adjustment (top line) is valued the same as LOT 1 (bottom line).
|
||||
|
||||
.. _inventory/product_management/view-valuation:
|
||||
|
||||
View valuation
|
||||
==============
|
||||
|
||||
To find the average cost of a specific lot/serial number, go to :menuselection:`Inventory app -->
|
||||
Products --> Lots/Serial Numbers`, and select the desired record.
|
||||
|
||||
Both the :guilabel:`Cost` and :guilabel:`Average Cost` fields show a unit's average cost. The
|
||||
:guilabel:`Total Value` reflects the total on-hand value for that lot/serial number.
|
||||
|
||||
.. important::
|
||||
Ensure the costing method is set to *First In First Out (FIFO)* or *Average Cost (AVCO)* to
|
||||
display the cost on this page.
|
||||
|
||||
.. figure:: valuation_by_lots/lot.png
|
||||
:alt: Show cost of the lot/serial number.
|
||||
|
||||
Lot form, displaying **Cost** field. The **Valuation** smart button is in the top-right.
|
||||
|
||||
Valuation layers of a lot/serial number can be viewed through the :ref:`valuation report
|
||||
<inventory/product_management/valuation-report>`, or by clicking the lot/serial number's
|
||||
:guilabel:`Valuation` smart button. These detailed, line-by-line records can help determine how each
|
||||
inventory move of the specific lot/serial number affects its valuation.
|
||||
|
||||
.. _inventory/product_management/valuation-report:
|
||||
|
||||
Valuation report
|
||||
----------------
|
||||
|
||||
Display the valuation of lots and serial numbers in the database by going to
|
||||
:menuselection:`Inventory app --> Reporting --> Valuation`.
|
||||
|
||||
On the resulting :guilabel:`Stock Valuation` report, click the search bar, and in the
|
||||
:icon:`oi-group` :guilabel:`Group By` section of the resulting drop-down menu, select
|
||||
:guilabel:`Lot/Serial number`.
|
||||
|
||||
.. tip::
|
||||
Click the :icon:`fa-plus` :guilabel:`(plus)` icon to the right of a collapsed lot number line to
|
||||
:ref:`manually modify the cost <inventory/product_management/update-unit-price>`.
|
||||
|
||||
This is useful for adjusting individual lot prices when a purchase order or bill includes
|
||||
multiple lots/serial numbers, as initial prices are identical upon reception.
|
||||
|
||||
.. image:: valuation_by_lots/stock-valuation.png
|
||||
:alt: Show valuation report, by lots.
|
||||
|
||||
Valuation smart button
|
||||
----------------------
|
||||
|
||||
To access a filtered part of the *Stock Valuation* report, specific to a lot or serial number, go to
|
||||
:menuselection:`Inventory app --> Products --> Lots/Serial Numbers`, and select the desired item.
|
||||
|
||||
On the :guilabel:`Lot/Serial Numbers` page, click the :guilabel:`Valuation` smart button.
|
||||
|
||||
.. figure:: valuation_by_lots/lot-stock-valuation.png
|
||||
:alt: All stock moves relating to `LOT 1`.
|
||||
|
||||
All stock moves that affect the valuation of `LOT 1`.
|
||||