Compare commits
158 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b0f322ffd6 | |||
| 00d78c39e4 | |||
| 74c00734f0 | |||
| 1a4e3d6163 | |||
| b9cdeb304a | |||
| 18be17dada | |||
| 682a290793 | |||
| 649b6bcd5c | |||
| 9d4fc6cd55 | |||
| fb1f81f735 | |||
| 50d0d32bf6 | |||
| f84c00cb0d | |||
| 70701aa589 | |||
| 85cb4170af | |||
| a8292df22f | |||
| 8ab0935d74 | |||
| 9486fece94 | |||
| cd31079f69 | |||
| 2935c3b2df | |||
| b00ae1f3b0 | |||
| 0f87ffef1a | |||
| 23e773f31e | |||
| a1371aee87 | |||
| f2f9b32a1d | |||
| ad06489c98 | |||
| 86fa534deb | |||
| 3667e71c92 | |||
| 599e50159e | |||
| cc7857b363 | |||
| 4b3fecf2cb | |||
| 1f788bf750 | |||
| 0edc606b42 | |||
| 8377f9f068 | |||
| b81c06ecef | |||
| 36de103e3a | |||
| 3d920ded85 | |||
| 2b6fa74e40 | |||
| 7674dbdbbc | |||
| a76635c09c | |||
| d4565c6c20 | |||
| 81b1a9fd8e | |||
| d91cead9e7 | |||
| 4827f3fe20 | |||
| 4a24238376 | |||
| e6d68071fc | |||
| bce2a875c5 | |||
| b738a4e002 | |||
| 3da71625f1 | |||
| 833109636a | |||
| 044670f15e | |||
| 1bb11f0654 | |||
| 63789b0aa7 | |||
| 04aacf8863 | |||
| e180e1066f | |||
| 7f09bae364 | |||
| ce069df416 | |||
| d55739b2c5 | |||
| 32c7993e1c | |||
| c1ea6d7a38 | |||
| abb2e04f10 | |||
| 479ab2028e | |||
| e8c6f3421c | |||
| 54a9fedea2 | |||
| 3806da48e7 | |||
| f836a2c5ad | |||
| f7fd7b09df | |||
| 01f78636f8 | |||
| 54064a06ef | |||
| 7d92fb64f3 | |||
| 6435abfbad | |||
| 1ed9dd99d8 | |||
| a04bb90354 | |||
| 22c18c0165 | |||
| b8e1f50ea6 | |||
| 89a11e2e96 | |||
| 5df8a40c6e | |||
| 07ac9eda1f | |||
| 27a3014633 | |||
| c94ab5301c | |||
| b593192db4 | |||
| 4f198849bb | |||
| 7a388707bc | |||
| 813dba5b92 | |||
| 96f521a160 | |||
| edffa80d3c | |||
| 7d608d8a0e | |||
| d9441dcf1c | |||
| 8ad9f28f24 | |||
| 80dbfbdd15 | |||
| a6e04372a8 | |||
| dd93828247 | |||
| baf256fc40 | |||
| fbadb8cca0 | |||
| 9f94e19837 | |||
| 11f3f830a8 | |||
| 19058c1876 | |||
| 33d781c5a5 | |||
| 467e2f2550 | |||
| 0dadc8e580 | |||
| 90bab61e66 | |||
| 862d07ba5b | |||
| 757c4ec23e | |||
| 47a9da91ac | |||
| b846ff3a57 | |||
| a0e0e994a6 | |||
| 03d435ea31 | |||
| 201c82d9c9 | |||
| a164b8ab65 | |||
| 05500b1416 | |||
| ce5a8d554d | |||
| 0d624f6c3e | |||
| 93b07b8a25 | |||
| b93a4f78dd | |||
| b774e6f99b | |||
| 6cf5d44380 | |||
| 14a5b77169 | |||
| fff0e0f2a7 | |||
| e04e586ef4 | |||
| 16d2e1582f | |||
| cbd8f2e8d9 | |||
| 410ee3fe39 | |||
| cd19ebd5ac | |||
| 047cf49add | |||
| c8f509746d | |||
| c74b788b8f | |||
| 9b93e7788e | |||
| b306f91ed4 | |||
| ce5973e335 | |||
| e68deaf9d6 | |||
| a18a378a87 | |||
| 64db022a95 | |||
| 48bc8793a3 | |||
| 1695ad998b | |||
| 0557514788 | |||
| 2e7f7b0dc5 | |||
| 2b98d9c304 | |||
| b10d17af6a | |||
| 11b77ac549 | |||
| f9f855cd2e | |||
| 4734ddb7be | |||
| 3606b35230 | |||
| 33244724b0 | |||
| 6535c1d587 | |||
| 99e8ebf5de | |||
| f83fce2125 | |||
| 93e76fe08b | |||
| 4ee7077ac8 | |||
| e9b1f18822 | |||
| f6107b4858 | |||
| dbf69f4019 | |||
| b0627464e5 | |||
| 3bfd593757 | |||
| 35931b493d | |||
| 2c38a625e1 | |||
| 9dac99024f | |||
| d11dcd33d1 | |||
| 59afd5062d | |||
| 88880b8915 |
@@ -41,9 +41,8 @@ current_major_version = current_major_branch.replace('.0', '')
|
||||
# The minimal Sphinx version required to build the documentation.
|
||||
needs_sphinx = '3.0.0'
|
||||
|
||||
# The default language in which the documentation is written. It is set to `None` because Sphinx
|
||||
# considers that no language means 'en'.
|
||||
language = None
|
||||
# The default language in which the documentation is written.
|
||||
language = 'en'
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
@@ -65,6 +64,8 @@ exclude_patterns = [
|
||||
# See https://docutils.sourceforge.io/docs/ref/rst/roles.html#standard-roles for other roles.
|
||||
default_role = 'literal'
|
||||
|
||||
# Global config to lazy load images by default
|
||||
image_loading = 'lazy'
|
||||
|
||||
# Whether scaled down images should be be wrapped in a `<a/>` tag linking to the image file or not.
|
||||
html_scaled_image_link = False
|
||||
@@ -498,7 +499,7 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
|
||||
_root = app.config.project_root
|
||||
else:
|
||||
# Project root like .../documentation/_build/html/14.0/fr
|
||||
_root = re.sub(rf'(/{app.config.version})?(/{app.config.language})?$', '', app.outdir)
|
||||
_root = re.sub(rf'(/{app.config.version})?(/{app.config.language})?$', '', str(app.outdir))
|
||||
# If the canonical version is not set, assume that the project has a single version
|
||||
_canonical_version = app.config.canonical_version or app.config.version
|
||||
_version = _version or app.config.version
|
||||
|
||||
@@ -21,7 +21,7 @@ turned into a testing environment.
|
||||
Deactivated features
|
||||
====================
|
||||
|
||||
Here is a non-exhaustive list of the deactivated parameters:
|
||||
Here is a non-exhaustive list of the deactivated features:
|
||||
|
||||
- all planned actions (e.g., automatic invoicing of subscriptions, mass mailing, etc.)
|
||||
- outgoing emails
|
||||
@@ -29,6 +29,7 @@ Here is a non-exhaustive list of the deactivated parameters:
|
||||
- payment providers
|
||||
- delivery methods
|
||||
- :abbr:`IAP (In-App Purchase)` tokens
|
||||
- website visibility (prevent search engines from indexing your site)
|
||||
|
||||
.. note::
|
||||
**A red banner at the top of the screen is displayed on the neutralized database so that it can
|
||||
|
||||
@@ -277,18 +277,22 @@ Dependencies
|
||||
|
||||
.. tab:: Debian/Ubuntu
|
||||
|
||||
For Debian-based systems, the packages are listed in the `debian/control
|
||||
<{GITHUB_PATH}/debian/control>`_ file of the Odoo sources.
|
||||
|
||||
On Debian/Ubuntu, the following commands should install the required packages:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ cd /CommunityPath
|
||||
$ sed -n -e '/^Depends:/,/^Pre/ s/ python3-\(.*\),/python3-\1/p' debian/control | sudo xargs apt-get install -y
|
||||
$ cd odoo #CommunityPath
|
||||
$ sudo ./setup/debinstall.sh
|
||||
|
||||
The `setup/debinstall.sh` script will parse the `debian/control
|
||||
<{GITHUB_PATH}/debian/control>`_ file and install the found packages.
|
||||
|
||||
.. tab:: Install with pip
|
||||
|
||||
.. warning::
|
||||
Using pip may lead to security issues and broken dependencies; only do this if you
|
||||
know what you are doing.
|
||||
|
||||
As some of the Python packages need a compilation step, they require system libraries to
|
||||
be installed.
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ This matrix shows the support status of every version.
|
||||
- November 2023
|
||||
- October 2026 (planned)
|
||||
* - Odoo saas~16.4
|
||||
- |green|
|
||||
- |red|
|
||||
- N/A
|
||||
- N/A
|
||||
- August 2023
|
||||
|
||||
@@ -272,9 +272,6 @@ Upgrading the production database
|
||||
|
||||
Once the :ref:`tests <upgrade/test_your_db>` are completed and you are confident that the upgraded
|
||||
database can be used as your main database without any issues, it is time to plan the go-live day.
|
||||
It can be planned in coordination with Odoo's upgrade support analysts by `submitting a ticket for
|
||||
an issue related to my future upgrade (I am testing an upgrade)
|
||||
<https://odoo.com/help?stage=migration>`_.
|
||||
|
||||
Your production database will be unavailable during its upgrade. Therefore, we recommend planning
|
||||
the upgrade at a time when the use of the database is minimal.
|
||||
|
||||
@@ -7,5 +7,6 @@ Odoo essentials
|
||||
essentials/activities
|
||||
essentials/reporting
|
||||
essentials/search
|
||||
essentials/contacts
|
||||
essentials/export_import_data
|
||||
essentials/in_app_purchase
|
||||
|
||||
@@ -2,20 +2,22 @@
|
||||
Activities
|
||||
==========
|
||||
|
||||
.. |clock| replace:: :icon:`fa-clock-o` :guilabel:`(clock)` icon
|
||||
|
||||
*Activities* are follow-up tasks tied to a record in an Odoo database.
|
||||
|
||||
.. _activities/important:
|
||||
|
||||
The icon used to display activities varies depending on the :ref:`activity type <activities/types>`:
|
||||
The icon used to display activities varies, depending on the :ref:`activity type
|
||||
<activities/types>`:
|
||||
|
||||
- :guilabel:`🕘 (clock)`: the default icon, which appears if nothing is scheduled.
|
||||
- :guilabel:`📞 (phone)`: this icon appears if a phone call is scheduled.
|
||||
- :guilabel:`✉️ (envelope)`: this icon appears if an email is scheduled.
|
||||
- :guilabel:`✔️ (checkmark)`: this icon appears if a to-do is scheduled.
|
||||
- :guilabel:`(group of people)`: this icon appears if a meeting is scheduled.
|
||||
- :guilabel:`(arrow pointing up above a line)`: this icon appears if a document is scheduled to be
|
||||
uploaded.
|
||||
- :guilabel:`(pencil in a box)`: this icon appears if a signature request is scheduled.
|
||||
- :icon:`fa-clock-o` :guilabel:`(clock)` icon: the default activities icon.
|
||||
- :icon:`fa-phone` :guilabel:`(phone)` icon: a phone call is scheduled.
|
||||
- :icon:`fa-envelope` :guilabel:`(envelope)` icon: an email is scheduled.
|
||||
- :icon:`fa-check` :guilabel:`(check)` icon: a "to-do" is scheduled.
|
||||
- :icon:`fa-users` :guilabel:`(people)` icon: a meeting is scheduled.
|
||||
- :icon:`fa-upload` :guilabel:`(upload)` icon: a document is scheduled to be uploaded.
|
||||
- :icon:`fa-pencil-square-o` :guilabel:`(request signature)` icon: a signature request is scheduled.
|
||||
|
||||
Schedule activities
|
||||
===================
|
||||
@@ -44,13 +46,9 @@ Schedule Activity form <activities/form>`.
|
||||
Kanban view
|
||||
-----------
|
||||
|
||||
Another way that activities are created is from the Kanban view in an application.
|
||||
Activities can also be created from the :icon:`oi-view-kanban` :guilabel:`(Kanban)` view.
|
||||
|
||||
.. image:: activities/kanban.png
|
||||
:align: center
|
||||
:alt: The Kanban icon in the top menu, highlighted.
|
||||
|
||||
To do so, click on the :guilabel:`🕘 (clock)` icon located at the bottom of an individual record.
|
||||
To do so, click on the |clock| located at the bottom of an individual record.
|
||||
|
||||
Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Schedule Activity form
|
||||
<activities/form>`.
|
||||
@@ -60,28 +58,26 @@ Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Sch
|
||||
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
|
||||
|
||||
.. note::
|
||||
If a record already has a scheduled activity, the :guilabel:`🕘 (clock)` icon is replaced by the
|
||||
icon that represents the existing scheduled activity. Click on the activity type's icon to
|
||||
schedule another activity.
|
||||
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
|
||||
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
|
||||
|
||||
.. _activities/list:
|
||||
|
||||
List view
|
||||
---------
|
||||
|
||||
Activities can also be created from a list view.
|
||||
Activities can also be created from a :icon:`oi-view-list` :guilabel:`(list)` view.
|
||||
|
||||
If the :guilabel:`Activities` column is hidden, reveal it using the :guilabel:`(additional options
|
||||
toggle)` icon in the far-right of the top row, represented by two horizontal lines with two dots.
|
||||
If the :guilabel:`Activities` column is hidden, reveal it using the :icon:`oi-settings-adjust`
|
||||
:guilabel:`(settings adjust)` icon in the far-right of the top row.
|
||||
|
||||
Then, click on the :guilabel:`🕘 (clock)` icon for the record the activity is being added to, then
|
||||
click :guilabel:`+ Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form
|
||||
<activities/form>` that appears.
|
||||
Then, click on the |clock| for the record the activity is being added to, and click :guilabel:`+
|
||||
Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form <activities/form>` that
|
||||
appears.
|
||||
|
||||
.. note::
|
||||
If a record already has a scheduled activity, the :guilabel:`🕘 (clock)` icon is replaced by the
|
||||
icon that represents the existing scheduled activity. Click on the activity type's icon to
|
||||
schedule another activity.
|
||||
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
|
||||
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
|
||||
|
||||
.. image:: activities/schedule-list-activity.png
|
||||
:align: center
|
||||
@@ -92,10 +88,10 @@ click :guilabel:`+ Schedule an activity`. Proceed to :ref:`fill out the Schedule
|
||||
Activity view
|
||||
-------------
|
||||
|
||||
Most applications in Odoo have an *Activity* view available. If available, a :guilabel:`🕘 (clock)`
|
||||
activity icon is visible in the top-right of the main menu bar.
|
||||
Most applications in Odoo have an *Activity* view available. If available, a |clock| is visible in
|
||||
the top-right corner of the main menu bar, amongst the other view option icons.
|
||||
|
||||
To open the activity view, click the :guilabel:`🕘 (clock)` activity icon.
|
||||
To open the activity view, click the |clock|.
|
||||
|
||||
.. image:: activities/activities.png
|
||||
:align: center
|
||||
@@ -114,12 +110,12 @@ If multiple activity types are scheduled for a record, a number appears in the b
|
||||
total number of scheduled activities.
|
||||
|
||||
.. note::
|
||||
Activity colors, and their relation to an activity's due date, is consistent throughout Odoo,
|
||||
Activity colors, and their relation to an activity's due date, are consistent throughout Odoo,
|
||||
regardless of the activity type, or the view.
|
||||
|
||||
To schedule an activity for a record, hover over the corresponding field, and a :guilabel:`➕ (plus
|
||||
sign)` appears. Click the :guilabel:`➕ (plus sign)`, and then :ref:`fill out the Schedule Activity
|
||||
form <activities/form>`.
|
||||
To schedule an activity for a record, hover over the corresponding field. Click the :icon:`fa-plus`
|
||||
:guilabel:`(plus)` icon that appears, and then :ref:`fill out the Schedule Activity form
|
||||
<activities/form>`.
|
||||
|
||||
.. image:: activities/activity-view.png
|
||||
:align: center
|
||||
@@ -140,12 +136,6 @@ Enter the following information on the form:
|
||||
- :guilabel:`Activity Type`: select the type of activity from the drop-down menu. The default
|
||||
options are: :guilabel:`Email`, :guilabel:`Call`, :guilabel:`Meeting`, or :guilabel:`To-Do`.
|
||||
Depending on what other applications are installed, additional options may be available.
|
||||
|
||||
.. note::
|
||||
Individual applications have a list of dedicated :ref:`activity types <activities/types>`. For
|
||||
example, installing the *Sales* application makes :guilabel:`Order Upsell` available, while
|
||||
installing the *Sign* application makes :guilabel:`Request Signature` available.
|
||||
|
||||
- :guilabel:`Summary`: enter a short title for the activity, such as `Discuss Proposal`.
|
||||
- :guilabel:`Due Date`: using the calendar popover, select the activity's deadline.
|
||||
- :guilabel:`Assigned to`: by default, the current user populates this field. To assign a different
|
||||
@@ -187,11 +177,11 @@ buttons:
|
||||
All scheduled activities
|
||||
========================
|
||||
|
||||
To view a consolidated list of activities, organized by application, click the :guilabel:`🕘
|
||||
(clock)` icon in the header menu, located in the top-right.
|
||||
To view a consolidated list of activities, organized by application, click the |clock| in the header
|
||||
menu, located in the top-right corner.
|
||||
|
||||
If any activities are scheduled, the number of activities appear in a red bubble on the
|
||||
:guilabel:`🕘 (clock)` icon.
|
||||
|clock|.
|
||||
|
||||
All activities for each application are further divided into subsections, indicating where in the
|
||||
application the activity is to be completed. Each sub-section lists the number of scheduled
|
||||
@@ -252,6 +242,11 @@ To view the currently configured types of activities in the database, navigate t
|
||||
|
||||
Doing so reveals the :guilabel:`Activity Types` page, where the existing activity types are found.
|
||||
|
||||
.. tip::
|
||||
Individual applications have a list of *Activity Types* dedicated to that application. For
|
||||
example, to view and edit the activities available for the *CRM* application, go to
|
||||
:menuselection:`CRM app --> Configuration --> Activity Types`.
|
||||
|
||||
.. image:: activities/activity-list.png
|
||||
:align: center
|
||||
:alt: The list of activity types already configured and available.
|
||||
@@ -264,7 +259,7 @@ activity type form loads.
|
||||
|
||||
Make any desired changes to the activity type form. The form automatically saves, but it can be
|
||||
saved manually at any time by clicking the :guilabel:`Save Manually` option, represented by a
|
||||
:guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
|
||||
:icon:`fa-cloud-upload` :guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
|
||||
|
||||
Create new activity types
|
||||
-------------------------
|
||||
@@ -347,3 +342,4 @@ It is possible to have another activity either suggested or triggered. To do so,
|
||||
.. seealso::
|
||||
- :doc:`../productivity/discuss`
|
||||
- :doc:`../productivity/discuss/team_communication`
|
||||
- :doc:`../sales/crm/optimize/utilize_activities`
|
||||
|
||||
|
Before Width: | Height: | Size: 5.5 KiB |
@@ -0,0 +1,263 @@
|
||||
:show-content:
|
||||
|
||||
========
|
||||
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.
|
||||
|
||||
Contact form
|
||||
============
|
||||
|
||||
To create a new contact, navigate to the :menuselection:`Contacts app`, and click
|
||||
:guilabel:`Create`. A new form appears where various contact information can be added.
|
||||
|
||||
Contact type
|
||||
------------
|
||||
|
||||
Odoo allows for both :guilabel:`Individual` and :guilabel:`Company` contacts. Select either
|
||||
:guilabel:`Individual` or :guilabel:`Company`, depending on the type of contact that is being added.
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
First, fill in the name of the :guilabel:`Individual` or :guilabel:`Company`. This is how the name
|
||||
appears throughout the database. This field is **mandatory**.
|
||||
|
||||
.. tip::
|
||||
:guilabel:`Individual` contacts can have a :guilabel:`Company` contact linked to it. After
|
||||
selecting :guilabel:`Individual`, a new :guilabel:`Company Name...` field appears below the
|
||||
first name field.
|
||||
|
||||
Address
|
||||
-------
|
||||
|
||||
Next, enter the :guilabel:`Address` of the :guilabel:`Company` or :guilabel:`Individual`.
|
||||
|
||||
.. tip::
|
||||
If the :guilabel:`Individual` option is chosen, then the *type of address* can be chosen from a
|
||||
drop-down menu. Options for this drop-down menu include: :guilabel:`Contact`, :guilabel:`Invoice
|
||||
Address`, :guilabel:`Delivery Address`, :guilabel:`Other Address`, and :guilabel:`Private
|
||||
Address`.
|
||||
|
||||
Additional fields
|
||||
-----------------
|
||||
|
||||
Additional details are included on the initial form. The following fields are available:
|
||||
|
||||
- :guilabel:`VAT`: Value Added Tax number.
|
||||
- :guilabel:`Citizen Identification`: citizen or government identification number (only available
|
||||
on :guilabel:`Individual`).
|
||||
- :guilabel:`Job Position`: list the job position of the :guilabel:`Individual` (only available on
|
||||
:guilabel:`Individual`).
|
||||
- :guilabel:`Phone`: list phone number (with country code). Make a call, send an SMS, or WhatsApp
|
||||
message by hovering over the field on the saved form, and clicking the desired option.
|
||||
- :guilabel:`Mobile`: list mobile phone number (with country code). Make a call, send an SMS, or
|
||||
WhatsApp message by hovering over the field on the saved form, and clicking on the desired option.
|
||||
- :guilabel:`Email`: enter the email address with the domain.
|
||||
- :guilabel:`Website`: enter the full website address, starting with `http` or `https`.
|
||||
- :guilabel:`Title`: select :guilabel:`Doctor`, :guilabel:`Madam`, :guilabel:`Miss`,
|
||||
:guilabel:`Mister`, :guilabel:`Professor`, or create a new one directly from this field.
|
||||
- :guilabel:`Tags`: enter preconfigured tags by typing them in the field, or clicking the drop-down
|
||||
menu, and selecting one. To create a new one, type the new tag in the field, and click
|
||||
:guilabel:`Create` from the resulting drop-down menu.
|
||||
|
||||
Contacts & Addresses tab
|
||||
------------------------
|
||||
|
||||
At the bottom of the contact form are several tabs. On the :guilabel:`Contacts & Addresses` tab,
|
||||
contacts can be added that are associated with a :guilabel:`Company` and related addresses. For
|
||||
example, a specific contact person for the company can be listed here.
|
||||
|
||||
Multiple addresses can be added on both :guilabel:`Individual` and :guilabel:`Company` contacts. To
|
||||
do so, click :guilabel:`Add` in the :guilabel:`Contacts & Addresses` tab. Doing so reveals a
|
||||
:guilabel:`Create Contact` pop-up form, in which additional addresses can be configured.
|
||||
|
||||
.. image:: contacts/contact-form-add-address.png
|
||||
:align: center
|
||||
:alt: Add a contact/address to the contact form.
|
||||
|
||||
On the :guilabel:`Create Contact` pop-up form, start by clicking the default :guilabel:`Other
|
||||
Address` field at the top to reveal a drop-down menu of address-related options.
|
||||
|
||||
Select any of the following options:
|
||||
|
||||
- :guilabel:`Contact`: adds another contact to the existing contact form.
|
||||
- :guilabel:`Invoice Address`: adds a specific invoice address to the existing contact form.
|
||||
- :guilabel:`Delivery Address`: adds a specific delivery address to the existing contact form.
|
||||
- :guilabel:`Other Address`: adds an alternate address to the existing contact form.
|
||||
- :guilabel:`Private Address`: adds a private address to the existing contact form.
|
||||
|
||||
.. image:: contacts/create-contact-window.png
|
||||
:align: center
|
||||
:alt: Create a new contact/address on a contact form.
|
||||
|
||||
Once an option is selected, enter the corresponding contact information that should be used for the
|
||||
specified address type.
|
||||
|
||||
Add the :guilabel:`Contact Name`, :guilabel:`Address`, :guilabel:`Email`, along with the
|
||||
:guilabel:`Phone` and/or :guilabel:`Mobile` numbers below.
|
||||
|
||||
Set the :guilabel:`Job Position`, which appears if the :guilabel:`Contact` address type has been
|
||||
selected. This is similar to the :guilabel:`Individual` contact.
|
||||
|
||||
To add a note, click on the text field next to :guilabel:`Notes`, and write anything that is
|
||||
applicable to the customer or contact.
|
||||
|
||||
Then, click :guilabel:`Save & Close` to save the address, and close the :guilabel:`Create Contact`
|
||||
window. Or, click :guilabel:`Save & New` to save the address, and immediately input another one.
|
||||
|
||||
Sales & Purchase tab
|
||||
--------------------
|
||||
|
||||
Next, is the :guilabel:`Sales & Purchases` tab, which only appears when the *Sales*, *Purchase*,
|
||||
**or** *Point of Sale* applications are installed.
|
||||
|
||||
The :guilabel:`Fiscal Position` can be set on the :guilabel:`Sales & Purchases` tab. Select a
|
||||
:guilabel:`Fiscal Position` from the drop-down menu.
|
||||
|
||||
Sales section
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Under the :guilabel:`Sales` heading, a specific :guilabel:`Salesperson` can be assigned to a
|
||||
contact. To do that, click the :guilabel:`Salesperson` drop-down field, and select one. Create a new
|
||||
:guilabel:`Salesperson` by typing the user's name, and making the appropriate selection.
|
||||
|
||||
Certain :guilabel:`Payment Terms`, or a certain :guilabel:`Pricelist`, can also be set, if needed.
|
||||
Click the drop-down menu next to :guilabel:`Payment Terms`, and change it to one of the preselected
|
||||
:guilabel:`Payment Terms`, or :guilabel:`Create` a new one. Select the :guilabel:`Pricelist`
|
||||
drop-down menu to choose the appropriate :guilabel:`Pricelist`.
|
||||
|
||||
Click into the :guilabel:`Delivery Method` field to select an option from the drop-down menu.
|
||||
|
||||
Point Of Sale section
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Under the :guilabel:`Point Of Sale` heading, enter a :guilabel:`Barcode` that can be used to
|
||||
identify the contact. Use the :guilabel:`Loyalty Points` field to track points the user won as part
|
||||
of a *Loyalty Program*.
|
||||
|
||||
Purchase section
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Specify :guilabel:`Payment Terms`, :guilabel:`1099 Box` information, and a preferred
|
||||
:guilabel:`Payment Method` here. A :guilabel:`Receipt Reminder` can be set here, as well.
|
||||
|
||||
Misc section
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Under the :guilabel:`Misc.` heading, use :guilabel:`Reference` field to add any additional
|
||||
information for this contact. If this contact should only be accessible for one company in a
|
||||
multi-company database, select it from the :guilabel:`Company` field drop-down list. Use the
|
||||
:guilabel:`Website` drop-down menu to restrict the publishing of this contact to one website (if
|
||||
working on a database with multiple websites). Select one or more :guilabel:`Website Tags` to assist
|
||||
in filtering published customers on the `/customers` website page. Select an :guilabel:`Industry`
|
||||
for this contact from the drop-down menu. Use the :guilabel:`SLA Policies` field to assign a
|
||||
*Helpdesk* SLA policy to this contact.
|
||||
|
||||
Accounting tab
|
||||
--------------
|
||||
|
||||
The :guilabel:`Accounting` tab appears when the *Accounting* application is installed. Here, a user
|
||||
can add any related :guilabel:`Bank Accounts`, or set default :guilabel:`Accounting entries`.
|
||||
|
||||
Under the :guilabel:`Miscellaneous` heading, use the :guilabel:`LEI` field to enter a Legal Entity
|
||||
Identifier, if necessary.
|
||||
|
||||
Internal Notes tab
|
||||
------------------
|
||||
|
||||
Following the :guilabel:`Accounting` tab is the :guilabel:`Internal Notes` tab, where notes can be
|
||||
left on this contact form, just like on the contact form noted above.
|
||||
|
||||
Partner Assignment tab
|
||||
----------------------
|
||||
|
||||
Next is the :guilabel:`Partner Assignment` tab, which by default, includes a :guilabel:`Geolocation`
|
||||
section, and other partner options, including :guilabel:`Partner Activation` and :guilabel:`Partner
|
||||
Review` configurations. These are **only** present when the *Resellers* module is installed.
|
||||
|
||||
.. seealso::
|
||||
Follow the :doc:`Resellers documentation <../sales/crm/track_leads/resellers>` for more
|
||||
information on publishing partners on the website.
|
||||
|
||||
Membership tab
|
||||
--------------
|
||||
|
||||
Finally, there is the :guilabel:`Membership` tab on contact forms, which can help users manage any
|
||||
memberships that are being offered to this specific contact. It should be noted that this tab
|
||||
**only** appears when the *Members* application is installed.
|
||||
|
||||
Activate membership
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To activate a contact's membership, click :guilabel:`Buy Membership` in the :guilabel:`Membership`
|
||||
tab of a contact form. On the pop-up window that appears, select a :guilabel:`Membership` from the
|
||||
drop-down menu. Then, configure a :guilabel:`Member Price`. Click :guilabel:`Invoice Membership`
|
||||
when both fields are filled in.
|
||||
|
||||
Alternatively, to offer a free membership, tick the :guilabel:`Free Member` checkbox, in the
|
||||
:guilabel:`Membership` tab of a contact form.
|
||||
|
||||
.. seealso::
|
||||
Follow the :doc:`Members documentation <../sales/members>` for more information on publishing
|
||||
members on the website.
|
||||
|
||||
Smart buttons
|
||||
=============
|
||||
|
||||
At the top of the contact form, there are some additional options available, known as *smart
|
||||
buttons*.
|
||||
|
||||
Here, Odoo displays a variety of records, related to this contact, that were created on other apps.
|
||||
Odoo integrates information from every single app, so there are many smart buttons.
|
||||
|
||||
.. example::
|
||||
For example, there is an :guilabel:`Opportunities` smart button, where all the opportunities
|
||||
related to this customer from the *CRM* app are accessible.
|
||||
|
||||
.. tip::
|
||||
If the corresponding applications are installed, their related smart buttons appear
|
||||
automatically on a contact form.
|
||||
|
||||
A user can see any :guilabel:`Meetings`, :guilabel:`Sales`, :guilabel:`POS Orders`,
|
||||
:guilabel:`Subscriptions`, project :guilabel:`Tasks`, and the :guilabel:`More` smart button reveals
|
||||
additional options, via a drop-down menu. A user can even quickly access :guilabel:`Purchases`,
|
||||
:guilabel:`Helpdesk` tasks, :guilabel:`On-time Rate` for deliveries, :guilabel:`Invoiced`
|
||||
information, :guilabel:`Vendor Bills`, and the :guilabel:`Partner Ledger` connected to this contact.
|
||||
|
||||
Deliveries, documents, loyalty cards, and direct debits are *also* linked to smart buttons, like
|
||||
this, should there be any outstanding/on-file for this contact.
|
||||
|
||||
If the contact is a partner, the user can visit their partner page on the Odoo-built website by
|
||||
clicking the :guilabel:`Go to Website` smart button.
|
||||
|
||||
Archive contacts
|
||||
----------------
|
||||
|
||||
If a user decides they no longer want to have this contact active, the record can be archived. To do
|
||||
that, go to the :icon:`fa-cog` :guilabel:`Action` menu at the top of the contact form, and click
|
||||
:guilabel:`Archive`.
|
||||
|
||||
Then, click :guilabel:`OK` from the resulting :guilabel:`Confirmation` pop-up window.
|
||||
|
||||
With this contact successfully archived, as indicated by a banner at the top, they do not show up
|
||||
in the main contacts page, but they can still be searched for with the :guilabel:`Archived` filter.
|
||||
|
||||
.. tip::
|
||||
A contact can be *unarchived*, if the user decides to work with them again. To do that, just
|
||||
click the :icon:`fa-cog` :guilabel:`Action` menu again at the top of the archived contact form,
|
||||
and click :guilabel:`Unarchive`. Upon doing so, the :guilabel:`Archived` banner is removed, and
|
||||
the contact is restored.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Add different addresses in CRM <../sales/sales/send_quotations/different_addresses>`
|
||||
- `Odoo's eLearning Contacts tutorial
|
||||
<https://www.odoo.com/slides/slide/contacts-2527?fullscreen=1>`_
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
contacts/merge
|
||||
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,78 @@
|
||||
==============
|
||||
Merge contacts
|
||||
==============
|
||||
|
||||
Odoo's *Contacts* application allows user's to merge duplicate contacts, without losing any
|
||||
information in the process. This keeps the database organized, and prevents contacts from being
|
||||
contacted by more than one salesperson.
|
||||
|
||||
.. _contacts/merge-duplicate:
|
||||
|
||||
Merge duplicate contacts
|
||||
========================
|
||||
|
||||
.. danger::
|
||||
Merging is an irreversible action. Do **not** merge contacts unless absolutely certain they
|
||||
should be combined.
|
||||
|
||||
Navigate to the :menuselection:`Contacts app`, and select the :icon:`oi-view-list`
|
||||
:guilabel:`(list)` icon. Select two or more duplicate contacts from the list, and tick the checkbox
|
||||
(on the far-left) for the contacts that should be merged. Then, click the :icon:`fa-cog`
|
||||
:guilabel:`Actions` icon, and select :guilabel:`Merge` from the resulting drop-down menu.
|
||||
|
||||
.. image:: merge/merge-menu.png
|
||||
:align: center
|
||||
:alt: The merge contacts option in the Contacts application.
|
||||
|
||||
This opens the :guilabel:`Merge` pop-up window. From here, review the details of the contacts before
|
||||
confirming they should be merged. If any contacts in the list should **not** be merged, click the
|
||||
:icon:`fa-times` :guilabel:`(delete)` icon at the far right of the contact.
|
||||
|
||||
.. tip::
|
||||
Click the individual contact to open the record for that contact, and view additional
|
||||
information.
|
||||
|
||||
.. image:: merge/merge-window.png
|
||||
:align: center
|
||||
:alt: The merge pop-up window in the Contacts application.
|
||||
|
||||
Click the :guilabel:`Destination Contact` field, and select an option from the drop-down list. This
|
||||
field defaults to the contact record that was created first in the system.
|
||||
|
||||
After confirming the information on the pop-up window, click :guilabel:`Merge Contacts`.
|
||||
|
||||
Deduplicate contacts
|
||||
====================
|
||||
|
||||
After the merge is finished, a pop-up window appears confirming it is complete. This pop-up window
|
||||
also contains a :guilabel:`Deduplicate the other Contacts` button. This feature searches for
|
||||
duplicated records, based on selected criteria, and merges them automatically, or after manual
|
||||
approval.
|
||||
|
||||
Click the :guilabel:`Deduplicate the other Contacts` button to open the :guilabel:`Deduplicate
|
||||
Contacts` pop-up window.
|
||||
|
||||
Select one or more fields to be used in the search for duplicated records. Duplicated contacts can
|
||||
be searched, based on the following criteria:
|
||||
|
||||
- :guilabel:`Email`
|
||||
- :guilabel:`Name`
|
||||
- :guilabel:`Is Company`
|
||||
- :guilabel:`VAT`
|
||||
- :guilabel:`Parent Company`
|
||||
|
||||
.. note::
|
||||
If more than one field is selected, only records that have **all** fields in common are suggested
|
||||
as duplicates.
|
||||
|
||||
If necessary, select criteria to be used to exclude potential duplicates from the search. Potential
|
||||
duplicates can be excluded from the search, based on the following criteria:
|
||||
|
||||
- :guilabel:`A user associated to the contact`
|
||||
- :guilabel:`Journal Items associated to the contact`
|
||||
|
||||
After confirming the search criteria, click either :guilabel:`Merge with Manual Check`,
|
||||
:guilabel:`Merge Automatically`, or :guilabel:`Merge Automatically all process`.
|
||||
|
||||
If :guilabel:`Merge with Manual Check` is selected, complete the merge by following the :ref:`steps
|
||||
above <contacts/merge-duplicate>`.
|
||||
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 20 KiB |
@@ -2,6 +2,9 @@
|
||||
Export and import data
|
||||
======================
|
||||
|
||||
.. |list| replace:: :icon:`oi-view-list` :guilabel:`(list)` icon
|
||||
.. |actions| replace:: :icon:`fa-cog` :guilabel:`Actions`
|
||||
|
||||
In Odoo, it is sometimes necessary to export or import data for running reports, or for data
|
||||
modification. This document covers the export and import of data into and out of Odoo.
|
||||
|
||||
@@ -20,9 +23,9 @@ can aid in reporting on activities, although, Odoo provides a precise and easy r
|
||||
each available application.
|
||||
|
||||
With Odoo, the values can be exported from any field in any record. To do so, activate the list view
|
||||
(:guilabel:`≣ (four horizontal lines)` icon), on the items that need to be exported, and then
|
||||
select the records that should be exported. To select a record, tick the checkbox next to the
|
||||
corresponding record. Finally, click on :guilabel:`⚙️ Action`, and then :guilabel:`Export`.
|
||||
(|list|), on the items that need to be exported, then select the records that should be exported. To
|
||||
select a record, tick the checkbox next to the corresponding record. Finally, click on |actions|,
|
||||
then :guilabel:`Export`.
|
||||
|
||||
.. image:: export_import_data/list-view-export.png
|
||||
:align: center
|
||||
@@ -36,9 +39,10 @@ several options for the data to export:
|
||||
:alt: Overview of options to consider when exporting data in Odoo..
|
||||
|
||||
#. With the :guilabel:`I want to update data (import-compatable export)` option ticked, the system
|
||||
only shows the fields that can be imported. This is helpful in the case where the existing
|
||||
records need to be updated. This works like a filter. Leaving the box unticked, gives many more
|
||||
field options because it shows all the fields, not just the ones that can be imported.
|
||||
only shows the fields that can be imported. This is helpful in the case where the :ref:`existing
|
||||
records need to be updated <essentials/update-data>`. This works like a filter. Leaving the box
|
||||
unticked, gives many more field options because it shows all the fields, not just the ones that
|
||||
can be imported.
|
||||
#. When exporting, there is the option to export in two formats: `.csv` and `.xls`. With `.csv`,
|
||||
items are separated by a comma, while `.xls` holds information about all the worksheets in a
|
||||
file, including both content and formatting.
|
||||
@@ -70,7 +74,8 @@ Import data into Odoo
|
||||
=====================
|
||||
|
||||
Importing data into Odoo is extremely helpful during implementation, or in times where data needs to
|
||||
be updated in bulk. The following documentation covers how to import data into an Odoo database.
|
||||
be :ref:`updated in bulk <essentials/update-data>`. The following documentation covers how to import
|
||||
data into an Odoo database.
|
||||
|
||||
.. warning::
|
||||
Imports are permanent and **cannot** be undone. However, it is possible to use filters (`created
|
||||
@@ -158,6 +163,9 @@ Once the template is downloaded, proceed to follow these steps:
|
||||
using the fields that should be imported. This way, if there is not a sample import template,
|
||||
the names are accurate.
|
||||
|
||||
|
||||
.. _essentials/external-id:
|
||||
|
||||
Import from another application
|
||||
-------------------------------
|
||||
|
||||
@@ -166,7 +174,8 @@ from previous software to facilitate the transition to Odoo.
|
||||
|
||||
Setting an ID is not mandatory when importing, but it helps in many cases:
|
||||
|
||||
- Update imports: import the same file several times without creating duplicates.
|
||||
- :ref:`Update imports <essentials/update-data>`: import the same file several times without
|
||||
creating duplicates.
|
||||
- :ref:`Import relation fields <export_import_data/relation-fields>`.
|
||||
|
||||
To recreate relationships between different records, the unique identifier from the original
|
||||
@@ -176,10 +185,7 @@ When another record is imported that links to the first one, use **XXX/ID** (XXX
|
||||
the original unique identifier. This record can also be found using its name.
|
||||
|
||||
.. warning::
|
||||
It should be noted that there will be a conflict if two or more records have the same name.
|
||||
|
||||
The :guilabel:`External ID` (ID) can also be used to update the original import, if modified data
|
||||
needs to be re-imported later, therefore, it is a good practice to specify it whenever possible.
|
||||
It should be noted that conflicts occur if two (or more) records have the same *External ID*.
|
||||
|
||||
Field missing to map column
|
||||
---------------------------
|
||||
@@ -476,3 +482,43 @@ The two files produced are ready to be imported in Odoo without any modification
|
||||
imported these two :abbr:`CSV (Comma-separated Values)` files, there are four contacts and three
|
||||
companies (the first two contacts are linked to the first company). Keep in mind to first import
|
||||
the companies, and then the people.
|
||||
|
||||
.. _essentials/update-data:
|
||||
|
||||
Update data in Odoo
|
||||
===================
|
||||
|
||||
Existing data can be updated in bulk through a data import, as long as the :ref:`External ID
|
||||
<essentials/external-id>` remains consistent.
|
||||
|
||||
Prepare data export
|
||||
-------------------
|
||||
|
||||
To update data through an import, first navigate to the data to be updated, and select the |list| to
|
||||
activate list view. On the far-left side of the list, tick the checkbox for any record to be
|
||||
updated. Then, click |actions|, and select :icon:`fa-upload` :guilabel:`Export` from the drop-down
|
||||
menu.
|
||||
|
||||
On the resulting :guilabel:`Export Data` pop-up window, tick the checkbox labeled, :guilabel:`I want
|
||||
to update data (import-compatible export)`. This automatically includes the *External ID* in the
|
||||
export. Additionally, it limits the :guilabel:`Fields to export` list to **only** include fields
|
||||
that are able to be imported.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`External ID` field does **not** appear in the :guilabel:`Fields to export` list
|
||||
unless it is manually added, but it is still included in the export. However, if the :guilabel:`I
|
||||
want to update data (import-compatible export)` checkbox is ticked, it is included in the export.
|
||||
|
||||
Select the required fields to be included in the export using the :ref:`options <export-data>` on
|
||||
the pop-up window, then click :guilabel:`Export`.
|
||||
|
||||
Import updated data
|
||||
-------------------
|
||||
|
||||
After exporting, make any necessary changes to the data file. When the file is ready, it can be
|
||||
:ref:`imported <import-data>` by following the same process as a normal data import.
|
||||
|
||||
.. danger::
|
||||
When updating data, it is extremely important that the *External ID* remain consistent, as
|
||||
this is how the system identifies a record. If an ID is altered, or removed, the system may add a
|
||||
duplicate record, instead of updating the existing one.
|
||||
|
||||
@@ -76,6 +76,8 @@ expense either when the transaction occurs (accrual basis) or when the payment i
|
||||
.. seealso::
|
||||
:doc:`Cash basis <accounting/taxes/cash_basis>`
|
||||
|
||||
.. _accounting/multi-company:
|
||||
|
||||
Multi-company
|
||||
=============
|
||||
|
||||
|
||||
@@ -112,8 +112,8 @@ If not done yet, :ref:`install <general/install>` the :guilabel:`Peppol` module
|
||||
- Peppol registration is **free** and available in Odoo Community
|
||||
- You can send **Customer Invoices** and **Credit Notes** and receive **Vendor Bills** and
|
||||
**Refunds** via Peppol.
|
||||
- You can send in one of the following supported document formats: **BIS Billing 3.0, XRechnung
|
||||
CIUS, NLCIUS**.
|
||||
- You can send and receive in one of the following supported document formats:
|
||||
**BIS Billing 3.0, XRechnung CIUS, NLCIUS**.
|
||||
- | The following **countries** are eligible for **Peppol registration in Odoo**:
|
||||
| Andorra, Albania, Austria, Bosnia and Herzegovina, Belgium, Bulgaria, Switzerland, Cyprus,
|
||||
Czech Republic, Germany, Denmark, Estonia, Spain, Finland, France, United Kingdom, Greece,
|
||||
@@ -126,79 +126,102 @@ Registration
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Settings`. If you do not have the
|
||||
Peppol module installed, first tick the :guilabel:`Enable PEPPOL` checkbox and then **manually
|
||||
save**.
|
||||
save**. Click :guilabel:`Start sending via Peppol` to open the registration form.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-install.png
|
||||
:alt: Peppol module installation
|
||||
.. note::
|
||||
This registration form also pops up if you choose to :guilabel:`Send & Print` an
|
||||
invoice via Peppol without completing the registration process.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-registration-settings.png
|
||||
:alt: Peppol registration button
|
||||
|
||||
You can register either as a sender or a receiver. A sender can only send invoices and credit notes
|
||||
on Odoo via Peppol, without ever registering as a Peppol participant on Odoo SMP. If you have an
|
||||
existing Peppol registration elsewhere that you want to keep, but want to send invoices from your
|
||||
Odoo database and receive other documents in another software, register as a **sender**.
|
||||
|
||||
.. tip::
|
||||
- You can always register as a sender first and register to receive documents later.
|
||||
- When registering, you can specify if you would also like to receive documents.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-registration-wizard.png
|
||||
:alt: Peppol registration form
|
||||
|
||||
Fill in the following information:
|
||||
|
||||
- :guilabel:`Peppol EAS`. This is the Peppol Electronic Address Scheme and usually depends on your
|
||||
- Check the receiver box if you want to register on Odoo SMP. If you are migrating from another
|
||||
service provider, insert the :guilabel:`Migration key` from the previous provider (the field
|
||||
becomes visible after you tick the checkbox).
|
||||
- :guilabel:`E-Address Scheme`: the Peppol Electronic Address Scheme usually depends on your
|
||||
company's country. Odoo often prefills this with the most commonly used EAS code in your country.
|
||||
For example, the preferred EAS code for most companies in Belgium is 0208.
|
||||
- :guilabel:`Peppol Endpoint`. This is usually a Company Registry number or a VAT number.
|
||||
- :guilabel:`Phone Number`, including the country code (e.g., `+32` in Belgium)
|
||||
- :guilabel:`Primary contact email`
|
||||
For example, the preferred EAS code for most companies in Belgium is `0208`.
|
||||
- :guilabel:`Endpoint`: this is usually a Company Registry number or a VAT number.
|
||||
- :guilabel:`Phone`: phone number including the country code (e.g., `+32` in Belgium).
|
||||
- :guilabel:`Email`: this is the email Odoo can use to contact you regarding your Peppol
|
||||
registration.
|
||||
|
||||
If you want to explore or demo Peppol, you can choose to register in :guilabel:`Demo` mode.
|
||||
Otherwise, select :guilabel:`Live`.
|
||||
|
||||
.. tip::
|
||||
- Selecting :guilabel:`Demo` simulates everything in Odoo. There is no sending, receiving, or
|
||||
partner verification.
|
||||
- For **advanced users only**, it is possible to run tests on Peppol's test network. The server
|
||||
allows to register on Peppol and send/receive test invoices to/from other participants.
|
||||
To do so, enable the :ref:`developer-mode`, open the **Settings** app, go to
|
||||
:menuselection:`Technical --> System Parameters`, and search for `account_peppol.edi.mode`.
|
||||
Click the parameter and change the :guilabel:`Value` to `test`. Go back to the Peppol setup
|
||||
menu in the **Settings** app. The option :guilabel:`Test` is now available.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-system-parameter.png
|
||||
:alt: Peppol test mode parameter
|
||||
|
||||
.. seealso::
|
||||
- `Peppol EAS - European Commision <https://ec.europa.eu/digital-building-blocks/wikis/display/DIGITAL/Code+lists/>`_
|
||||
- `Peppol Endpoint - OpenPeppol eDEC Code Lists <https://docs.peppol.eu/edelivery/codelists/>`_
|
||||
(open the "Participant Identifier Schemes" as HTML page)
|
||||
|
||||
If you are migrating from another access point, insert the :guilabel:`Migration key` from the
|
||||
previous provider.
|
||||
When set up, request a verification code to be sent to you by clicking :guilabel:`Send a
|
||||
registration code by SMS`. A text message containing a code is sent to the phone number provided to
|
||||
finalize the verification process.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-settings.png
|
||||
:alt: Configuration for peppol
|
||||
|
||||
Finally, click :guilabel:`Validate registration`. If you want to explore or demo Peppol, you can
|
||||
choose to register in :guilabel:`Demo` mode. Otherwise, select :guilabel:`Live`.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-demo-mode.png
|
||||
:alt: Peppol demo mode selection
|
||||
|
||||
.. note::
|
||||
When testing Peppol, the system parameter `account_peppol.edi.mode` can be changed to `test`.
|
||||
Then, a radio button appears with the option to register on the test server.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-system-parameter.png
|
||||
:alt: Peppol test mode parameter
|
||||
|
||||
.. image:: electronic_invoicing/peppol-test-mode-settings.png
|
||||
:alt: Peppol test mode selection
|
||||
|
||||
Now, you can request a verification code to be sent to you by clicking :guilabel:`Verify phone
|
||||
number`.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-registration-verify.png
|
||||
:alt: phone validation request verification
|
||||
|
||||
A text message containing a code is sent to the phone number provided to finalize the verification
|
||||
process.
|
||||
|
||||
.. image:: electronic_invoicing/phone-registration.png
|
||||
.. image:: electronic_invoicing/peppol-phone-verification.png
|
||||
:alt: phone validation
|
||||
|
||||
Once you enter the code and click :guilabel:`Confirm`, you can see that your registration is pending
|
||||
activation. From this point onwards, the default journal for receiving Vendor Bills can be set.
|
||||
Once you enter the code and click :guilabel:`Register`, your Peppol participant status is updated.
|
||||
If you chose to only send documents, then the status changes to :guilabel:`Can send but
|
||||
not receive`.
|
||||
If you opted to receive documents as well, the status changes to :guilabel:`Can send, pending
|
||||
registration to receive`. In that case, it should be automatically activated within a day.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-registration-pending.png
|
||||
:alt: pending application
|
||||
|
||||
It should be automatically activated within a day.
|
||||
Then, set the default journal for receiving vendor bills in the :guilabel:`Incoming Invoices
|
||||
Journal`.
|
||||
|
||||
.. tip::
|
||||
It is also possible to manually trigger the cron that checks the registration status by going to
|
||||
:menuselection:`Settings --> Technical --> Scheduled Actions --> PEPPOL\: update participant
|
||||
status`.
|
||||
To manually trigger the cron that checks the registration status, enable the
|
||||
:ref:`developer-mode`, then go to :menuselection:`Settings --> Technical --> Scheduled Actions`,
|
||||
and search for the :guilabel:`PEPPOL: update participant status` action.
|
||||
|
||||
Your application status should be updated soon after you are registered on the Peppol network.
|
||||
Your receiver application status should be updated soon after you are registered on the Peppol
|
||||
network.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-registration-active.png
|
||||
:alt: active application
|
||||
.. image:: electronic_invoicing/peppol-receiver.png
|
||||
:alt: receiver application
|
||||
|
||||
All invoices and vendor bills can now be sent directly using the Peppol network.
|
||||
|
||||
.. important::
|
||||
To update the email that Odoo can use to contact you, modify the email and click
|
||||
:guilabel:`Update contact details`.
|
||||
|
||||
Configure Peppol services
|
||||
-------------------------
|
||||
|
||||
Once you are registered on Odoo SMP, the :guilabel:`Configure Peppol Services` button
|
||||
becomes visible to allow you to enable or disable document formats that other participants
|
||||
can send you via Peppol. By default, all document formats supported by Odoo are enabled (depending
|
||||
on the installed modules).
|
||||
|
||||
Contact verification
|
||||
--------------------
|
||||
|
||||
@@ -222,6 +245,13 @@ It is possible to verify the Peppol participant status of several customers at o
|
||||
To do so, go to :menuselection:`Accounting --> Customers --> Customers` and switch to the list view.
|
||||
Select the customers you want to verify and then click :menuselection:`Actions --> Verify Peppol`.
|
||||
|
||||
If the participant is registered on the Peppol network but cannot receive the format you selected
|
||||
for them, the :guilabel:`Peppol endpoint validity` label changes to :guilabel:`Cannot
|
||||
receive this format`.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-participant-format.png
|
||||
:alt: verify contact ubl format
|
||||
|
||||
Send invoices
|
||||
-------------
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
@@ -32,7 +32,7 @@ valuation <inventory/avg_price/leaving_inventory>`.
|
||||
.. seealso::
|
||||
- :doc:`Using inventory valuation
|
||||
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/using_inventory_valuation>`
|
||||
- :ref:`Other inventory valuation methods <inventory/inventory_valuation_config/costing_methods>`
|
||||
- :ref:`Other inventory valuation methods <inventory/warehouses_storage/costing_methods>`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
@@ -263,7 +263,7 @@ value** increases based on the vendor price of the products that have entered th
|
||||
account (called **stock input**) is credited and only reconciled once the vendor bill is received.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`Anglo-Saxon vs. Continental <inventory/inventory_valuation_config/accounting>`
|
||||
- :ref:`Anglo-Saxon vs. Continental <inventory/warehouses_storage/accounting-types>`
|
||||
|
||||
The table below reflects journal entries and accounts. The *stock input* account stores the money
|
||||
intended to pay vendors when the vendor bill has not yet been received. To balance accounts when
|
||||
|
||||
@@ -15,6 +15,8 @@ When browsing your chart of accounts, you can sort the accounts by :guilabel:`Co
|
||||
.. image:: chart_of_accounts/chart-of-accounts-sort.png
|
||||
:alt: Group the accounts by type in Odoo Accounting
|
||||
|
||||
.. _chart-of-account/create:
|
||||
|
||||
Configuration of an account
|
||||
===========================
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ for use at a later date:
|
||||
- `Odoo Tutorials: Bank Configuration
|
||||
<https://www.odoo.com/slides/slide/bank-configuration-1880>`_
|
||||
|
||||
.. _payments/register:
|
||||
|
||||
Registering payment from an invoice or bill
|
||||
===========================================
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@ of your organisation as at a particular date.
|
||||
|
||||
.. image:: reporting/main_reports09.png
|
||||
|
||||
.. _accounting/reporting/balance-sheet:
|
||||
|
||||
Profit and Loss
|
||||
---------------
|
||||
|
||||
@@ -49,6 +51,8 @@ report period.
|
||||
|
||||
.. image:: reporting/main_reports10.png
|
||||
|
||||
.. _accounting/reporting/executive-summary:
|
||||
|
||||
Executive Summary
|
||||
-----------------
|
||||
|
||||
@@ -126,6 +130,8 @@ payment during a selected month and several months prior.
|
||||
|
||||
.. image:: reporting/main_reports07.png
|
||||
|
||||
.. _accounting/reporting/cash-flow-statement:
|
||||
|
||||
Cash Flow Statement
|
||||
-------------------
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
@@ -4,9 +4,9 @@
|
||||
Expenses
|
||||
========
|
||||
|
||||
Odoo **Expenses** streamlines the management of expenses. After an employee submits their expenses
|
||||
in Odoo, the expenses are reviewed by management and accounting teams. Once approved, payments can
|
||||
then be processed and disbursed back to the employee for reimbursement(s).
|
||||
Odoo *Expenses* streamlines the management of expenses. After an employee submits their expenses in
|
||||
Odoo, they are reviewed by management and accounting teams. Once approved, payments can then be
|
||||
processed, and disbursed back to the employee for reimbursement.
|
||||
|
||||
.. seealso::
|
||||
`Odoo Expenses: product page <https://www.odoo.com/app/expenses>`_
|
||||
@@ -62,16 +62,16 @@ report the actual cost when submitting an expense report.
|
||||
Here are some examples for when to set a specific :guilabel:`Cost` on a product vs. leaving the
|
||||
:guilabel:`Cost` at `0.00`:
|
||||
|
||||
- **Meals**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal,
|
||||
- **Meals**: set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal,
|
||||
they enter the actual amount of the bill and will be reimbursed for that amount. An expense for
|
||||
a meal costing $95.23 would equal a reimbursement for $95.23.
|
||||
- **Mileage**: Set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
|
||||
- **Mileage**: set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
|
||||
"mileage", they enter the number of miles driven in the :guilabel:`Quantity` field, and are
|
||||
reimbursed 0.30 per mile they entered. An expense for 100 miles would equal a reimbursement for
|
||||
$30.00.
|
||||
- **Monthly Parking**: Set the :guilabel:`Cost` to `75.00`. When an employee logs an expense for
|
||||
- **Monthly Parking**: set the :guilabel:`Cost` to `75.00`. When an employee logs an expense for
|
||||
"monthly parking", the reimbursement would be for $75.00.
|
||||
- **Expenses**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not
|
||||
- **Expenses**: set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not
|
||||
a meal, mileage, or monthly parking, they use the generic :guilabel:`Expenses` product. An
|
||||
expense for a laptop costing $350.00 would be logged as an :guilabel:`Expenses` product, and
|
||||
the reimbursement would be for $350.00.
|
||||
@@ -98,10 +98,10 @@ the default :guilabel:`My Expenses` view. This view can also be accessed from
|
||||
|
||||
First, click :guilabel:`New`, and then fill out the various fields on the form.
|
||||
|
||||
- :guilabel:`Description`: Enter a short description for the expense in the :guilabel:`Description`
|
||||
- :guilabel:`Description`: enter a short description for the expense in the :guilabel:`Description`
|
||||
field. This should be short and informative, such as `lunch with client` or `hotel for
|
||||
conference`.
|
||||
- :guilabel:`Category`: Select the expense category from the drop-down menu that most closely
|
||||
- :guilabel:`Category`: select the expense category from the drop-down menu that most closely
|
||||
corresponds to the expense. For example, an airplane ticket would be appropriate for an expense
|
||||
:guilabel:`Category` named :guilabel:`Air Travel`.
|
||||
- :guilabel:`Total`: Enter the total amount paid for the expense in one of two ways:
|
||||
@@ -119,7 +119,7 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
|
||||
cost *per mile*. Set the :guilabel:`Quantity` to the *number of miles* driven, and the total
|
||||
is calculated.
|
||||
|
||||
- :guilabel:`Included Taxes`: If taxes were configured on the expense category, the tax percentage
|
||||
- :guilabel:`Included Taxes`: if taxes were configured on the expense category, the tax percentage
|
||||
and amount appear automatically after entering either the :guilabel:`Total` or the
|
||||
:guilabel:`Quantity`.
|
||||
|
||||
@@ -127,20 +127,20 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
|
||||
When a tax is configured on an expense category, the :guilabel:`Included Taxes` value will
|
||||
update in real time as the :guilabel:`Total` or :guilabel:`Quantity` is updated.
|
||||
|
||||
- :guilabel:`Employee`: Using the drop-down menu, select the employee this expense is for.
|
||||
- :guilabel:`Paid By`: Click the radio button to indicate who paid for the expense and should be
|
||||
- :guilabel:`Employee`: using the drop-down menu, select the employee this expense is for.
|
||||
- :guilabel:`Paid By`: click the radio button to indicate who paid for the expense and should be
|
||||
reimbursed. If the employee paid for the expense (and should be reimbursed) select
|
||||
:guilabel:`Employee (to reimburse)`. If the company paid directly instead (e.g. if the company
|
||||
credit card was used to pay for the expense) select :guilabel:`Company`. Depending on the expense
|
||||
category selected, this field may not appear.
|
||||
- :guilabel:`Bill Reference`: If there is any reference text that should be included for the
|
||||
- :guilabel:`Bill Reference`: if there is any reference text that should be included for the
|
||||
expense, enter it in this field.
|
||||
- :guilabel:`Expense Date`: Using the calendar module, enter the date the expense was incurred. Use
|
||||
- :guilabel:`Expense Date`: using the calendar module, enter the date the expense was incurred. Use
|
||||
the :guilabel:`< (left)` and :guilabel:`> (right)` arrows to navigate to the correct month, then
|
||||
click on the specific day to enter the selection.
|
||||
- :guilabel:`Account`: Select the expense account that this expense should be logged on from the
|
||||
- :guilabel:`Account`: select the expense account that this expense should be logged on from the
|
||||
drop-down menu.
|
||||
- :guilabel:`Customer to Reinvoice`: If the expense is something that should be paid for by a
|
||||
- :guilabel:`Customer to Reinvoice`: if the expense is something that should be paid for by a
|
||||
customer, select the :abbr:`SO (Sales Order)` and customer that will be invoiced for this expense
|
||||
from the drop-down menu. All sales orders in the drop-down menu list both the :abbr:`SO (Sales
|
||||
Order)` as well as the company the sales order is written for, but after the expense is saved, the
|
||||
@@ -152,14 +152,13 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
|
||||
expenses tied to that meeting would indicate the sales order for the custom garden (which also
|
||||
references the customer) as the :guilabel:`Customer to Reinvoice`.
|
||||
|
||||
- :guilabel:`Analytic Distribution`: Select the account(s) the expense should be written against
|
||||
from the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both.
|
||||
Multiple accounts can be listed for each category if needed. Adjust the percentage for each
|
||||
analytic account by typing in the percentage value next to the account.
|
||||
- :guilabel:`Company`: If multiple companies are set up, select the company this expense should be
|
||||
filed for from the drop-down menu. The current company will automatically populate this field.
|
||||
- :guilabel:`Notes...`: If any notes are needed in order to clarify the expense, enter them in the
|
||||
notes field.
|
||||
- :guilabel:`Analytic Distribution`: select the accounts the expense should be written against from
|
||||
the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both. Multiple
|
||||
accounts can be listed for each category, if needed. Adjust the percentage for each analytic
|
||||
account by typing in the percentage value next to the account.
|
||||
- :guilabel:`Company`: if multiple companies are set up, select the company this expense should be
|
||||
filed for from the drop-down menu. The current company automatically populates this field.
|
||||
- :guilabel:`Notes...`: if any notes are needed to clarify the expense, enter them in this field.
|
||||
|
||||
.. image:: expenses/expense-filled-in.png
|
||||
:align: center
|
||||
@@ -263,110 +262,6 @@ appears: :guilabel:`Use this reference as a subject prefix when submitting by em
|
||||
- The :guilabel:`Internal Reference` for the expense category `Meals` is `FOOD`
|
||||
- The :guilabel:`Cost` for the expense is `$25.00`
|
||||
|
||||
.. _expenses/report:
|
||||
|
||||
Create an expense report
|
||||
========================
|
||||
|
||||
When expenses are ready to submit (such as at the end of a business trip, or once a month), an
|
||||
*expense report* needs to be created. Go to the main :menuselection:`Expenses` app dashboard, which
|
||||
displays a default :guilabel:`My Expenses` view, or go to :menuselection:`Expenses app --> My
|
||||
Expenses --> My Expenses`.
|
||||
|
||||
Expenses are color coded by status. Any expense with a status of :guilabel:`To Report` (expenses
|
||||
that still need to be added to an expense report) the text appears in blue. All other statuses
|
||||
(:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black.
|
||||
|
||||
First, select each individual expense for the report by clicking the check box next to each entry,
|
||||
or quickly select all the expenses in the list by clicking the check box next to :guilabel:`Expense
|
||||
Date`.
|
||||
|
||||
Another way to quickly add all expenses that are not on an expense report is to click
|
||||
:guilabel:`Create Report` without selecting any expenses, and Odoo will select all expenses with a
|
||||
status of :guilabel:`To Submit` that are not already on a report.
|
||||
|
||||
.. image:: expenses/create-report.png
|
||||
:align: center
|
||||
:alt: Select the expenses to submit, then create the report.
|
||||
|
||||
.. note::
|
||||
Any expense can be selected from the :guilabel:`My Expenses` list, regardless of status. The
|
||||
:guilabel:`Create Report` button is visible as long as there is a minimum of 1 expense with a
|
||||
status of :guilabel:`To Report` selected. When the :guilabel:`Create Report` button is clicked,
|
||||
only expenses with a status of :guilabel:`To Submit` that are *not* currently on another expense
|
||||
report will appear in the newly created expense report.
|
||||
|
||||
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
|
||||
appears with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached
|
||||
to an individual expense, a :guilabel:`📎 (paperclip)` icon appears next to the :guilabel:`Customer
|
||||
to Reinvoice` and :guilabel:`Analytic Distribution` columns.
|
||||
|
||||
When the report is created, the date range for the expenses appears in the :guilabel:`Expense Report
|
||||
Summary` field by default. It is recommended to edit this field with a short summary for each report
|
||||
to help keep expenses organized. Enter a short description for the expense report (such as `Client
|
||||
Trip NYC`, or `Repairs for Company Car`) in the :guilabel:`Expense Report Summary` field. Next,
|
||||
select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report. If
|
||||
needed, the :guilabel:`Journal` can be changed. Use the drop-down menu to select a different
|
||||
:guilabel:`Journal`.
|
||||
|
||||
.. image:: expenses/expense-report-summary.png
|
||||
:align: center
|
||||
:alt: Enter a short description and select a manager for the report.
|
||||
|
||||
If some expenses are not on the report that should be, they can still be added. Click :guilabel:`Add
|
||||
a line` at the bottom of the :guilabel:`Expense` tab. A pop up appears with all the available
|
||||
expenses that can be added to the report (with a status of :guilabel:`To Submit`). Click the check
|
||||
box next to each expense to add, then click :guilabel:`Select`. The items now appear on the report
|
||||
that was just created. If a new expense needs to be added that does *not* appear on the list, click
|
||||
:guilabel:`New` to create a new expense and add it to the report.
|
||||
|
||||
.. image:: expenses/add-an-expense-line.png
|
||||
:align: center
|
||||
:alt: Add more expenses to the report before submitting.
|
||||
|
||||
.. note::
|
||||
Expense reports can be created in one of three places:
|
||||
|
||||
#. Go to the main :menuselection:`Expenses` app dashboard (also accessed by going to
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`)
|
||||
#. Go to :menuselection:`Expenses app --> My Expenses --> My Reports`
|
||||
#. Go to :menuselection:`Expenses app --> Expense Reports`
|
||||
|
||||
In any of these views, click :guilabel:`New` to create a new expense report.
|
||||
|
||||
.. _expenses/submit:
|
||||
|
||||
Submit an expense report
|
||||
------------------------
|
||||
|
||||
When an expense report is completed, the next step is to submit the report to a manager for
|
||||
approval. Reports must be individually submitted, and cannot be submitted in batches. Open the
|
||||
specific report from the list of expense reports (if the report is not already open). To view all
|
||||
expense reports, go to :menuselection:`Expenses app --> My Expenses --> My Reports`.
|
||||
|
||||
If the list is large, grouping the results by status may be helpful since only reports that have a
|
||||
:guilabel:`To Submit` status need to be submitted, reports with an :guilabel:`Approved` or
|
||||
:guilabel:`Submitted` status do not.
|
||||
|
||||
The :guilabel:`To Submit` expenses are easily identifiable not just from the :guilabel:`To Submit`
|
||||
status, but the text appears in blue, while the other expenses text appears in black.
|
||||
|
||||
.. image:: expenses/expense-status.png
|
||||
:align: center
|
||||
:alt: Submit the report to the manager.
|
||||
|
||||
.. note::
|
||||
The status of each report is shown in the :guilabel:`Status` column on the right. If the
|
||||
:guilabel:`Status` column is not visible, click the :guilabel:`Additional Options (two dots)`
|
||||
icon at the end of the row, and enable :guilabel:`Status`.
|
||||
|
||||
Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report,
|
||||
the next step is to wait for the manager to approve it.
|
||||
|
||||
.. important::
|
||||
The :ref:`expenses/approve`, :ref:`expenses/post`, and :ref:`expenses/reimburse` sections are
|
||||
**only** for users with the *necessary rights*.
|
||||
|
||||
.. _expenses/approve:
|
||||
|
||||
Approve expenses
|
||||
@@ -386,10 +281,10 @@ To see who has rights to approve, go to the main :menuselection:`Settings` app a
|
||||
:guilabel:`Administration` section (bottom right of the :guilabel:`Access Rights` tab) is set to
|
||||
one of three options:
|
||||
|
||||
- :guilabel:`None (blank)`: The user cannot access the *Settings* app at all.
|
||||
- :guilabel:`Access Rights`: The user can only view the :guilabel:`User's & Companies` section of
|
||||
- :guilabel:`None (blank)`: the user cannot access the *Settings* app at all.
|
||||
- :guilabel:`Access Rights`: the user can only view the :guilabel:`User's & Companies` section of
|
||||
the *Settings* app.
|
||||
- :guilabel:`Settings`: The user has access to the entire *Settings* app with no restrictions.
|
||||
- :guilabel:`Settings`: the user has access to the entire *Settings* app with no restrictions.
|
||||
|
||||
Please refer to :doc:`this document </applications/general/users>` to learn more about managing
|
||||
users and their access rights.
|
||||
@@ -398,12 +293,12 @@ Click on an individual to view their card, which displays the :guilabel:`Access
|
||||
default view. Scroll down to the :guilabel:`Human Resources` section. Under :guilabel:`Expenses`,
|
||||
there are four options:
|
||||
|
||||
- :guilabel:`None (blank)`: A blank field means the user has no rights to view or approve expense
|
||||
- :guilabel:`None (blank)`: a blank field means the user has no rights to view or approve expense
|
||||
reports, and can only view their own.
|
||||
- :guilabel:`Team Approver`: The user can only view and approve expense reports for their own
|
||||
- :guilabel:`Team Approver`: the user can only view and approve expense reports for their own
|
||||
specific team.
|
||||
- :guilabel:`All Approver`: The user can view and approve any expense report.
|
||||
- :guilabel:`Administrator`: The user can view and approve any expense report, as well as access the
|
||||
- :guilabel:`All Approver`: the user can view and approve any expense report.
|
||||
- :guilabel:`Administrator`: the user can view and approve any expense report, as well as access the
|
||||
reporting and configuration menus in the *Expenses* app.
|
||||
|
||||
Users who are able to approve expense reports (typically managers) can easily view all expense
|
||||
@@ -416,18 +311,18 @@ reports with a status of :guilabel:`Refused` are hidden in the default view.
|
||||
:align: center
|
||||
:alt: Reports to validate are found on the Reports to Approve page.
|
||||
|
||||
When viewing expense reports, there is a panel of filters that can be enabled or disabled on the
|
||||
left side. The three categories that filters can be applied on are :guilabel:`Status`,
|
||||
When viewing expense reports, there is a panel of filters that can be enabled (or disabled) on the
|
||||
left side. The three categories where filters can be applied on are :guilabel:`Status`,
|
||||
:guilabel:`Employee`, and :guilabel:`Company`. To view only expense reports with a particular
|
||||
status, enable the specific status filter to display the expense reports with only that status.
|
||||
Disable the specific status filter to hide the reports with that status. To view expense reports for
|
||||
a particular employee and/or company, enable the specific employee name filter and/or company filter
|
||||
in the :guilabel:`Employee` and :guilabel:`Company` sections.
|
||||
|
||||
Reports can be approved in two ways (individually or several at once) and refused only one way. To
|
||||
Reports can be approved in two ways (individually or several at once), and refused only one way. To
|
||||
approve multiple expense reports at once, remain in the list view. First, select the reports to
|
||||
approve by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
|
||||
to select all the reports in the list.
|
||||
approve by ticking the checkbox next to each report, or tick the checkbox next to
|
||||
:guilabel:`Employee` to select all the reports in the list.
|
||||
|
||||
.. important::
|
||||
Only reports with a status of :guilabel:`Submitted` can be approved. It is recommended to only
|
||||
@@ -435,7 +330,7 @@ to select all the reports in the list.
|
||||
:guilabel:`Submitted` filter enabled.
|
||||
|
||||
If a report is selected that is unable to be approved, the :guilabel:`Approve Report` button
|
||||
**will not appear**, indicating there is a problem with the selected report(s).
|
||||
does **not** appear, indicating there is a problem with the selected report.
|
||||
|
||||
Next, click the :guilabel:`Approve Report` button.
|
||||
|
||||
@@ -483,9 +378,9 @@ Post expenses in accounting
|
||||
===========================
|
||||
|
||||
Once an expense report is approved, the next step is to post the report to the accounting journal.
|
||||
To view all expense reports, go to :menuselection:`Expenses app --> Expense Reports`. To view only the
|
||||
expense reports that have been approved and need to be posted, adjust the filters on the left side
|
||||
so that only the :guilabel:`Approved` status is enabled.
|
||||
To view all expense reports, go to :menuselection:`Expenses app --> Expense Reports`. To view only
|
||||
the expense reports that have been approved and need to be posted, adjust the filters on the left
|
||||
side so that only the :guilabel:`Approved` status is enabled.
|
||||
|
||||
.. image:: expenses/post-reports.png
|
||||
:align: center
|
||||
@@ -493,8 +388,8 @@ so that only the :guilabel:`Approved` status is enabled.
|
||||
|
||||
Just like approvals, expense reports can be posted in two ways (individually or several at once). To
|
||||
post multiple expense reports at once, remain in the list view. First, select the reports to post by
|
||||
clicking the check box next to each report, or click the box next to :guilabel:`Employee` to select
|
||||
all the reports in the list. Next, click :guilabel:`Post Entries`.
|
||||
ticking the checkbox next to each report, or tick the checkbox next to :guilabel:`Employee` to
|
||||
select all the reports in the list. Next, click :guilabel:`Post Entries`.
|
||||
|
||||
.. image:: expenses/post-entries.png
|
||||
:align: center
|
||||
@@ -532,8 +427,9 @@ Reports --> Reports To Pay`.
|
||||
|
||||
Just like approvals and posting, expense reports can be paid in two ways (individually or several at
|
||||
once). To pay multiple expense reports at once, remain in the list view. First, select the reports
|
||||
to pay by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
|
||||
to select all the reports in the list. Next, click :guilabel:`Register Payment`.
|
||||
to pay by ticking the checkbox next to each report, or tick the checkbox next to
|
||||
:guilabel:`Employee` to select all the reports in the list. Next, click :guilabel:`Register
|
||||
Payment`.
|
||||
|
||||
.. image:: expenses/register-payment.png
|
||||
:align: center
|
||||
@@ -567,7 +463,7 @@ If expenses are tracked on customer projects, expenses can be automatically char
|
||||
customer. This is done by creating an expense, referencing the :abbr:`SO (Sales Order)` the expense
|
||||
should be added to, and then creating the expense report. Next, managers approve the expense report,
|
||||
and the accounting department posts the journal entries. Finally, once the expense report is posted
|
||||
to a journal, the expense(s) appears on the :abbr:`SO (Sales Order)` that was referenced. The sales
|
||||
to a journal, the expenses appear on the :abbr:`SO (Sales Order)` that was referenced. The sales
|
||||
order can then be invoiced, thus invoicing the customer for the expense.
|
||||
|
||||
Setup
|
||||
@@ -589,11 +485,11 @@ Create an expense
|
||||
-----------------
|
||||
|
||||
First, when :ref:`creating a new expense <expenses/new>`, the correct information needs to be
|
||||
entered in order to re-invoice a customer. Select the *sales order* the expense will appear on in
|
||||
the :guilabel:`Customer to Reinvoice` section, from the drop-down menu. Next, select the
|
||||
:guilabel:`Analytic Account` the expense will be posted to. After the expense(s) are created, the
|
||||
expense report needs to be :ref:`created <expenses/report>` and :ref:`submitted <expenses/submit>`
|
||||
as usual.
|
||||
entered to re-invoice a customer. Select the sales order the expense should appear on in the
|
||||
:guilabel:`Customer to Reinvoice` section, from the drop-down menu. Next, select the
|
||||
:guilabel:`Analytic Account` the expense should be posted to. After the expenses are created, the
|
||||
expense report needs to be :doc:`created <expenses/expense_reports>`, and :ref:`submitted
|
||||
<expenses/submit>`, as usual.
|
||||
|
||||
.. image:: expenses/reinvoice-expense.png
|
||||
:align: center
|
||||
@@ -609,11 +505,11 @@ as usual.
|
||||
Validate and post expenses
|
||||
--------------------------
|
||||
|
||||
Only employees with permissions (typically managers or supervisors) can :ref:`approve expenses
|
||||
Only employees with permissions (typically, managers or supervisors) can :ref:`approve expenses
|
||||
<expenses/approve>`. Before approving an expense report, ensure the :guilabel:`Analytic
|
||||
Distribution` is set on every expense line of a report. If an :guilabel:`Analytic Distribution` is
|
||||
missing, assign the correct account(s) from the drop-down menu, and then click :guilabel:`Approve`
|
||||
or :guilabel:`Refuse`.
|
||||
missing, assign the correct accounts from the drop-down menu, and click :guilabel:`Approve` or
|
||||
:guilabel:`Refuse`.
|
||||
|
||||
The accounting department is typically responsible for :ref:`posting journal entries
|
||||
<expenses/post>`. Once an expense report is approved, it can then be posted. The :abbr:`SO (Sales
|
||||
@@ -651,3 +547,11 @@ Next, click :guilabel:`Create Invoice`, and select if the invoice is for a :guil
|
||||
invoice`, a :guilabel:`Down payment (percentage)`, or a :guilabel:`Down payment (fixed amount)` by
|
||||
clicking the radio button next to it. Then, click :guilabel:`Create Invoice`. The customer has now
|
||||
been invoiced for the expenses.
|
||||
|
||||
.. seealso::
|
||||
:doc:`expenses/expense_reports`
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
expenses/expense_reports
|
||||
|
||||
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 26 KiB |
@@ -0,0 +1,125 @@
|
||||
===============
|
||||
Expense reports
|
||||
===============
|
||||
|
||||
When expenses are ready to submit (such as, at the end of a business trip, or once a month), an
|
||||
*expense report* needs to be created. Open the main :menuselection:`Expenses app` dashboard, which
|
||||
displays the :guilabel:`My Expenses` dashboard, by default. Alternatively, navigate to
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`.
|
||||
|
||||
Expenses are color-coded by status. Any expense with a status of :guilabel:`To Report` (expenses
|
||||
that still need to be added to an expense report) is shown in blue text. All other statuses
|
||||
(:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black.
|
||||
|
||||
Create expense reports
|
||||
======================
|
||||
|
||||
First, select each desired expense to be added to the report on the :guilabel:`My Expenses`
|
||||
dashboard, by ticking the checkbox next to each entry, or quickly select all the expenses in the
|
||||
list by ticking the checkbox next to the :guilabel:`Expense Date` column title, if needed.
|
||||
|
||||
Another way to quickly add all expenses that are not on a expense report, is to click the
|
||||
:guilabel:`Create Report` button, *without* selecting any expenses, and Odoo automatically selects
|
||||
all expenses with a status of :guilabel:`To Submit` that are not already on a report.
|
||||
|
||||
.. image:: expense_reports/create-report.png
|
||||
:align: center
|
||||
:alt: Select the expenses to submit, then create the report.
|
||||
|
||||
.. note::
|
||||
Any expense can be selected from the :guilabel:`My Expenses` list, except for expenses with a
|
||||
status of :guilabel:`Approved`.
|
||||
|
||||
The :guilabel:`Create Report` button is visible as long as there is a minimum of one expense on
|
||||
the list with a status of either :guilabel:`To Report` or :guilabel:`To Submit`.
|
||||
|
||||
When the :guilabel:`Create Report` button is clicked, all expenses with a status of :guilabel:`To
|
||||
Submit` that are *not* currently on another expense report appears in the newly-created expense
|
||||
report.
|
||||
|
||||
If all expenses on the :guilabel:`My Expenses` report are already associated with another expense
|
||||
report, an :guilabel:`Invalid Operation` pop-up window appears, stating :guilabel:`You have no
|
||||
expenses to report.`
|
||||
|
||||
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
|
||||
appears with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached
|
||||
to an individual expense, a :icon:`fa-paperclip` :guilabel:`(paperclip)` icon appears between the
|
||||
:guilabel:`Customer to Reinvoice` and :guilabel:`Analytic Distribution` columns.
|
||||
|
||||
When the report is created, the date range for the expenses appears in the :guilabel:`Expense Report
|
||||
Summary` field, by default. It is recommended to edit this field with a short summary for each
|
||||
report to help keep expenses organized. Enter a description for the expense report, such as `Client
|
||||
Trip NYC`, or `Office Supplies for Presentation`, in the :guilabel:`Expense Report Summary` field.
|
||||
|
||||
The :guilabel:`Employee`, :guilabel:`Paid By`, and :guilabel:`Company` fields autopoulate with the
|
||||
information listed on the individual expenses.
|
||||
|
||||
Next, select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report.
|
||||
If needed, update the :guilabel:`Journal` field, using the drop-down menu.
|
||||
|
||||
.. image:: expense_reports/expense-report-summary.png
|
||||
:align: center
|
||||
:alt: Enter a short description and select a manager for the report.
|
||||
|
||||
If some expenses are missing from the report, they can still be added from this report form. To do
|
||||
so, click :guilabel:`Add a line` at the bottom of the :guilabel:`Expense` tab.
|
||||
|
||||
An :guilabel:`Add: Expense Lines` pop-up window appears, displaying all the available expenses (with
|
||||
a :guilabel:`To Submit` status) that can be added to the report.
|
||||
|
||||
If a new expense needs to be added that does **not** appear on the list, click :guilabel:`New` to
|
||||
:ref:`create a new expense <expenses/new>` and add it to the report.
|
||||
|
||||
Tick the checkbox next to each expense being added, then click :guilabel:`Select`.
|
||||
|
||||
Doing so removes the pop-up window, and the items now appear on the report.
|
||||
|
||||
.. image:: expense_reports/add-an-expense-line.png
|
||||
:align: center
|
||||
:alt: Add more expenses to the report before submitting.
|
||||
|
||||
.. note::
|
||||
Expense reports can be created in one of three places:
|
||||
|
||||
#. Navigate to the main :menuselection:`Expenses app` dashboard (also accessible, via
|
||||
:menuselection:`Expenses app --> My Expenses --> My Expenses`)
|
||||
#. Navigate to :menuselection:`Expenses app --> My Expenses --> My Reports`
|
||||
#. Navigate to :menuselection:`Expenses app --> Expense Reports`
|
||||
|
||||
In any of these views, click :guilabel:`New` to create a new expense report.
|
||||
|
||||
.. _expenses/submit:
|
||||
|
||||
Submit expense reports
|
||||
======================
|
||||
|
||||
When an expense report is completed, the next step is to submit the report to a manager for
|
||||
approval. To view all expense reports, navigate to :menuselection:`Expenses app --> My Expenses -->
|
||||
My Reports`. Open the specific report from the list of expense reports.
|
||||
|
||||
.. note::
|
||||
Reports must be individually submitted, and **cannot** be submitted in batches.
|
||||
|
||||
If the list is large, grouping the results by status may be helpful, since only reports with a
|
||||
:guilabel:`To Submit` status need to be submitted; reports with an :guilabel:`Approved` or
|
||||
:guilabel:`Submitted` status do not.
|
||||
|
||||
The :guilabel:`To Submit` expenses are identifiable by the :guilabel:`To Submit` status, and by the
|
||||
blue text, while all other expense text appears in black.
|
||||
|
||||
.. image:: expense_reports/expense-status.png
|
||||
:align: center
|
||||
:alt: Submit the report to the manager.
|
||||
|
||||
.. note::
|
||||
The status of each report is shown in the :guilabel:`Status` column. If the :guilabel:`Status`
|
||||
column is not visible, click the :icon:`oi-settings-adjust` :guilabel:`(additional options)` icon
|
||||
at the end of the row, and tick the checkbox beside :guilabel:`Status` from the resulting
|
||||
drop-down menu.
|
||||
|
||||
Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report,
|
||||
the next step is to wait for the manager to approve it.
|
||||
|
||||
.. important::
|
||||
The :ref:`expenses/approve`, :ref:`expenses/post`, and :ref:`expenses/reimburse` sections are
|
||||
**only** for users with the appropriate *access rights*.
|
||||
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 29 KiB |
@@ -122,7 +122,7 @@ available on Odoo.
|
||||
- :doc:`United Arab Emirates - Accounting <fiscal_localizations/united_arab_emirates>`
|
||||
- :doc:`UK - Accounting <fiscal_localizations/united_kingdom>`
|
||||
- Ukraine - Accounting
|
||||
- United States - Accounting
|
||||
- :doc:`United States - Accounting <fiscal_localizations/united_states>`
|
||||
- Uruguay - Accounting
|
||||
- Venezuela - Accounting
|
||||
- :doc:`Vietnam - Accounting <fiscal_localizations/vietnam>`
|
||||
@@ -162,4 +162,5 @@ available on Odoo.
|
||||
fiscal_localizations/vietnam
|
||||
fiscal_localizations/united_arab_emirates
|
||||
fiscal_localizations/united_kingdom
|
||||
fiscal_localizations/united_states
|
||||
fiscal_localizations/employment_hero
|
||||
|
||||
@@ -758,9 +758,9 @@ Cancel an own check
|
||||
*******************
|
||||
|
||||
To cancel an own check created in Odoo, navigate to :menuselection:`Accounting --> Vendors --> Own
|
||||
Checks` and select the check to be canceled, then click on the :guilabel:`Void Check` button. This
|
||||
Checks` and select the check to be cancelled, then click on the :guilabel:`Void Check` button. This
|
||||
will break the reconciliation with the vendor bills and the bank statements and leave the check in a
|
||||
**canceled** state.
|
||||
**cancelled** state.
|
||||
|
||||
.. image:: argentina/empty-check-button.png
|
||||
:align: center
|
||||
@@ -1018,69 +1018,37 @@ specific product.
|
||||
Reports
|
||||
=======
|
||||
|
||||
As part of the localization installation, financial reporting for Argentina was added to the
|
||||
:guilabel:`Accounting` dashboard. Access these reports by navigating to :menuselection:`Accounting
|
||||
--> Reporting --> Argentinean Reports`
|
||||
As part of the localization installation, financial reporting for Argentina is available in the
|
||||
:guilabel:`Accounting` dashboard. To access these reports, navigate to :menuselection:`Accounting
|
||||
--> Reporting --> Argentinean Statements`.
|
||||
|
||||
.. image:: argentina/argentinian-reports.png
|
||||
:align: center
|
||||
:alt: Argentinean reports.
|
||||
To access the VAT book report, go to :menuselection:`Accounting --> Reporting --> Tax Report`, click
|
||||
the :icon:`fa-book` (:guilabel:`book`), and select :guilabel:`Argentinean VAT book (AR)`.
|
||||
|
||||
VAT reports
|
||||
-----------
|
||||
|
||||
Sales VAT book
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
This report records all the sales, which are taken as the basis for the accounting records
|
||||
to determine the VAT (Tax Debit). The :guilabel:`Sales VAT` book report can be exported as a `.zip`
|
||||
file using the :guilabel:`VAT BOOK (ZIP)` button at the top left, containing `.txt` files to upload
|
||||
to the AFIP portal.
|
||||
|
||||
.. image:: argentina/sales-vat-book.png
|
||||
:align: center
|
||||
:alt: Sales VAT book.
|
||||
|
||||
Purchases VAT book
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The :guilabel:`Purchases VAT` book report can be exported as a `.zip` file using the
|
||||
:guilabel:`VAT BOOK (ZIP)` button at the top left, which contains `.txt` files to upload to the AFIP
|
||||
portal.
|
||||
|
||||
.. image:: argentina/purchases-vat-book.png
|
||||
:align: center
|
||||
:alt: Purchases VAT book.
|
||||
.. note::
|
||||
The VAT book report can be exported as a `.zip` file by selecting it in the dropdown menu in the
|
||||
top-left corner.
|
||||
|
||||
VAT summary
|
||||
~~~~~~~~~~~
|
||||
-----------
|
||||
|
||||
Pivot table designed to check the monthly VAT totals. This report is for internal use and is not
|
||||
sent to the AFIP.
|
||||
|
||||
.. image:: argentina/vat-summary.png
|
||||
:align: center
|
||||
:alt: VAT Summary.
|
||||
|
||||
IIBB - Reports
|
||||
--------------
|
||||
This pivot table is designed to check the monthly VAT totals. This report is for internal use and is
|
||||
not sent to the AFIP.
|
||||
|
||||
IIBB - Sales by jurisdiction
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
----------------------------
|
||||
|
||||
Pivot table where you can validate the gross income in each jurisdiction. Affidavit for the
|
||||
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
|
||||
This pivot table allows you to validate the gross income in each jurisdiction. It serves as an
|
||||
affidavit for the corresponding taxes due but is not submitted to the AFIP.
|
||||
|
||||
.. image:: argentina/iibb-sales-jurisdiction.png
|
||||
:align: center
|
||||
:alt: IIBB Sales by jurisdiction.
|
||||
|
||||
IIBB - Purchases by jurisdiction
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
--------------------------------
|
||||
|
||||
Pivot table where you can validate the gross purchases in each jurisdiction. Affidavit for the
|
||||
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
|
||||
This pivot table allows you to validate the gross purchases in each jurisdiction. It serves as an
|
||||
affidavit for the corresponding taxes due but is not submitted to the AFIP.
|
||||
|
||||
.. image:: argentina/iibb-purchases-jurisdiction.png
|
||||
:align: center
|
||||
:alt: IIBB Purchases by jurisdiction.
|
||||
|
||||
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 56 KiB |
@@ -549,7 +549,7 @@ A range of sequences that are assigned to sales journals can be invalidated with
|
||||
they are not currently used, **and** will not be used in the future. To do so, navigate to the
|
||||
journal, and click the :menuselection:`⚙️ (gear) icon --> Invalidate Number Range (BR)`. On the
|
||||
:guilabel:`Invalidate Number Range (BR)` wizard, add the :guilabel:`Initial Number` and
|
||||
:guilabel:`End Number` of the range that should be canceled, and enter an invalidation
|
||||
:guilabel:`End Number` of the range that should be cancelled, and enter an invalidation
|
||||
:guilabel:`Reason`.
|
||||
|
||||
.. image:: brazil/range-number-invalidation.png
|
||||
@@ -563,7 +563,7 @@ journal, and click the :menuselection:`⚙️ (gear) icon --> Invalidate Number
|
||||
(NF-e).
|
||||
|
||||
.. note::
|
||||
The log of the canceled numbers along with the XML file are recorded in the chatter of the
|
||||
The log of the cancelled numbers along with the XML file are recorded in the chatter of the
|
||||
journal.
|
||||
|
||||
Vendor bills
|
||||
|
||||
@@ -511,10 +511,6 @@ Once the invoice is accepted and validated by the :abbr:`SII (Servicio de Impues
|
||||
the PDF is printed, it includes the fiscal elements that indicate that the document is fiscally
|
||||
valid.
|
||||
|
||||
.. image:: chile/sii-validation-elements.png
|
||||
:alt: SII Validation fiscal elements.
|
||||
:align: center
|
||||
|
||||
.. important::
|
||||
If you are hosted in Odoo SH or On-Premise, you should manually install the `pdf417gen
|
||||
<https://pypi.org/project/pdf417gen/>`_ library. Use the following command to install it:
|
||||
@@ -617,7 +613,7 @@ Note` and select :guilabel:`Full Refund`, in this case the :abbr:`SII (Servicio
|
||||
Internos)` reference code is automatically set to :guilabel:`Anula Documento de referencia`.
|
||||
|
||||
.. image:: chile/credit-note-cancel-ref-doc.png
|
||||
:alt: Credit note canceling the referenced document.
|
||||
:alt: Credit note cancelling the referenced document.
|
||||
:align: center
|
||||
|
||||
Correct referenced document
|
||||
@@ -742,7 +738,7 @@ vendor.
|
||||
:align: center
|
||||
|
||||
If you claim a vendor bill, the status changes from :guilabel:`Draft` to :guilabel:`Cancel`
|
||||
automatically. Considering this as best practice, all the claimed documents should be canceled as
|
||||
automatically. Considering this as best practice, all the claimed documents should be cancelled as
|
||||
they won't be valid for your accounting records.
|
||||
|
||||
Electronic purchase invoice
|
||||
@@ -1196,7 +1192,7 @@ on the client's original order.
|
||||
:alt: Selection of order for the refund process.
|
||||
|
||||
When the return payment is validated, Odoo generates the necessary credit note, referencing the
|
||||
original receipt or invoice, partially or fully canceling the document.
|
||||
original receipt or invoice, partially or fully cancelling the document.
|
||||
|
||||
.. seealso::
|
||||
`Smart tutorial - Electronic invoicing for point of sale
|
||||
|
||||
|
Before Width: | Height: | Size: 26 KiB |
@@ -33,6 +33,8 @@ Here are some terms that are essential on the Ecuadorian localization:
|
||||
Configuration
|
||||
=============
|
||||
|
||||
.. _l10n_ec/module-installation:
|
||||
|
||||
Modules installation
|
||||
--------------------
|
||||
|
||||
@@ -75,7 +77,7 @@ localization:
|
||||
* - :guilabel:`Ecuadorian Point of Sale`
|
||||
- `l10n_ec_edi_pos`
|
||||
- Includes all the technical and functional requirements to generate automatic electronic
|
||||
invoices from a PoS sale.
|
||||
invoices from a POS sale.
|
||||
|
||||
.. note::
|
||||
When you install a database from scratch selecting `Ecuador` as the country, Odoo automatically
|
||||
@@ -631,7 +633,7 @@ time.
|
||||
eCommerce workflow
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Type and identification number
|
||||
Identification type and number
|
||||
******************************
|
||||
|
||||
The client who is making a purchase will have the option to indicate their identification type and
|
||||
@@ -639,18 +641,74 @@ number during the checkout process. This information is required to correctly ge
|
||||
electronic invoice after the checkout is completed.
|
||||
|
||||
.. image:: ecuador/website-checkout-form.png
|
||||
:align: center
|
||||
:alt: Website checkout form.
|
||||
|
||||
.. note::
|
||||
Verification is done to ensure the *Identification Number* field is completed and has the correct
|
||||
number of digits. For RUC identification, 13 digits are required. For Cédula, 9 digits are
|
||||
required.
|
||||
Verification is done to ensure the :guilabel:`Identification Number` field is completed and has
|
||||
the correct number of digits. For RUC identification, 13 digits are required. For Cédula,
|
||||
9 digits are required.
|
||||
|
||||
After finishing the checkout process, a confirmed invoice is generated, ready to be sent manually or
|
||||
asynchronously to the SRI.
|
||||
|
||||
Financial Reports
|
||||
Point of Sale electronic invoicing
|
||||
----------------------------------
|
||||
|
||||
Make sure the *Ecuadorian module for Point of Sale* (`l10n_ec_edi_pos`) is :ref:`installed
|
||||
<l10n_ec/module-installation>` to enable the following features and configurations:
|
||||
|
||||
- Choose the SRI payment method in each payment method configuration.
|
||||
- Manually input the customer's identification type and identification number when creating a
|
||||
new contact on *POS*.
|
||||
- Automatically generate a valid electronic invoice for Ecuador at the end of the checkout process.
|
||||
|
||||
Payment method configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To :doc:`create a payment method for a point of sale <../../sales/point_of_sale/payment_methods>`,
|
||||
go to :menuselection:`Point of Sale --> Configuration --> Payment Methods`. Then, set the
|
||||
:guilabel:`SRI Payment Method` in the payment method form.
|
||||
|
||||
Invoicing flows
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Identification type and number
|
||||
******************************
|
||||
|
||||
The POS cashier can :ref:`create a new contact for a customer <pos/customers>` who requests an
|
||||
invoice from an open POS session.
|
||||
|
||||
The *Ecuadorian Module for Point of Sale* adds two new fields to the contact creation form:
|
||||
:guilabel:`Identification Type` and :guilabel:`Tax ID`.
|
||||
|
||||
.. note::
|
||||
As the identification number length differs depending on the identification type, Odoo
|
||||
automatically checks the :guilabel:`Tax ID` field upon saving the contact form. To manually
|
||||
ensure the length is correct, know that the :guilabel:`RUC` and :guilabel:`Citizenship` types
|
||||
require 13 and 10 digits, respectively.
|
||||
|
||||
Electronic invoice: anonymous end consumer
|
||||
******************************************
|
||||
|
||||
When clients do not request an electronic invoice for their purchase, Odoo automatically sets the
|
||||
customer as :guilabel:`Consumidor Final` and generates an electronic invoice anyway.
|
||||
|
||||
.. note::
|
||||
If the client requests a credit note due to a return of this type of purchase, the credit note
|
||||
should be made using the client's real contact information. Credit notes cannot be created to
|
||||
*Consumidor Final* and can be managed :ref:`directly from the POS session <pos/refund>`.
|
||||
|
||||
Electronic invoice: specific customer
|
||||
*************************************
|
||||
|
||||
If a customer requests an invoice for their purchase, it is possible to select or create a contact
|
||||
with their fiscal information. This ensures the invoice is generated with accurate customer details.
|
||||
|
||||
.. note::
|
||||
If the client requests a credit note due to a return of this type of purchase, the credit note
|
||||
and return process can be managed :ref:`directly from the POS session <pos/refund>`.
|
||||
|
||||
Financial reports
|
||||
=================
|
||||
|
||||
In Ecuador, there are fiscal reports that the company presents to SRI. Odoo supports two of the main
|
||||
|
||||
@@ -46,6 +46,9 @@ Configuration
|
||||
:alt: The Employment Hero "Business ID" number is in the URL
|
||||
|
||||
- You can choose any Odoo journal to post the payslip entries.
|
||||
#. Configure the tax by going to :menuselection:`Accounting --> Configuration --> Taxes`. Create the
|
||||
necessary taxes for the Employment Hero payslip entries. Fill in the tax code from
|
||||
**Employment Hero** in the :guilabel:`Matching Employment Hero Tax` field.
|
||||
|
||||
How does the API work?
|
||||
----------------------
|
||||
|
||||
@@ -172,7 +172,7 @@ 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://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>`_.
|
||||
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.
|
||||
|
||||
@@ -404,6 +404,16 @@ Send GSTR-1
|
||||
|
||||
#. The user can verify the :ref:`GSTR-1 <india/gstr-1_report>` report before uploading it to the
|
||||
**GST portal** by clicking :guilabel:`GSTR-1 Report`;
|
||||
|
||||
#. The user can also get details to be submitted in **GSTR-1** in **Spreadsheet view** by clicking
|
||||
on :guilabel:`Generate`;
|
||||
|
||||
.. image:: india/gst-gstr-1-generate.png
|
||||
:alt: GSTR-1 generate
|
||||
|
||||
.. image:: india/gst-gstr-1-spreadsheet-view.png
|
||||
:alt: GSTR-1 Spreadsheet View
|
||||
|
||||
#. If the **GSTR-1** report is correct, then click :guilabel:`Push to GSTN` to send it to the **GST
|
||||
portal**. The status of the :guilabel:`GSTR-1` report changes to :guilabel:`Sending`;
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 38 KiB |
@@ -102,18 +102,17 @@ The following codes are available when generating an e-Faktur.
|
||||
Correct an invoice that has been posted and downloaded: Replace Invoice feature
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
#. Cancel the original wrong invoice in Odoo. For instance, we will change the Kode Transakski from 01
|
||||
to 03 for the INV/2020/0001.
|
||||
#. Create a new invoice and set the canceled invoice in the *Replace Invoice* field. In this field,
|
||||
#. Cancel the original wrong invoice in Odoo. For instance, we will change the Kode Transakski from
|
||||
01 to 03 for the INV/2020/0001.
|
||||
#. Create a new invoice and set the cancelled invoice in the *Replace Invoice* field. In this field,
|
||||
we can only select invoices in *Cancel* state from the same customer.
|
||||
#. As you validate, Odoo will automatically use the same e-Faktur serial number as the canceled and
|
||||
#. As you validate, Odoo will automatically use the same e-Faktur serial number as the cancelled and
|
||||
replaced invoice replacing the third digit of the original serial number with *1* (as requested
|
||||
to upload a replacement invoice in the e-Faktur app).
|
||||
|
||||
.. image:: indonesia/indonesia-replace-invoice.png
|
||||
:align: center
|
||||
|
||||
|
||||
.. _localization_indonesia/reset_e-faktur:
|
||||
|
||||
Correct an invoice that has been posted but not downloaded yet: Reset e-Faktur
|
||||
|
||||
@@ -379,7 +379,7 @@ TD04 - Credit notes
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
It is the standard scenario for all **credit notes** issued to **domestic** clients, when we need to
|
||||
formally acknowledge that the seller is reducing or canceling a previously issued invoice, for
|
||||
formally acknowledge that the seller is reducing or cancelling a previously issued invoice, for
|
||||
example, in case of overbilling, incorrect items, or overpayment. Just like invoices, they must be
|
||||
sent to the :abbr:`SdI (Sistema di Interscambio)`, their :guilabel:`Document Type` `TD04`
|
||||
|
||||
|
||||
@@ -7,114 +7,369 @@ Kenya
|
||||
Configuration
|
||||
=============
|
||||
|
||||
:ref:`Install <general/install>` the following modules to get all the features of the Kenyan
|
||||
localization:
|
||||
Install the 🇰🇪 **Kenyan** :ref:`fiscal localization package <fiscal_localizations/packages>` to get
|
||||
all the features of the Kenyan localization.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
eTIMS
|
||||
=====
|
||||
|
||||
* - Name
|
||||
- Technical name
|
||||
- Description
|
||||
* - :guilabel:`Kenyan - Accounting`
|
||||
- `l10n_ke`
|
||||
- Installing this module grants you access to the list of accounts used in the local GAAP and
|
||||
the list of common taxes (VAT, etc.).
|
||||
* - :guilabel:`Kenyan - Accounting Reports`
|
||||
- `l10n_ke_reports`
|
||||
- Installing this module grants you access to improved accounting reports for Kenya, such as
|
||||
Profit and Loss and Balance Sheets.
|
||||
The `Kenya Revenue Authority (KRA) <https://www.kra.go.ke/>`_ has implemented the
|
||||
`electronic Tax Invoice Management System (eTIMS) <https://www.kra.go.ke/online-services/etims>`_
|
||||
for tax collection.
|
||||
|
||||
You also have to install the **Kenya Tremol Device EDI Integration** package to be able to report
|
||||
your taxes to the **Kenya Revenue Authority (KRA)** using the Tremol G03 Control Unit:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Name
|
||||
- Technical name
|
||||
- Description
|
||||
* - :guilabel:`Kenya Tremol Device EDI Integration`
|
||||
- `l10n_ke_edi_tremol`
|
||||
- Installing this module integrates with the Kenyan G03 Tremol control unit device to report
|
||||
taxes to KRA through TIMS.
|
||||
|
||||
.. image:: kenya/modules.png
|
||||
:align: center
|
||||
:alt: The three modules for the Kenya Fiscal Localization Package on Odoo
|
||||
|
||||
Kenyan TIMS integration
|
||||
=======================
|
||||
|
||||
The Kenya Revenue Authority (KRA) has decided to go digital for tax collection through the **Tax
|
||||
Invoice Management System (TIMS)**. As of December 1st, 2022, all VAT-registered persons should
|
||||
comply with TIMS. The goal is to reduce VAT fraud, increase tax revenue, and increase VAT compliance
|
||||
through standardization, validation, and transmission of invoices to KRA on a real-time or near
|
||||
real-time basis.
|
||||
|
||||
All VAT-registered taxpayers should use a **compliant tax register**. Odoo decided to develop the
|
||||
integration of the **Tremol G03 Control Unit (type C)**, which can be run locally through USB. This
|
||||
device validates invoices to ensure financial documents meet the new regulations and send the
|
||||
validated tax invoices directly to KRA. Installing a proxy server that provides a gateway between
|
||||
users and the internet is required.
|
||||
|
||||
Installing the proxy server on a Windows device
|
||||
-----------------------------------------------
|
||||
|
||||
Go to `odoo.com/download <https://www.odoo.com/page/download>`_, fill out the required information
|
||||
and click :guilabel:`Download`.
|
||||
|
||||
.. image:: kenya/download.png
|
||||
:align: center
|
||||
:alt: Install the Proxy Server on a Windows device
|
||||
|
||||
Once it is loaded on your computer, a wizard opens. You have to read and agree with the terms of the
|
||||
agreement. On the next page, select the :guilabel:`type of install: Odoo IoT`. Then, click
|
||||
:guilabel:`Next` and :guilabel:`Install`. Once completed, click :guilabel:`Next`. Check the
|
||||
:guilabel:`Start Odoo` box to be redirected to Odoo automatically, and then click :guilabel:`Finish`.
|
||||
|
||||
A new page opens, confirming your :doc:`IoT Box <../../general/iot/config/connect>` is up and
|
||||
running. Connect your physical device **Tremol G03 Control Unit (type C)** to your laptop via USB.
|
||||
In the :guilabel:`IoT Device` section, check that your Tremol G03 Control Unit (type C) appears,
|
||||
confirming the connection between the device and your computer.
|
||||
|
||||
.. image:: kenya/iot-box.png
|
||||
:align: center
|
||||
:alt: Your IoT box is up and running
|
||||
To submit documents through eTIMS, you must use an :abbr:`OSCU (Online Sales Control Unit)` that
|
||||
integrates with the existing **Trader Invoicing System (TIS)**, such as the one provided by Odoo.
|
||||
The OSCU is used to validate, encrypt, sign, transmit, and store tax invoices.
|
||||
|
||||
.. note::
|
||||
If the device is not detected, try to plug it in again or click on the :guilabel:`Restart` button
|
||||
in the top right corner.
|
||||
Make sure to :ref:`install <general/install>` the **Kenya eTIMS EDI** modules to use the OSCU
|
||||
device fully.
|
||||
|
||||
.. _kenya/initialization:
|
||||
|
||||
OSCU device initialization
|
||||
--------------------------
|
||||
|
||||
The OSCU must be initialized before use. To do so, navigate to :menuselection:`Settings --> General
|
||||
Settings`, click :guilabel:`Update Info` in the :guilabel:`Companies` section, and enter your
|
||||
:guilabel:`Tax ID`.
|
||||
|
||||
To initialize the OSCU:
|
||||
|
||||
#. Go to :menuselection:`Settings --> General Settings` and scroll down to the :guilabel:`Kenya
|
||||
eTIMS Integration` section.
|
||||
#. Set the :guilabel:`eTIMS Server Mode` to :guilabel:`Test` for the initialization.
|
||||
#. Enter the :guilabel:`Serial Number` of the device and tick the two check boxes.
|
||||
#. Click :guilabel:`Initialize OSCU`.
|
||||
|
||||
.. note::
|
||||
Three server modes are available:
|
||||
|
||||
- :guilabel:`Demo`: Designed for demo purposes; it uses mock data and does not require an
|
||||
initialized OSCU;
|
||||
- :guilabel:`Test`: Used to test the connection to eTIMS;
|
||||
- :guilabel:`Production`: Used for live databases that are ready to send data.
|
||||
|
||||
.. Important::
|
||||
If your device has **already been initialized** (through another ERP, for example), enable the
|
||||
:doc:`../../general/developer_mode`. Then, in the :guilabel:`Kenya eTIMS Integration` section,
|
||||
enter the ID of the unit in the :guilabel:`Unit ID` field and the key obtained through a previous
|
||||
initialization in the :guilabel:`CMC Key` field. Click :guilabel:`Save` when done.
|
||||
|
||||
Once the **OSCU module** has been :ref:`initialized <kenya/initialization>`, an OSCU serial number
|
||||
is generated for each company on that database with its **country** set to :guilabel:`Kenya`. The
|
||||
serial number is generated based on the VAT number of the company (regardless of its validity). It
|
||||
is a unique and sequential serial number starting with the prefix `ODOO` followed by the company's
|
||||
**VAT number** and a sequence of numbers.
|
||||
|
||||
Registering on eTIMS
|
||||
--------------------
|
||||
|
||||
Taxpayers *must* sign up and create an account on the `KRA portal <https://etims.kra.go.ke/basic/login/indexLogin>`_.
|
||||
If you do not have an account yet:
|
||||
|
||||
#. Sign up, enter your **PIN**, and verify that all information is correct, including your phone
|
||||
number, email address, and postal address. Correct any errors on the `iTax page
|
||||
<https://itax.kra.go.ke/KRA-Portal/>`_.
|
||||
#. An :abbr:`OTP (One-time Password)` is sent to the phone number provided. Unblock promotional
|
||||
messages if you do not receive it.
|
||||
#. Upload the **business owner ID** *or* **director's ID** (as listed on iTax), along with the
|
||||
filled-out and signed **commitment form** .
|
||||
#. On the **eTIMS dashboard**, click :guilabel:`Service request` at the top of the page. Select
|
||||
:guilabel:`OSCU` as the **eTIMS type**, enter `Odoo KE LTD` as the third-party integrator, and
|
||||
enter your company's OSCU serial number retrieved earlier.
|
||||
|
||||
.. note::
|
||||
Service request approvals are usually quick. If there's a delay, contact the eTIMS operation
|
||||
or KRA office.
|
||||
|
||||
.. admonition:: Commitment form
|
||||
|
||||
- Part 1: Fill in the taxpayer's information.
|
||||
- Part 2: Fill in the business owner's *or* director's information.
|
||||
- Part 3: Fill in your unique serial number found in Odoo.
|
||||
- Part 4: Tick **OSCU**, enter Odoo KE LTD PIN `PO52112956W`, and enter the Odoo version you're
|
||||
using (17.0 or onwards).
|
||||
- Part 5: Check the mandatory boxes, enter a date, and sign.
|
||||
|
||||
eTIMS codes
|
||||
-----------
|
||||
|
||||
Common standard codes are **automatically** fetched from the KRA eTIMS API servers every two days.
|
||||
To fetch them manually, proceed as follows:
|
||||
|
||||
#. Enable the :doc:`../../general/developer_mode`.
|
||||
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
|
||||
:guilabel:`KE eTIMS: Fetch KRA standard codes`.
|
||||
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> KE OSCU Codes` to view the complete list of
|
||||
fetched OSCU codes.
|
||||
|
||||
.. image:: kenya/oscu-codes.png
|
||||
:alt: List of fetched OSCU codes.
|
||||
|
||||
.. _etims/unspsc:
|
||||
|
||||
UNSPSC codes
|
||||
------------
|
||||
|
||||
The KRA needs UNSPSC codes for a product to be **registered**. UNSPSC codes are **automatically**
|
||||
fetched from the KRA eTIMS API servers every day. To fetch them manually, proceed as follows:
|
||||
|
||||
#. Enable the :doc:`../../general/developer_mode`.
|
||||
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
|
||||
:guilabel:`KE eTIMS: Fetch UNSPSC codes from eTIMS`.
|
||||
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
|
||||
|
||||
Go to the **product form**, and in the :guilabel:`Accounting` tab, click the :guilabel:`UNSPSC
|
||||
Category` field to view the complete list of fetched UNSPSC codes.
|
||||
|
||||
Notices
|
||||
-------
|
||||
|
||||
Notices are **automatically** fetched from the KRA eTIMS API servers every day. To fetch them
|
||||
**manually**, proceed as follows:
|
||||
|
||||
#. Enable the :doc:`../../general/developer_mode`.
|
||||
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
|
||||
:guilabel:`KE eTIMS: Fetch KRA notices from eTIMS`.
|
||||
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the notices.
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> KE OSCU Notices` to view the complete list of
|
||||
fetched notices.
|
||||
|
||||
Multi-company
|
||||
-------------
|
||||
|
||||
.. _kenya/branch:
|
||||
|
||||
.. seealso::
|
||||
:doc:`Connect an IoT box to your database <../../general/iot/config/connect>`
|
||||
:doc:`../../general/companies`
|
||||
|
||||
Sending the data to KRA using the Tremol G03 Control Unit
|
||||
---------------------------------------------------------
|
||||
If you have :ref:`multiple companies <accounting/multi-company>`, you can centralize and manage them
|
||||
all on a single Odoo database. The KRA identifies and differentiates the **main** company from
|
||||
its **subsidiaries** by using IDs. Furthermore, subsidiaries are classified as **branches** of the
|
||||
main company.
|
||||
|
||||
As a pre-requisite, check out that the :ref:`Kenyan Accounting modules
|
||||
<localization/kenya/configuration>` are installed on your database. Then, go to
|
||||
:menuselection:`Accounting --> Configuration --> Settings --> Kenya TIMS Integration section`, and
|
||||
check that the :guilabel:`control Unit Proxy Address` matches the address of the IoT box.
|
||||
To configure the company's ID, open the **Settings** app, click :guilabel:`Update Info` in the
|
||||
:guilabel:`Companies` section, and search for the :guilabel:`eTIMS Branch Code` field. The **main
|
||||
company** has a branch ID equal to `00` in a multi-company environment. Companies that are *not* the
|
||||
main company have a branch ID other than `00` and are assigned an ID by the KRA.
|
||||
|
||||
To send data to KRA, create a new invoice by going to :menuselection:`Accounting Dashboard -->
|
||||
Customer Invoice card` and clicking :guilabel:`New Invoice`. Upon confirmation of a new invoice, the
|
||||
:guilabel:`Send invoice to Fiscal Device` button appears. Clicking on it sends the invoice details
|
||||
to the device and from the device to the government. The :guilabel:`CU Invoice Number` field is now
|
||||
completed in your invoice, confirming the information has been sent.
|
||||
To add a branch, go to the :guilabel:`Branches` tab in the **company settings** and click
|
||||
:guilabel:`Add a line`.
|
||||
|
||||
The :guilabel:`Tremol G03 Fiscal Device` tab contains fields that are automatically completed once
|
||||
the invoice is sent to the government:
|
||||
|
||||
- :guilabel:`CU QR Code`: Url from the KRA portal which reflects a QR code.
|
||||
- :guilabel:`CU Serial Number`: reflects the serial number of the device.
|
||||
- :guilabel:`CU Signing Date and Time`: The date and time when the invoice has been sent to KRA.
|
||||
|
||||
If you click on :guilabel:`Send and Print`, a .pdf of the invoice is generated. The
|
||||
:guilabel:`Kenyan Fiscal Device Info` is mentioned on the document.
|
||||
To fetch the **branch ID** from the KRA for your non-main companies, ensure the main company has a
|
||||
Kenyan :guilabel:`Tax ID` and the OSCU device has been :ref:`initialized <kenya/initialization>`.
|
||||
Then, go to the :guilabel:`Branches` tab and click :guilabel:`Populate from KRA`.
|
||||
|
||||
.. note::
|
||||
To verify KRA has received the invoice information, take the :guilabel:`CU Invoice Number` and
|
||||
enter it in the :guilabel:`Invoice Number Checker` section on
|
||||
`Kenya Revenue Authority website <https://itax.kra.go.ke/KRA-Portal>`_. Click
|
||||
:guilabel:`Validate` and find the invoice details.
|
||||
- The KRA considers each **place of supply** as a separate branch (ID).
|
||||
- The **OSCU** device must be :ref:`initialized independently <kenya/initialization>` for each
|
||||
branch.
|
||||
|
||||
Contact branch ID
|
||||
-----------------
|
||||
|
||||
To attribute a branch ID to a contact, access the contact form, go to the :guilabel:`Accounting`
|
||||
tab, and enter the branch code in the :guilabel:`eTIMS Branch Code` field.
|
||||
|
||||
.. note::
|
||||
By default, contacts' branch IDs are set to `OO`.
|
||||
|
||||
KRA sequences
|
||||
-------------
|
||||
|
||||
.. important::
|
||||
Odoo invoice sequences and KRA sequences are **different**.
|
||||
|
||||
In Odoo, invoice sequences depend on the **main company**. Main companies can see the invoices of
|
||||
branches, but branches **cannot** see the main company's invoices or those of other branches.
|
||||
|
||||
The KRA needs **independent** sequences per branch. Therefore, Odoo manages sequences individually
|
||||
per branch.
|
||||
|
||||
.. example::
|
||||
If you have a main company with two branches, the invoice sequence would be the following:
|
||||
|
||||
- Creating an invoice on **branch 1**: INV/2024/00001;
|
||||
- Creating an invoice on **branch 2**: INV/2024/00002;
|
||||
- Creating an invoice on the **main company**: INV/2024/00003.
|
||||
|
||||
This is how Odoo manages sequences to be compliant with the KRA regulations:
|
||||
|
||||
- Creating an invoice on **branch 1**: INV/2024/00001;
|
||||
- Creating an invoice on **branch 2**: INV/2024/00001;
|
||||
- Creating an invoice on the **main company**: INV/2024/00001.
|
||||
|
||||
Insurance
|
||||
=========
|
||||
|
||||
For **health service providers**, you can send insurance information about the main and branch
|
||||
companies and update it in eTIMS. To do so, go to :menuselection:`Accounting --> Configuration -->
|
||||
Settings`, scroll to the :guilabel:`Kenya eTIMS Integration` section, and fill in the
|
||||
:guilabel:`Code`, :guilabel:`Name`, and :guilabel:`Rate` fields. Click :guilabel:`Send Insurance
|
||||
Details` when done.
|
||||
|
||||
.. _kenya/product-registration:
|
||||
|
||||
Product registration
|
||||
====================
|
||||
|
||||
The KRA requires **products to be registered** first before conducting business operations (such as
|
||||
stock movements, :abbr:`BOM (Bill of Materials)`, customer invoices, etc.). For a product to be
|
||||
registered, the following fields must be defined on the product form:
|
||||
|
||||
- In the :guilabel:`General Information` tab: :guilabel:`Cost`.
|
||||
- In the :guilabel:`Accounting` tab:
|
||||
|
||||
- :guilabel:`Packaging Unit`;
|
||||
- :guilabel:`Packaging Quantity`;
|
||||
- :guilabel:`Origin Country`;
|
||||
- :guilabel:`eTIMS Product Type`;
|
||||
- :guilabel:`Insurance Applicable`;
|
||||
- :ref:`UNSPSC Category <etims/unspsc>`.
|
||||
|
||||
If the elements above are defined, the product is automatically registered while sending the
|
||||
operation to the KRA. If not, you will be alerted by a yellow banner at the top of the screen
|
||||
inviting you to check the missing elements.
|
||||
|
||||
.. image:: kenya/product-registration.png
|
||||
:alt: Product registration template.
|
||||
|
||||
Stock movements
|
||||
===============
|
||||
|
||||
All **stock movements** must be sent to the KRA. They do not require an invoice if they are
|
||||
internal operations or stock adjustments; therefore, Odoo automatically sends them if at least one
|
||||
of the following conditions are met:
|
||||
|
||||
#. No contact is set for the move;
|
||||
#. The contact is your main company or a branch of the main company.
|
||||
|
||||
If the stock moves are **external operations** (e.g., to contacts that are not part of the main
|
||||
company or its branches), the stock moves are automatically sent *after* the invoice is sent to
|
||||
eTIMS.
|
||||
|
||||
.. note::
|
||||
- The stock move must be confirmed before sending the invoice to eTIMS.
|
||||
- The product(s) must be :ref:`registered <kenya/product-registration>` for the stock move to be
|
||||
sent to eTIMS. If the product has not been registered yet, a yellow banner will prompt the
|
||||
products' registration.
|
||||
|
||||
Purchases
|
||||
=========
|
||||
|
||||
Odoo automatically fetches new vendor bills from eTIMS every day. You need to confirm the fetched
|
||||
vendor bills and send the confirmation to the KRA. To confirm a vendor bill, it must be linked to
|
||||
one or several confirmed purchase order line(s).
|
||||
|
||||
.. _kenya/purchases:
|
||||
|
||||
In the case of purchases (not customs imports), the steps to link purchase order lines with bills
|
||||
are the following:
|
||||
|
||||
#. Go to :menuselection:`Accounting --> Vendors --> Bills`.
|
||||
The vendor bill is fetched from the KRA servers. The JSON file is available in the chatter of the
|
||||
vendor bill if needed.
|
||||
#. Odoo looks at the :guilabel:`Tax ID` (PIN) of the vendor (partner);
|
||||
|
||||
- If it is unknown, a new contact (partner) is created.
|
||||
- If it is known and the branch ID is the same, Odoo uses the known contact.
|
||||
|
||||
#. In the fetched bill from the KRA, select the :guilabel:`Product`. Each vendor bill *must* contain
|
||||
a product to be confirmed and sent to eTIMS later on.
|
||||
#. Odoo checks existing purchase order lines matching the product(s) entered at the previous step
|
||||
and the partner (if any). Click the :guilabel:`Purchase Order Line` field, and select the correct
|
||||
related purchase order line(s) matching the product(s). The quantities on the bill *must* be the
|
||||
same as the received quantities indicated on the purchase order.
|
||||
|
||||
If no existing purchase order line matches the lines of the fetched bill, click
|
||||
:guilabel:`Create Purchase Order` and create a purchase order based on the unmatched line(s).
|
||||
:guilabel:`Validate` the resulting stock move and :guilabel:`Confirm` the bill.
|
||||
|
||||
#. Set a method in the :guilabel:`eTIMS Payment Method` field..
|
||||
#. Once all steps are completed, click :guilabel:`Send to eTIMS` to send the vendor bill. When the
|
||||
vendor bill has been confirmed on eTIMS, the **KRA invoice number** can be found in the
|
||||
:guilabel:`eTIMS Details` tab.
|
||||
|
||||
.. image:: kenya/purchase-order-lines.png
|
||||
:alt: Bill registration steps.
|
||||
|
||||
Invoicing
|
||||
=========
|
||||
|
||||
.. note::
|
||||
The KRA does *not* accept sales if the product is not in stock.
|
||||
|
||||
This is the **advised sales flow** in Odoo when selling:
|
||||
|
||||
#. Create a **sales order**.
|
||||
#. :guilabel:`Validate` the delivery.
|
||||
#. :guilabel:`Confirm` the invoice.
|
||||
#. Click :guilabel:`Send and print`, and then enable :guilabel:`Send to eTIMS`.
|
||||
#. Click :guilabel:`Send & print` to send the invoice.
|
||||
|
||||
Once the invoice has been sent and signed by the KRA, the following information can be found on
|
||||
it:
|
||||
|
||||
- **KRA invoice number**;
|
||||
- Mandatory KRA invoice fields, such as **SCU information**, **date**, **SCU ID**, **receipt
|
||||
number**, **item count**, **internal date**, and **receipt signature**;
|
||||
- The **KRA tax table**;
|
||||
- A unique **KRA QR code** for the signed invoice.
|
||||
|
||||
Imports
|
||||
=======
|
||||
|
||||
Customs import codes are **automatically** fetched from the KRA eTIMS API servers every day. To
|
||||
fetch them manually, proceed as follows:
|
||||
|
||||
#. Enable the :doc:`../../general/developer_mode`.
|
||||
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
|
||||
:guilabel:`KE eTIMS: Receive Customs Imports from the OSCU`.
|
||||
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
|
||||
|
||||
Go to :menuselection:`Accounting --> Vendors --> Customs Imports` to view the imported codes.
|
||||
|
||||
The following steps are required to send and have **customs imports** signed by the KRA:
|
||||
|
||||
#. Go to :menuselection:`Accounting --> Vendors --> Customs Imports`; The customs import is fetched
|
||||
automatically from the KRA.
|
||||
#. Match the imported item with an existing registered product in the :guilabel:`Product` field (or
|
||||
create a product if no related product exists).
|
||||
#. Set a vendor in the :guilabel:`Partner` field.
|
||||
#. Based on the partner, match the imported item with its related purchase order (see
|
||||
:ref:`purchase steps <kenya/purchases>`). The stock must be correctly adjusted when the customs
|
||||
import is approved.
|
||||
|
||||
If no related purchase order exists, create one and :guilabel:`Confirm` it. Then, confirm the
|
||||
delivery by clicking :guilabel:`Receive Products`, then :guilabel:`Validate` on the purchase
|
||||
order.
|
||||
|
||||
#. Click :guilabel:`Match and Approve` or :guilabel:`Match and Reject`, depending on the
|
||||
situation of the goods.
|
||||
|
||||
.. note::
|
||||
The JSON file received from the KRA is attached to the chatter of the customs import.
|
||||
|
||||
BOM
|
||||
===
|
||||
|
||||
The KRA requires all BOMs to be sent to them. To send BOMs to eTIMS, the product and its components
|
||||
*must* be :ref:`registered <kenya/product-registration>`. To access a product's BOM, click on the
|
||||
product and then click the :guilabel:`Bill of Materials` smart button.
|
||||
|
||||
Make sure the :ref:`KRA's required fields <kenya/product-registration>` are filled in the
|
||||
:guilabel:`KRA eTIMS details` section of the :guilabel:`Accounting` tab in the product form, and
|
||||
click :guilabel:`Send to eTIMS`. The successful sending of the BOM is confirmed in the chatter,
|
||||
where you can also find the sent information in an attached JSON file.
|
||||
|
||||
Credit notes
|
||||
============
|
||||
|
||||
The KRA does not accept credit notes with quantities or prices higher than the initial invoice. When
|
||||
creating a credit note, a KRA reason must be indicated: In the credit note form, go to the
|
||||
:guilabel:`eTIMS Details` tab, select the :guilabel:`eTIMS Credit Note Reason`, and then select the
|
||||
invoice number in the :guilabel:`Reversal of` field.
|
||||
|
||||
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 42 KiB |
@@ -370,9 +370,8 @@ Payment complements
|
||||
Payment policy
|
||||
**************
|
||||
|
||||
One addition of the Mexican localization is the :guilabel:`Payment Policy` field . `According to
|
||||
the SAT documentation <https://www.sat.gob.mx/consultas/92764/comprobante-de-recepcion-de-pagos>`_,
|
||||
there may be 2 types of payments:
|
||||
One addition of the Mexican localization is the :guilabel:`Payment Policy` field. According to
|
||||
the SAT documentation, there are two types of payments:
|
||||
|
||||
- `PUE` (Pago en una Sola Exhibición/Payment in a Single Exhibition)
|
||||
- `PPD` (Pago en Parcialidades o Diferido/Payment in Installements or Deferred)
|
||||
@@ -467,11 +466,11 @@ there are two requirements for this:
|
||||
There are four different cancellation reasons. In Odoo, you can cancel invoices with the reasons *01
|
||||
Invoices sent with errors with a relation*, and *02 Invoices sent with errors without a relation*.
|
||||
|
||||
The following sections break down the process of canceling invoices for each cancellation reason in
|
||||
The following sections break down the process of cancelling invoices for each cancellation reason in
|
||||
Odoo.
|
||||
|
||||
.. important::
|
||||
Odoo has certain limitations to canceling invoices in the |SAT|: The reasons 03 and 04
|
||||
Odoo has certain limitations to cancelling invoices in the |SAT|: The reasons 03 and 04
|
||||
(*Operation did not take place* and *Nominative transactions related to a global invoice*,
|
||||
respectively) are not currently supported by Odoo. For this, you need to cancel the invoice
|
||||
directly in the |SAT|, and press :guilabel:`Retry` in the :guilabel:`SAT Status field`.
|
||||
@@ -490,12 +489,12 @@ of the old invoice after the value. Finally, sign the new document.
|
||||
Next, navigate back to the old invoice, and notice the :guilabel:`Substituted By` field is now
|
||||
available. Click the :guilabel:`Request EDI Cancellation` button on the old invoice, and then click
|
||||
:guilabel:`Process Now` in the blue section that appears. The invoice status changes to
|
||||
:guilabel:`Canceled`, and a confirmation is logged in the chatter.
|
||||
:guilabel:`Cancelled`, and a confirmation is logged in the chatter.
|
||||
|
||||
Now, the invoice should be canceled in the |SAT| as well. You can confirm this was done correctly,
|
||||
Now, the invoice should be cancelled in the |SAT| as well. You can confirm this was done correctly,
|
||||
by pressing :guilabel:`Retry` in the |SAT| status field.
|
||||
|
||||
If the document was canceled more than 24 hours after its creation, you may need to ask the client
|
||||
If the document was cancelled more than 24 hours after its creation, you may need to ask the client
|
||||
to accept the cancellation in their “Buzón Tributario” directly from the `SAT website
|
||||
<https://www.sat.gob.mx/home>`_.
|
||||
|
||||
|
||||
@@ -0,0 +1,748 @@
|
||||
=============
|
||||
United States
|
||||
=============
|
||||
|
||||
.. |GAAP| replace:: :abbr:`GAAP (Generally Acceptable Accounting Practices)`
|
||||
.. |FASB| replace:: :abbr:`FASB (Financial Accounting Standards Board)`
|
||||
.. |SEC| replace:: :abbr:`SEC (Securities and Exchange Commission)`
|
||||
.. |COA| replace:: :abbr:`CoA (Chart of Accounts)`
|
||||
.. |AR| replace:: :abbr:`AR (Accounts Receivable)`
|
||||
.. |AP| replace:: :abbr:`AP (Accounts Payable)`
|
||||
.. |CFS| replace:: :abbr:`CFS (Cash Flow Statement)`
|
||||
.. |NACHA| replace:: :abbr:`NACHA (National Automated Clearing House Association)`
|
||||
.. |ACH| replace:: :abbr:`ACH (Automated Clearing House)`
|
||||
|
||||
The Odoo fiscal localization package for the United States follows the Generally Acceptable
|
||||
Accounting Principles (GAAP) accounting standards and rules used to prepare financial statements,
|
||||
as outlined by the Financial Accounting Standards Board (FASB) and adopted by the Securities and
|
||||
Exchange Commission (SEC).
|
||||
|
||||
.. seealso::
|
||||
- `Financial Accounting Standards Board (FASB) <https://asc.fasb.org/Home>`_
|
||||
- `Securities and Exchange Commission (SEC) <https://www.sec.gov/>`_
|
||||
|
||||
In addition, a series of videos on the subject of Accounting are available through Odoo's eLearning
|
||||
platform. These videos cover how to start from scratch, set up configurations, complete common
|
||||
workflows, and provide in-depth looks at some specific use cases, as well.
|
||||
|
||||
.. seealso::
|
||||
- `Odoo Tutorials: Accounting & Invoicing
|
||||
<https://www.odoo.com/slides/accounting-and-invoicing-19>`_
|
||||
- `Odoo SmartClass: Accounting <https://www.odoo.com/slides/smartclass-accounting-121>`_
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Below are the available modules in Odoo for accounting use in the United States.
|
||||
|
||||
.. note::
|
||||
The modules listed below are either for reference only or are optional, as the core requirements
|
||||
to operate under the US fiscal localization in Odoo are already included under the default
|
||||
package that came installed during database initialization.
|
||||
|
||||
Verify the default package is in use by navigating to :menuselection:`Accounting App -->
|
||||
Settings` and under the :guilabel:`Fiscal Localization` section at the top, look for the `Generic
|
||||
Chart Template` selection to be listed next to the :guilabel:`Package` field label. This chart
|
||||
template includes the necessary settings for the US localization for the Odoo *Accounting* app.
|
||||
|
||||
.. image:: united_states/us-l10n-generic-chart-template.png
|
||||
:align: center
|
||||
:alt: The Generic Chart Template comes pre-configured for the US localization.
|
||||
|
||||
Modules installation
|
||||
--------------------
|
||||
|
||||
:ref:`Install <general/install>` the following modules to get all the features of the United States
|
||||
localization:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 25 25 50
|
||||
|
||||
* - Name
|
||||
- Technical name
|
||||
- Description
|
||||
* - :guilabel:`United States - Accounting`
|
||||
- `l10n_us`
|
||||
- Base accounting module for United States localization.
|
||||
* - :ref:`US - Accounting Reports <l10n_us/reports>`
|
||||
- `l10n_us_reports`
|
||||
- Adds United States accounting reports.
|
||||
* - :guilabel:`US Checks Layout`
|
||||
- `l10n_us_check_printing`
|
||||
- Enables the printing of payments on pre-printed check paper. Supports the three most common
|
||||
check formats and will work out of the box with the linked checks from `checkdepot.net
|
||||
<https://checkdepot.net/collections/computer-checks/Odoo>`_.
|
||||
|
||||
- `Check on top: Quicken / QuickBooks standard
|
||||
<https://checkdepot.net/collections/computer-checks/odoo+top-check>`_
|
||||
- `Check on middle: Peachtree standard
|
||||
<https://checkdepot.net/collections/computer-checks/odoo+middle-check>`_
|
||||
- `Check on bottom: ADP standard
|
||||
<https://checkdepot.net/collections/computer-checks/odoo+Bottom-Check>`_
|
||||
|
||||
* - :ref:`NACHA Payments <l10n_us/nacha>`
|
||||
- `l10n_us_payment_nacha`
|
||||
- Export payments as NACHA files for use in the United States.
|
||||
* - :ref:`1099 Reporting <l10n_us/1099-report>`
|
||||
- `l10n_us_1099`
|
||||
- Export 1099 data for e-filing with a 3rd party.
|
||||
* - :ref:`Avatax <l10n_us/taxes-avatax>`
|
||||
- `account_avatax`
|
||||
- Module for the :doc:`AvaTax integration <../accounting/taxes/avatax>` with Odoo.
|
||||
* - :ref:`United States - Payroll <l10n_us/payroll>`
|
||||
- `l10n_us_hr_payroll`
|
||||
- Includes the necessary rules for United States payroll, including:
|
||||
|
||||
- Employee Details
|
||||
- Employee Contracts
|
||||
- Passport-based Contracts
|
||||
- Allowances/Deductions
|
||||
- Allow Configurations for Basic/Gross/Net Salary
|
||||
- Employee Payslip
|
||||
- Integration with Leaves Management
|
||||
|
||||
* - :ref:`United States - Payroll with Accounting <l10n_us/payroll>`
|
||||
- `l10n_us_hr_payroll_account`
|
||||
- Contains the necessary accounting data for the United States payroll rules.
|
||||
* - :ref:`United States - Payroll - Export to ADP <l10n_us/adp>`
|
||||
- `l10n_us_hr_payroll_adp`
|
||||
- Export Work Entries to the ADP payroll software.
|
||||
|
||||
.. _l10n_us/coa:
|
||||
|
||||
Chart of accounts
|
||||
=================
|
||||
|
||||
The :doc:`chart of accounts (COA) <../accounting/get_started/chart_of_accounts>` for the United
|
||||
States localization, in Odoo, follows the standard |GAAP| structure, with accounts grouped into
|
||||
seven main categories, with corresponding numeric values that prefix individual journal entries:
|
||||
|
||||
- **Receivable**: the balance of money (or credit) due to the business for goods or services
|
||||
delivered or used, but not yet paid for by customers. |AR| is indicated by the journal code
|
||||
labeled (or beginning) with :guilabel:`1`.
|
||||
- **Payable**: the business's short-term obligations owed to its creditors or suppliers, which have
|
||||
not yet been paid. |AP| is indicated by the journal code labeled (or beginning) with
|
||||
:guilabel:`2`.
|
||||
- **Equity**: the amount of money that would be returned to a company's shareholders if all of the
|
||||
assets were liquidated and all of the company's debt was paid off in the case of liquidation.
|
||||
Equity is indicated by the journal code labeled (or beginning) with :guilabel:`3` or
|
||||
:guilabel:`9`.
|
||||
- **Assets**: items listed on the balance sheet that contains economic value or have the ability to
|
||||
generate cash flows in the future, such as a piece of machinery, a financial security, or a
|
||||
patent. Assets are indicated by the journal code labeled (or beginning) with :guilabel:`1`.
|
||||
- **Liability**: refers to a company's financial debts or obligations that arise during the course
|
||||
of business operations. Liabilities are indicated by the journal code labeled (or beginning) with
|
||||
:guilabel:`2`.
|
||||
- **Income**: synonymous with *net income*, this is the profit a company retains after paying off
|
||||
all relevant expenses from sales revenue earned. Income is indicated by the journal code labeled
|
||||
(or beginning) with :guilabel:`4` or :guilabel:`6`.
|
||||
- **Expenses**: the cost of operations that a company incurs to generate revenue. Expenses are
|
||||
indicated by the journal code labeled (or beginning) with a :guilabel:`6`.
|
||||
|
||||
.. tip::
|
||||
Predefined accounts are included in Odoo, as part of the |CoA| that's installed with the US
|
||||
localization package. The accounts listed below are preconfigured to perform certain operations
|
||||
within Odoo. It is recommended to **not** delete these accounts; however, if changes are needed,
|
||||
rename the accounts instead.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - :guilabel:`Type`
|
||||
- :guilabel:`Account Name`
|
||||
* - :guilabel:`Current Assets`
|
||||
- | :guilabel:`Bank Suspense Account`
|
||||
| :guilabel:`Outstanding Receipts`
|
||||
| :guilabel:`Outstanding Payments`
|
||||
| :guilabel:`Liquidity Transfer`
|
||||
| :guilabel:`Stock Valuation`
|
||||
| :guilabel:`Stock Interim (Received)`
|
||||
| :guilabel:`Stock Interim (Delivered)`
|
||||
| :guilabel:`Cost of Production`
|
||||
* - :guilabel:`Income`
|
||||
- | :guilabel:`Foreign Exchange Gain`
|
||||
| :guilabel:`Cash Difference Gain`
|
||||
| :guilabel:`Cash Discount Gain`
|
||||
* - :guilabel:`Expenses`
|
||||
- | :guilabel:`Cash Discount Loss`
|
||||
| :guilabel:`Foreign Exchange Loss`
|
||||
| :guilabel:`Cash Difference Loss`
|
||||
* - :guilabel:`Current Year Earnings`
|
||||
- :guilabel:`Undistributed Profits/Losses`
|
||||
* - :guilabel:`Receivable`
|
||||
- :guilabel:`Account Receivable`
|
||||
* - :guilabel:`Payable`
|
||||
- :guilabel:`Account Payable`
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../accounting/get_started/chart_of_accounts`
|
||||
- :doc:`../accounting/get_started/cheat_sheet`
|
||||
|
||||
View, edit, and sort accounts
|
||||
-----------------------------
|
||||
|
||||
Access the *Chart of Accounts* dashboard in Odoo by navigating to :menuselection:`Accounting app
|
||||
--> Configuration --> Accounting: Chart of Accounts`.
|
||||
|
||||
From the :guilabel:`Chart of Accounts` dashboard, create new accounts by clicking the purple
|
||||
:guilabel:`New` button in the top-left corner of the dashboard and :ref:`filling in the
|
||||
corresponding form <chart-of-account/create>`. Search and sort through existing accounts by using
|
||||
specific :guilabel:`Filters` and :guilabel:`Group By` criteria, which are available in the mega menu
|
||||
under the :guilabel:`Search...` bar.
|
||||
|
||||
To filter accounts by category, click the :icon:`fa-caret-down` :guilabel:`(caret down)` icon to
|
||||
access the mega menu and look under the :guilabel:`Filters` column for individual selections.
|
||||
Clicking on a specific category will only show accounts that match that particular filter.
|
||||
|
||||
To view all the available account types, remove all of the filters in the :guilabel:`Search...` bar,
|
||||
and then click the :icon:`fa-caret-down` :guilabel:`(caret down)` icon to access the mega menu. From
|
||||
there, select :guilabel:`Account Type` under the :guilabel:`Group By` column heading to list all of
|
||||
the account types in the table.
|
||||
|
||||
.. image:: united_states/us-l10n-coa-account-types.png
|
||||
:align: center
|
||||
:alt: Chart of Accounts grouped by Account Type.
|
||||
|
||||
Besides structure, there are other key differences in the chart of accounts in the United States,
|
||||
compared to other countries:
|
||||
|
||||
- **Specificity**: US |GAAP| often requires more detailed accounts compared to some other countries.
|
||||
This can include separate accounts for various types of revenue, expenses, and assets, providing
|
||||
more granular information in financial reports.
|
||||
- **Regulatory Requirements**: In the United States, there are specific regulatory requirements set
|
||||
by bodies such as the |SEC| for publicly traded companies. These requirements may influence the
|
||||
structure and content of the |COA| to ensure compliance with reporting standards.
|
||||
- **Industry Practices**: Certain industries in the United States may have unique accounting
|
||||
requirements or specialized |COA| structures. For example, financial institutions often have
|
||||
specific accounts related to loans, investments, and interest income.
|
||||
- **Tax Considerations**: The |COA| may also reflect tax considerations, such as accounts for
|
||||
deductible expenses, deferred tax assets, and liabilities, to ensure compliance with tax laws and
|
||||
facilitate tax reporting.
|
||||
|
||||
These differences, ultimately, should be reflected in the |COA| structure itself, with the addition
|
||||
of new accounts, as needed, in order to meet the demands of US accounting reporting requirements.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`Create a new account <chart-of-account/create>`
|
||||
- :doc:`../../essentials/search`
|
||||
|
||||
.. _l10n_us/taxes:
|
||||
|
||||
Taxes
|
||||
=====
|
||||
|
||||
In the United States, tax rates and what is considered taxable vary by jurisdiction. Default *Sales*
|
||||
and *Purchase* taxes are created automatically when the Odoo *Accounting* application is installed.
|
||||
To manage existing or configure additional taxes, navigate to :menuselection:`Accounting -->
|
||||
Configuration --> Taxes`.
|
||||
|
||||
.. _l10n_us/taxes-avatax:
|
||||
|
||||
AvaTax
|
||||
------
|
||||
|
||||
**Avalara AvaTax** is a cloud-based tax calculation and compliance software that integrates with
|
||||
Odoo for the United States and Canadian accounting localizations. Integrating AvaTax with Odoo
|
||||
provides real-time and region-specific tax calculations when items are sold, purchased, and invoiced
|
||||
in the database.
|
||||
|
||||
.. important::
|
||||
AvaTax is only available for integration with databases/companies that have locations in the
|
||||
United States and Canada. This means the fiscal position/country of a database can only be set to
|
||||
the United States or Canada. Reference this documentation for more information:
|
||||
:ref:`avatax/fiscal_country`.
|
||||
|
||||
.. seealso::
|
||||
Refer to the documentation articles below to integrate and configure an AvaTax account with an
|
||||
Odoo database:
|
||||
|
||||
- :doc:`AvaTax integration <../accounting/taxes/avatax>`
|
||||
- :doc:`Avalara management portal <../accounting/taxes/avatax/avalara_portal>`
|
||||
- :doc:`Calculate taxes with AvaTax <../accounting/taxes/avatax/avatax_use>`
|
||||
- `US Tax Compliance: AvaTax elearning video
|
||||
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
|
||||
- Avalara's support documents: `About AvaTax
|
||||
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=dqa1657870670369_dqa1657870670369&topicId=About_AvaTax.html&_LANG=enus>`_
|
||||
|
||||
.. _l10n_us/reports:
|
||||
|
||||
Reports
|
||||
=======
|
||||
|
||||
A number of :doc:`report selections <../accounting/reporting>` are readily available for the US
|
||||
localization, under the :menuselection:`Accounting app --> Reporting` drop-down menu:
|
||||
|
||||
- :ref:`Balance Sheet <reporting/balance-sheet>`: a "snapshot" of a company's financial position at
|
||||
a specific point in time, which contains an overview of a company's assets, liabilities, and
|
||||
equity.
|
||||
- :ref:`Profit & Loss <accounting/reporting/balance-sheet>`: otherwise known as a *P&L statement* or
|
||||
*income statement*, provides a summary of a company's revenues, expenses, and profits/losses over
|
||||
a given period of time.
|
||||
- :ref:`Cash Flow Statement <l10n_us/cash-flow-statement>`: shows how much cash and cash equivalents
|
||||
a company has received and spent in a given period.
|
||||
- :ref:`Executive Summary <accounting/reporting/executive-summary>`: an overview report that covers
|
||||
the key performance indicators of a company's financial position, such as revenue, profit, and
|
||||
debt.
|
||||
- :ref:`Tax Report <reporting/tax-report>`: an official form filed for a tax authority that reports
|
||||
income, expenses, and other pertinent tax information. Tax reports allow taxpayers to calculate
|
||||
their tax liability, schedule tax payments, or request refunds for the overpayment of taxes. In
|
||||
Odoo, the tax report can be made monthly, every two months, quarterly, every 4 months,
|
||||
semi-annually, and annually.
|
||||
- :guilabel:`Check Register`: a report that displays cash transactions (regardless of the journal)
|
||||
with their running balance after the transaction. Only visible with the *US - Accounting Reports*
|
||||
(`l10n_us_reports`) module installed.
|
||||
- :ref:`1099 Report <l10n_us/1099-report>`: a CSV download of payments made to non-employees in a
|
||||
period to file electronically in a third-party service. Only visible with the *1099 Reporting*
|
||||
(`l10n_us_1099`) module installed.
|
||||
|
||||
.. _l10n_us/report-filters:
|
||||
|
||||
Depending on the type of report, certain filters are available at the top of the dashboard:
|
||||
|
||||
- a *date* filter, indicated by a :icon:`fa-calendar` :guilabel:`(calendar)` icon that precedes a
|
||||
date in *MM/DD/YYYY* format. Use this to select a specific date or date range for the report.
|
||||
- a :icon:`fa-bar-chart` :guilabel:`Comparison` filter, to compare reporting periods against each
|
||||
other
|
||||
- a *journal* filter, as indicated by a :icon:`fa-book` :guilabel:`(book)` icon and the default
|
||||
setting of :guilabel:`All Journals`. Use this filter to specify which journals should be included
|
||||
in the report.
|
||||
- an *entries type* filter, as indicated by a :icon:`fa-filter` :guilabel:`(filter)` icon, with the
|
||||
default setting of :guilabel:`Posted Entries Only, Accrual Basis`. Use this filter to determine
|
||||
which type of journal entries should be included in the report (e.g. posted or draft), along with
|
||||
the type of accounting method (e.g. accrual or cash basis).
|
||||
|
||||
- There are view options in this filter, as well, one that will :guilabel:`Hide lines at 0` for
|
||||
more relevant viewing, along with a :guilabel:`Split Horizontally` option to keep the report
|
||||
above the screen's fold, removing the need to scroll.
|
||||
|
||||
.. image:: united_states/us-l1on-accounting-method-reporting-menu.png
|
||||
:align: center
|
||||
:alt: Accounting method filter menu for reports, covering accrual vs. cash basis methods.
|
||||
|
||||
- a *decimal* filter, that by default, includes figures with cents, as indicated by the
|
||||
:guilabel:`In .$` setting. Use the other options in the drop-down menu to change figures in the
|
||||
report to whole numbers (:guilabel:`In $`), thousands (:guilabel:`In K$`), or millions
|
||||
(:guilabel:`In M$`) formats.
|
||||
- a report *customization* filter, indicated by the :icon:`fa-cogs` :guilabel:`(gears)` icon. Use
|
||||
this filter to customize the current report's sections and line items, or build new reports, as
|
||||
desired.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`Accounting reporting <../accounting/reporting>`
|
||||
- :doc:`../../essentials/search`
|
||||
|
||||
.. _l10n_us/1099-report:
|
||||
|
||||
1099 report
|
||||
-----------
|
||||
|
||||
The 1099 report, available by :ref:`installing <general/install>` the *1099 Reporting*
|
||||
(`l10n_us_1099`) module, includes payments that are made to non-employees across a given reporting
|
||||
period. Use the available CSV download from the report in Odoo to file 1099 payments electronically
|
||||
via a third-party service.
|
||||
|
||||
To generate a 1099 report, navigate to :menuselection:`Accounting app --> Reporting --> Management:
|
||||
1099 Report` to open a :guilabel:`1099 Report` wizard.
|
||||
|
||||
First, enter the date range of the transactions to report in the :guilabel:`Start Date` and
|
||||
:guilabel:`End Date` fields.
|
||||
|
||||
Then, edit the journal items that appear on the wizard. Click :guilabel:`Add a line` to add any
|
||||
items that are missing. Be sure to remove any items that should not be included in the report by
|
||||
clicking :icon:`fa-times` :guilabel:`(delete)` on the row.
|
||||
|
||||
Finally, once all necessary items are included in the 1099 report, click on the :guilabel:`Generate`
|
||||
button. Doing so, downloads a CSV file that groups transactions by the partner that received the
|
||||
payments.
|
||||
|
||||
.. _l10n_us/cash-flow-statement:
|
||||
|
||||
Cash flow statement
|
||||
-------------------
|
||||
|
||||
Navigate to the *Cash Flow Statement* (CFS) dashboard by going to :menuselection:`Accounting app -->
|
||||
Reporting --> Statement Reports: Cash Flow Statement`. From here, |CFS| reports can be generated
|
||||
using the various :ref:`filters <l10n_us/report-filters>` that are available at the top of the
|
||||
dashboard.
|
||||
|
||||
Odoo uses the *direct* cash flow method to compile cash flow statements, which measures actual cash
|
||||
inflows and outflows from the company's operations, such as when cash is received from customers or
|
||||
when cash payments are made to suppliers.
|
||||
|
||||
By default, an account labeled with any of the three default :guilabel:`Tags` on the
|
||||
:guilabel:`Chart of Accounts` dashboard will be included in the report, which includes:
|
||||
:guilabel:`Operating Activities`, :guilabel:`Financing Activities`, and :guilabel:`Investing &
|
||||
Extraordinary Activities`.
|
||||
|
||||
.. image:: united_states/us-l10n-cash-flow-statement-tags.png
|
||||
:align: center
|
||||
:alt: Examples of tagged accounts that are included in the Cash Flow Statement in Odoo.
|
||||
|
||||
Additionally, the cash flow statement in Odoo:
|
||||
|
||||
- is limited to the *Bank* and *Cash* journals to reflect money coming in or out; and
|
||||
- also contains *Expenses* accounts, to show the counterpart transactions versus *Bank* or *Cash*
|
||||
journal entries, while excluding |AR| and |AP| activity.
|
||||
|
||||
.. example::
|
||||
Create a vendor bill for $100, as an operating expense (not |AP|). Doing so will **not** reflect
|
||||
a transaction on the cash flow statement. However, register a corresponding payment for $100,
|
||||
and the transaction **will** reflect on the cash flow statement as :guilabel:`Cash paid for
|
||||
operating activities`.
|
||||
|
||||
.. image:: united_states/us-l10n-operating-expenses-example.png
|
||||
:align: center
|
||||
:alt: Example of a bill registered as an operating expense as part of a cash flow statement.
|
||||
|
||||
.. _l10n_us/cash-discount:
|
||||
|
||||
Cash discount
|
||||
=============
|
||||
|
||||
Cash discounts can be configured from :menuselection:`Accounting app --> Payment Terms`. Each
|
||||
payment term can be set up with a cash discount and reduced tax.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../accounting/customer_invoices/cash_discounts`
|
||||
|
||||
.. _l10n_us/writing-checks:
|
||||
|
||||
Writing checks
|
||||
==============
|
||||
|
||||
Using checks is still a common payment practice in the US. Be sure the *US Checks Layout*
|
||||
(`l10n_us_check_printing`) module for the US localization is :ref:`installed <general/install>`.
|
||||
|
||||
To enable check printing from Odoo, navigate to :menuselection:`Accounting --> Configuration -->
|
||||
Settings` and find the :guilabel:`Vendor Payments` section. From here, tick the :guilabel:`Checks`
|
||||
checkbox to reveal several fields for check configuration.
|
||||
|
||||
Select a :guilabel:`Check Layout` from the drop-down menu:
|
||||
|
||||
- :guilabel:`Print Check (Top) - US`
|
||||
- :guilabel:`Print Check (Middle) - US`
|
||||
- :guilabel:`Print Check (Bottom) - US`
|
||||
|
||||
Next, choose whether or not to enable the :guilabel:`Multi-Pages Check Stub` checkbox.
|
||||
|
||||
Optionally set a :guilabel:`Check Top Margin` and :guilabel:`Check Left Margin`, if required.
|
||||
|
||||
Once all check configurations are complete, :guilabel:`Save` the settings.
|
||||
|
||||
.. tip::
|
||||
Some of the check formats may require pre-printed paper from a third party vendor,
|
||||
https://checkdepot.net/collections/odoo-checks is recommended.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../accounting/payments/pay_checks`
|
||||
|
||||
.. _l10n_us/payroll:
|
||||
|
||||
Payroll
|
||||
=======
|
||||
|
||||
The *Payroll* application is responsible for calculating an employee's pay, taking into account all
|
||||
work, vacation, and sick time, benefits, and deductions. The *Payroll* app pulls information from
|
||||
the *Attendances*, *Timesheets*, *Time Off*, *Employees* and *Expenses* applications, to calculate
|
||||
the worked hours and compensation for each employee.
|
||||
|
||||
When using an external payroll provider, such as *ADP*, it is necessary to export the various
|
||||
payroll-related data, such as work entries, repayment of expenses, taxes, commissions, and any other
|
||||
relevant data, so the data can be uploaded into the payroll provider, who then issues the actual
|
||||
paychecks or directly deposits the funds into an employee's bank account.
|
||||
|
||||
In order to export the payroll data, the work entries must first be validated and correct. Refer to
|
||||
the :doc:`work entries <../../hr/payroll/work_entries>` documentation for more information
|
||||
regarding validating work entries.
|
||||
|
||||
Once work entries are validated, the information can be :ref:`exported to ADP <l10n_us/adp>`.
|
||||
|
||||
After payments have been issued to employees, payslips can be processed into batches, validated, and
|
||||
posted to the corresponding accounting journals to keep all financial records in Odoo current.
|
||||
|
||||
Required information
|
||||
--------------------
|
||||
|
||||
It is important to have the *Employees* application installed, and all employee information
|
||||
populated. Several fields in both the :ref:`employee records <l10n_us/payroll-employee-records>`, as
|
||||
well as in an :ref:`employee contracts <l10n_us/payroll-employee-contracts>`, are necessary to
|
||||
properly process the employee's pay. Ensure the following fields are filled out in their respective
|
||||
places.
|
||||
|
||||
.. _l10n_us/payroll-employee-records:
|
||||
|
||||
Employee records
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
In each employee record, there is various information the *Payroll* application requires to properly
|
||||
process payslips, including various banking, tax, and work information.
|
||||
|
||||
Navigate to the :menuselection:`Employees app` and select an employee record to view the sections of
|
||||
the employee form that directly affect *Payroll*:
|
||||
|
||||
- :guilabel:`Work Information` tab:
|
||||
|
||||
- :guilabel:`Work Address`: indicates where the employee is located, including the state, which
|
||||
affects the tax calculations.
|
||||
- :guilabel:`Working Hours`: determines how pay is calculated, and determines if an employee earns
|
||||
overtime.
|
||||
|
||||
- :guilabel:`Private Information` tab:
|
||||
|
||||
- :guilabel:`SSN No`: the last four digits of the employee's Social Security Number (SSN) appears
|
||||
on payslips.
|
||||
- :guilabel:`Bank Account Number`: the bank account associated with the NACHA payment file.
|
||||
|
||||
- :guilabel:`HR Settings` tab:
|
||||
|
||||
- :guilabel:`Federal Tax Filing Status`: the tax status an employee uses for Payroll tax
|
||||
calculations, which can be different from their state status.
|
||||
- :guilabel:`State Tax Filing Status`: the tax status an employee uses for their state portion of
|
||||
the Payroll tax calculation.
|
||||
- :guilabel:`W-2 Form`: a US tax form indicating the summary of wages, taxes, and benefits paid to
|
||||
an employee during a tax period (typically one year).
|
||||
- :guilabel:`W-4 Form`: an IRS form that helps outline the amount of federal taxes to withhold for
|
||||
an employee, which is paid to the IRS by the company.
|
||||
|
||||
.. _l10n_us/payroll-employee-contracts:
|
||||
|
||||
Employee contracts
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Additionally, there is information that is found in an employee contract that also affects the
|
||||
*Payroll* application.
|
||||
|
||||
Navigate to the :menuselection:`Employees app --> Employees --> Contracts` and select a contract
|
||||
record to view the sections of a contract that directly affect *Payroll*:
|
||||
|
||||
- :guilabel:`General Information`:
|
||||
|
||||
- :guilabel:`Salary Structure Type: United States: Employee`: defines when the employee is paid,
|
||||
their working schedule, and the work entry type.
|
||||
- :guilabel:`Work Entry source`: determines how work entries are calculated.
|
||||
|
||||
- :guilabel:`Salary Information` tab:
|
||||
|
||||
- :guilabel:`SSN No`: the last four digits of the employee's Social Security Number (SSN) appears
|
||||
on payslips.
|
||||
- :guilabel:`Wage type`: determines how the employee is paid, wether a Fixed wage (salary) or
|
||||
Hourly wage.
|
||||
- :guilabel:`Schedule Pay`: defines how often the employee is paid, either :guilabel:`Annually`,
|
||||
:guilabel:`Semi-annually`, :guilabel:`Quarterly`, :guilabel:`Bi-monthly`, :guilabel:`Monthly`,
|
||||
:guilabel:`Semi-monthly`, :guilabel:`Bi-weekly`, :guilabel:`Weekly`, or :guilabel:`Daily`. In
|
||||
the US, Semi-monthly (24 payments a year) or bi-weekly (26 payments a year) are the most common.
|
||||
- :guilabel:`Wage, Yearly, and Monthly cost`: used to show the total cost of an employee. It is
|
||||
recommended to populate the :guilabel:`Yearly` wage first, as it auto-populates the other
|
||||
fields.
|
||||
- :guilabel:`Pre-tax benefits`: populate this section according to the employee's selections.
|
||||
Pre-tax benefits decrease the gross wage, which lowers the base amount that is taxed. These are
|
||||
displayed at the beginning of the payslip.
|
||||
- :guilabel:`Post-tax benefits`: these benefits are deductions made *after* taxes are calculated.
|
||||
These appear towards the end of the payslip before the net amount is displayed.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Employees documentation <../../hr/employees/new_employee>`
|
||||
|
||||
.. _l10n_us/adp:
|
||||
|
||||
Export work entries to ADP
|
||||
--------------------------
|
||||
|
||||
Requirements
|
||||
~~~~~~~~~~~~
|
||||
|
||||
In order to create a report that can be uploaded to ADP, there are some initial configuration steps
|
||||
that must be completed first.
|
||||
|
||||
First, ensure the *United States - Payroll - Export to ADP* (`l10n_us_hr_payroll_adp`) module is
|
||||
:ref:`installed <general/install>`.
|
||||
|
||||
Then, the company **must** have an *ADP Code* entered in the company settings. To do so, navigate
|
||||
to :menuselection:`Payroll app --> Configuration --> Settings`. Enter the :guilabel:`ADP Code` in
|
||||
the :guilabel:`US Localization` section.
|
||||
|
||||
Next, work entry types **must** have the correct ADP code listed in the *External Code* field for
|
||||
each work entry type that is being referenced.
|
||||
|
||||
Lastly, every employee **must** have an *ADP Code* entered on their employee form. To do so,
|
||||
navigate to :menuselection:`Employees app`, select an employee record, and open the :guilabel:`HR
|
||||
Settings` tab. Enter the :guilabel:`ADP Code` in the :guilabel:`ADP Information` section.
|
||||
|
||||
The :guilabel:`ADP Code` code is how ADP identifies that particular employee, and is typically a
|
||||
six-digit number.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`payroll/new-work-entry`
|
||||
- :doc:`../../hr/employees/new_employee`
|
||||
|
||||
Export data
|
||||
~~~~~~~~~~~
|
||||
|
||||
Once :doc:`work entries <../../hr/payroll/work_entries>` have been verified, the information can be
|
||||
exported to a CSV file, which can then be uploaded into ADP.
|
||||
|
||||
To export the data, navigate to :menuselection:`Payroll app --> Reporting --> United States: ADP
|
||||
Export`, then click :guilabel:`New`. Next, enter the :guilabel:`Start Date` and :guilabel:`End Date`
|
||||
for the work entries using the calendar pop-over.
|
||||
|
||||
Then, enter a :guilabel:`Batch ID` in the corresponding field. The recommendation for this field is
|
||||
to enter the date in a `YY-MM-DD` format, followed by any other characters to distinguish that
|
||||
specific batch, such as a department name, or any other defining characteristics for the batch.
|
||||
|
||||
Enter a :guilabel:`Batch Description` in the corresponding field. This should be short and
|
||||
descriptive, but distinct from the :guilabel:`Batch Name`.
|
||||
|
||||
Ensure the correct company populates the :guilabel:`Company` field. Change the selected company with
|
||||
the drop-down menu, if needed.
|
||||
|
||||
Lastly, add the employee's work entry information to the list. Click :guilabel:`Add a line` and an
|
||||
:guilabel:`Add: Employee` pop-up window loads. The list can be :doc:`filtered
|
||||
<../../essentials/search>` to more easily find the employees to add to the list.
|
||||
|
||||
.. tip::
|
||||
Process the data export in multiple groups instead of in one large group that contains all
|
||||
employees. This helps to meaningfully differentiate the batches and makes processing more
|
||||
tenable, overall. The most common ways to group employees is by department, or by wage type
|
||||
(hourly or salaried).
|
||||
|
||||
Select the employees to add to the list by ticking the box to the left of their name. Once all
|
||||
desired employees have been selected, click the :guilabel:`Select` button in the lower-left corner,
|
||||
and the employees appear in the list.
|
||||
|
||||
To create the CSV file, click the :guilabel:`Generate` button in the top-left corner.
|
||||
|
||||
.. _l10n_us/ach-electronic-transfers:
|
||||
|
||||
ACH - electronic transfers
|
||||
==========================
|
||||
|
||||
Automated Clearing House (ACH) payments are a modern way to transfer funds electronically between
|
||||
bank accounts, replacing traditional paper-based methods. |ACH| payments are commonly used for
|
||||
direct deposits, bill payments, and business transactions.
|
||||
|
||||
Receive ACH payments: payment provider integration
|
||||
--------------------------------------------------
|
||||
|
||||
|ACH| payments are supported by *Authorize.net* and *Stripe* payment integrations in Odoo.
|
||||
|
||||
.. seealso::
|
||||
- :ref:`Setting up Authorize.net for ACH payments (Odoo) <authorize/ach_payments>`
|
||||
- `Authorize.net's ACH payment processing for small businesses documentation
|
||||
<https://www.authorize.net/resources/blog/2021/ach-payments-for-small-businesses.html>`_
|
||||
- :doc:`Setting up Stripe for ACH payments (Odoo) <../payment_providers/stripe>`
|
||||
- `Stripe's ACH Direct Debit documentation <https://docs.stripe.com/payments/ach-debit>`_
|
||||
|
||||
.. _l10n_us/nacha:
|
||||
|
||||
Send payments: NACHA files
|
||||
--------------------------
|
||||
|
||||
Odoo can generate a National Automated Clearing House Association (NACHA) compatible |ACH| file to
|
||||
send to a company's bank. For each individual *Bank* journal that the company wishes to pay vendors
|
||||
with, a |NACHA| configuration section needs to be filled out on the Odoo database.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
First, navigate to the :menuselection:`Accounting app --> Configuration --> Journals`. Open the
|
||||
bank journal and click into the :guilabel:`Outgoing Payments` tab.
|
||||
|
||||
.. image:: united_states/us-l10n-nacha-settings.png
|
||||
:align: center
|
||||
:alt: NACHA (National Automated Clearing House Association) configuration settings on Odoo.
|
||||
|
||||
.. note::
|
||||
The following |NACHA| configuration information is normally provided by the company's financial
|
||||
institution once they have been approved to send payments via their account.
|
||||
|
||||
Under the section labeled, :guilabel:`NACHA configuration` are the fields required to generate a
|
||||
|NACHA| compatible |ACH| file to send to a company's bank. First, enter the routing number of the
|
||||
financial institution in the field labeled, :guilabel:`Immediate Destination`. This information is
|
||||
widely available on the Internet and generally varies by bank location. This number is usually
|
||||
provided during the initial account setup.
|
||||
|
||||
Next, enter the registered name of the financial institution in the field called,
|
||||
:guilabel:`Destination`. This information will be provided by the bank or credit union.
|
||||
|
||||
Following the :guilabel:`Destination` field is the :guilabel:`Immediate Origin` field. Enter the
|
||||
9-digit company ID or Employer Identification Number (EIN) into this field. This information is
|
||||
provided by the financial institution.
|
||||
|
||||
Next, enter the :guilabel:`Company Identification` number, which is a 10-digit number made from
|
||||
combining the 9-digit company ID or Employer Identification Number (EIN), along with an additional
|
||||
number at the start of the sequence. This number is often a `1`. Check with the financial
|
||||
institution should this first number differ to verify that it is correct, as this number is provided
|
||||
for |ACH| approved accounts.
|
||||
|
||||
Enter the :guilabel:`Originating DFI Identification` number next, which should contain an assigned
|
||||
8-digit number from the financial institution.
|
||||
|
||||
.. important::
|
||||
Enter the numerical values in this section *exactly* as the company's financial institution
|
||||
(e.g. bank or credit union) has provided them, otherwise risk failing a successful |NACHA|
|
||||
configuration in Odoo.
|
||||
|
||||
.. image:: united_states/us-l10n-nacha-dropdown.png
|
||||
:align: center
|
||||
:alt: NACHA settings with the standard entry class code drop-down menu highlighted.
|
||||
|
||||
There are two options for the next field: :guilabel:`Standard Entry Class Code`. Select the
|
||||
drop-down menu to the right of the field and pick either :guilabel:`Corporate Credit or Debit (CCD)`
|
||||
or :guilabel:`Prearranged Payment and Deposit (PPD)`. Again, this information will be provided by
|
||||
the financial institution. By default :guilabel:`Corporate Credit or Debit (CCD)` is selected.
|
||||
|
||||
Finally, the last option is for :guilabel:`Generated Balanced Files`. Tick the checkbox to the right
|
||||
of the field to enable :guilabel:`Generated Balanced Files`. Consult the company's accountant or
|
||||
financial advisor to make an informed decision for this field.
|
||||
|
||||
Manually save the configuration by clicking the :icon:`fa-cloud-upload` :guilabel:`(cloud upload)`
|
||||
icon, or navigate away from this screen to auto-save. The configuration is now complete.
|
||||
|
||||
.. _l10n_us/batch-payment:
|
||||
|
||||
Create batch payment
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Now, record each payment in Odoo using the |NACHA| payment method.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Register Payments in Odoo <payments/register>`
|
||||
|
||||
.. important::
|
||||
Be aware of the cut-off time for same-day payments. Either the file needs to have a future date
|
||||
associated with each payment or the file needs to be sent prior to the cut-off, if the dates
|
||||
included in it match today's date. Consult the financial institution for the exact cut-off time
|
||||
for their processing of same-day payments.
|
||||
|
||||
Once all the payments to be included in the |NACHA| |ACH| file have been made, a batch payment needs
|
||||
to be made from the :icon:`fa-cog` :guilabel:`Action` menu.
|
||||
|
||||
To create the batch payments, access the payments page, by navigating to :menuselection:`Accounting
|
||||
--> Vendors --> Payments`. Select all the payments that should be included in the |NACHA| |ACH|
|
||||
file, by ticking the checkboxes to the far-left of the rows.
|
||||
|
||||
.. image:: united_states/us-l10n-create-batch-payments.png
|
||||
:align: center
|
||||
:alt: On the payments screen, the action menu is highlighted with create a batch payment
|
||||
selected.
|
||||
|
||||
.. warning::
|
||||
All payments in the batch must share the same payment method.
|
||||
|
||||
Next, navigate to the batched payment (:menuselection:`Accounting --> Vendors --> Batch Payments`).
|
||||
Click into the payment just created and then click into the :guilabel:`Exported File` tab. The
|
||||
generated file is listed with the :guilabel:`Generation Date`. Click the :icon:`fa-download`
|
||||
:guilabel:`(download)` button to download the file.
|
||||
|
||||
.. image:: united_states/us-l10n-batch-file.png
|
||||
:align: center
|
||||
:alt: The exported file tab highlighted in the batch payment with the download circled.
|
||||
|
||||
If any adjustments need to be made, click the :guilabel:`Re-generate Export File` button to recreate
|
||||
a new |NACHA| |ACH| file.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../accounting/payments/batch`
|
||||
- :doc:`Europe's direct debiting <../accounting/payments/batch_sdd>`
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 65 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -243,13 +243,13 @@ themselves. To modify them, go to :menuselection:`Accounting --> Configuration -
|
||||
Configuration --> Payment Methods`, then click on the payment method.
|
||||
|
||||
To modify a payment method's icon, hover your mouse over the image in the upper-right corner of the
|
||||
payment method's form and click the pencil icon (:guilabel:`✎`).
|
||||
payment method's form and click the :icon:`fa-pencil` (:guilabel:`pencil`) icon.
|
||||
|
||||
Select the :guilabel:`Brands` tab to view the brands that have been activated for the payment
|
||||
method. The brands and their related icons are displayed based on their sequence order; to reorder
|
||||
them, drag and drop them in the desired order. To modify a brand's icon, select the brand, then,
|
||||
in the popup window that opens, hover the mouse over the image in the upper-right corner and click
|
||||
the pencil icon (:guilabel:`✎`).
|
||||
the :icon:`fa-pencil` (:guilabel:`pencil`) icon.
|
||||
|
||||
Advanced configuration
|
||||
----------------------
|
||||
@@ -367,6 +367,14 @@ You can adapt the payment provider's availability by specifying the :guilabel:`M
|
||||
allowed and modifying the :guilabel:`Currencies` and :guilabel:`Countries` in the
|
||||
:guilabel:`Configuration` tab.
|
||||
|
||||
.. tip::
|
||||
To display an availability report for payment providers and payment methods, and to help diagnose
|
||||
potential availability issues on the payment form, enable the :ref:`developer-mode`, then click
|
||||
the :icon:`fa-bug` (:guilabel:`bug`) icon next to the :guilabel:`Choose a payment method`
|
||||
heading on the payment form. The report includes a list of enabled payment providers and payment
|
||||
methods, reasons for any payment providers or methods not being available, if applicable, and a
|
||||
list of supported providers for each payment method.
|
||||
|
||||
.. _payment_providers/currencies_countries:
|
||||
|
||||
Currencies and countries
|
||||
|
||||
@@ -50,6 +50,8 @@ customer's card, but not charged yet.
|
||||
.. seealso::
|
||||
- :doc:`../payment_providers`
|
||||
|
||||
.. _authorize/ach_payments:
|
||||
|
||||
ACH payments (USA only)
|
||||
=======================
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ If you selected :guilabel:`Pending` as **payment outcome**, you can change the s
|
||||
transaction straight from its form view. To access a transaction's form view, activate the
|
||||
:ref:`developer mode <developer-mode>`, and go to :menuselection:`Accounting / Website -->
|
||||
Configuration --> Payment Transactions`. Then, change the status of a transaction by clicking on the
|
||||
state bar (:guilabel:`Draft, Pending, Authorized, Confirmed, Canceled, Error`).
|
||||
state bar (:guilabel:`Draft, Pending, Authorized, Confirmed, Cancelled, Error`).
|
||||
|
||||
.. image:: demo/demo-view-form.png
|
||||
:align: center
|
||||
|
||||
@@ -33,6 +33,8 @@ Configuration on the Xendit Dashboard
|
||||
#. In the :guilabel:`Webhook URL` section, enter your Odoo database's URL, followed by
|
||||
`/payment/xendit/webhook` (e.g., `https://example.odoo.com/payment/xendit/webhook`) in the field
|
||||
:guilabel:`Invoices paid` and click the :guilabel:`Test and save` button next to it.
|
||||
#. Navigate to the `Card Settings page <https://dashboard.xendit.co/settings/payment-methods/cards-configuration>`_
|
||||
and ensure that :guilabel:`Optional 3DS` is enabled while :guilabel:`Dynamic 3DS` is disabled.
|
||||
|
||||
Configuration on Odoo
|
||||
=====================
|
||||
|
||||
@@ -7,6 +7,7 @@ General settings
|
||||
general/apps_modules
|
||||
general/users
|
||||
general/companies
|
||||
general/multi_company
|
||||
general/iot
|
||||
general/email_communication
|
||||
general/integrations
|
||||
|
||||
@@ -133,6 +133,8 @@ appears.
|
||||
|
||||
For more information on pricing, see `Odoo's pricing <https://www.odoo.com/pricing-plan>`_ page.
|
||||
|
||||
.. _general/employee-access:
|
||||
|
||||
Employee access
|
||||
===============
|
||||
|
||||
@@ -189,6 +191,8 @@ Document Layout` and edit the information as needed.
|
||||
populated from the company information listed, when navigating here: :menuselection:`Settings app
|
||||
--> Companies section --> Manage Companies`, and select a company from the list.
|
||||
|
||||
.. _general/inter-company:
|
||||
|
||||
Inter-company transactions
|
||||
==========================
|
||||
|
||||
|
||||
@@ -34,14 +34,14 @@ registration`. On the :guilabel:`Register an application` screen, rename the :gu
|
||||
and personal Microsoft accounts (e.g. Skype, Xbox)`.
|
||||
|
||||
Under the :guilabel:`Redirect URL` section, select :guilabel:`Web` as the platform, and then input
|
||||
`https://<odoo base url>/microsoft_outlook/confirm` in the :guilabel:`URL` field. The Odoo base URL
|
||||
is the canonical domain at which your Odoo instance can be reached in the URL field.
|
||||
`https://<web base url>/microsoft_outlook/confirm` in the :guilabel:`URL` field. The `web.base.url`
|
||||
is subject to change depending on the URL used to log in to the database.
|
||||
|
||||
.. example::
|
||||
*mydatabase.odoo.com*, where *mydatabase* is the actual prefix of the database's subdomain,
|
||||
assuming it's hosted on Odoo.com
|
||||
.. note::
|
||||
The documentation about the :ref:`web.base.url <domain-name/web-base-url>` explains how to freeze
|
||||
a unique URL. It is also possible to add different redirect URLs on the Microsoft app.
|
||||
|
||||
After the URL has been added to the field, :guilabel:`Register` the application so it is created.
|
||||
After the URL has been added to the field, :guilabel:`Register` the application, so it is created.
|
||||
|
||||
API permissions
|
||||
---------------
|
||||
|
||||
@@ -12,8 +12,9 @@ Outgoing emails
|
||||
Email is not sent
|
||||
-----------------
|
||||
|
||||
The first indicator showing that an email has not been sent is the presence of a red :guilabel:`✉️
|
||||
(envelope)` icon, next to the date and time of the message, located in the chatter.
|
||||
The first indicator showing that an email has not been sent is the presence of a red
|
||||
:icon:`fa-envelope` :guilabel:`(envelope)` icon, next to the date and time of the message, located
|
||||
in the chatter.
|
||||
|
||||
.. image:: faq/red-envelop.png
|
||||
:align: center
|
||||
@@ -42,13 +43,18 @@ Odoo's email servers from being blacklisted.
|
||||
Here are the default limits for new databases:
|
||||
|
||||
- **200 emails per day** for Odoo Online and Odoo.sh databases with an active subscription.
|
||||
- **20 emails per day** for one-app free databases.
|
||||
- **50 emails per day** for trial databases.
|
||||
- In the case of migration, the daily limit might be reset to 50 emails per day.
|
||||
- **50 emails per day** for one-app free and trial databases.
|
||||
|
||||
.. important::
|
||||
In a one-app free database, if the *Email Marketing* app is installed, the email limit is **20
|
||||
emails per day**.
|
||||
|
||||
.. note::
|
||||
In the case of migration, the daily limit might be reset to 50 emails per day.
|
||||
|
||||
If the daily limit is reached:
|
||||
|
||||
- Contact the Odoo support team, who may increase the daily limit depending on the following
|
||||
- Contact the Odoo support team, who may increase the daily limit, depending on the following
|
||||
factors:
|
||||
|
||||
#. How many users are in the database?
|
||||
@@ -72,7 +78,7 @@ If the daily limit is reached:
|
||||
SMTP error
|
||||
**********
|
||||
|
||||
Simple Mail Transport Protocol (SMTP) error messages explain why an email wasn't transmitted
|
||||
*Simple Mail Transport Protocol (SMTP)* error messages explain why an email was not transmitted
|
||||
successfully. :abbr:`SMTP (Simple Mail Transport Protocol)` is a protocol to describe the email
|
||||
structure, and transmits data from messages over the Internet. The error messages generated by email
|
||||
services are helpful tools to diagnose and troubleshoot email problems.
|
||||
@@ -83,9 +89,9 @@ services are helpful tools to diagnose and troubleshoot email problems.
|
||||
mta4471.mail.bf1.yahoo.com --- Below this line is a copy of the message.`
|
||||
|
||||
The debug menu can be used to investigate SMTP sending issues from a database. To access the menu,
|
||||
:ref:`developer mode <developer-mode>` must be activated. Once activated, navigate to the
|
||||
:menuselection:`Debug Menu` in the top right of the menu bar (the :guilabel:`🐞 (bug)` icon),
|
||||
:menuselection:`Debug Menu --> Manage Messages`
|
||||
:ref:`developer mode <developer-mode>` **must** be activated. Once activated, navigate to the
|
||||
:menuselection:`Debug Menu` in the top-right of the menu bar (the :icon:`fa-bug` :guilabel:`(bug)`
|
||||
icon), and select :menuselection:`Debug Menu --> Manage Messages` from the resulting drop-down menu.
|
||||
|
||||
The :guilabel:`Manage Messages` menu opens a list of all the messages sent in a particular record.
|
||||
Within each message there is information on sending, including the type, and subtype, of the
|
||||
@@ -128,11 +134,10 @@ Email is sent late
|
||||
Email campaigns send at a scheduled time, using a delay pre-programed in the database. Odoo uses a
|
||||
delayed task to send emails that are considered "not urgent" (newsletter formats, such as: mass
|
||||
mailing, marketing automation, and events). The system utility **cron** can be used to schedule
|
||||
programs to run automatically at predetermined intervals. Odoo uses that policy in order to avoid
|
||||
cluttering the mail servers and, instead, prioritizes individual communication. This **cron** is
|
||||
called :guilabel:`Mail: Email Queue Manager`, and can be accessed in :ref:`developer mode
|
||||
<developer-mode>` by going to :menuselection:`Settings app --> Technical menu --> Automation -->
|
||||
Scheduled Actions`.
|
||||
programs to run automatically at predetermined intervals. Odoo uses that policy to avoid cluttering
|
||||
the mail servers and, instead, prioritizes individual communication. This **cron** is called
|
||||
:guilabel:`Mail: Email Queue Manager`, and can be accessed in :ref:`developer mode <developer-mode>`
|
||||
by going to :menuselection:`Settings app --> Technical menu --> Automation: Scheduled Actions`.
|
||||
|
||||
.. image:: faq/email-scheduled-later.png
|
||||
:align: center
|
||||
@@ -154,9 +159,9 @@ invoices, purchase orders, etc.) are sent immediately.
|
||||
Incoming emails
|
||||
===============
|
||||
|
||||
When there is an issue with incoming emails, there might not be an indication, per se, in Odoo. It
|
||||
is the sending email client, who tries to contact a database, that will get a bounce-back message
|
||||
(most of the time a :guilabel:`550: mailbox unavailable` error message).
|
||||
When there is an issue with incoming emails, there might not be an indication in Odoo. It is the
|
||||
sending email client, who tries to contact a database, that gets a bounce-back message (most of the
|
||||
time it is a :guilabel:`550: mailbox unavailable` error message).
|
||||
|
||||
Email is not received
|
||||
---------------------
|
||||
@@ -229,5 +234,5 @@ of what can be helpful when reaching out to the Odoo Support team about an issue
|
||||
.. note::
|
||||
The bounce system parameter needs to be set in the technical settings in order for the database
|
||||
to correctly receive bounce messages. To access this setting, go to :menuselection:`Settings app
|
||||
--> Technical menu --> Parameters --> System Parameters`. Then select the parameter name
|
||||
:guilabel:`mail.bounce.alias` and set the value to `bounce` if it isn't already set.
|
||||
--> Technical menu --> Parameters: System Parameters`. Then, select the parameter name
|
||||
:guilabel:`mail.bounce.alias` and set the value to `bounce` if it is not already set.
|
||||
|
||||
@@ -120,4 +120,4 @@ the right of the chatter. Then, select :guilabel:`Translate`. The content transl
|
||||
:alt: Google Translate present in an Odoo database's chatter.
|
||||
|
||||
.. seealso::
|
||||
:ref:`language/change-user-language`
|
||||
:ref:`language/install`
|
||||
|
||||
@@ -14,3 +14,4 @@ Configuration
|
||||
config/updating_iot
|
||||
config/troubleshooting
|
||||
config/windows_iot
|
||||
config/ssh_connect
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
==========================
|
||||
Connect an IoT box via SSH
|
||||
==========================
|
||||
|
||||
.. |iot| replace:: :abbr:`IoT (Internet of Things)`
|
||||
.. |SSH| replace:: :abbr:`SSH (secure shell protocol)`
|
||||
|
||||
To provide an |SSH| connection to an Internet of Things (IoT) box, a password needs to be generated.
|
||||
|
||||
.. warning::
|
||||
This feature should **only** be utilized with trusted parties, as it provides administrative
|
||||
access to the |iot| box, which can create security issues.
|
||||
|
||||
Managing an |SSH| connection is **not** covered under the standard scope of Odoo support. Visit
|
||||
the `Odoo Support <https://www.odoo.com/help>`_ page for additional information about what is
|
||||
covered.
|
||||
|
||||
First, navigate to the :menuselection:`IoT app --> IoT Boxes`. Click on the IP address of the
|
||||
appropriate |iot| box.
|
||||
|
||||
.. note::
|
||||
If the desired |iot| box does not appear, see :doc:`troubleshooting` for additional steps.
|
||||
|
||||
At the bottom of the |iot| box pop-up window, click :guilabel:`Remote Debug`. This opens the
|
||||
:guilabel:`Remote Debugging` pop-up window.
|
||||
|
||||
.. image:: ssh_connect/ssh-generate-password.png
|
||||
:align: center
|
||||
:alt: The Remote Debugging password generation window.
|
||||
|
||||
Click :guilabel:`Generate password`.
|
||||
|
||||
.. warning::
|
||||
After the password has been generated from the :guilabel:`Remote Debugging` pop-up window, the
|
||||
information **must** be recorded immediately. Once this window is closed, there is no current
|
||||
method for looking up this information.
|
||||
|
||||
Enter the :guilabel:`Authentication Token` provided by the user attempting to connect to the |iot|
|
||||
box.
|
||||
|
||||
Click :guilabel:`Enable Remote Debugging`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`connect`
|
||||
- :doc:`troubleshooting`
|
||||
- :doc:`updating_iot`
|
||||
|
After Width: | Height: | Size: 27 KiB |
@@ -2,6 +2,9 @@
|
||||
Connect a printer
|
||||
=================
|
||||
|
||||
.. |iot| replace:: :abbr:`IoT (Internet of Things)`
|
||||
.. |usb| replace:: :abbr:`USB (Universal Serial Bus)`
|
||||
|
||||
Printer installation can be done in a few easy steps. The printer can be used to print receipts,
|
||||
labels, orders, or even reports from the different Odoo apps. In addition, printer actions can be
|
||||
assigned as an *action on a trigger* during the manufacturing process, or added onto a quality
|
||||
@@ -10,17 +13,16 @@ control point or a quality check.
|
||||
Connection
|
||||
==========
|
||||
|
||||
The :abbr:`IoT (Internet of Things)` box supports printers connected through :abbr:`USB (Universal
|
||||
Serial Bus)`, network connection, or Bluetooth. `Supported printers
|
||||
<https://www.odoo.com/page/iot-hardware>`__ are detected automatically, and appear in the
|
||||
:guilabel:`Devices` list of the *IoT app*.
|
||||
The |iot| box supports printers connected through |usb|, network connection, or Bluetooth.
|
||||
`Supported printers <https://www.odoo.com/page/iot-hardware>`__ are detected automatically, and
|
||||
appear in the :guilabel:`Devices` list of the *IoT* app.
|
||||
|
||||
.. image:: printer/printer-detected.png
|
||||
:align: center
|
||||
:alt: The printer as it would appear in the IoT app devices list.
|
||||
|
||||
.. note::
|
||||
The printer can take up to two minutes to appear in the *IoT app* devices list.
|
||||
Printers can take up to two minutes to appear in the *IoT* app :guilabel:`Devices` list.
|
||||
|
||||
Link printer
|
||||
============
|
||||
@@ -63,15 +65,16 @@ specific product.
|
||||
|
||||
.. note::
|
||||
On a quality check detail form, the :guilabel:`Type` of check can also be specified to
|
||||
:guilabel:`Print Label`. To create new quality checks, navigate to :menuselection:`Quality app
|
||||
--> Quality Control --> Quality Checks --> New`.
|
||||
:guilabel:`Print Label`. To create :doc:`new quality checks
|
||||
<../../../inventory_and_mrp/quality/quality_management/quality_checks>`, navigate to
|
||||
:menuselection:`Quality app --> Quality Control --> Quality Checks --> New`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/inventory_and_mrp/quality/quality_management/quality_control_points`
|
||||
- :doc:`/applications/inventory_and_mrp/quality/quality_management/quality_alerts`
|
||||
- :doc:`../../../inventory_and_mrp/quality/quality_management/quality_control_points`
|
||||
- :doc:`../../../inventory_and_mrp/quality/quality_management/quality_alerts`
|
||||
|
||||
Link a printer to a work center in the Manufacturing app
|
||||
--------------------------------------------------------
|
||||
Link a printer to a work center
|
||||
-------------------------------
|
||||
|
||||
To link a printer to an action, it first needs to be configured on a work center. To do that,
|
||||
navigate to :menuselection:`Manufacturing app --> Configuration --> Work Centers`. From here, select
|
||||
@@ -94,29 +97,52 @@ Slip`. A key can also be added to trigger the action.
|
||||
.. seealso::
|
||||
:ref:`workcenter_iot`
|
||||
|
||||
.. _iot/link-printer:
|
||||
|
||||
Link printer to reports
|
||||
-----------------------
|
||||
|
||||
It's also possible to link a type of report to a certain printer. In the *IoT app*, go to the
|
||||
:guilabel:`Devices` menu, and select the desired printer that needs to be configured.
|
||||
It is possible to link report types to a specific printer. In the *IoT* app, go to the
|
||||
:guilabel:`Devices` menu, and select the desired printer to be configured.
|
||||
|
||||
From here, click :guilabel:`Edit`, go to the :guilabel:`Printer Reports` tab, and select
|
||||
:guilabel:`Add a line`. In the window that appears, check all the types of :guilabel:`Reports` that
|
||||
should be linked to this printer.
|
||||
From here, go to the :guilabel:`Printer Reports` tab, and click :guilabel:`Add a line`. In the
|
||||
window that appears, check all the types of :guilabel:`Reports` that should be linked to this
|
||||
printer.
|
||||
|
||||
.. image:: printer/printers-listed.png
|
||||
.. image:: printer/printer-reports.png
|
||||
:align: center
|
||||
:alt: The printer devices listed in the IoT Devices menu.
|
||||
:alt: The list of reports assigned to a printer in the IoT app.
|
||||
|
||||
Now, each time :guilabel:`Print` is selected in the control panel, instead of downloading a PDF, a
|
||||
pop-up appears which displays all the printer(s) linked to the report. Then Odoo sends the report to
|
||||
the selected printer(s), and automatically prints it.
|
||||
.. tip::
|
||||
Reports can also be configured in the *Technical* menu of the *Settings* app, while in
|
||||
:ref:`debug mode <developer-mode>`. To do that, navigate to :menuselection:`Settings App -->
|
||||
Technical --> Actions: Reports`. From here, select the desired report from the list. Then, an
|
||||
:guilabel:`IoT Device` can be set on the report.
|
||||
|
||||
The first time a linked report is selected to print, a :guilabel:`Select Printers` pop-up window
|
||||
appears. Tick the checkbox next to the correct printer for the report, and click :guilabel:`Print`.
|
||||
At that point, the report is linked to the printer.
|
||||
|
||||
Clear device printer cache
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
After a printer is linked to print a report, the setting is saved in a browser's cache. This means
|
||||
a user can have different devices saved in their cache for different reports, based on the device
|
||||
they use to access Odoo. It also means different users can have a report automatically printed from
|
||||
different printers, based on their preferences.
|
||||
|
||||
To unlink a report from a printer, navigate to :menuselection:`IoT app --> Clear Selected Devices`.
|
||||
This generates a list of reports that are linked to a printer on the current device. Click the
|
||||
:guilabel:`Unlink` button next to each report to remove the link.
|
||||
|
||||
.. important::
|
||||
This step **only** prevents the report from automatically printing to the listed printer from
|
||||
the current browser. The report is still :ref:`linked <iot/link-printer>` on the device, under
|
||||
the :guilabel:`Printer Reports` tab.
|
||||
|
||||
.. image:: printer/clear-reports.png
|
||||
:align: center
|
||||
:alt: A list of reports currently linked to a printer in the IoT app.
|
||||
|
||||
.. seealso::
|
||||
:doc:`POS Order Printing <../../../sales/point_of_sale/restaurant/kitchen_printing>`
|
||||
|
||||
.. tip::
|
||||
Reports can also be configured in the :guilabel:`Technical Menu` while in :ref:`debug mode
|
||||
<developer-mode>`. To do that, navigate to :menuselection:`Settings App --> Technical Menu -->
|
||||
Actions --> Reports`. From here, the individual report can be found in this list, where the
|
||||
:guilabel:`IoT Device` can be set on the report.
|
||||
|
||||
|
After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,140 @@
|
||||
=============
|
||||
Multi-company
|
||||
=============
|
||||
|
||||
.. |mcd| replace:: multi-company database
|
||||
|
||||
In Odoo, multiple companies can exist within a single database. This allows for some data to be
|
||||
shared among companies, while still maintaining some level of separation between entities.
|
||||
|
||||
Before deciding to use the multi-company feature, there are several factors to consider.
|
||||
|
||||
.. important::
|
||||
Multi-company is **only** available in *One App Free* databases, or with `Custom
|
||||
<https://www.odoo.com/pricing-plan>`_ plans.
|
||||
|
||||
Accessing multiple companies
|
||||
============================
|
||||
|
||||
The list of :ref:`companies an employee has access to <general/employee-access>` in a |mcd| can be
|
||||
found at the top-right of the main Odoo menu bar, where the active company is listed. Click on the
|
||||
company name to reveal a list of all allowed companies. To switch to a different company, click on
|
||||
the company name in the drop-down menu. To enable multiple companies at once, tick the checkbox next
|
||||
to each desired company name.
|
||||
|
||||
.. figure:: multi_company/company-access.png
|
||||
:align: center
|
||||
:alt: An example of the list of companies a user has access to when logged into a database.
|
||||
|
||||
An example of a user with access to multiple companies. The current company is My Company (San
|
||||
Francisco), while My Company (Chicago) is also active.
|
||||
|
||||
.. note::
|
||||
The database may refresh after each checkbox is ticked.
|
||||
|
||||
.. _general/active-companies:
|
||||
|
||||
Multiple active companies
|
||||
-------------------------
|
||||
|
||||
If more than one company is active at a time, one company is highlighted in purple, and is listed on
|
||||
the menu bar. This is the considered the *current* company.
|
||||
|
||||
When creating a new record, the current company is added to the record in the *Company* field,
|
||||
except under the following circumstances:
|
||||
|
||||
- The *Company* field for a new product, or a new contact, is left blank.
|
||||
- If there is a related document already in the system, the *Company* field on the new record
|
||||
defaults to the same company.
|
||||
|
||||
.. example::
|
||||
Mitchell Admin has multiple companies enabled, but the current company is `My Company (Chicago)`.
|
||||
When he creates a new product record, the :guilabel:`Company` field is left blank by default.
|
||||
|
||||
When a new sales team is created, the :guilabel:`Company` field automatically defaults to `My
|
||||
Company (Chicago)`.
|
||||
|
||||
.. _general/sharing-data:
|
||||
|
||||
Share data
|
||||
==========
|
||||
|
||||
In a |mcd|, certain records are able to be utilized by all of the companies (or several, based on
|
||||
permissions).
|
||||
|
||||
Products
|
||||
--------
|
||||
|
||||
In an |mcd|, new products are created with the :ref:`Company field <general/active-companies>`
|
||||
blank, by default. If the *Company* field remains blank, the product is shared across all companies.
|
||||
|
||||
Contacts
|
||||
--------
|
||||
|
||||
Similar to products, contact records are shared across companies, by default. To limit access to a
|
||||
single company, click the :ref:`Company field <general/active-companies>` on a contact form, and
|
||||
select a company to assign the contact to.
|
||||
|
||||
Inter-company transactions
|
||||
==========================
|
||||
|
||||
The :ref:`Inter-Company Transactions <general/inter-company>` feature allows for one company in the
|
||||
database to sell or purchase goods and services from another company within the same database.
|
||||
Counterpart documents for orders and invoices can be automatically generated and synchronized,
|
||||
depending on the configuration settings.
|
||||
|
||||
.. warning::
|
||||
To ensure inter-company transactions are handled appropriately, certain configurations, such as
|
||||
fiscal positions and localizations, need to be accurately assigned. See :ref:`Inter-Company
|
||||
Transactions <general/inter-company>` for additional information.
|
||||
|
||||
Use cases
|
||||
=========
|
||||
|
||||
Multinational companies
|
||||
-----------------------
|
||||
|
||||
A multinational retail chain, which operates in the United States and Canada, needs to manage
|
||||
transactions in both USD and CAD currencies.
|
||||
|
||||
Additionally, because both countries have different tax laws and regulations, it is in the best
|
||||
interest of the customer to utilize the multi-company feature.
|
||||
|
||||
This allows for inter-company transactions they need to manage inventory moves across international
|
||||
borders, while making it simple to sell to customers in both countries in their own currency.
|
||||
|
||||
Separate processes
|
||||
------------------
|
||||
|
||||
A small furniture company is developing a new line of products that require a separate procurement,
|
||||
inventory, and manufacturing process. The new products are drastically different from the existing
|
||||
catalog. The company is considering utilizing the multi-company feature to treat this new line as a
|
||||
different entity.
|
||||
|
||||
To keep their database from becoming overly complex, the furniture company does not need to add an
|
||||
entirely new company. Instead, they can take advantage of existing features, such as :doc:`analytic
|
||||
accounting <../finance/accounting/reporting/analytic_accounting>`, and multiple warehouses, to
|
||||
manage the new product line, without having to overly complicate transactions.
|
||||
|
||||
Limitations
|
||||
===========
|
||||
|
||||
In some instances, a |mcd| may *not* be the best option, due to potential limitations.
|
||||
|
||||
Access rights
|
||||
-------------
|
||||
|
||||
A user's access rights are configured on a database level. If a user has access to more than one
|
||||
company in a |mcd|, their access rights are the same across every company.
|
||||
|
||||
Shared records
|
||||
--------------
|
||||
|
||||
Individual records are either :ref:`shared <general/sharing-data>` between all companies, or belong
|
||||
to a single company.
|
||||
|
||||
PDF Reports
|
||||
-----------
|
||||
|
||||
Some customizations, specifically for PDF reports, apply to all companies. It is not always possible
|
||||
to separate reports for individual companies.
|
||||
|
After Width: | Height: | Size: 23 KiB |
@@ -254,6 +254,7 @@ company.
|
||||
users/2fa
|
||||
users/access_rights
|
||||
users/portal
|
||||
users/facebook
|
||||
users/google
|
||||
users/azure
|
||||
users/ldap
|
||||
|
||||
@@ -1,127 +1,125 @@
|
||||
=========================
|
||||
Two-factor Authentication
|
||||
Two-factor authentication
|
||||
=========================
|
||||
|
||||
Two-factor authentication ("2FA") is a good way to improve the
|
||||
security of an account, to make it less likely that an other person
|
||||
will manage to log in instead of you.
|
||||
.. |2fa| replace:: :abbr:`2FA (two-factor authentication)`
|
||||
.. |QR| replace:: :abbr:`QR (Quick Response)` code
|
||||
|
||||
Practically, it means storing a secret inside an *authenticator*
|
||||
(usually your cell phone) and exchanging a code from the authenticator
|
||||
when you try to log in.
|
||||
*Two-factor authentication (2FA)* is a way to improve security, and prevent unauthorized persons
|
||||
from accessing user accounts.
|
||||
|
||||
This means an attacker needs *both* to have guessed (or found) your
|
||||
password and to access (or steal) your authenticator, a more difficult
|
||||
proposition than either one or the other.
|
||||
Practically, |2fa| means storing a secret inside an *authenticator*, usually on a mobile phone, and
|
||||
exchanging a code from the authenticator when trying to log in.
|
||||
|
||||
This means an unauthorized user would need to guess the account password *and* have access to the
|
||||
authenticator, which is a more difficult proposition.
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
.. note:: These lists are just examples, they are not endorsements of
|
||||
any specific software.
|
||||
.. important::
|
||||
These lists are just examples. They are **not** endorsements of any specific software.
|
||||
|
||||
If you don't already have one, you will need to choose an
|
||||
authenticator.
|
||||
Phone-based authenticators are the easiest and most commonly used. Examples include:
|
||||
|
||||
Phone-based authenticators are the easiest and most common so we will
|
||||
assume you'll pick and install one on your phone, examples include
|
||||
`Authy <https://authy.com/>`_, `FreeOTP
|
||||
<https://freeotp.github.io/>`_, `Google Authenticator
|
||||
<https://support.google.com/accounts/answer/1066447?hl=en>`_,
|
||||
`LastPass Authenticator <https://lastpass.com/auth/>`_, `Microsoft
|
||||
Authenticator
|
||||
<https://www.microsoft.com/en-gb/account/authenticator?cmp=h66ftb_42hbak>`_,
|
||||
...; password managers also commonly include :abbr:`2FA (two-factor
|
||||
authentication)` support e.g. `1Password
|
||||
<https://support.1password.com/one-time-passwords/>`_, `Bitwarden
|
||||
<https://bitwarden.com/help/article/authenticator-keys/>`_, ...
|
||||
- `Authy <https://authy.com/>`_
|
||||
- `FreeOTP <https://freeotp.github.io/>`_
|
||||
- `Google Authenticator <https://support.google.com/accounts/answer/1066447?hl=en>`_
|
||||
- `LastPass Authenticator <https://lastpass.com/auth/>`_
|
||||
- `Microsoft Authenticator
|
||||
<https://www.microsoft.com/en-gb/account/authenticator?cmp=h66ftb_42hbak>`_
|
||||
|
||||
For the sake of demonstration we will be using Google Authenticator
|
||||
(not because it is any good but because it is quite common).
|
||||
Password managers are another option. Common examples include:
|
||||
|
||||
Setting up two-factor authentication
|
||||
====================================
|
||||
|
||||
Once you have your authenticator of choice, go to the Odoo instance
|
||||
you want to setup :abbr:`2FA (two-factor authentication)`, then open
|
||||
:guilabel:`Preferences` (or :guilabel:`My Profile`):
|
||||
|
||||
.. figure:: 2fa/preferences.png
|
||||
:align: center
|
||||
|
||||
Open the :guilabel:`Account Security` tab, then click the
|
||||
:guilabel:`Enable two-factor authentication` button:
|
||||
|
||||
.. figure:: 2fa/sec_tab.png
|
||||
:align: center
|
||||
|
||||
Because this is a security-sensitive action, you will need to input
|
||||
your password:
|
||||
|
||||
.. figure:: 2fa/sec_enhanced.png
|
||||
:align: center
|
||||
|
||||
After which you will see this screen with a barcode:
|
||||
|
||||
.. figure:: 2fa/totp_scan.png
|
||||
:align: center
|
||||
|
||||
In most applications, you can simply *scan the barcode* via the
|
||||
authenticator of your choice, the authenticator will then take care of
|
||||
all the setup:
|
||||
|
||||
.. figure:: 2fa/scan_barcode.jpg
|
||||
:align: center
|
||||
- `1Password <https://support.1password.com/one-time-passwords/>`_
|
||||
- `Bitwarden <https://bitwarden.com/help/article/authenticator-keys/>`_,
|
||||
|
||||
.. note::
|
||||
The remainder of this document uses Google Authenticator as an example, as it is one of the most
|
||||
commonly used. This is **not** an endorsement of the product.
|
||||
|
||||
If you can not scan the screen (e.g. because you are doing this
|
||||
set-up on the same phone as the authenticator application), you can
|
||||
click the provided link, or copy the secret to manually set-up your
|
||||
authenticator:
|
||||
Two-factor authentication setup
|
||||
===============================
|
||||
|
||||
.. figure:: 2fa/secret_visible.png
|
||||
After selecting an authenticator, log in to Odoo, then click the profile avatar in the upper-right
|
||||
corner, and select :guilabel:`My Profile` from the resulting drop-down menu.
|
||||
|
||||
Click the :guilabel:`Account Security` tab, then slide the :guilabel:`Two-Factor Authentication`
|
||||
toggle to *active*.
|
||||
|
||||
.. figure:: 2fa/account-security.png
|
||||
:align: center
|
||||
|
||||
This generates a :guilabel:`Security Control` pop-up window that requires password confirmation to
|
||||
continue. Enter the appropriate password, then click :guilabel:`Confirm Password`. Next, a
|
||||
:guilabel:`Two-Factor Authentication Activation` pop-up window appears, with a |QR|.
|
||||
|
||||
|
||||
.. figure:: 2fa/qr-code.png
|
||||
:align: center
|
||||
|
||||
Using the desired authenticator application, scan the |QR| when prompted.
|
||||
|
||||
.. tip::
|
||||
If scanning the screen is not possible (e.g. the setup is being completed on the *same* device as
|
||||
the authenticator application), clicking the provided :guilabel:`Cannot scan it?` link, or
|
||||
copying the secret to manually set up the authenticator, is an alternative.
|
||||
|
||||
.. figure:: 2fa/secret-visible.png
|
||||
:align: center
|
||||
|
||||
.. figure:: 2fa/input_secret.png
|
||||
.. figure:: 2fa/input-secret.png
|
||||
:align: center
|
||||
|
||||
Once this is done, the authenticator should display a *verification
|
||||
code* with some useful identifying information (e.g. the domain and
|
||||
login for which the code is):
|
||||
Afterwards, the authenticator should display a *verification code*.
|
||||
|
||||
.. figure:: 2fa/authenticator.png
|
||||
:align: center
|
||||
|
||||
You can now input the code into the :guilabel:`Verification Code`
|
||||
field, then click the :guilabel:`Enable two-factor authentication`
|
||||
button.
|
||||
Enter the code into the :guilabel:`Verification Code` field, then click :guilabel:`Activate`.
|
||||
|
||||
Congratulation, your account is now protected by two-factor
|
||||
authentication!
|
||||
|
||||
.. figure:: 2fa/totp_enabled.png
|
||||
.. figure:: 2fa/2fa-enabled.png
|
||||
:align: center
|
||||
|
||||
Logging in
|
||||
==========
|
||||
|
||||
You should now :guilabel:`Log out` to follow along.
|
||||
To confirm |2fa| setup is complete, log out of Odoo.
|
||||
|
||||
On the login page, input the username and password of the account for
|
||||
which you set up :abbr:`2FA (two-factor authentication)`, rather than
|
||||
immediately enter Odoo you will now get a second log-in screen:
|
||||
On the login page, input the username and password, then click :guilabel:`Log in`. On the
|
||||
:guilabel:`Two-factor Authentication` page, input the code provided by the chosen authenticator in
|
||||
the :guilabel:`Authentication Code` field, then click :guilabel:`Log in`.
|
||||
|
||||
.. figure:: 2fa/2fa_input.png
|
||||
.. image:: 2fa/2fa-login.png
|
||||
:align: center
|
||||
:alt: The login page with 2fa enabled.
|
||||
|
||||
Get your authenticator, input the code it provides for the domain and
|
||||
account, validate, and you're now in.
|
||||
.. danger::
|
||||
If a user loses access to their authenticator, an administrator **must** deactivate |2fa| on the
|
||||
account before the user can log in.
|
||||
|
||||
And that's it. From now on, unless you disable :abbr:`2FA (two-factor
|
||||
authentication)` you will have a two-step log-in process rather than
|
||||
the old one-step process.
|
||||
Enforce two-factor authentication
|
||||
=================================
|
||||
|
||||
.. danger:: Don't lose your authenticator, if you do, you will need an
|
||||
*Odoo Administrator* to disable :abbr:`2FA (two-factor
|
||||
authentication)` on the account.
|
||||
To enforce the use of |2fa| for all users, first navigate to :menuselection:`Main Odoo Dashboard -->
|
||||
Apps`. Remove the :guilabel:`Apps` filter from the :guilabel:`Search...` bar, then search for `2FA
|
||||
by mail`.
|
||||
|
||||
Click :guilabel:`Install` on the Kanban card for the :guilabel:`2FA by mail` module.
|
||||
|
||||
.. image:: 2fa/2FA-by-mail.png
|
||||
:align: center
|
||||
:alt: The 2FA by mail module in the Apps directory.
|
||||
|
||||
After installation is complete, go to :guilabel:`Settings app: Permissions`. Tick the checkbox
|
||||
labeled, :guilabel:`Enforce two-factor authentication`. Then, use the radio buttons to choose
|
||||
whether to apply this setting to :guilabel:`Employees only`, or :guilabel:`All users`.
|
||||
|
||||
.. note::
|
||||
Selecting :guilabel:`All users` applies the setting to portal users, in addition to employees.
|
||||
|
||||
.. image:: 2fa/enforce-settings.png
|
||||
:align: center
|
||||
:alt: The enforce two factor setting in the Settings application.
|
||||
|
||||
Click :guilabel:`Save` to commit any unsaved changes.
|
||||
|
||||
|
After Width: | Height: | Size: 13 KiB |