Compare commits
12 Commits
17.0-payro
...
vbe-odoo-p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
091c084c9a | ||
|
|
50d983d48d | ||
|
|
f80a74f460 | ||
|
|
7e37903b8f | ||
|
|
50b3852bab | ||
|
|
ba97b13527 | ||
|
|
e8a260f20a | ||
|
|
e25de2b5b5 | ||
|
|
34598f13bf | ||
|
|
6ebd27144b | ||
|
|
a08fc7db34 | ||
|
|
1f5a41a209 |
@@ -11,9 +11,9 @@ transactions.
|
||||
|
||||
.. 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. For more information, reference this documentation:
|
||||
:ref:`avatax/fiscal_country`.
|
||||
United States, Canada, and Brazil. This means the fiscal position/country of a database can only
|
||||
be set to the United States, Canada, or Brazil. For more information, reference this
|
||||
documentation: :ref:`avatax/fiscal_country`.
|
||||
|
||||
*AvaTax* accounts for location-based tax rates for each state, county, and city. It improves
|
||||
remittance accuracy by paying close attention to laws, rules, jurisdiction boundaries, and special
|
||||
@@ -125,7 +125,7 @@ To set the :guilabel:`Fiscal Country`, navigate to :menuselection:`Accounting ap
|
||||
:doc:`../../fiscal_localizations`
|
||||
|
||||
Under the :guilabel:`Taxes` section, set the :guilabel:`Fiscal Country` feature to :guilabel:`United
|
||||
States` or :guilabel:`Canada`. Then, click :guilabel:`Save`.
|
||||
States`, :guilabel:`Canada`, or :guilabel:`Brazil`. Then, click :guilabel:`Save`.
|
||||
|
||||
Company settings
|
||||
----------------
|
||||
@@ -166,28 +166,50 @@ Next, ensure that the Odoo *AvaTax* module is installed. To do so, navigate to t
|
||||
* - :guilabel:`Avatax`
|
||||
- `account_avatax`
|
||||
- Default *AvaTax* module. This module adds the base *AvaTax* features for tax calculation.
|
||||
* - :guilabel:`Avatax for geo localization`
|
||||
- `account_avatax_geolocalize`
|
||||
- This module includes the features required for integration of *AvaTax* into geo-localization
|
||||
in Odoo.
|
||||
* - :guilabel:`Avatax for SO`
|
||||
- `account_avatax_sale`
|
||||
- Includes the information needed for tax calculation on sales orders in Odoo.
|
||||
* - :guilabel:`Avatax for Subscriptions`
|
||||
- `account_avatax_sale_subscription`
|
||||
- This module includes the features required for tax calculation on subscriptions in Odoo.
|
||||
* - :guilabel:`Account Avatax - Ecommerce`
|
||||
- `website_sale_account_avatax`
|
||||
- Includes tax calculation features for the checkout process on Odoo eCommerce.
|
||||
* - :guilabel:`Account AvaTax - Ecommerce - Delivery`
|
||||
- `website_sale_delivery_avatax`
|
||||
- Includes tax calculation features for the delivery process on Odoo eCommerce.
|
||||
* - :guilabel:`Avatax for Inventory`
|
||||
- `account_avatax_stock`
|
||||
- Includes tax calculation in Odoo Inventory.
|
||||
* - :guilabel:`Amazon/Avatax Bridge`
|
||||
- `sale_amazon_avatax`
|
||||
- Includes tax calculation features between the *Amazon Connector* and Odoo.
|
||||
* - :guilabel:`Avatax Brazil`
|
||||
- `l10n_br_avatax`
|
||||
- Includes information for tax calculation in the Brazil localization.
|
||||
* - :guilabel:`Avatax Brazil for Services`
|
||||
- `l10n_br_avatax_services`
|
||||
- This module includes the required features for tax calculation for services in the Brazil
|
||||
localization.
|
||||
* - :guilabel:`Avatax Brazil Sale for Services`
|
||||
- `l10n_br_edi_sale_services`
|
||||
- This module includes the required features for tax calculation for the sale of services in
|
||||
the Brazil localization. This includes electronic data interchange (EDI).
|
||||
* - :guilabel:`Test SOs for the Brazilian AvaTax`
|
||||
- `l10n_br_test_avatax_sale`
|
||||
- This module includes the required features for test sales orders in the Brazil localization.
|
||||
|
||||
Click the :guilabel:`Install` button on the module labeled :guilabel:`Avatax`: `account_avatax`.
|
||||
Click the :guilabel:`Install` button on the module labeled, :guilabel:`Avatax`: `account_avatax`.
|
||||
Doing so installs the following modules:
|
||||
|
||||
- :guilabel:`Avatax`: `account_avatax`
|
||||
- :guilabel:`Avatax for SO`: `account_avatax_sale`
|
||||
- :guilabel:`Account Avatax - Ecommerce`: `website_sale_account_avatax`
|
||||
- :guilabel:`Avatax for Inventory`: `account_avatax_stock`
|
||||
|
||||
Should *AvaTax* be needed for Odoo *Subscriptions*, or for delivery tax in Odoo *eCommerce*, then
|
||||
install those modules individually by clicking on :guilabel:`Install`.
|
||||
Should *AvaTax* be needed for geo-localization, or with the *Amazon Connector*, then install those
|
||||
modules individually by clicking on :guilabel:`Install` on :guilabel:`Avatax for geo localization`
|
||||
and :guilabel:`Amazon/Avatax Bridge`, respectively.
|
||||
|
||||
.. seealso::
|
||||
For localization specific *AvaTax* instructions, view the following :doc:`fiscal localization
|
||||
<../../fiscal_localizations>` documentation:
|
||||
|
||||
- :doc:`../../fiscal_localizations/brazil`
|
||||
|
||||
.. _avatax/credentials:
|
||||
|
||||
@@ -196,9 +218,13 @@ Odoo AvaTax settings
|
||||
|
||||
To integrate the *AvaTax* :abbr:`API (application programming interface)` with Odoo, go to
|
||||
:menuselection:`Accounting app --> Configuration --> Settings` section. The :guilabel:`AvaTax`
|
||||
fields in the :guilabel:`Taxes` section is where the *AvaTax* configurations are made and the
|
||||
fields in the :guilabel:`Taxes` section is where the *AvaTax* configurations are made, and the
|
||||
credentials are entered in.
|
||||
|
||||
First, tick the checkbox to the left of the :guilabel:`AvaTax` settings, to activate *AvaTax* on the
|
||||
database. This is a quick, convenient way to activate and deactivate *AvaTax* tax calculation on the
|
||||
Odoo database.
|
||||
|
||||
.. image:: avatax/avatax-configuration-settings.png
|
||||
:align: center
|
||||
:alt: Configure AvaTax settings
|
||||
@@ -360,6 +386,12 @@ Tax mapping
|
||||
The *AvaTax* integration is available on sale orders and invoices with the included *AvaTax* fiscal
|
||||
position.
|
||||
|
||||
.. tip::
|
||||
Additionally, there is a :guilabel:`Tax Mapping` tab and :guilabel:`Account Mapping` tab in the
|
||||
:guilabel:`Automatic Tax Mapping (AvaTax)` fiscal position, where mapping for products can also
|
||||
be configured. To access :guilabel:`Fiscal Positions` navigate to :menuselection:`Accounting app
|
||||
--> Configuration --> Accounting: Fiscal Positions`.
|
||||
|
||||
Product category mapping
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 13 KiB |
@@ -11,15 +11,15 @@ Tax calculation
|
||||
|
||||
Automatically calculate taxes on Odoo quotations and invoices with AvaTax by confirming the
|
||||
documents during the sales flow. Alternatively, calculate the taxes manually by clicking the
|
||||
:guilabel:`Compute taxes using Avatax` button while these documents are in draft mode.
|
||||
:guilabel:`Compute Taxes` button, while these documents are in draft stage.
|
||||
|
||||
.. tip::
|
||||
Clicking the :guilabel:`Compute taxes using Avatax` button recalculates taxes if any product
|
||||
lines are edited on the invoice.
|
||||
Clicking the :guilabel:`Compute Taxes` button recalculates taxes, if any product lines are edited
|
||||
on the invoice.
|
||||
|
||||
.. image:: avatax_use/calculate-avatax.png
|
||||
:align: center
|
||||
:alt: Sales quotation with the confirm and compute taxes using AvaTax buttons highlighted.
|
||||
:alt: Sales quotation with the confirm and compute taxes button highlighted.
|
||||
|
||||
The tax calculation is triggered during the following :ref:`automatic trigger
|
||||
<avatax/automatic-triggers>` and :ref:`manual trigger <avatax/manual-triggers>` circumstances.
|
||||
@@ -43,8 +43,10 @@ Automatic triggers
|
||||
Manual triggers
|
||||
---------------
|
||||
|
||||
- :guilabel:`Compute taxes using Avatax` button at the bottom of the quote.
|
||||
- :guilabel:`Compute taxes using Avatax` button at the top of the invoice.
|
||||
- :guilabel:`Compute Taxes` button at the bottom of the quote.
|
||||
- :guilabel:`Compute Taxes` button at the top of the invoice.
|
||||
|
||||
Use each of these buttons to manually re-calculate the sales tax.
|
||||
|
||||
.. tip::
|
||||
Use the :guilabel:`Avalara Partner Code` field that is available on customer records, quotations,
|
||||
@@ -94,9 +96,9 @@ AvaTax portal.
|
||||
Fixed price discounts
|
||||
=====================
|
||||
|
||||
Add a fixed price discount to a valuable customer by click :guilabel:`Add a line` on the customer's
|
||||
invoice. Add the product discount and set the :guilabel:`Price` to either a positive or negative
|
||||
value. To recalculate the taxes, click :guilabel:`Compute taxes using Avatax`.
|
||||
Add a fixed price discount to a valuable customer, by clicking :guilabel:`Add a line` on the
|
||||
customer's invoice. Add the product discount, and set the :guilabel:`Price` to either a positive or
|
||||
negative value. To recalculate the taxes, click :guilabel:`Compute Taxes`.
|
||||
|
||||
.. tip::
|
||||
Tax calculation can even be done on negative subtotals and credit notes.
|
||||
|
||||
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 35 KiB |
@@ -903,6 +903,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?
|
||||
----------------------
|
||||
|
||||
@@ -10,12 +10,12 @@ Introduction
|
||||
============
|
||||
|
||||
With the Brazilian localization, sales taxes can be automatically computed and electronic invoices
|
||||
(NF-e) for goods can be sent using AvaTax (Avalara) through |API| calls. Moreover, taxes for
|
||||
services can be configured.
|
||||
for goods (NF-e) and services (NFS-e) can be sent using AvaTax (Avalara) through |API| calls.
|
||||
Moreover, taxes for services can be configured.
|
||||
|
||||
For the goods tax computation and electronic invoicing process, you need to configure the
|
||||
:ref:`contacts <brazil/contacts>`, :ref:`company <brazil/company>`, :ref:`products
|
||||
<brazil/products>`, and :ref:`create an account in Avatax <brazil/avatax-account>` need to be
|
||||
For the goods and services tax computation and electronic invoicing process, you need to configure
|
||||
the :ref:`contacts <brazil/contacts>`, :ref:`company <brazil/company>`, :ref:`products
|
||||
<brazil/products>`, and :ref:`create an account in AvaTax <brazil/avatax-account>` which needs to be
|
||||
configured in the general settings.
|
||||
|
||||
For the services taxes, you can create and configure them from Odoo directly without computing them
|
||||
@@ -27,9 +27,36 @@ needed.
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Install the :guilabel:`🇧🇷 Brazil` :ref:`fiscal localization package
|
||||
<fiscal_localizations/packages>` to get all the default accounting features of the Brazilian
|
||||
localization, following the :abbr:`IFRS (International Financial Reporting Standards)` rules.
|
||||
Modules installation
|
||||
--------------------
|
||||
|
||||
:ref:`Install <general/install>` the following modules to get all the features of the Brazilian
|
||||
localization:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:widths: 25 25 50
|
||||
|
||||
* - Name
|
||||
- Technical name
|
||||
- Description
|
||||
* - :guilabel:`Brazilian - Accounting`
|
||||
- `l10n_br`
|
||||
- Default :ref:`fiscal localization package <fiscal_localizations/packages>`, which represents
|
||||
having the Generic Brazilian chart of accounts and Taxes, together with document types and
|
||||
identification types.
|
||||
* - :guilabel:`Brazil - Accounting Reports`
|
||||
- `l10n_br_reports`
|
||||
- Accounting reports for Brazil.
|
||||
* - :guilabel:`AvaTax Brazil` & :guilabel:`AvaTax Brazil for Services`
|
||||
- `l10n_br_avatax` & `l10n_br_avatax_services`
|
||||
- Goods and Services tax computation through Avalara.
|
||||
* - :guilabel:`Brazilian Accounting EDI` & :guilabel:`Brazilian Accounting EDI for services`
|
||||
- `l10n_br_edi` & `l10n_br_edi_services`
|
||||
- Provides electronic invoicing for goods and services for Brazil through AvaTax.
|
||||
* - :guilabel:`Brazil Pix QR codes`
|
||||
- `l10n_br_pix`
|
||||
- Implements Pix QR codes for Brazil.
|
||||
|
||||
.. _brazil/company:
|
||||
|
||||
@@ -42,40 +69,53 @@ given to your company.
|
||||
#. Select the :guilabel:`Company` option at the top of the page. Then, configure the following
|
||||
fields:
|
||||
|
||||
- :guilabel:`Name`.
|
||||
- :guilabel:`Address` (add :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
|
||||
:guilabel:`Country`).
|
||||
- :guilabel:`Name`
|
||||
- :guilabel:`Address`: add :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
|
||||
:guilabel:`Country`
|
||||
|
||||
- In the :guilabel:`Street` field, enter the street name, number, and any additional address
|
||||
information.
|
||||
- In the :guilabel:`Street 2` field, enter the neighborhood.
|
||||
|
||||
- :guilabel:`Identification Number` (:guilabel:`CNPJ`, :guilabel:`CPF`).
|
||||
- :guilabel:`Tax ID` (associated with the identification type).
|
||||
- :guilabel:`IE` (State registration).
|
||||
- :guilabel:`IM` (Municipal registration).
|
||||
- :guilabel:`SUFRAMA code` (Superintendence of the Manaus Free Trade Zone - add if applicable).
|
||||
- :guilabel:`Phone`.
|
||||
- :guilabel:`Email`.
|
||||
- :guilabel:`Identification Number`: :guilabel:`CNPJ` or :guilabel:`CPF`
|
||||
- :guilabel:`Tax ID`: associated with the identification type
|
||||
- :guilabel:`IE`: State registration
|
||||
- :guilabel:`IM`: Municipal registration
|
||||
- :guilabel:`SUFRAMA code`: Superintendence of the Manaus Free Trade Zone - add if applicable
|
||||
- :guilabel:`Phone`
|
||||
- :guilabel:`Email`
|
||||
|
||||
.. image:: brazil/contact-configuration.png
|
||||
:alt: Company configuration.
|
||||
|
||||
#. Configure the :guilabel:`Fiscal Information` within the :guilabel:`Sales and Purchase` tab:
|
||||
|
||||
- Add the :guilabel:`Fiscal Position` for :ref:`Avatax Brazil <brazil/fiscal-positions>`.
|
||||
- :guilabel:`Tax Regime` (Federal Tax Regime).
|
||||
- :guilabel:`ICMS Taxpayer Type` (indicates ICMS regime, Exempt status, or Non-Taxpayer).
|
||||
- :guilabel:`Main Activity Sector`.
|
||||
- Add the :guilabel:`Fiscal Position` for :ref:`AvaTax Brazil <brazil/fiscal-positions>`.
|
||||
- :guilabel:`Tax Regime`: Federal Tax Regime
|
||||
- :guilabel:`ICMS Taxpayer Type`: indicates :guilabel:`ICMS regime`, :guilabel:`Exempt status`,
|
||||
or :guilabel:`Non-Taxpayer`
|
||||
- :guilabel:`Main Activity Sector`
|
||||
|
||||
.. image:: brazil/contact-fiscal-configuration.png
|
||||
:alt: Company fiscal configuration.
|
||||
|
||||
#. Finally, upload a company logo and save the contact
|
||||
#. Configure the following extra :guilabel:`Fiscal Information` if you are going to issue NFS-e:
|
||||
|
||||
- Add the :guilabel:`Fiscal Position` for :ref:`AvaTax Brazil <brazil/fiscal-positions>`.
|
||||
- :guilabel:`COFINS Details`: :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
|
||||
Suspended`
|
||||
- :guilabel:`PIS Details` :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
|
||||
Suspended`
|
||||
- :guilabel:`CSLL Taxable` If the company is subject to CSLL or not
|
||||
|
||||
.. image:: brazil/contact-fiscal-configuration-nfse.png
|
||||
:alt: Company fiscal configuration for NFSe.
|
||||
|
||||
#. Finally, upload a company logo and save the contact.
|
||||
|
||||
.. note::
|
||||
If you are a simplified regime, you need to configure the ICMS rate under
|
||||
:menuselection:`Accounting --> Configuration --> Settings --> Taxes --> Avatax Brazil`.
|
||||
:menuselection:`Accounting --> Configuration --> Settings --> Taxes --> AvaTax Brazil`.
|
||||
|
||||
.. _brazil/avatax-account:
|
||||
|
||||
@@ -88,11 +128,14 @@ transaction information to retrieve the correct tax to be used and process the e
|
||||
with the government.
|
||||
|
||||
Using this integration requires :doc:`In-App-Purchases (IAPs) <../../essentials/in_app_purchase>` to
|
||||
compute the taxes and to send the electronic invoices. Whenever you compute taxes, an |API| call is
|
||||
made using credits from your |IAP| credits balance.
|
||||
compute the taxes and to send the electronic invoices. Whenever you compute taxes, send an
|
||||
electronic document (NF-e, NFS-e, etc), or perform any electronic flow (NF-e Cancellation,
|
||||
Correction letter, Invalidate invoice number range), an API call is made using credits from your
|
||||
`IAP credits balance <https://iap.odoo.com/iap/in-app-services/819>`_.
|
||||
|
||||
.. note::
|
||||
Odoo is a certified partner of Avalara Brazil.
|
||||
- Odoo is a certified partner of Avalara Brazil.
|
||||
- You can `buy IAP credit on odoo.com <https://iap.odoo.com/iap/in-app-services/819>`_.
|
||||
|
||||
Credential configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -100,19 +143,31 @@ Credential configuration
|
||||
To activate AvaTax in Odoo, you need to create an account. To do so, go to
|
||||
:menuselection:`Accounting --> Configuration --> Settings --> Taxes`, and in the :guilabel:`AvaTax
|
||||
Brazil` section, add the administration email address to be used for the AvaTax portal in the
|
||||
:guilabel:`Avatax Portal Email`, and then click on :guilabel:`Create account`.
|
||||
:guilabel:`AvaTax Portal Email`, and then click on :guilabel:`Create account`.
|
||||
|
||||
.. warning::
|
||||
When **testing** an :guilabel:`Avatax Portal Email` integration in a testing or sandbox database,
|
||||
use an alternate email address. It is **not** possible to re-use the same email address on the
|
||||
production database.
|
||||
When **testing** or **creating a production** :guilabel:`AvaTax Portal Email` integration in a
|
||||
sandbox or production database, use a real email address, as it is needed to log in to the
|
||||
Avalara Portal and set up the certificates, whether you want to test or use it on production.
|
||||
|
||||
There are two different Avalara Portals, one for testing and one for production:
|
||||
|
||||
- Sandbox: https://portal.sandbox.avalarabrasil.com.br/
|
||||
- Production: https://portal.avalarabrasil.com.br/
|
||||
|
||||
When you create the account from Odoo, be sure to select the right environment. Moreover, the
|
||||
email used to open the account cannot be used to open another account. Save your :guilabel:`API
|
||||
ID` and :guilabel:`API Key` when you create the account from Odoo.
|
||||
|
||||
.. image:: brazil/transfer-api-credentials.png
|
||||
:alt: Transfer API Credentials.
|
||||
|
||||
After you create the account from Odoo, you need to go to the Avalara Portal to set up your
|
||||
password:
|
||||
|
||||
#. Access the `Avalara portal <https://portal.avalarabrasil.com.br/Login>`_.
|
||||
#. Click on :guilabel:`Meu primeiro acesso`.
|
||||
#. Add the email address you used in Odoo to create the Avalara/Avatax account, and then click
|
||||
#. Add the email address you used in Odoo to create the Avalara/AvaTax account, and then click
|
||||
:guilabel:`Solicitar Senha`.
|
||||
#. You will receive an email with a token and a link to create your password. Click on this link and
|
||||
copy-paste the token to allocate your desired password.
|
||||
@@ -123,7 +178,7 @@ password:
|
||||
invoice service, you **must** access the AvaTax portal and upload your certificate there.
|
||||
|
||||
.. image:: brazil/avatax-account-configuration.png
|
||||
:alt: Avatax account configuration.
|
||||
:alt: AvaTax account configuration.
|
||||
|
||||
.. note::
|
||||
You can transfer |API| credentials. Use this only when you have already created an account in
|
||||
@@ -139,6 +194,13 @@ The certificate will be synchronized with Odoo, as long as the external identifi
|
||||
AvaTax portal matches - without special characters - with the CNPJ number, and the identification
|
||||
number (CNPJ) in Odoo matches with the CNPJ in AvaTax.
|
||||
|
||||
.. important::
|
||||
To issue NFS-e, some cities require that you link the certificate within the City Portal system
|
||||
before issuing NFS-e from Odoo.
|
||||
|
||||
If you receive an error message from the city that says :guilabel:`Your certificate is not linked
|
||||
to the user`, that means this process needs to be done in the city portal.
|
||||
|
||||
Configure master data
|
||||
---------------------
|
||||
|
||||
@@ -187,15 +249,8 @@ be manually added and configured, as the rate may differ depending on the city w
|
||||
offering the service.
|
||||
|
||||
.. important::
|
||||
Taxes attached to services are not computed by AvaTax. Only goods taxes are computed.
|
||||
|
||||
When configuring a tax used for a service that is included in the final price (when the tax is not
|
||||
added or subtracted on top of the product price), set the :guilabel:`Tax Computation` to
|
||||
:guilabel:`Percentage of Price Tax Included`, and, on the :guilabel:`Advanced Options` tab, check
|
||||
the :guilabel:`Included in Price` option.
|
||||
|
||||
.. image:: brazil/tax-configuration.png
|
||||
:alt: Tax configuration.
|
||||
If you decide to do service taxes manually, you won't be able to issue an NFS-e. To
|
||||
electronically send an NFS-e, you need to compute taxes using Avalara.
|
||||
|
||||
.. warning::
|
||||
Do not delete taxes, as they are used for the AvaTax tax computation. If deleted, Odoo creates
|
||||
@@ -212,14 +267,17 @@ Products
|
||||
~~~~~~~~
|
||||
|
||||
To use the AvaTax integration on sale orders and invoices, first specify the following information
|
||||
on the product:
|
||||
on the product depending on its intended use:
|
||||
|
||||
- :guilabel:`CEST Code` (Code for products subject to ICMS tax substitution).
|
||||
- :guilabel:`Mercosul NCM Code` (Mercosur Common Nomenclature Product Code).
|
||||
- :guilabel:`Source of Origin` (Indicates the origin of the product, which can be foreign or
|
||||
domestic, among other possible options depending on the specific use case).
|
||||
- :guilabel:`SPED Fiscal Product Type` (Fiscal product type according to SPED list table).
|
||||
- :guilabel:`Purpose of Use` (Specify the intended purpose of use for this product).
|
||||
E-Invoice for goods (NF-e)
|
||||
**************************
|
||||
|
||||
- :guilabel:`CEST Code`: Code for products subject to ICMS tax substitution
|
||||
- :guilabel:`Mercosul NCM Code`: Mercosur Common Nomenclature Product Code
|
||||
- :guilabel:`Source of Origin`: Indicates the origin of the product, which can be foreign or
|
||||
domestic, among other possible options depending on the specific use case
|
||||
- :guilabel:`SPED Fiscal Product Type`: Fiscal product type according to SPED list table
|
||||
- :guilabel:`Purpose of Use`: Specify the intended purpose of use for this product
|
||||
|
||||
.. image:: brazil/product-configuration.png
|
||||
:alt: Product configuration.
|
||||
@@ -231,6 +289,16 @@ on the product:
|
||||
:guilabel:`Product Type` `Service`, :guilabel:`Transportation Cost Type` `Insurance`, `Freight`,
|
||||
or `Other Costs`).
|
||||
|
||||
E-Invoice for services (NFS-e)
|
||||
******************************
|
||||
|
||||
- :guilabel:`Mercosul NCM Code`: Mercosur Common Nomenclature Product Code
|
||||
- :guilabel:`Purpose of Use`: Specify the intended purpose of use for this product
|
||||
- :guilabel:`Service Code Origin`: City Service Code where the provider is registered
|
||||
- :guilabel:`Service Codes`: City Service Code where the service will be provided, if no
|
||||
code is added, the Origin City Code will be used
|
||||
- :guilabel:`Labor Assignment`: Defines if your services includes labor
|
||||
|
||||
.. _brazil/contacts:
|
||||
|
||||
Contacts
|
||||
@@ -242,23 +310,23 @@ Before using the integration, specify the following information on the contact:
|
||||
|
||||
- Select the :guilabel:`Company` option for a contact with a tax ID (CNPJ), or check
|
||||
:guilabel:`Individual` for a contact with a CPF.
|
||||
- :guilabel:`Name`.
|
||||
- :guilabel:`Address` (add :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
|
||||
:guilabel:`Country`).
|
||||
- :guilabel:`Name`
|
||||
- :guilabel:`Address`: add :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
|
||||
:guilabel:`Country`
|
||||
|
||||
- In the :guilabel:`Street` field, enter the street, number, and any extra address information.
|
||||
- In the :guilabel:`Street 2` field, enter the neighborhood.
|
||||
|
||||
- :guilabel:`Identification Number` (:guilabel:`CNPJ`, :guilabel:`CPF`).
|
||||
- :guilabel:`Tax ID` (associated with the identification type).
|
||||
- :guilabel:`IE`: state tax identification number.
|
||||
- :guilabel:`IM`: municipal tax identification number.
|
||||
- :guilabel:`SUFRAMA code`: SUFRAMA registration number.
|
||||
- :guilabel:`Phone`.
|
||||
- :guilabel:`Email`.
|
||||
- :guilabel:`Identification Number`: :guilabel:`CNPJ` or :guilabel:`CPF`
|
||||
- :guilabel:`Tax ID`: associated with the identification type
|
||||
- :guilabel:`IE`: state tax identification number
|
||||
- :guilabel:`IM`: municipal tax identification number
|
||||
- :guilabel:`SUFRAMA code`: SUFRAMA registration number
|
||||
- :guilabel:`Phone`
|
||||
- :guilabel:`Email`
|
||||
|
||||
.. image:: brazil/contact-configuration.png
|
||||
:alt: Contact configuration.
|
||||
:alt: Contact configuration.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`CPF`, :guilabel:`IE`, :guilabel:`IM`, and :guilabel:`SUFRAMA code` fields are
|
||||
@@ -269,13 +337,25 @@ Before using the integration, specify the following information on the contact:
|
||||
- :guilabel:`Fiscal Position`: add the AvaTax fiscal position to automatically compute taxes on
|
||||
sale orders and invoices automatically
|
||||
- :guilabel:`Tax Regime`: federal tax regime
|
||||
- :guilabel:`ICMS Taxpayer Type`: taxpayer type determines if the contact is within the ICMS
|
||||
regime, if it is exempt, or if it is a non-taxpayer
|
||||
- :guilabel:`ICMS Taxpayer Type`: taxpayer type determines if the contact is within the
|
||||
:guilabel:`ICMS regime`, :guilabel:`Exempt status`, or :guilabel:`Non-taxpayer`
|
||||
- :guilabel:`Main Activity Sector`: list of main activity sectors of the contact
|
||||
|
||||
.. image:: brazil/contact-fiscal-configuration.png
|
||||
:alt: Contact fiscal configuration.
|
||||
|
||||
#. Configure the following extra :guilabel:`Fiscal Information` if you are going to issue NFS-e:
|
||||
|
||||
- Add the :guilabel:`Fiscal Position` for :ref:`AvaTax Brazil <brazil/fiscal-positions>`
|
||||
- :guilabel:`COFINS Details`: :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
|
||||
Suspended`
|
||||
- :guilabel:`PIS Details`: :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
|
||||
Suspended`
|
||||
- :guilabel:`CSLL Taxable`: If the company is subject to CSLL or not
|
||||
|
||||
.. image:: brazil/contact-fiscal-configuration-nfse.png
|
||||
:alt: Contact fiscal configuration for NFSe.
|
||||
|
||||
.. _brazil/fiscal-positions:
|
||||
|
||||
Fiscal positions
|
||||
@@ -285,8 +365,8 @@ To compute taxes and send electronic invoices on sale orders and invoices, both
|
||||
:guilabel:`Detect Automatically` and the :guilabel:`Use AvaTax API` options need to be enabled in
|
||||
the :guilabel:`Fiscal Position`.
|
||||
|
||||
The :guilabel:`Fiscal Position` can be configured on the contact or selected when creating a sales
|
||||
order or an invoice.
|
||||
The :guilabel:`Fiscal Position` can be configured on the :ref:`contact <brazil/contacts>` or
|
||||
selected when creating a sales order or an invoice.
|
||||
|
||||
.. image:: brazil/fiscal-position-configuration.png
|
||||
:alt: Fiscal position configuration
|
||||
@@ -295,8 +375,8 @@ Workflows
|
||||
=========
|
||||
|
||||
This section provides an overview of the actions that trigger `API calls
|
||||
<https://en.wikipedia.org/wiki/API>`_ for tax computation, and how to send an electronic invoice for
|
||||
goods (NF-e) for government validation.
|
||||
<https://en.wikipedia.org/wiki/API>`_ for tax computation, along with instructions on how to send
|
||||
electronic invoices for goods (NF-e) and services (NFS-e) for government validation.
|
||||
|
||||
.. warning::
|
||||
Please note that each |API| call incurs a cost. Be mindful of the actions that trigger these
|
||||
@@ -314,7 +394,7 @@ any of the following ways:
|
||||
- **Quotation confirmation**
|
||||
Confirm a quotation into a sales order.
|
||||
- **Manual trigger**
|
||||
Click on :guilabel:`Compute Taxes Using Avatax`.
|
||||
Click on :guilabel:`Compute Taxes Using AvaTax`.
|
||||
- **Preview**
|
||||
Click on the :guilabel:`Preview` button.
|
||||
- **Email a quotation / sales order**
|
||||
@@ -326,8 +406,8 @@ any of the following ways:
|
||||
Tax calculations on invoices
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Trigger an |API| call to calculate taxes on a customer invoice automatically with AvaTax any of the
|
||||
following ways:
|
||||
Trigger an |API| call to calculate taxes on a customer invoice automatically with AvaTax in any of
|
||||
the following ways:
|
||||
|
||||
- **Manual trigger**
|
||||
Click on :guilabel:`Compute Taxes Using AvaTax`.
|
||||
@@ -351,21 +431,21 @@ Electronic documents
|
||||
Customer invoices
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
To process an electronic invoice for goods (NF-e), the invoice needs to be confirmed and taxes need
|
||||
to be computed by Avalara. Once that step is done, click on the :guilabel:`Send \& Print` button in
|
||||
the upper left corner, and a pop-up will appear. Then click on :guilabel:`Process e-invoice` and any
|
||||
of the other options - :guilabel:`Download` or :guilabel:`Email`. Finally, click on :guilabel:`Send
|
||||
\& Print` to process the invoice against the government.
|
||||
To process an electronic invoice for goods (NF-e) or services (NFS-e), the invoice needs to be
|
||||
confirmed and taxes need to be computed by Avalara. Once that step is done, click on the
|
||||
:guilabel:`Send & Print` button in the upper left corner. In the pop-up that appears, click on
|
||||
:guilabel:`Process e-invoice` and any of the other options - :guilabel:`Download` or
|
||||
:guilabel:`Email`. Finally, click on :guilabel:`Send & Print` to process the invoice with the
|
||||
government.
|
||||
|
||||
Before sending the electronic invoice for goods (NF-e) some fields need to be filled out on the
|
||||
invoice:
|
||||
Before sending the electronic invoice for goods (NF-e) or services (NFS-e), some fields need to be
|
||||
filled out on the invoice:
|
||||
|
||||
- :guilabel:`Customer` with all the customer information
|
||||
- :guilabel:`Payment Method: Brazil` (how the invoice is planned to be paid)
|
||||
- :guilabel:`Customer`, with all the customer information
|
||||
- :guilabel:`Payment Method: Brazil`: how the invoice is planned to be paid
|
||||
- :guilabel:`Fiscal Position` set as the :guilabel:`Automatic Tax Mapping (Avalara Brazil)`
|
||||
- :guilabel:`Document Type` set as :guilabel:`(55) Electronic Invoice (NF-e)`. This is the only
|
||||
electronic document supported at the moment. Non-electronic invoices can be registered, and other
|
||||
document types can be activated if needed
|
||||
- :guilabel:`Document Type` set as :guilabel:`(55) Electronic Invoice (NF-e)` or :guilabel:`(SE)
|
||||
Electronic Service Invoice (NFS-e)`
|
||||
|
||||
There are some other optional fields that depend on the nature of the transaction. These fields are
|
||||
not required, so no errors will appear from the government if these optional fields are not
|
||||
@@ -392,6 +472,9 @@ Credit notes
|
||||
If a sales return needs to be registered, then a credit note can be created in Odoo to be sent to
|
||||
the government for validation.
|
||||
|
||||
.. note::
|
||||
Credit notes are only available for electronic invoices for goods (NF-e).
|
||||
|
||||
.. seealso::
|
||||
:ref:`Issue a credit note <accounting/issue-credit-note>`
|
||||
|
||||
@@ -401,7 +484,9 @@ Debit Notes
|
||||
If additional information needs to be included, or values need to be corrected that were not
|
||||
accurately provided in the original invoice, a debit note can be issued.
|
||||
|
||||
.. important::
|
||||
.. note::
|
||||
Debit notes are only available for electronic invoices for goods (NF-e).
|
||||
|
||||
Only the products included in the original invoice can be part of the debit note. While changes
|
||||
can be made to the product's unit price or quantity, products **cannot** be added to the debit
|
||||
note. The purpose of this document is only to declare the amount that you want to add to the
|
||||
@@ -415,22 +500,37 @@ Invoice cancellation
|
||||
|
||||
It is possible to cancel an electronic invoice that was validated by the government.
|
||||
|
||||
.. important::
|
||||
.. note::
|
||||
Check whether the electronic invoice is still within the cancellation deadline, which may vary
|
||||
according to the legislation of each state.
|
||||
|
||||
This can be done in Odoo by clicking :guilabel:`Request Cancel` and adding a cancellation
|
||||
:guilabel:`Reason` on the pop-up that appears. If you want to send this cancellation reason to the
|
||||
customer via email, activate the :guilabel:`E-mail` checkbox.
|
||||
E-invoices for goods (NF-e)
|
||||
***************************
|
||||
|
||||
Cancel an e-invoice for goods (NF-e) in Odoo by clicking :guilabel:`Request Cancel` and adding a
|
||||
cancellation :guilabel:`Reason` on the pop-up that appears. If you want to send this cancellation
|
||||
reason to the customer via email, activate the :guilabel:`E-mail` checkbox.
|
||||
|
||||
.. image:: brazil/invoice-cancellation.png
|
||||
:alt: Invoice cancellation reason in Odoo.
|
||||
|
||||
.. note::
|
||||
This is an electronic cancellation, which means that Odoo will send a request to the government
|
||||
to cancel the NF-e, and it will then consume one |IAP| credit, as an |API| call occurs.
|
||||
|
||||
E-invoices for services (NFS-e)
|
||||
*******************************
|
||||
|
||||
Cancel an e-invoice for services (NFS-e) in Odoo by clicking :guilabel:`Request Cancel`. In this
|
||||
case, there is no electronic cancellation process, as not every city has this service available. The
|
||||
user needs to manually cancel this NFS-e on the city portal. Once that step is completed, they can
|
||||
request the cancellation in Odoo, which will cancel the invoice.
|
||||
|
||||
Correction letter
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
A correction letter can be created and linked to an electronic invoice that was validated by the
|
||||
government.
|
||||
A correction letter can be created and linked to an electronic invoice for goods (NF-e) that was
|
||||
validated by the government.
|
||||
|
||||
This can be done in Odoo by clicking :guilabel:`Correction Letter` and adding a correction
|
||||
:guilabel:`Reason` on the pop-up that appears. To send this correction reason to a customer via
|
||||
@@ -439,6 +539,9 @@ email, activate the :guilabel:`E-mail` checkbox.
|
||||
.. image:: brazil/correction-letter.png
|
||||
:alt: Correction letter reason in Odoo.
|
||||
|
||||
.. note::
|
||||
Correction letters are only available for electronic invoices for goods (NF-e).
|
||||
|
||||
Invalidate invoice number range
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -455,6 +558,10 @@ journal, and click the :menuselection:`⚙️ (gear) icon --> Invalidate Number
|
||||
.. image:: brazil/range-number-invalidation-wizard.png
|
||||
:alt: Number range invalidation wizard in Odoo.
|
||||
|
||||
.. note::
|
||||
Invalidate invoice number range documents are only available for electronic invoices for goods
|
||||
(NF-e).
|
||||
|
||||
.. note::
|
||||
The log of the canceled numbers along with the XML file are recorded in the chatter of the
|
||||
journal.
|
||||
@@ -468,8 +575,8 @@ is recorded on the :ref:`customer invoices <brazil/electronic-documents>`.
|
||||
|
||||
These Brazilian specific fields are:
|
||||
|
||||
- :guilabel:`Payment Method: Brazil` (how the invoice is planned to be paid).
|
||||
- :guilabel:`Document Type` used by your vendor.
|
||||
- :guilabel:`Document Number` (the invoice number from your supplier).
|
||||
- :guilabel:`Freight Model` (how goods are planned to be transported - domestic).
|
||||
- :guilabel:`Transporter Brazil` (who is doing the transportation).
|
||||
- :guilabel:`Payment Method: Brazil`: how the invoice is planned to be paid
|
||||
- :guilabel:`Document Type`: used by your vendor
|
||||
- :guilabel:`Document Number`: the invoice number from your supplier
|
||||
- :guilabel:`Freight Model`: **NF-e specific** how goods are planned to be transported - domestic
|
||||
- :guilabel:`Transporter Brazil`: **NF-e specific** who is doing the transportation.
|
||||
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 10 KiB |
@@ -2,8 +2,35 @@
|
||||
Hong Kong
|
||||
=========
|
||||
|
||||
Add FPS QR codes to invoices
|
||||
============================
|
||||
Configuration
|
||||
=============
|
||||
|
||||
:ref:`Install <general/install>` the following modules to get the latest features of the Hong Kong
|
||||
localization:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Name
|
||||
- Technical name
|
||||
- Description
|
||||
* - :guilabel:`Hong Kong - Accounting`
|
||||
- `l10n_hk`
|
||||
- The base module to manage chart of accounting and localization for Hong Kong.
|
||||
* - :guilabel:`Hong Kong - Payroll`
|
||||
- `l10n_hk_hr_payroll`
|
||||
- Enables :ref:`payroll <hong_kong/payroll>` specific localization features for Odoo *Payroll*
|
||||
app. This module also installs :guilabel:`Hong Kong - Payroll with Accounting` and
|
||||
:guilabel:`Documents - Hong Kong Payroll`.
|
||||
* - :guilabel:`Hong Kong - Payroll with Accounting`
|
||||
- `l10n_hk_hr_payroll_account`
|
||||
- Installs the link between Hong Kong payroll and accounting.
|
||||
* - :guilabel:`Documents - Hong Kong Payroll`
|
||||
- `documents_l10n_hk_hr_payroll`
|
||||
- Integrates employee ir56 forms in the Odoo *Documents* app.
|
||||
|
||||
FPS QR codes on invoices
|
||||
========================
|
||||
|
||||
:abbr:`FPS (Faster Payment System)` is a payment service platform that allows customers to make
|
||||
instant domestic payments to individuals and merchants in Hong Kong dollars or Renminbi via online
|
||||
@@ -12,23 +39,26 @@ and mobile banking.
|
||||
Activate QR codes
|
||||
-----------------
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Settings`. Under the :guilabel:`Customer
|
||||
Payments` section, activate the :guilabel:`QR Codes` feature.
|
||||
Go to :menuselection:`Accounting app --> Configuration --> Settings`. Under the :guilabel:`Customer
|
||||
Payments` section, tick the checkbox beside the :guilabel:`QR Codes` feature. Then, click
|
||||
:guilabel:`Save`.
|
||||
|
||||
FPS bank account configuration
|
||||
------------------------------
|
||||
|
||||
Go to :menuselection:`Contacts --> Configuration --> Bank Accounts` and select the bank account for
|
||||
which you want to activate FPS. Set the :guilabel:`Proxy Type` and fill in the :guilabel:`Proxy
|
||||
Value` field depending on the type you chose.
|
||||
Go to :menuselection:`Contacts app --> Configuration --> Bank Accounts section --> Bank Accounts`.
|
||||
Then select the bank account for FPS activation. Proceed to set the :guilabel:`Proxy Type` and fill
|
||||
in the :guilabel:`Proxy Value` field, depending on the type chosen.
|
||||
|
||||
.. important::
|
||||
- The account holder's country must be set to Hong Kong on its contact form.
|
||||
- You could also include the invoice number in the QR code by checking the :guilabel:`Include
|
||||
Reference` checkbox.
|
||||
Remember to include the invoice number in the QR code, by ticking the :guilabel:`Include Reference`
|
||||
checkbox.
|
||||
|
||||
.. image:: hong_kong/hk-fps-bank-setting.png
|
||||
:alt: FPS bank account configuration
|
||||
:align: center
|
||||
:alt: FPS bank account configuration.
|
||||
|
||||
.. important::
|
||||
The account holder's country **must** be set to `Hong Kong` on their contact form.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../accounting/bank`
|
||||
@@ -36,20 +66,475 @@ Value` field depending on the type you chose.
|
||||
Bank journal configuration
|
||||
--------------------------
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Journals`, open the bank journal, then fill
|
||||
out the :guilabel:`Account Number` and :guilabel:`Bank` under the :guilabel:`Journal Entries` tab.
|
||||
Go to :menuselection:`Accounting app --> Configuration --> Journals` and open the bank journal.
|
||||
Then, fill out the :guilabel:`Account Number` and :guilabel:`Bank` fields, located in the
|
||||
:guilabel:`Journal Entries` tab.
|
||||
|
||||
.. image:: hong_kong/hk-bank-account-journal-setting.png
|
||||
:alt: Bank Account's journal configuration
|
||||
:align: center
|
||||
:alt: Bank Account's journal configuration.
|
||||
|
||||
Issue invoices with FPS QR codes
|
||||
--------------------------------
|
||||
|
||||
When creating a new invoice, open the :guilabel:`Other Info` tab and set the :guilabel:`Payment
|
||||
QR-code` option to *EMV Merchant-Presented QR-code*.
|
||||
QR-code` option to :guilabel:`EMV Merchant-Presented QR-code`.
|
||||
|
||||
.. image:: hong_kong/hk-qr-code-invoice-setting.png
|
||||
:alt: Select EMV Merchant-Presented QR-code option
|
||||
:align: center
|
||||
:alt: Select EMV Merchant-Presented QR-code option.
|
||||
|
||||
Ensure that the :guilabel:`Recipient Bank` is the one you configured, as Odoo uses this field to
|
||||
generate the FPS QR code.
|
||||
Ensure that the :guilabel:`Recipient Bank` is configured, as Odoo uses this field to generate the
|
||||
FPS QR code.
|
||||
|
||||
.. _hong_kong/payroll:
|
||||
|
||||
Payroll
|
||||
=======
|
||||
|
||||
.. important::
|
||||
Ensure the :guilabel:`Hong Kong - Payroll` (`l10n_hk_hr_payroll`) module is installed before
|
||||
proceeding.
|
||||
|
||||
Create employees
|
||||
----------------
|
||||
|
||||
Go to the :menuselection:`Employees` app and click :guilabel:`New`. Then, configure the following
|
||||
fields:
|
||||
|
||||
- Under the :guilabel:`Work Information` tab
|
||||
|
||||
- :guilabel:`Working Hours`: :guilabel:`HK Standard 40 hours/week` option **must** be selected.
|
||||
|
||||
- Under the :guilabel:`Private Information` tab
|
||||
|
||||
- :guilabel:`Surname, Given Name, Name in Chinese`: name of the employee.
|
||||
- :guilabel:`Private Address`: address of the employee.
|
||||
- :guilabel:`Bank Account Number`: employee's bank account number.
|
||||
- :guilabel:`Current Rental`: employee's rental records (if rental allowance is applicable).
|
||||
- :guilabel:`Autopay Type`: :guilabel:`BBAN`, :guilabel:`SVID`, :guilabel:`EMAL`, etc.
|
||||
- :guilabel:`Autopay Reference`: autopay reference number.
|
||||
- :guilabel:`Identification No`: HKID of the employee.
|
||||
- :guilabel:`Gender`: gender of the employee.
|
||||
|
||||
.. important::
|
||||
For the :guilabel:`Bank Account Number`, this account should be set as :guilabel:`Trusted`
|
||||
before further processing.
|
||||
|
||||
To achieve this, click on the right-arrow button next to :guilabel:`Bank Account Number` field.
|
||||
Set the :guilabel:`Send Money` to :guilabel:`Trusted` by clicking on the toggle.
|
||||
|
||||
.. note::
|
||||
To populate the :guilabel:`Current Rental`, click on the :guilabel:`History` button.
|
||||
Then, click on :guilabel:`New`. Fill in the relevant details and save the rental record. Upon
|
||||
saving the record, the rental contract :guilabel:`state` will be visible (at the top-right
|
||||
corner) and can be set to :guilabel:`Running`.
|
||||
|
||||
- Under the :guilabel:`HR Settings` tab:
|
||||
|
||||
- :guilabel:`Volunteer Contribution Option`: select either :guilabel:`Only Mandatory
|
||||
Contribution`, :guilabel:`With Fixed %VC`, or :guilabel:`Cap 5% VC`.
|
||||
- :guilabel:`MPF Manulife Account`: account number, if applicable.
|
||||
|
||||
.. _hong_kong/manage_contracts:
|
||||
|
||||
Manage contracts
|
||||
----------------
|
||||
|
||||
Once the new employee has been created, click the :guilabel:`Contracts` smart button on the
|
||||
employee record, or navigate to :menuselection:`Employees app --> Employees --> Contracts`.
|
||||
|
||||
.. note::
|
||||
Only **one** contract can be active simultaneously per employee, but an employee can be assigned
|
||||
consecutive contracts during their employment.
|
||||
|
||||
The following are critical for setting up a contract:
|
||||
|
||||
- :guilabel:`Salary Structure Type`: set as :guilabel:`CAP57: Hong Kong Employee`.
|
||||
- :guilabel:`Contract Start Date`: start date of employment.
|
||||
- :guilabel:`Working Schedule`: set as :guilabel:`HK Standard 40 hours/week` (from employee record).
|
||||
- :guilabel:`Work Entry Source`: select either :guilabel:`Working Schedule`, :guilabel:`Attendances`
|
||||
or :guilabel:`Planning`. This field determines how the work entries are accounted for in the
|
||||
payslip.
|
||||
|
||||
- :guilabel:`Working Schedule`: the work entries are generated automatically based on the
|
||||
employee's working schedule.
|
||||
- :guilabel:`Attendances`: the work entries are generated based on the check-in/out period logged
|
||||
in the *Attendances*.
|
||||
- :guilabel:`Planning`: the work entries are generated from planning shifts only.
|
||||
|
||||
- Under the :guilabel:`Salary Information` tab
|
||||
|
||||
- :guilabel:`Wage Type`: select :guilabel:`Fixed Wage` for Full-time or Part-time employees, or
|
||||
:guilabel:`Hourly Wage` for employees who are paid hourly.
|
||||
- :guilabel:`Schedule Pay`: the frequency of payslip issuance.
|
||||
- :guilabel:`Wage`: :guilabel:`Monthly` or :guilabel:`Hourly` depending on the :guilabel:`Wage
|
||||
Type`.
|
||||
- :guilabel:`Internet Subscription`: this is an **optional** field to provide additional internet
|
||||
allowance on top of the current salary package.
|
||||
|
||||
.. important::
|
||||
Timesheets do **not** impact work entries in Odoo.
|
||||
|
||||
Once all information has been setup, set the contract status to :guilabel:`Running` by clicking the
|
||||
:guilabel:`Running` button in the top-right of the page.
|
||||
|
||||
.. image:: hong_kong/hk-contract.png
|
||||
:align: center
|
||||
:alt: Hong Kong employment contract.
|
||||
|
||||
.. _hong_kong/running_payslips:
|
||||
|
||||
Generate payslips
|
||||
-----------------
|
||||
|
||||
Once the employees, and their contracts, are configured, payslips can be generated in the *Payroll*
|
||||
app.
|
||||
|
||||
Odoo provides **four** different salary structures under CAP57 regulation:
|
||||
|
||||
#. :guilabel:`CAP57: Employees Monthly Pay`: to process the monthly employee salary.
|
||||
#. :guilabel:`CAP57: Payment in Lieu of Notice`: to process final payment upon contract termination
|
||||
using :abbr:`ADW (Average Daily Wage)`.
|
||||
#. :guilabel:`CAP57: Long Service Payment`: applicable to employees with more than five years of
|
||||
service upon contract termination.
|
||||
#. :guilabel:`CAP57: Severance Payment`: applicable to employees with more than two years of service
|
||||
upon contract termination.
|
||||
|
||||
Before running the payslips, the accounts used in the salary rule can be adjusted by navigating to
|
||||
:menuselection:`Payroll app --> Configuration --> Rules`.
|
||||
|
||||
.. image:: hong_kong/hk-salary-rules.png
|
||||
:align: center
|
||||
:alt: Hong Kong Salary Rules.
|
||||
|
||||
Odoo can create pay runs in two ways: via :ref:`batch <hong_kong/batch_payslips>` or
|
||||
:ref:`individual <hong_kong/individual_payslips>` payslips.
|
||||
|
||||
.. _hong_kong/batch_payslips:
|
||||
|
||||
Batch payslips
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
This method of payslip generation is used for recurring payments, since multiple employee payslips
|
||||
can be managed at once. Go to :menuselection:`Payroll app --> Payslips --> Batches`.
|
||||
|
||||
#. Click on :guilabel:`New`.
|
||||
#. Enter a :guilabel:`Batch Name` (e.g. `2024 - Jan`) and :guilabel:`Period` (e.g. `01/01/2024` -
|
||||
`01/31/2024`).
|
||||
#. Click on :guilabel:`Generate Payslips`.
|
||||
#. Choose which :guilabel:`Salary Structure` to use for this batch. The department filter allows the
|
||||
batch to only apply to a specific group of employees.
|
||||
#. Click on :guilabel:`Generate`.
|
||||
#. A :guilabel:`Payslips` smart button is created automatically.
|
||||
|
||||
Next, click :guilabel:`Create Draft Entry` to generate a draft journal entry found in the
|
||||
:guilabel:`Other Info` tab of each payslip. A :guilabel:`Confirmation` pop-up window appears asking
|
||||
:guilabel:`Are you sure you want to proceed?`. Click :guilabel:`Ok` to create the journal entries.
|
||||
|
||||
.. _hong_kong/individual_payslips:
|
||||
|
||||
Individual payslips
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Go to :menuselection:`Payroll app --> Payslips --> All Payslips`.
|
||||
|
||||
This method of payslip generation is commonly used to handle non-recurring payments (e.g.
|
||||
:guilabel:`CAP57: Payment in Lieu of Notice`, :guilabel:`CAP57: Long Service Payment` or
|
||||
:guilabel:`CAP57: Severance Payment`).
|
||||
|
||||
#. Click on :guilabel:`New`.
|
||||
#. Select an :guilabel:`Employee`. When selected, the :guilabel:`Contract` is filled out
|
||||
automatically.
|
||||
#. Add a pay :guilabel:`Period`.
|
||||
#. Select a salary :guilabel:`Structure` (e.g. :guilabel:`CAP57: Employees Monthly Pay`).
|
||||
#. The :guilabel:`Worked Days & Inputs` tab automatically compute the worked days/hours and time off
|
||||
leaves that are applicable.
|
||||
#. Additional payslip items can be added at this time (e.g. :guilabel:`Commissions`,
|
||||
:guilabel:`Deductions`) under the :guilabel:`Other Inputs` section.
|
||||
#. Click on :guilabel:`Compute Sheet` button to generate the payslip lines. This button updates
|
||||
the :guilabel:`Salary Computation` tab.
|
||||
|
||||
.. note::
|
||||
If the work entry for an employee was amended, click the :icon:`fa-cog` :guilabel:`(gear)` icon,
|
||||
then click :guilabel:`Recompute Whole Sheet` to refresh the payslip's :guilabel:`Worked Days &
|
||||
Inputs` tab.
|
||||
|
||||
The :guilabel:`Salary Computation` tab shows the detailed breakdown of the computation, based on
|
||||
the salary rules configured for each structure type.
|
||||
|
||||
#. :guilabel:`Rent Allowance`: amount derived from the employee's active rental record.
|
||||
#. :guilabel:`Basic Salary`: amount of base salary provided (after rent allowance deduction).
|
||||
#. :guilabel:`713 Gross`: net payable amount considering *Commission*, *Internet Allowance*,
|
||||
*Reimbursements*, *Back-pay*, *Deduction*, etc.
|
||||
#. :guilabel:`MPF Gross`: net payable amount from 713 gross after consideration of additional
|
||||
allowances, deductions, and end-of-year payment.
|
||||
#. :guilabel:`Employee Mandatory Contribution`: employee MPF Contribution.
|
||||
#. :guilabel:`Employer Mandatory Contribution`: employer MPF Contribution.
|
||||
#. :guilabel:`Gross`: net payable amount from MPF gross after consideration of MPF deductions.
|
||||
#. :guilabel:`Net Salary`: final payable amount to be paid to the employee.
|
||||
|
||||
.. important::
|
||||
There are no MPF contributions for the first month. Both employee and employer contribution
|
||||
starts on second month.
|
||||
|
||||
.. image:: hong_kong/hk-salary-computation.png
|
||||
:align: center
|
||||
:alt: Hong Kong Salary computation.
|
||||
|
||||
Under the :guilabel:`Other Inputs` section in :guilabel:`Worked Days & Inputs` tab, there are
|
||||
additional manual input types:
|
||||
|
||||
- :guilabel:`Back Pay`: additional salary payout can be included under this category.
|
||||
- :guilabel:`Commission`: the commission earned during the period can be manually entered here.
|
||||
- :guilabel:`Global Deduction`: a lump-sum deduction from the entire payslip.
|
||||
- :guilabel:`Global Reimbursement`: a lump-sum reimbursement to the entire payslip.
|
||||
- :guilabel:`Referral Fee`: the additional bonus offered for any form of business-related referral.
|
||||
- :guilabel:`Moving Daily Wage`: to override the :abbr:`ADW (Average Daily Wage)` value used for
|
||||
leaves computation.
|
||||
- :guilabel:`Skip Rent Allowance`: if set, the rental allowance is excluded from the current
|
||||
payslip.
|
||||
- :guilabel:`Custom Average Monthly Salary`: to override the average monthly salary used for
|
||||
end-of-year payment (rule is only applicable to payslips generated in December).
|
||||
- :guilabel:`Lieu of Notice Period (Months)`: only applicable to :guilabel:`CAP57: Payment in Lieu
|
||||
of Notice` salary structure. By default, the final payout is set as 1-month. Use the
|
||||
:guilabel:`Count` field under the :guilabel:`Other Inputs` section to set a different notice
|
||||
period duration.
|
||||
|
||||
Once the payslips are ready, click on :guilabel:`Compute Sheet`, followed by :guilabel:`Create Draft
|
||||
entry` to generate a draft journal entry found in the :guilabel:`Other Info` tab of the payslip.
|
||||
|
||||
Pay employees
|
||||
-------------
|
||||
|
||||
Once the draft journal entries have been posted, the company can now pay the employees. The user can
|
||||
choose between **two** different *payment methods*:
|
||||
|
||||
- From the employee's payslip (:menuselection:`Payroll app --> Payslips --> All Payslips`), once the
|
||||
payslip's journal entry has been posted, click :guilabel:`Register Payment`. The process is the
|
||||
same as :doc:`paying vendor bills <../accounting/payments>`. Select the desired bank journal and
|
||||
payment method, then later reconcile the payment with the corresponding bank statement.
|
||||
- For batch payments (:menuselection:`Payroll app --> Payslips --> Batches`), once all draft journal
|
||||
entries from the batch are confirmed, click :guilabel:`Mark as Paid` to post the payment journal
|
||||
entry. Then :doc:`create a payment <../accounting/payments>` in the *Accounting* app, and
|
||||
reconcile accordingly.
|
||||
|
||||
Attendances and hourly wage
|
||||
---------------------------
|
||||
|
||||
To configure the contract for an employee paid hourly using the *Attendances* app for hours
|
||||
tracking, navigate to :menuselection:`Payroll app --> Contracts --> Contracts`.
|
||||
Create a new :ref:`contract <hong_kong/manage_contracts>`. It is important to remember to set the
|
||||
:guilabel:`Work Entry Source` as :guilabel:`Attendances`, and :guilabel:`Wage Type` as
|
||||
:guilabel:`Hourly Wage`.
|
||||
|
||||
To record the hours logged by the employee using *Attendances* app:
|
||||
|
||||
#. Go to :menuselection:`Attendances app`.
|
||||
#. The employee can check-in/out, via the kiosk mode and the time will be logged automatically.
|
||||
#. In the :menuselection:`Payroll app`, review the attendance work entries generated from
|
||||
:menuselection:`Payroll app --> Work Entries --> Work Entries`.
|
||||
#. Next, generate the :ref:`payslips <hong_kong/running_payslips>` and process the payment.
|
||||
|
||||
.. image:: hong_kong/hk-attendance-work-entry.png
|
||||
:align: center
|
||||
:alt: Hong Kong Attendance Work Entry.
|
||||
|
||||
.. image:: hong_kong/hk-attendance-payslip.png
|
||||
:align: center
|
||||
:alt: Hong Kong Attendance Payslip.
|
||||
|
||||
Time Off with Payroll
|
||||
---------------------
|
||||
|
||||
The work entry types and time off types are fully integrated between the *Time Off* and
|
||||
*Payroll* apps. There are several default time off types and work entry types specific to
|
||||
Hong Kong which are installed automatically along with the *Hong Kong - Payroll* module.
|
||||
|
||||
Go to :menuselection:`Payroll app --> Configuration --> Work Entry Types` and click :guilabel:`New`.
|
||||
|
||||
There are two checkboxes to be considered when setting up the work entry type:
|
||||
|
||||
- :guilabel:`Use 713`: Include this leave type as part of 713 computation.
|
||||
- :guilabel:`Non-full pay`: 80% of the :abbr:`ADW (Average Daily Wage)`.
|
||||
|
||||
.. image:: hong_kong/hk-work-entry-type.png
|
||||
:align: center
|
||||
:alt: Hong Kong Work Entry Type.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Creating and configuring work entry types <payroll/work-entries>`
|
||||
|
||||
Understanding 713 Ordinance
|
||||
---------------------------
|
||||
|
||||
The *Hong Kong - Payroll* module is compliant with 713 Ordinance which relates to the
|
||||
:abbr:`ADW (Average Daily Wage)` computation to ensure fair compensation for employees.
|
||||
|
||||
The ADW computation is as follows:
|
||||
|
||||
.. figure:: hong_kong/hk-adw.png
|
||||
:alt: Hong Kong ADW Formula.
|
||||
|
||||
:abbr:`ADW (Average Daily Wage)` equals the total wage in a 12-month period, minus the wages of
|
||||
non-full pay, divided by the total days in a 12-month period minus the days of non-full pay.
|
||||
|
||||
.. note::
|
||||
For 418 compliance, there is no automated allocation of the *Statutory Holiday* entitlement to
|
||||
the employees. As soon as 418 requirements are met, manually allocate the leaves, via the *Time
|
||||
Off* app.
|
||||
|
||||
.. note::
|
||||
Before generating payslips, ensure the statuses are :guilabel:`Done` to validate the outcome.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Period
|
||||
- Days
|
||||
- Wage
|
||||
- Commission
|
||||
- Total
|
||||
- ADW
|
||||
- Leave Value
|
||||
* - Jan
|
||||
- 31
|
||||
- $20200
|
||||
- $0
|
||||
- $20200
|
||||
- $651.61 ($20200/31)
|
||||
- N/A
|
||||
* - Feb
|
||||
- 28
|
||||
- $20200
|
||||
- $5000
|
||||
- $25200
|
||||
- $769.49 ($45400/59)
|
||||
- N/A
|
||||
* - Mar (One Day Annual Leave)
|
||||
- 31
|
||||
- $20324.33
|
||||
- $0
|
||||
- $20324.33
|
||||
- $730.27 ($65724.33/90)
|
||||
- $769.49
|
||||
* - Apr (One Day 80% Sick Leave)
|
||||
- 30
|
||||
- $20117.56
|
||||
- $0
|
||||
-
|
||||
-
|
||||
- $584.22 ($730.27*0.8)
|
||||
|
||||
.. example::
|
||||
Here is an example demonstrating the 713 logic:
|
||||
|
||||
- **Jan**: Generate a payslip with a monthly wage of $20200. The :abbr:`ADW (Average Daily Wage)`
|
||||
is always computed on a cumulative basis of the trailing 12-months.
|
||||
- **Feb**: Generate a similar payslip, but add an :guilabel:`Other Input Type` for the
|
||||
:guilabel:`Commission`.
|
||||
- **Mar**: Apply for **one** full-paid annual leave in March. The salary compensation for the
|
||||
leave taken is based on :abbr:`ADW (Average Daily Wage)` thus far.
|
||||
|
||||
.. image:: hong_kong/hk-march-713.png
|
||||
:align: center
|
||||
:alt: Hong Kong March 713.
|
||||
|
||||
- **Apr**: Apply for a 1-day non-full pay leave in April. Since this is a non-full pay leave, the
|
||||
:abbr:`ADW (Average Daily Wage)` is computed accordingly.
|
||||
|
||||
.. image:: hong_kong/hk-apr-713.png
|
||||
:align: center
|
||||
:alt: Hong Kong April 713.
|
||||
|
||||
.. note::
|
||||
The value of :abbr:`ADW (Average Daily Wage)` is computed in the backend, and not be visible to
|
||||
the user.
|
||||
|
||||
.. seealso::
|
||||
- `HK 713 Ordinance <https://www.labour.gov.hk/eng/public/wcp/ConciseGuide/Appendix1.pdf>`_
|
||||
- `HK 418 Ordinance <https://www.workstem.com/hk/en/blog/418-regulations/>`_
|
||||
|
||||
Generate reports
|
||||
----------------
|
||||
|
||||
Before generating the below reports, setup the following in :menuselection:`Settings app -->
|
||||
Payroll`.
|
||||
|
||||
Configure the following in the :guilabel:`Accounting` section:
|
||||
|
||||
- Tick the :guilabel:`Payroll HSBC Autopay` checkbox.
|
||||
|
||||
- :guilabel:`Autopay Type`: Set as :guilabel:`H2H Submission`.
|
||||
- Select the :guilabel:`Bank Account` to use.
|
||||
|
||||
Configure the following in the :guilabel:`HK Localization` section:
|
||||
|
||||
- :guilabel:`Employer's Name shows on reports`
|
||||
- :guilabel:`Employer's File Number`
|
||||
- :guilabel:`Manulife MPF Scheme`
|
||||
|
||||
.. image:: hong_kong/hk-report-setup.png
|
||||
:align: center
|
||||
:alt: Hong Kong Payroll Settings.
|
||||
|
||||
IRD report
|
||||
~~~~~~~~~~
|
||||
|
||||
There are a total of **four** IRD reports available:
|
||||
|
||||
- :guilabel:`IR56B`: employer's Return of Remuneration and Pensions.
|
||||
- :guilabel:`IR56E`: notification of Commencement of Employment.
|
||||
- :guilabel:`IR56F`: notification of Ceasation of Employment (remaining in HK).
|
||||
- :guilabel:`IR56G`: notification of Ceasation of Employment (departing from HK permanently).
|
||||
|
||||
Go to :menuselection:`Payroll app --> Reporting`, and select one of the :guilabel:`IR56B/E/F/G
|
||||
Sheet` options:
|
||||
|
||||
#. Click on :guilabel:`New`.
|
||||
#. Fill in the relevant information for the IRD report.
|
||||
#. Click on :guilabel:`Populate`, and the :guilabel:`Eligible Employees` smart button appears.
|
||||
#. The :guilabel:`Employee Declarations` status is :guilabel:`Draft` and changed to
|
||||
:guilabel:`Generated PDF` status once the schedule runs.
|
||||
#. Once the PDF is generated, the IRD form may be downloaded.
|
||||
|
||||
.. image:: hong_kong/hk-ir56b.png
|
||||
:align: center
|
||||
:alt: Hong Kong IR56B report.
|
||||
|
||||
.. note::
|
||||
The scheduled action called *Payroll: Generate pdfs* can be manually triggered. It is set by
|
||||
default to run the PDF generation monthly.
|
||||
|
||||
Manulife MPF sheet
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Go to :menuselection:`Payroll app --> Reporting --> Manulife MPF Sheet`.
|
||||
|
||||
#. Click on :guilabel:`New`.
|
||||
#. Select the relevant :guilabel:`Year`, :guilabel:`Month`, and :guilabel:`Sequence No.`.
|
||||
#. Click on :guilabel:`Create XLSX`.
|
||||
#. The *Manulife MPF XLSX* file is then generated, and available for download.
|
||||
|
||||
.. image:: hong_kong/hk-manulife-sheet.png
|
||||
:align: center
|
||||
:alt: Hong Kong Manulife Sheet.
|
||||
|
||||
.. note::
|
||||
Odoo will not be developing further reports for other MPF trustee as there will soon be an
|
||||
eMPF platform setup by the local government.
|
||||
|
||||
.. seealso::
|
||||
`eMPF <https://www.mpfa.org.hk/en/empf/overview>`_
|
||||
|
||||
HSBC autopay report
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If *HSBC Autopay* is selected as the batch payment method, click on :guilabel:`Create HSBC Autopay
|
||||
Report`, and fill in the mandatory fields:
|
||||
|
||||
.. image:: hong_kong/hk-generate-autopay.png
|
||||
:align: center
|
||||
:alt: Hong Kong HSBC Autopay wizard.
|
||||
|
||||
This creates an :file:`.apc` file format which can be uploaded to the HSCB portal for processing.
|
||||
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 11 KiB |
@@ -108,6 +108,10 @@ The contract template forms the basis of an offer, and can be modified for speci
|
||||
employees, when necessary. If a contract template is created or modified in the *Payroll*
|
||||
application, the changes are also reflected in the *Recruitment* application.
|
||||
|
||||
.. important::
|
||||
To access contract templates, the *Salary Configurator* (`hr_contract_salary`) module **must** be
|
||||
:ref:`installed <general/install>`.
|
||||
|
||||
To view all the current contract templates in the database, navigate to :menuselection:`Payroll app
|
||||
--> Configuration --> Contracts: Templates`.
|
||||
|
||||
@@ -383,7 +387,7 @@ by typing in the time.
|
||||
`2:00 PM` would be entered as `14:00`.
|
||||
|
||||
If the working time should be in a two-week configuration, click the :guilabel:`Switch to 2 weeks
|
||||
calendar` button in the top left. This creates entries for an :guilabel:`Even week` and an
|
||||
calendar` button in the top-left. This creates entries for an :guilabel:`Even week` and an
|
||||
:guilabel:`Odd week`.
|
||||
|
||||
.. image:: payroll/new-working-schedule.png
|
||||
@@ -411,12 +415,13 @@ end of year bonus. Both the `Regular Pay` structure and `End of Year Bonus` stru
|
||||
within the `Employee` structure type.
|
||||
|
||||
The different :guilabel:`Structure Types` can be seen by navigating to :menuselection:`Payroll app
|
||||
--> Configuration --> Salary --> Structure Types`.
|
||||
--> Configuration --> Salary: Structure Types`.
|
||||
|
||||
There are two default structure types configured in Odoo: :guilabel:`Employee` and
|
||||
:guilabel:`Worker`. Typically, :guilabel:`Employee` is used for salaried employees, which is why the
|
||||
wage type is :guilabel:`Monthly Fixed Wage`, and :guilabel:`Worker` is typically used for employees
|
||||
paid by the hour, so the wage type is :guilabel:`Hourly Wage`.
|
||||
Two default structure types are configured in Odoo: :guilabel:`Employee` and :guilabel:`Worker`.
|
||||
|
||||
Typically, :guilabel:`Employee` is used for salaried employees, which is why the wage type is
|
||||
:guilabel:`Monthly Fixed Wage`, and :guilabel:`Worker` is typically used for employees paid by the
|
||||
hour, so the wage type is :guilabel:`Hourly Wage`.
|
||||
|
||||
.. image:: payroll/structure-type.png
|
||||
:align: center
|
||||
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 20 KiB |
BIN
content/applications/hr/recruitment/cv-display.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 19 KiB |
BIN
content/applications/hr/recruitment/status-dots.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
@@ -1,19 +1,21 @@
|
||||
=====================================
|
||||
Use lots to manage groups of products
|
||||
=====================================
|
||||
===========
|
||||
Lot numbers
|
||||
===========
|
||||
|
||||
*Lots* are one of the two ways to identify and track products in Odoo. A lot usually indicates a
|
||||
specific batch of an item that was received, is currently stored, or was shipped from a warehouse,
|
||||
but can also pertain to a batch of products manufactured in-house, as well.
|
||||
.. |PO| replace:: :abbr:`PO (Purchase Order)`
|
||||
.. |SO| replace:: :abbr:`SO (Sales Order)`
|
||||
.. |DO| replace:: :abbr:`DO (Delivery Order)`
|
||||
.. |list| replace:: :icon:`fa-list` :guilabel:`(list)`
|
||||
|
||||
Manufacturers assign lot numbers to groups of products that have common properties; this can lead to
|
||||
multiple goods sharing the same lot number. This helps to identify a number of products in a single
|
||||
group, and allows for end-to-end traceability of these products through each step in their
|
||||
lifecycles.
|
||||
*Lots* are one of the two ways to identify and track products in Odoo. They typically represent a
|
||||
specific batch of products that were received, stored, shipped, or manufactured in-house.
|
||||
|
||||
Lots are useful for products that are manufactured or received in large quantities (such as clothes
|
||||
or food), and can be used to trace a product back to a group. This is especially useful when
|
||||
managing product recalls or expiration dates.
|
||||
Manufacturers assign lot numbers to groups of products sharing common properties, facilitating
|
||||
end-to-end traceability through their lifecycles.
|
||||
|
||||
Lots are useful for managing large quantities of manufactured or received products, aiding in
|
||||
tracing items back to their group, particularly for product recalls or :doc:`expiration dates
|
||||
<expiration_dates>`.
|
||||
|
||||
.. seealso::
|
||||
:doc:`serial_numbers`
|
||||
@@ -21,236 +23,313 @@ managing product recalls or expiration dates.
|
||||
Enable lots & serial numbers
|
||||
============================
|
||||
|
||||
To track products using lots, the *Lots & Serial Numbers* feature must be enabled. Go to
|
||||
the :menuselection:`Inventory app --> Configuration --> Settings`, scroll down to the
|
||||
:guilabel:`Traceability` section, and click the box next to :guilabel:`Lots & Serial Numbers`. Then,
|
||||
click the :guilabel:`Save` button to save changes.
|
||||
To track products using lots, enable the *Lots & Serial Numbers* feature. Go to the
|
||||
:menuselection:`Inventory app --> Configuration --> Settings`, scroll down to the
|
||||
:guilabel:`Traceability` section, and tick the checkbox next to :guilabel:`Lots & Serial Numbers`.
|
||||
Then, click :guilabel:`Save`.
|
||||
|
||||
.. image:: lots/lots-enabled-lots-setting.png
|
||||
.. seealso::
|
||||
- :doc:`Tracking expiration dates <expiration_dates>`
|
||||
- :ref:`Print GS1 barcodes for lots and serial numbers <barcode/operations/gs1-lots>`
|
||||
|
||||
.. image:: lots/enabled-lots-setting.png
|
||||
:align: center
|
||||
:alt: Enabled lots and serial numbers feature in inventory settings.
|
||||
|
||||
.. _inventory/management/track_products_by_lots:
|
||||
|
||||
Track products by lots
|
||||
======================
|
||||
Track by lots
|
||||
=============
|
||||
|
||||
Once the :guilabel:`Lots & Serial Numbers` setting has been activated, individual products can now
|
||||
be configured to be tracked using lots. To do this, go to the :menuselection:`Inventory app -->
|
||||
Products --> Products`, and choose a product.
|
||||
Once the :guilabel:`Lots & Serial Numbers` feature is activated, configure individual products to be
|
||||
tracked using lots. To do this, go to :menuselection:`Inventory app --> Products --> Products`, and
|
||||
choose a product to configure.
|
||||
|
||||
Once on the product form, click :guilabel:`Edit` to make changes to the form. Then, click the
|
||||
:guilabel:`Inventory` tab. In the :guilabel:`Traceability` section, click :guilabel:`By Lots`. Then,
|
||||
click :guilabel:`Save` to save changes. Existing or new lot numbers can now be assigned to
|
||||
newly-received or manufactured batches of this product.
|
||||
On the product form, go to the :guilabel:`Inventory` tab. In the :guilabel:`Traceability` section,
|
||||
select the :guilabel:`By Lots` option in the :guilabel:`Tracking` field. Now, new or existing lot
|
||||
numbers can be assigned to newly-received or manufactured batches of this product.
|
||||
|
||||
.. seealso::
|
||||
:doc:`expiration_dates`
|
||||
|
||||
.. important::
|
||||
If a product has stock on-hand prior to activating tracking by lots or serial numbers, an
|
||||
inventory adjustment might need to be performed to assign lot numbers to the existing stock.
|
||||
If a product has stock on-hand prior to activating tracking by lots or serial numbers, a warning
|
||||
message appears. Use an :doc:`inventory adjustment <reassign>` to assign lot numbers to existing
|
||||
products in stock.
|
||||
|
||||
.. image:: lots/lots-tracking-product-form.png
|
||||
.. image:: lots/tracking-product-form.png
|
||||
:align: center
|
||||
:alt: Enabled tracking by lots feature on product form.
|
||||
|
||||
Create new lots for products already in stock
|
||||
---------------------------------------------
|
||||
Assign lots for shipping and receiving
|
||||
======================================
|
||||
|
||||
New lots can be created for products already in stock with no assigned lot number. To do this, go to
|
||||
the :menuselection:`Inventory app --> Products --> Lots/Serial Numbers`, and click
|
||||
:guilabel:`Create`. Doing so reveals a separate page where a new :guilabel:`Lot/Serial Number` is
|
||||
generated automatically.
|
||||
Assign new lot numbers to :ref:`incoming goods <inventory/product_management/assign-lots>` on the
|
||||
receipt form. When shipping :ref:`outgoing goods
|
||||
<inventory/product_management/assign-lots-delivery>`, select products with specific lot numbers on
|
||||
the delivery order form.
|
||||
|
||||
.. _inventory/product_management/assign-lots:
|
||||
|
||||
On receipts
|
||||
-----------
|
||||
|
||||
Assigning new or existing lot numbers to incoming goods can be done directly on receipts.
|
||||
|
||||
To begin, go to the :menuselection:`Purchase` app to `create and confirm
|
||||
<https://www.youtube.com/watch?v=o_uI718P1Dc>`_ a |PO| for products tracked by lot numbers. Then,
|
||||
click the :guilabel:`Receipt` smart button that appears at the top of the page to navigate to the
|
||||
warehouse receipt form.
|
||||
|
||||
.. note::
|
||||
Alternatively, navigate to an existing receipt by going to the :menuselection:`Inventory` app,
|
||||
clicking the :guilabel:`Receipts` Kanban card, and choosing the desired receipt.
|
||||
|
||||
.. important::
|
||||
Clicking :guilabel:`Validate` before assigning a lot number triggers an error, indicating that a
|
||||
lot number **must** be assigned before validating the receipt.
|
||||
|
||||
.. image:: lots/user-error.png
|
||||
:align: center
|
||||
:alt: Add lot/serial number user error popup.
|
||||
|
||||
On the receipt form, on the product line in the :guilabel:`Operations` tab, select the |list| icon
|
||||
to the right of the product that is tracked by lot numbers.
|
||||
|
||||
.. image:: lots/list-icon.png
|
||||
:align: center
|
||||
:alt: Show the bulleted list icon on the product line.
|
||||
|
||||
Doing so opens the :guilabel:`Open: Stock move` pop-up window, where the :guilabel:`Lot/Serial
|
||||
Number` and :guilabel:`Quantity` are assigned.
|
||||
|
||||
The two ways to assign lot numbers: **manually** and **importing**.
|
||||
|
||||
Manual assignment
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
To manually assign lot numbers, click :guilabel:`Add a line`. Input the :guilabel:`Lot/Serial
|
||||
Number`, :guilabel:`Store To` location for the lot, :guilabel:`Quantity`, and :guilabel:`Destination
|
||||
Package`, if any.
|
||||
|
||||
.. note::
|
||||
To assign multiple lot numbers, or store to multiple locations, click :guilabel:`Add a line`, and
|
||||
type a new :guilabel:`Lot/Serial Number` for additional quantities. Repeat until the total in the
|
||||
:guilabel:`Quantity` column matches the :guilabel:`Demand` at the top.
|
||||
|
||||
.. image:: lots/assign-lots-popup.png
|
||||
:align: center
|
||||
:alt: Assign lot number detailed operations popup.
|
||||
|
||||
Import lots
|
||||
~~~~~~~~~~~
|
||||
|
||||
In the :guilabel:`Open: Stock move` pop-up window, click :guilabel:`Import Serials/Lots`, then paste
|
||||
the bulk lot numbers, in the :guilabel:`Lots/Serial numbers` field.
|
||||
|
||||
.. figure:: lots/lots-excel-spreadsheet.png
|
||||
:align: center
|
||||
:alt: List of lot numbers copied on excel spreadsheet.
|
||||
|
||||
List of lot numbers copied on *Google* spreadsheets.
|
||||
|
||||
.. figure:: lots/bulk-sn.png
|
||||
:align: center
|
||||
:alt: Lot numbers copied to the lot number line.
|
||||
|
||||
Lot numbers pasted to the "Lots/Serial numbers" field, in the **Import Lots** pop-up window.
|
||||
|
||||
Tick the :guilabel:`Keep current lines` checkbox to generate *additional* lot numbers in the
|
||||
:guilabel:`Open: Stock move` pop-up window. To replace the lot numbers in the list, leave the
|
||||
:guilabel:`Keep current lines` option unticked.
|
||||
|
||||
Finally, click :guilabel:`Generate`.
|
||||
|
||||
Once all product quantities have been assigned a lot number, click :guilabel:`Save` to close the
|
||||
pop-up window. Then, click :guilabel:`Validate` on the receipt form.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Traceability report for lot numbers <inventory/product_management/lot-traceability>`
|
||||
|
||||
.. _inventory/product_management/assign-lots-delivery:
|
||||
|
||||
On delivery orders
|
||||
------------------
|
||||
|
||||
Odoo makes it possible to specify which lot numbers for a product are chosen for outgoing shipment
|
||||
on a delivery order form.
|
||||
|
||||
To begin, create or select an existing quotation from the :menuselection:`Sales` app. After
|
||||
confirming the |SO|, the :guilabel:`Delivery` smart button becomes available. Click the
|
||||
:guilabel:`Delivery` smart button to view the warehouse receipt form for that specific |SO|.
|
||||
|
||||
.. note::
|
||||
Alternatively, navigate to delivery orders by going to the :menuselection:`Inventory` app, and
|
||||
clicking the :guilabel:`Delivery Orders` kanban card.
|
||||
|
||||
Clicking the :guilabel:`Delivery` smart button opens the the delivery order form, where lot numbers
|
||||
are picked for delivery. In the :guilabel:`Operations` tab, click the |list| icon to the right of
|
||||
the product that is tracked by lot numbers. Clicking that icon reveals a :guilabel:`Open: Stock
|
||||
move` pop-up window.
|
||||
|
||||
In the pop-up window, the chosen lot number and its storage location is displayed in the
|
||||
:guilabel:`Pick From` column, with the with the full :guilabel:`Quantity` taken from that specific
|
||||
lot (if there is enough stock in that particular lot).
|
||||
|
||||
If there is insufficient stock in that lot, or if partial quantities of the :guilabel:`Demand`
|
||||
should be taken from multiple lots, change the :guilabel:`Quantity` directly.
|
||||
|
||||
.. note::
|
||||
The lot automatically chosen for delivery orders varies, depending on the selected removal
|
||||
strategy (:abbr:`FIFO (First In, First Out)`, :abbr:`LIFO (Last In, First Out)`, or :abbr:`FEFO
|
||||
(First Expiry, First Out)`). It also depends on the ordered quantity, and whether the lot's
|
||||
on-hand quantity is enough to fulfill the order.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../warehouses_storage/removal_strategies`
|
||||
|
||||
Repeat the above steps to select enough lots to fulfill the :guilabel:`Demand`, and click
|
||||
:guilabel:`Save` to close the pop-up window. Lastly, click the :guilabel:`Validate` button on the
|
||||
|DO| to deliver the products.
|
||||
|
||||
.. image:: lots/pick-from-lots.png
|
||||
:align: center
|
||||
:alt: Popup for source lot number on sales order.
|
||||
|
||||
.. seealso::
|
||||
:ref:`Traceability report for lot numbers <inventory/product_management/lot-traceability>`
|
||||
|
||||
Lot management
|
||||
==============
|
||||
|
||||
Manage and view existing lot numbers for products in the :guilabel:`Lot/Serial Numbers` dashboard by
|
||||
going to :menuselection:`Inventory app --> Products --> Lots/Serial Numbers`.
|
||||
|
||||
By default, lot numbers are grouped by product, and selecting the drop-down menu for each product
|
||||
displays the existing lot numbers. Select a lot number to :ref:`modify or add details
|
||||
<inventory/product_management/edit-lot>` linked to the lot. Lot numbers can also be :ref:`created
|
||||
<inventory/product_management/create-new-lot>` from this page, by clicking the :guilabel:`New`
|
||||
button.
|
||||
|
||||
.. figure:: lots/lot-dashboard.png
|
||||
:align: center
|
||||
:alt: Show the "Lot/Serial Number" dashboard.
|
||||
|
||||
Display lot numbers, grouped by products, on the **Lot/Serial Number** dashboard.
|
||||
|
||||
.. _inventory/product_management/edit-lot:
|
||||
|
||||
Modify lot
|
||||
----------
|
||||
|
||||
Clicking a lot from the :guilabel:`Lot/Serial Number` dashboard reveals a separate page where
|
||||
additional information can be provided about the lot.
|
||||
|
||||
.. tip::
|
||||
Odoo automatically generates a new :guilabel:`Lot/Serial Number` to follow the most recent
|
||||
number. However, it can be edited, by clicking the line under the :guilabel:`Lot/Serial Number`
|
||||
field, and changing the generated number to any desired one.
|
||||
|
||||
On the lot number form, the following fields can be modified:
|
||||
|
||||
- :guilabel:`Lot/Serial Number`: change the lot number linked to the :guilabel:`Product`
|
||||
- :guilabel:`Internal Reference`: records an alternative lot/serial number used within the warehouse
|
||||
that differs from the one used by the supplier manufacturer.
|
||||
- :guilabel:`Company`: specify the company where the lot number is available.
|
||||
- :guilabel:`Description`: add extra details about the lot or serial number in this text field.
|
||||
|
||||
.. important::
|
||||
On existing lots, the :guilabel:`Product` and :guilabel:`On Hand Quantity` fields **cannot** be
|
||||
modified, as the lot numbers are linked with existing stock moves.
|
||||
|
||||
.. image:: lots/lot-number.png
|
||||
:align: center
|
||||
:alt: Show the lot number form.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Set expiration dates for lots <expiration_dates>`
|
||||
|
||||
Add property
|
||||
~~~~~~~~~~~~
|
||||
|
||||
To add custom fields to lots for enhanced traceability, there are two methods of adding properties
|
||||
on a lot number form:
|
||||
|
||||
#. Click the :icon:`fa-cog` :guilabel:`(cog)` icon at the top-left of the page, then select
|
||||
:icon:`fa-cogs` :guilabel:`Add Properties` from the drop-down menu.
|
||||
#. Click the :icon:`fa-plus` :guilabel:`Add a Property` button, located below the existing fields.
|
||||
|
||||
Name and :doc:`configure the new field <../../../../productivity/knowledge/properties>`. Once
|
||||
finished, enter the property value in the new field.
|
||||
|
||||
.. example::
|
||||
The new property, `Wood type`, is added. The value is recorded as `Cherry wood`.
|
||||
|
||||
.. image:: lots/add-properties.png
|
||||
:align: center
|
||||
:alt: Show the "Add Properties" button on a lot number form.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Configuring custom properties <../../../../productivity/knowledge/properties>`
|
||||
|
||||
.. _inventory/product_management/create-new-lot:
|
||||
|
||||
Reserve lot number for a product
|
||||
--------------------------------
|
||||
|
||||
To create a lot number for a product, begin by going to :menuselection:`Inventory app --> Products
|
||||
--> Lot/Serial Numbers`, and click :guilabel:`New`.
|
||||
|
||||
.. important::
|
||||
Creating a lot number reserves it for a product but **does not** assign it. To assign lot
|
||||
numbers, refer to the section on :ref:`assigning lot numbers on receipts
|
||||
<inventory/product_management/assign-lots>`.
|
||||
|
||||
.. tip::
|
||||
While Odoo automatically generates a new :guilabel:`Lot/Serial Number` to follow the most recent
|
||||
number, it can be edited and changed to any desired number, by clicking the line under the
|
||||
:guilabel:`Lot/Serial Number` field, and changing the generated number.
|
||||
:guilabel:`Lot/Serial Number` field on the lot form, and changing the generated number.
|
||||
|
||||
Once the new :guilabel:`Lot/Serial Number` is generated, click the blank field next to
|
||||
:guilabel:`Product` to reveal a drop-down menu. From this menu, select the product to which this new
|
||||
number will be assigned.
|
||||
|
||||
This form also provides the option to adjust the :guilabel:`Quantity`, assign a unique
|
||||
:guilabel:`Internal Reference` number (for traceability purposes), and assign this specific lot or
|
||||
serial number configuration to a specific website in the :guilabel:`Website` field (if working in a
|
||||
multi-website environment).
|
||||
.. example::
|
||||
The lot number, `000001`, is created for the product, `Drawer Black`.
|
||||
|
||||
A detailed description of this specific lot or serial number can also be added in the
|
||||
:guilabel:`Description` tab below.
|
||||
|
||||
When all desired configurations are complete, click the :guilabel:`Save` button to save all changes.
|
||||
|
||||
.. image:: lots/lots-new-lot-number.png
|
||||
:align: center
|
||||
:alt: New lot number creation form with assigned product.
|
||||
|
||||
After a new lot number has been created, saved, and assigned to the desired product, navigate back
|
||||
to the product form in the :menuselection:`Inventory` app, by going to :menuselection:`Products -->
|
||||
Products`, and selecting the product to which this newly-created lot number was just assigned.
|
||||
|
||||
On that product's detail form, click the :guilabel:`Lot/Serial Numbers` smart button to view the new
|
||||
lot number. When additional quantity of this product is received or manufactured, this new lot
|
||||
number can be selected and assigned to it.
|
||||
|
||||
Manage lots for shipping and receiving
|
||||
======================================
|
||||
|
||||
Lot numbers can be assigned for both **incoming** and **outgoing** goods. For incoming goods, lot
|
||||
numbers are assigned directly on the purchase order form. For outgoing goods, lot numbers are
|
||||
assigned directly on the sales order form.
|
||||
|
||||
.. _inventory/product_management/receipt-lots:
|
||||
|
||||
Manage lots on receipts
|
||||
-----------------------
|
||||
|
||||
Assigning lot numbers to **incoming** goods can be done directly from the purchase order (PO).
|
||||
|
||||
To create a :abbr:`PO (purchase order)`, go to :menuselection:`Purchase app --> Create`. Doing so
|
||||
reveals a new, blank request for quotation (RFQ) form.
|
||||
|
||||
On this :abbr:`RFQ (request for quotation)`, fill out the necessary information by adding a
|
||||
:guilabel:`Vendor`, and adding the desired products to the :guilabel:`Product` lines, by clicking
|
||||
:guilabel:`Add a product` (under the :guilabel:`Products` tab).
|
||||
|
||||
Choose the desired quantity of the product to order by changing the number in the
|
||||
:guilabel:`Quantity` column.
|
||||
|
||||
Once the :abbr:`RFQ (request for quotation)` has been filled out, click :guilabel:`Confirm Order`.
|
||||
When the :abbr:`RFQ (request for quotation)` is confirmed, it becomes a :guilabel:`Purchase Order`,
|
||||
and a :guilabel:`Receipt` smart button appears. Click the :guilabel:`Receipt` smart button to be
|
||||
taken to the warehouse receipt form.
|
||||
|
||||
.. note::
|
||||
Clicking :guilabel:`Validate` before assigning a lot number to the ordered product quantities
|
||||
will result in a :guilabel:`User Error` pop-up. The pop-up requires entry of a lot or serial
|
||||
number for the ordered products. The :abbr:`RFQ (request for quotation)` **cannot** be validated
|
||||
without a lot number being assigned.
|
||||
|
||||
.. image:: lots/lots-user-error-popup.png
|
||||
:align: center
|
||||
:alt: Add lot/serial number user error popup.
|
||||
|
||||
From here, click the :guilabel:`Additional Options` menu, represented by a :guilabel:`hamburger
|
||||
(four horizontal lines)` icon, located to the right of the :guilabel:`Unit of Measure` column in the
|
||||
:guilabel:`Operations` tab). Clicking that icon reveals a :guilabel:`Detailed Operations` pop-up.
|
||||
|
||||
In this pop-up, configure a number of different fields, including the assignation of a lot number,
|
||||
under the :guilabel:`Lot/Serial Number Name` column, located at the bottom of the pop-up.
|
||||
|
||||
There are two ways to assign lot numbers: **manually** and **copy/paste**.
|
||||
|
||||
- **Manually assign lot numbers**: Click :guilabel:`Add a line` and choose the location the products
|
||||
will be stored in under the :guilabel:`To` column. Then, type a new :guilabel:`Lot Number Name`
|
||||
and set the :guilabel:`Done` quantity.
|
||||
|
||||
.. image:: lots/lots-assign-lot-number-popup.png
|
||||
.. image:: lots/new-lot-number.png
|
||||
:align: center
|
||||
:alt: Assign lot number detailed operations popup.
|
||||
:alt: New lot number creation form with assigned product.
|
||||
|
||||
.. note::
|
||||
If quantities should be processed in multiple locations and lots, click :guilabel:`Add a line`
|
||||
and type a new :guilabel:`Lot Number Name` for additional quantities. Repeat until the
|
||||
:guilabel:`Quantity Done` matches the :guilabel:`Demand`.
|
||||
After a new lot number has been created, saved, and assigned to the desired product, the lot number
|
||||
is saved as an existing lot number linked to the product, and can be selected when :ref:`assigning
|
||||
lot numbers to products on a receipt <inventory/product_management/assign-lots>`, or when making an
|
||||
inventory adjustment.
|
||||
|
||||
- **Copy/paste lot numbers from a spreadsheet**: Populate a spreadsheet with all of the lot numbers
|
||||
received from the supplier (or manually chosen to assign upon receipt). Then, copy and paste them
|
||||
in the :guilabel:`Lot/Serial Number Name` column. Odoo will automatically create the necessary
|
||||
number of lines based on the amount of numbers pasted in the column. From here, the :guilabel:`To`
|
||||
locations and :guilabel:`Done` quantities can be manually entered in each of the lot number lines.
|
||||
.. example::
|
||||
After creating the lot number, `000001` appears as an option for `Drawer Black` when assigning
|
||||
lot numbers on the :guilabel:`Inventory Adjustment` page.
|
||||
|
||||
.. image:: lots/lots-excel-spreadsheet.png
|
||||
.. image:: lots/inventory-adjustment.png
|
||||
:align: center
|
||||
:alt: List of lot numbers copied on excel spreadsheet.
|
||||
|
||||
Once all product quantities have been assigned a lot number, click :guilabel:`Confirm` to close the
|
||||
pop-up. Then, click :guilabel:`Validate`.
|
||||
|
||||
A :guilabel:`Traceability` smart button appears upon validating the receipt. Click the
|
||||
:guilabel:`Traceability` smart button to see the updated :guilabel:`Traceability Report`, which
|
||||
includes: a :guilabel:`Reference` document, the :guilabel:`Product` being traced, the
|
||||
:guilabel:`Lot/Serial #` assigned, and more.
|
||||
|
||||
Manage lots on delivery orders
|
||||
------------------------------
|
||||
|
||||
Assigning lot numbers to **outgoing** goods can be done directly from the sales order (SO).
|
||||
|
||||
To create an :abbr:`SO (sales order)`, go to the :menuselection:`Sales app --> Create`. Doing so
|
||||
reveals a new, blank quotation form.
|
||||
|
||||
On this blank quotation form, fill out the necessary information by adding a :guilabel:`Customer`,
|
||||
and adding products to the :guilabel:`Product` lines (in the :guilabel:`Order Lines` tab) by
|
||||
clicking :guilabel:`Add a product`.
|
||||
|
||||
Then, choose the desired quantity to sell by changing the number in the :guilabel:`Quantity` column.
|
||||
|
||||
Once the quotation has been filled out, click the :guilabel:`Confirm` button to confirm the
|
||||
quotation. When the quotation is confirmed, it becomes an :abbr:`SO (sales order)`, and a
|
||||
:guilabel:`Delivery` smart button appears.
|
||||
|
||||
Click the :guilabel:`Delivery` smart button to view the warehouse receipt form for that specific
|
||||
:abbr:`SO (sales order)`.
|
||||
|
||||
From here, click the :guilabel:`Additional Options` menu, represented by a `hamburger` icon (four
|
||||
horizontal lines, located to the right of the :guilabel:`Unit of Measure` column in the
|
||||
:guilabel:`Operations` tab). Clicking that icon reveals a :guilabel:`Detailed Operations` pop-up.
|
||||
|
||||
In the pop-up, a :guilabel:`Lot/Serial Number` will be chosen by default, with the full
|
||||
:guilabel:`Reserved` quantity taken from that specific lot (if there is enough stock in that
|
||||
particular lot).
|
||||
|
||||
If there is insufficient stock in that lot, or if partial quantities of the :guilabel:`Demand`
|
||||
should be taken from multiple lots, change the quantity in the :guilabel:`Done` column to only
|
||||
include that specific part of the total quantity.
|
||||
|
||||
.. note::
|
||||
The lot automatically chosen for delivery orders varies, depending on the selected removal
|
||||
strategy (:abbr:`FIFO (First In, First Out)`, :abbr:`LIFO (Last In, First Out)`, or :abbr:`FEFO
|
||||
(First Expiry, First Out)`). It will also depend on the quantity ordered, and if there is enough
|
||||
quantity in one lot to fulfill the order.
|
||||
|
||||
.. seealso::
|
||||
:doc:`/applications/inventory_and_mrp/inventory/warehouses_storage/removal_strategies`
|
||||
|
||||
Then, click :guilabel:`Add a line`, select an additional (different) :guilabel:`Lot/Serial Number`,
|
||||
apply the rest of the :guilabel:`Done` quantities, and click :guilabel:`Confirm` to close the
|
||||
pop-up. Lastly, click the :guilabel:`Validate` button to deliver the products.
|
||||
|
||||
.. image:: lots/lots-detailed-operations-popup.png
|
||||
:align: center
|
||||
:alt: Detailed operations popup for source lot number on sales order.
|
||||
|
||||
Upon validating the delivery order, a :guilabel:`Traceability` smart button appears. Click the
|
||||
:guilabel:`Traceability` smart button to see the updated :guilabel:`Traceability Report`, which
|
||||
includes a :guilabel:`Reference` document, the :guilabel:`Product` being traced, the
|
||||
:guilabel:`Date`, and the :guilabel:`Lot/Serial #` assigned.
|
||||
|
||||
The :guilabel:`Traceability Report` can also include a :guilabel:`Reference` receipt from the
|
||||
previous purchase order, if the product quantities shared the same lot number.
|
||||
:alt: Show how to assign lot numbers on the Inventory Adjustment page.
|
||||
|
||||
Manage lots for different operations types
|
||||
==========================================
|
||||
|
||||
In Odoo, the creation of new lots is only allowed upon **receiving** products from a purchase order,
|
||||
by default. **Existing** lot numbers cannot be used.
|
||||
|
||||
For sales orders, the opposite is true: new lot numbers cannot be created on the delivery order,
|
||||
only existing lot numbers can be used.
|
||||
By default, new lots can only be created when receiving products, and existing lot numbers cannot
|
||||
be used. For sales orders, only existing lot numbers can be utilized, and new ones cannot be created
|
||||
on the delivery order.
|
||||
|
||||
To change the ability to use new (or existing) lot numbers on any operation type, go to the
|
||||
:menuselection:`Inventory app --> Configuration --> Operations Types`, and select the desired
|
||||
:guilabel:`Operation Type`.
|
||||
operation type.
|
||||
|
||||
For :guilabel:`Receipts`, found on the :menuselection:`Operations Types` page, the :guilabel:`Use
|
||||
Existing Lots/Serial Numbers` option can be enabled, by clicking :guilabel:`Edit`, and then clicking
|
||||
the checkbox beside the :guilabel:`Use Existing Lots/Serial Numbers` option (in the
|
||||
:guilabel:`Traceability` section). Lastly, click the :guilabel:`Save` button to save the changes.
|
||||
On the operation type form, under the :guilabel:`Lots/Serial Numbers` section, tick the
|
||||
:guilabel:`Create New` checkbox to enable new lot numbers to be created during this operation type.
|
||||
Choose :guilabel:`Use Existing ones` if only existing lot numbers can be selected.
|
||||
|
||||
For :guilabel:`Delivery Orders`, the :guilabel:`Create New Lots/Serial Numbers` option can be
|
||||
enabled, by clicking :guilabel:`Edit`, and clicking the checkbox beside the :guilabel:`Create New
|
||||
Lots/Serial Numbers` option. Be sure to click the :guilabel:`Save` button to save all changes.
|
||||
|
||||
.. image:: lots/lots-operations-type-form.png
|
||||
.. image:: lots/operation-type-form.png
|
||||
:align: center
|
||||
:alt: Enabled traceability setting on operations type form.
|
||||
|
||||
@@ -258,11 +337,13 @@ Lots/Serial Numbers` option. Be sure to click the :guilabel:`Save` button to sav
|
||||
For inter-warehouse transfers involving products tracked by lots, it can be useful to enable the
|
||||
:guilabel:`Use Existing Lots/Serial Numbers` option for warehouse receipts.
|
||||
|
||||
Lots traceability
|
||||
=================
|
||||
.. _inventory/product_management/lot-traceability:
|
||||
|
||||
Traceability
|
||||
============
|
||||
|
||||
Manufacturers and companies can refer to traceability reports to see the entire lifecycle of a
|
||||
product: where (and when) it came from, where it was stored, and who (and when) it went to.
|
||||
product: where it came from, when it arrived, where it was stored, who it went to (and when).
|
||||
|
||||
To see the full traceability of a product, or group by lots, go to the :menuselection:`Inventory app
|
||||
--> Products --> Lots/Serial Numbers`. Doing so reveals the :menuselection:`Lots/Serial Numbers`
|
||||
@@ -271,16 +352,29 @@ dashboard.
|
||||
From here, products with lot numbers assigned to them will be listed by default, and can be expanded
|
||||
to show the lot numbers those products have assigned to them.
|
||||
|
||||
To group by lots (or serial numbers), begin by removing any filters in the search bar. Then, click
|
||||
the :guilabel:`Group By` drop-down, select :guilabel:`Add Custom Group`, and select
|
||||
:guilabel:`Lot/Serial Number` from the drop-down menu. Then, click :guilabel:`Apply`.
|
||||
To group by lots, begin by removing any filters in the :guilabel:`Search...` bar. Then, click the
|
||||
:icon:`fa-caret-down` :guilabel:`(caret down)` icon to open a drop-down menu of :guilabel:`Filters`,
|
||||
:guilabel:`Group By` options, and :guilabel:`Favorites`. Under the :guilabel:`Group By` section,
|
||||
click the :guilabel:`Add Custom Group` option, and select :guilabel:`Lot/Serial Number` from the
|
||||
drop-down menu.
|
||||
|
||||
Doing so displays all existing lots and serial numbers, and can be expanded to show all quantities
|
||||
of products with that assigned number.
|
||||
Doing so reorganizes all the records on the page to display all existing lots and serial numbers,
|
||||
and can be expanded to show all quantities of products with that assigned number.
|
||||
|
||||
.. image:: lots/lots-traceability-report.png
|
||||
.. image:: lots/group-by-number.png
|
||||
:align: center
|
||||
:alt: Lots and serial numbers traceability report.
|
||||
|
||||
Traceability report
|
||||
-------------------
|
||||
|
||||
To view a full stock moves report for a lot number, select the lot number line from the
|
||||
:guilabel:`Lots/Serial Number` dashboard. On the lot number form, click the :guilabel:`Traceability`
|
||||
smart button.
|
||||
|
||||
.. image:: lots/traceability-report.png
|
||||
:align: center
|
||||
:alt: Show the Traceability Report for a lot, that displays the stock moves.
|
||||
|
||||
.. seealso::
|
||||
:doc:`differences`
|
||||
|
||||
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
@@ -120,7 +120,7 @@ Lots` options.
|
||||
|
||||
After enabling the features, assign lot or serial numbers to products using an :doc:`inventory
|
||||
adjustment <inventory_management/count_products>` or during :ref:`product reception
|
||||
<inventory/product_management/receipt-lots>`.
|
||||
<inventory/product_management/assign-lots>`.
|
||||
|
||||
Locations and routes
|
||||
--------------------
|
||||
|
||||
@@ -8,3 +8,4 @@ Advanced
|
||||
:titlesonly:
|
||||
|
||||
advanced/analyze
|
||||
advanced/vendor_costs_report
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
===================
|
||||
Vendor costs report
|
||||
===================
|
||||
|
||||
.. |RFQ| replace:: :abbr:`RfQ (Request for Quotation)`
|
||||
.. |RFQs| replace:: :abbr:`RfQs (Requests for Quotation)`
|
||||
.. |POs| replace:: :abbr:`POs (Purchase Orders)`
|
||||
.. |caret| replace:: :icon:`fa-caret-down` :guilabel:`(down)` icon
|
||||
|
||||
With the *Purchase* application, users can track the fluctuation of vendor costs over time. This
|
||||
allows users to identify the most expensive vendors, and track seasonal changes.
|
||||
|
||||
Create vendor costs reports
|
||||
===========================
|
||||
|
||||
To create a vendor costs report, first navigate to :menuselection:`Purchase app --> Reporting -->
|
||||
Purchase` to open the :guilabel:`Purchase Analysis` dashboard. By default, the dashboard displays a
|
||||
line chart overview of the :guilabel:`Untaxed Total` of POs (Purchase Orders) with a
|
||||
:guilabel:`Confirmation Date` for the current month, or of RFQs (Requests for Quotation) with a
|
||||
status of *Draft*, *Sent, or *Cancelled*.
|
||||
|
||||
Add filters and groups
|
||||
----------------------
|
||||
|
||||
On the top-right, click the :icon:`oi-view-pivot` :guilabel:`(pivot)` icon to switch to pivot view.
|
||||
|
||||
Remove any default filters from the :guilabel:`Search...` bar. Then, click the |caret| to open the
|
||||
drop-down menu that contains the :guilabel:`Filters`, :guilabel:`Group By`, and
|
||||
:guilabel:`Favorites` columns.
|
||||
|
||||
.. note::
|
||||
Unless otherwise specified, the report displays data from both |RFQs| and |POs|. This can be
|
||||
changed by selecting either :guilabel:`Requests for Quotation` or :guilabel:`Purchase Orders`
|
||||
under the :guilabel:`Filters` column.
|
||||
|
||||
Under the :guilabel:`Filters` column, select a date range to use for comparison. The report can be
|
||||
filtered by either :guilabel:`Order Date` or :guilabel:`Confirmation Date`. Choose one from the
|
||||
list, and click the |caret| to specify the date range, either by month, quarter, or year.
|
||||
|
||||
Next, under the :guilabel:`Group by` column, select :guilabel:`Vendor`. Then, select
|
||||
:guilabel:`Product`, which is also located in the :guilabel:`Group By` column.
|
||||
|
||||
.. note::
|
||||
Selecting :guilabel:`Product` is **not** required for this report. However, it is recommended, as
|
||||
it provides additional insight into the performance of individual vendors. Additional selections
|
||||
can be made under the :guilabel:`Group by` heading as well, including :guilabel:`Product
|
||||
Category`, :guilabel:`Status`, and :guilabel:`Purchase Representative`.
|
||||
|
||||
To ensure the report is generated correctly, make sure that :guilabel:`Vendor` is the **first**
|
||||
selection made under the :guilabel:`Group By` column.
|
||||
|
||||
Next, make a selection under the :guilabel:`Comparison` heading. These options are only available
|
||||
after the date range is selected under the :guilabel:`Filters` column, and vary based on that range.
|
||||
:guilabel:`Previous Period` adds a comparison to the previous period, such as the last month or
|
||||
quarter. :guilabel:`Previous Year` compares the same time period from the previous year.
|
||||
|
||||
.. note::
|
||||
While multiple time-based filters can be added at once, only one comparison can be selected at a
|
||||
time.
|
||||
|
||||
.. image:: vendor_costs_report/filters-groups.png
|
||||
:align: center
|
||||
:alt: The drop-down menu of filters, group by and comparison options for the vendor costs report.
|
||||
|
||||
Add measures
|
||||
------------
|
||||
|
||||
After selecting the :guilabel:`Filters`, :guilabel:`Group by`, and :guilabel:`Comparison` settings,
|
||||
click out of the drop-down menu.
|
||||
|
||||
By default, the report displays with the following measures: :guilabel:`Order`, :guilabel:`Total`,
|
||||
:guilabel:`Untaxed Total`, and :guilabel:`Count`. Click :guilabel:`Measures` at the top-left to open
|
||||
the drop-down list of available measures. Click :guilabel:`Average Cost` to add it to the report.
|
||||
Select any additional measures to add to the report, or click on any of the already selected
|
||||
measures to remove them, if desired.
|
||||
|
||||
.. tip::
|
||||
It is recommended to run the report with at least :guilabel:`Average Cost`, :guilabel:`Total`, or
|
||||
:guilabel:`Untaxed Total` selected from the :guilabel:`Measures` list. Additional measures, such
|
||||
as :guilabel:`Days to Receive`, can be added to provide additional insights.
|
||||
|
||||
View results
|
||||
============
|
||||
|
||||
The vendor costs report is displayed in the *pivot* view, by default. Click :guilabel:`Insert in
|
||||
Spreadsheet` to add the pivot view into an editable spreadsheet format within the *Documents* app.
|
||||
|
||||
.. important::
|
||||
The :guilabel:`Insert in Spreadsheet` option is only available if the *Documents Spreadsheet*
|
||||
module is installed.
|
||||
|
||||
.. image:: vendor_costs_report/sample-vendor-report.png
|
||||
:align: center
|
||||
:alt: A sample of a vendor costs report with the measures set as total and average costs.
|
||||
|
||||
.. note::
|
||||
The vendor costs report is also available in *graph* view. Click the :icon:`fa-area-chart`
|
||||
:guilabel:`(area chart)` icon to change to graph view. Click the corresponding icon at the top of
|
||||
the report to switch to a :icon:`fa-bar-chart` :guilabel:`(bar chart)`, :icon:`fa-line-chart`
|
||||
:guilabel:`(line chart)`, or :icon:`fa-pie-chart` :guilabel:`(pie chart)`.
|
||||
|
||||
.. seealso::
|
||||
To save this report as a *favorite*, see :ref:`search/favorites`.
|
||||
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 38 KiB |
@@ -49,17 +49,13 @@ is as follows:
|
||||
the purchase order have actually been received.
|
||||
|
||||
To activate it, go to :menuselection:`Purchase app --> Configuration --> Settings`, and scroll down
|
||||
to the :guilabel:`Invoicing` section. Then, check the box next to :guilabel:`3-way matching:
|
||||
purchases, receptions, and bills`, and click :guilabel:`Save` to save changes.
|
||||
to the :guilabel:`Invoicing` section. Then, tick the checkbox next to :guilabel:`3-way matching`,
|
||||
and click :guilabel:`Save` to save changes.
|
||||
|
||||
.. important::
|
||||
:guilabel:`3-way matching` is **only** intended to work with the :guilabel:`Bill Control` policy
|
||||
set to :guilabel:`Received quantities`.
|
||||
|
||||
.. image:: manage/manage-three-way-matching.png
|
||||
:align: center
|
||||
:alt: Activated three-way matching feature in purchase settings.
|
||||
|
||||
Create and manage vendor bills on receipts
|
||||
==========================================
|
||||
|
||||
@@ -153,12 +149,12 @@ Finally, click the :guilabel:`Create Bill` button to create a bill for the purch
|
||||
|
||||
.. note::
|
||||
Clicking :guilabel:`Create Bill` before any products have been received will cause a
|
||||
:guilabel:`User Error` pop-up to appear. The :guilabel:`Purchase Order` requires the receipt of
|
||||
at least partial quantity of the items included on the order to create a vendor bill.
|
||||
:guilabel:`User Error` pop-up message to appear. The :guilabel:`Purchase Order` requires the
|
||||
receipt of at least partial quantity of the items included on the order to create a vendor bill.
|
||||
|
||||
.. image:: manage/manage-user-error-popup.png
|
||||
:align: center
|
||||
:alt: User error pop-up for received quantities control policy.
|
||||
.. image:: manage/manage-user-error-popup.png
|
||||
:align: center
|
||||
:alt: User error pop-up for received quantities control policy.
|
||||
|
||||
Next, click the :guilabel:`Receipt` smart button to view the warehouse receipt form.
|
||||
|
||||
@@ -242,11 +238,11 @@ a separate page. This list of journal entries are all tied to their appropriate
|
||||
|
||||
.. image:: manage/manage-batch-billing.png
|
||||
:align: center
|
||||
:alt: Batch billing register payment pop-up.
|
||||
:alt: Batch billing register payment pop-up window.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Register Payment` option for vendor bills in batches will only work for journal
|
||||
entries whose :guilabel:`Status` is set to :guilabel:`Posted`.
|
||||
|
||||
.. seealso::
|
||||
:doc:`/applications/inventory_and_mrp/purchase/manage_deals/control_bills`
|
||||
:doc:`control_bills`
|
||||
|
||||
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 23 KiB |
@@ -1,11 +1,11 @@
|
||||
=================================================
|
||||
Purchase in different units of measure than sales
|
||||
=================================================
|
||||
=========================
|
||||
Purchase units of measure
|
||||
=========================
|
||||
|
||||
When you purchase a product, it may happen that your vendor uses a different unit of measure than
|
||||
you do when you sell it. This can cause confusion between sales and purchase representatives. It is
|
||||
also time-consuming to convert measures manually every time. With Odoo, you can configure your
|
||||
product once and let Odoo handle the conversion.
|
||||
when it is sold. This can cause confusion between sales and purchase representatives. It is also
|
||||
time-consuming to convert measures manually every time. With Odoo, you can configure your product
|
||||
once and let Odoo handle the conversion.
|
||||
|
||||
Consider the following examples:
|
||||
|
||||
@@ -70,14 +70,15 @@ and name the category.
|
||||
:align: center
|
||||
:alt: Create a new units of measure category in Odoo Purchase
|
||||
|
||||
The next step is to create the two units of measures. To do so, go to :menuselection:`Configuration
|
||||
--> Units of Measure`.
|
||||
The next step is to create the two units of measures. To do so, click into the :guilabel:`Unit of
|
||||
Measure Category` field and enter a name for the category. Then, under the :guilabel:`Units of
|
||||
Measure` tab, click :guilabel:`Add a line`.
|
||||
|
||||
First, create the unit of measure used as the reference point for converting to other units of
|
||||
measure inside the category by clicking on *Create*. Name the unit and select the units of measure
|
||||
category you just created. For the *Type*, select *Reference Unit of Measure for this category
|
||||
type*. Enter the *Rounding Precision* you would like to use. The quantity computed by Odoo is always
|
||||
a multiple of this value.
|
||||
measure inside the category. Name the unit, and select the units of measure category you just
|
||||
created. For the *Type*, select *Reference Unit of Measure for this category type*. Enter the
|
||||
*Rounding Precision* you would like to use. The quantity computed by Odoo is always a multiple of
|
||||
this value.
|
||||
|
||||
In the example, as you cannot purchase less than 1 roll and won't use fractions of a roll as a unit
|
||||
of measure, you can enter 1.
|
||||
@@ -105,10 +106,6 @@ should be smaller than 1.
|
||||
|
||||
For your curtain roll, the ratio should be set to 100.
|
||||
|
||||
.. image:: uom/uom-second-unit.png
|
||||
:align: center
|
||||
:alt: Create a second unit of measure in Odoo Purchase
|
||||
|
||||
You can now configure your product just as you would using Odoo's standard units of measure.
|
||||
|
||||
.. image:: uom/uom-product-configuration-new-units.png
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@@ -10,5 +10,6 @@ Events
|
||||
.. toctree::
|
||||
|
||||
events/event_essentials
|
||||
events/create_events
|
||||
events/sell_tickets
|
||||
events/track_manage_talks
|
||||
|
||||
416
content/applications/marketing/events/create_events.rst
Normal file
@@ -0,0 +1,416 @@
|
||||
=============
|
||||
Create events
|
||||
=============
|
||||
|
||||
With the *Events* application, event organizers can create and configure in-person or online-only
|
||||
events in Odoo. Each new event contains a number of customizable options that are geared around
|
||||
specific event logistics, as needed per event, such as ticket sales and registration desk, booths,
|
||||
tracks, sponsors, rooms, and more.
|
||||
|
||||
Events can be manually created from scratch or built off of pre-made templates. Once launched, the
|
||||
*Events* application then integrates with the *Website* app for the front-end promotion and
|
||||
registration of the event for attendees, the *Sales* app for the purchasing ability of paid tickets,
|
||||
as well the *CRM* application through customizable lead generation rules.
|
||||
|
||||
New event
|
||||
=========
|
||||
|
||||
To create a new event, begin by navigating to the :menuselection:`Events app` to land on the default
|
||||
:guilabel:`Events` dashboard, in the :icon:`oi-view-kanban` :guilabel:`Kanban` view. From there, or
|
||||
alternatively from the :icon:`oi-view-list` :guilabel:`List` or :icon:`fa-tasks` :guilabel:`Gantt`
|
||||
views, click the :guilabel:`New` button in the upper-left corner of the dashboard to open up a new
|
||||
event form.
|
||||
|
||||
.. image:: create_events/blank-event-template.png
|
||||
:align: center
|
||||
:alt: Typical event template in the Odoo Events application.
|
||||
|
||||
.. note::
|
||||
If certain fields do not readily appear on the event form, that means an additional application
|
||||
needs to be installed, or the database is not operating in a multi-company environment.
|
||||
|
||||
For example, the :guilabel:`Twitter Wall` field **only** appears if the *Social Marketing* app is
|
||||
installed, and the :guilabel:`Company` field **only** appears if the database is working in a
|
||||
multi-company environment.
|
||||
|
||||
These are just *additional* elements that can be used for an event. They are **not** required to
|
||||
create, host, and manage an event with Odoo *Events*.
|
||||
|
||||
Event form
|
||||
==========
|
||||
|
||||
At the top of the event form are a series of smart buttons related to various event metrics, which
|
||||
will autopopulate with pertinent data once attendees begin to register, booths and sponsors sign on
|
||||
for the event, the event takes place, and so on.
|
||||
|
||||
Beneath the smart buttons is the event form, which contains various fields and clickable tabs that
|
||||
serve to configure the initial, necessary details of the event.
|
||||
|
||||
The following are fields found on an event form:
|
||||
|
||||
- :guilabel:`Event Name`: the title of the event. This field is **required**.
|
||||
- :guilabel:`Date`: when the event is scheduled to take place. This field is auto-populated, but
|
||||
modifiable, and is **required**.
|
||||
- :guilabel:`Timezone`: the corresponding timezone related to the event. This field is
|
||||
auto-populated, but modifiable, and is **required**.
|
||||
- :guilabel:`Language`: designate a specific language for all event communications to be translated
|
||||
into, if necessary. This field is blank, by default, so if event-related communications are being
|
||||
sent to recipients who speak a different language, be sure to configure this field properly.
|
||||
- :guilabel:`Twitter Wall`: creates a separate page on the event website to feature specific social
|
||||
posts on X (formerly Twitter) that contain pre-determined desired elements.
|
||||
|
||||
.. tip::
|
||||
To create and customize a :guilabel:`Twitter Wall`, type the name of the desired wall into the
|
||||
field, and select :guilabel:`Create and edit...` from the resulting drop-down menu.
|
||||
|
||||
Doing so reveals :guilabel:`Create Twitter Wall` pop-up window.
|
||||
|
||||
.. image:: create_events/twitter-wall-popup.png
|
||||
:align: center
|
||||
:alt: The Twitter Wall pop-up window in the Odoo Events application.
|
||||
|
||||
From this window, enter a :guilabel:`Wall Name`. Then, select a certain word or hashtag for
|
||||
Odoo to search for on X, like `#WoodWorkingExpo24`, for example.
|
||||
|
||||
Next, determine the :guilabel:`Type of tweets` Odoo should showcase with that predetermined
|
||||
criteria. The choices in this field are: :guilabel:`Recent`, :guilabel:`Popular`, or
|
||||
:guilabel:`Mixed`.
|
||||
|
||||
Users also have the option to add a brief :guilabel:`Description` to the wall, as well.
|
||||
|
||||
Lastly, the greyed-out, non-modifiable :guilabel:`Website URL` field will autopopulate with the
|
||||
full URL needed to access the document through the event website.
|
||||
|
||||
An image can also be added to the wall by clicking the :icon:`fa-pencil` :guilabel:`(pencil)`
|
||||
icon that appears when the cursor hovers over the :guilabel:`(camera)` placeholder image in the
|
||||
upper-right corner of the pop-up window.
|
||||
|
||||
Then, from the resulting file explorer window, select the desired image to be added to the
|
||||
wall.
|
||||
|
||||
This :guilabel:`Twitter Wall` field **only** appears on the event form if the *Social
|
||||
Marketing* app is installed, and an X account has been added as a stream on the application. To
|
||||
learn more, check out the :doc:`Social marketing essentials
|
||||
<../social_marketing/essentials/social_essentials>` documentation.
|
||||
|
||||
- :guilabel:`Template`: choose a pre-configured event template from the resulting drop-down menu.
|
||||
|
||||
Or, create a new one directly from this field, by typing in the name of the new template, and
|
||||
selecting either:
|
||||
|
||||
- :guilabel:`Create` (which creates the template, and can be edited later) or
|
||||
- :guilabel:`Create and edit...` (which creates the template, and reveals a separate template page
|
||||
to configure the template in greater detail).
|
||||
|
||||
- :guilabel:`Tags`: add any corresponding tags to briefly describe the event (e.g. `Online`,
|
||||
`Conference`, etc.). Multiple tags can be added per event.
|
||||
|
||||
.. tip::
|
||||
Tags can be displayed on events that are listed on the website by enabling the *Show on
|
||||
Website* checkbox from :menuselection:`Events app --> Configuration --> Event Tag Categories`.
|
||||
|
||||
- :guilabel:`Organizer`: designate the organizer of the event (a company, contact, or employee).
|
||||
- :guilabel:`Responsible`: designate a user in the database to be responsible for this event.
|
||||
- :guilabel:`Company`: designate which company in the database to which this event is related. This
|
||||
field **only** appears if working in a multi-company environment. This field is auto-populated,
|
||||
but modifiable, and is **required**.
|
||||
- :guilabel:`Website`: choose to restrict the publishing of this event to a specific website created
|
||||
in Odoo. If this field is left blank, the event can be published on *all* websites in the
|
||||
database. To learn more, refer to the :doc:`Multiple websites
|
||||
<../../websites/website/configuration/multi_website>` documentation.
|
||||
- :guilabel:`Venue`: enter the pertinent event venue details in this field.
|
||||
- :guilabel:`Exhibition Map`: if desired, click the :guilabel:`Upload your file` button to upload an
|
||||
image of the event venue map.
|
||||
- :guilabel:`Limit Registrations`: if this checkbox is ticked, a limit to the amount of
|
||||
registrations is added to the event, and that desired limit amount **must** be entered in the
|
||||
blank field before :guilabel:`Attendees`.
|
||||
- :guilabel:`Badge Dimension`: select a desired paper format dimension for event badges. The options
|
||||
are: :guilabel:`A4 foldable`, :guilabel:`A6`, or :guilabel:`4 per sheet`.
|
||||
- :guilabel:`Badge Background`: if desired, click the :guilabel:`Upload your file` button to upload
|
||||
a custom background image for event badges.
|
||||
|
||||
When the above fields in the event form have been adequately filled in, move on to the four tabs at
|
||||
the bottom of the event form for further customization.
|
||||
|
||||
Those tabs are: :ref:`Tickets <events/event-tickets>`, :ref:`Communication
|
||||
<events/event-communication>`, :ref:`Questions <events/event-questions>`, and :ref:`Notes
|
||||
<events/event-notes>`.
|
||||
|
||||
.. _events/event-tickets:
|
||||
|
||||
Tickets tab
|
||||
-----------
|
||||
|
||||
Create custom tickets (and ticket tiers) for events in the :guilabel:`Tickets` tab of an event form.
|
||||
|
||||
.. image:: create_events/tickets-tab.png
|
||||
:align: center
|
||||
:alt: A typical tickets tab on an event form in the Odoo Events application.
|
||||
|
||||
To create a ticket, click :guilabel:`Add a line` in the :guilabel:`Tickets` tab. Then, enter a name
|
||||
for the ticket (e.g. `Basic Ticket` or `VIP`) in the :guilabel:`Name` field.
|
||||
|
||||
In the :guilabel:`Product` field, either select the pre-configured :guilabel:`Event Registration`
|
||||
product, or create a new one by typing in the name of the new event registration product, and then
|
||||
select either :guilabel:`Create` or :guilabel:`Create and edit...` from the resulting drop-down
|
||||
menu.
|
||||
|
||||
.. important::
|
||||
Upon installing Odoo *Events*, a new product type, *Event Ticket*, becomes available on product
|
||||
forms (:menuselection:`Sales --> Products --> Products`). In order for an event registration
|
||||
product to be selectable in the *Tickets* tab, the event registration :guilabel:`Product Type`
|
||||
**must** be set to :guilabel:`Event Ticket`.
|
||||
|
||||
.. tip::
|
||||
Existing event registration products can be modified directly from this field, as well, by
|
||||
clicking the :icon:`oi-arrow-right` :guilabel:`(right arrow)` icon, located beside the event
|
||||
registration product. Doing so reveals that product's form. If the *Inventory* application is
|
||||
installed, additional choices are available to customize for the product.
|
||||
|
||||
Next, set the registration cost of the ticket in the :guilabel:`Price` field.
|
||||
|
||||
.. note::
|
||||
The *Sales Price* defined on the event registration product's product form sets the default cost
|
||||
of a ticket. Modifying the :guilabel:`Price` of a ticket in the :guilabel:`Tickets` tab, sets a
|
||||
new registration cost of the ticket for that event.
|
||||
|
||||
Next, determine a :guilabel:`Sales Start` and :guilabel:`Sales End` date in their respective fields.
|
||||
To do that, click into the blank field to reveal a calendar popover. From there, select the desired
|
||||
date and time, then click :icon:`fa-check` :guilabel:`Apply`.
|
||||
|
||||
Then, if desired, designate a :guilabel:`Maximum` amount of that specific ticket that can be sold.
|
||||
|
||||
The :guilabel:`Taken` column populates with the number of tickets that are sold.
|
||||
|
||||
Optionally, in the :guilabel:`Color` column, add a custom color to differentiate ticket badges. The
|
||||
selected color displays on ticket badges when printed.
|
||||
|
||||
To delete any tickets from the :guilabel:`Tickets` tab, click the :icon:`fa-trash-o`
|
||||
:guilabel:`(trash can)` icon on the corresponding line for the ticket that should be deleted.
|
||||
|
||||
.. tip::
|
||||
To add an optional :guilabel:`Description` column to the :guilabel:`Tickets` tab, click the
|
||||
:icon:`oi-settings-adjust` :guilabel:`(additional options)` drop-down menu, located to the
|
||||
far-right of the column titles.
|
||||
|
||||
Then, tick the checkbox beside :guilabel:`Description` from the resulting drop-down menu.
|
||||
|
||||
When added, the option to add brief descriptions for each event ticket appears, which can be used
|
||||
to inform attendees of any perks or amenities that may coincide with specific ticket purchases.
|
||||
|
||||
.. _events/event-communication:
|
||||
|
||||
Communication tab
|
||||
-----------------
|
||||
|
||||
In the :guilabel:`Communication` tab of an event form, create various marketing communications that
|
||||
can be scheduled to be sent at specific intervals leading up to, and following, the event.
|
||||
|
||||
.. image:: create_events/communication-tab.png
|
||||
:align: center
|
||||
:alt: Typical communication tab on an event form in the Odoo Events application.
|
||||
|
||||
.. note::
|
||||
By default, Odoo provides three separate pre-configured communications on every new event form.
|
||||
One is an email sent after each registration to confirm the purchase with the attendee. The other
|
||||
two are email event reminders that are scheduled to be sent at different time intervals leading
|
||||
up to the event to remind the recipient of the upcoming event.
|
||||
|
||||
To add a communication in the :guilabel:`Communication` tab, click :guilabel:`Add a line`. Then,
|
||||
select the desired type of communication in the :guilabel:`Send` field. The options are:
|
||||
:guilabel:`Mail`, :guilabel:`SMS`, :guilabel:`Social Post`, or :guilabel:`WhatsApp`.
|
||||
|
||||
There is no limit to the number of communications that can be added in the :guilabel:`Communication`
|
||||
tab of an event form.
|
||||
|
||||
To delete a communication from the :guilabel:`Communication` tab, click the :icon:`fa-trash-o`
|
||||
:guilabel:`(trash can)` icon on the corresponding communication line. Doing so removes the
|
||||
communication from the event entirely.
|
||||
|
||||
.. important::
|
||||
The :guilabel:`Social Post` option **only** appears if the *Social Marketing* application is
|
||||
installed. The :guilabel:`WhatsApp` option **only** appears if the *WhatsApp Integration* module
|
||||
is installed.
|
||||
|
||||
:doc:`WhatsApp <../../productivity/whatsapp>` templates **cannot** be edited during active
|
||||
configuration. A separate approval from *Meta* is required.
|
||||
|
||||
Mail
|
||||
~~~~
|
||||
|
||||
Select an existing email template from the :guilabel:`Template` drop-down menu.
|
||||
|
||||
Next, define the :guilabel:`Interval`, :guilabel:`Unit`, and :guilabel:`Trigger` from their
|
||||
respective drop-down fields, letting Odoo know when the communication should be sent.
|
||||
|
||||
The :guilabel:`Unit` options are: :guilabel:`Immediately`, :guilabel:`Hours`, :guilabel:`Days`,
|
||||
:guilabel:`Weeks`, and :guilabel:`Months`.
|
||||
|
||||
Then, select an option from the :guilabel:`Trigger` drop-down menu. The options are:
|
||||
:guilabel:`After each registration`, :guilabel:`Before the event`, and :guilabel:`After the event`.
|
||||
|
||||
The :guilabel:`Sent` column populates with the number of sent communications. And, beside the
|
||||
number are different icons that appear, depending on the status of that particular communication.
|
||||
|
||||
The status of *Running* is represented by a :icon:`fa-cogs` :guilabel:`(three gears)` icon. The
|
||||
status of *Sent* is represented by a :icon:`fa-check` :guilabel:`(checkmark)` icon. And, the status
|
||||
of *Scheduled* is represented by an :icon:`fa-hourglass-half` :guilabel:`(hourglass)` icon.
|
||||
|
||||
.. example::
|
||||
To send a confirmation email an hour after an attendee registers for an event, configure the
|
||||
following communication:
|
||||
|
||||
- :guilabel:`Interval`: `1`
|
||||
- :guilabel:`Unit`: :guilabel:`Hours`
|
||||
- :guilabel:`Trigger`: :guilabel:`After each registration`
|
||||
|
||||
.. note::
|
||||
Existing email templates can be modified directly from the :guilabel:`Template` drop-down menu,
|
||||
if necessary, by clicking the :icon:`oi-arrow-right` :guilabel:`(right arrow)` icon next to the
|
||||
template name. Doing so reveals a separate page where users can edit the :guilabel:`Content`,
|
||||
:guilabel:`Email Configuration`, and :guilabel:`Settings` of that particular email template.
|
||||
|
||||
To view and manage all email templates, activate :ref:`developer-mode` and navigate to
|
||||
:menuselection:`Settings --> Technical --> Email: Email Templates`. Modify with caution as email
|
||||
templates effect all communications where the template is used.
|
||||
|
||||
.. _events/event-questions:
|
||||
|
||||
Questions tab
|
||||
-------------
|
||||
|
||||
In the :guilabel:`Questions` tab of an event form, users can create brief questionnaires for
|
||||
registrants to interact with, and respond to, after they register for the event.
|
||||
|
||||
These questions can be focused on gathering basic information about the attendee, learning about
|
||||
their preferences, expectations, and other things of that nature. This information can also be used
|
||||
to create more detailed reporting metrics, in addition to being utilized to create specific lead
|
||||
generation rules.
|
||||
|
||||
.. image:: create_events/questions-tab.png
|
||||
:align: center
|
||||
:alt: Typical questions tab on an event form in the Odoo Events application.
|
||||
|
||||
.. note::
|
||||
By default, Odoo provides three questions in the :guilabel:`Questions` tab for every event form.
|
||||
The default questions require the registrant(s) to provide their :guilabel:`Name` and
|
||||
:guilabel:`Email`, and make it optional to include their :guilabel:`Phone` number, as well.
|
||||
|
||||
The information gathered from the :guilabel:`Questions` tab can be found on the
|
||||
:guilabel:`Attendees` dashboard, accessible via the :icon:`fa-users` :guilabel:`Attendees` smart
|
||||
button. Odoo populates individual records that contain basic information about the registrant(s),
|
||||
as well as their preferences.
|
||||
|
||||
To add a question in the :guilabel:`Questions` tab, click :guilabel:`Add a line`. Doing so reveals a
|
||||
:guilabel:`Create Question` pop-up window. From here, users can create and configure their question.
|
||||
|
||||
.. image:: create_events/create-question-popup.png
|
||||
:align: center
|
||||
:alt: The Create Question pop-up window that appears in the Odoo Events application.
|
||||
|
||||
First, enter the question in the field at the top of the form. Then, decide if the question should
|
||||
require a :guilabel:`Mandatory Answer` and/or if Odoo should :guilabel:`Ask once per order`, by
|
||||
ticking their respective boxes, if desired.
|
||||
|
||||
If the :guilabel:`Ask once per order` checkbox is ticked, the question will only be asked once, and
|
||||
its value is propogated to every attendee in the order (if multiple tickets are purchased at once).
|
||||
If the checkbox is *not* ticked for this setting, Odoo will present the question for every attendee
|
||||
that is connected to that registration.
|
||||
|
||||
Next, select a :guilabel:`Question Type` option:
|
||||
|
||||
- :guilabel:`Selection`: provide answer options to the question for registrants to choose from.
|
||||
Selectable answer options can be managed in the :guilabel:`Answers` column at the bottom of the
|
||||
pop-up window.
|
||||
- :guilabel:`Text Input`: lets the users enter a custom response to the question in a text field.
|
||||
- :guilabel:`Name`: provides registrants with a field for them to enter their name.
|
||||
- :guilabel:`Email`: provides registrants with a field for them to enter their email address.
|
||||
- :guilabel:`Phone`: provides registrants with a field for them to enter their phone number.
|
||||
- :guilabel:`Company`: provides registrants with a field for them to enter a company they are
|
||||
associated with.
|
||||
|
||||
Once all the desired configurations have been entered, either click :guilabel:`Save & Close` to save
|
||||
the question, and return to the :guilabel:`Questions` tab on the event form, or click
|
||||
:guilabel:`Save & New` to save the question and immediately create a new question on a new
|
||||
:guilabel:`Create Question` pop-up window.
|
||||
|
||||
As questions are added to the :guilabel:`Questions` tab, the informative columns showcase the
|
||||
configurations of each question.
|
||||
|
||||
The informative columns are the following:
|
||||
|
||||
- :guilabel:`Title`
|
||||
- :guilabel:`Mandatory`
|
||||
- :guilabel:`Once per Order`
|
||||
- :guilabel:`Type`
|
||||
- :guilabel:`Answers` (if applicable)
|
||||
|
||||
For :guilabel:`Selection` and :guilabel:`Text Input` types, a :icon:`fa-bar-chart` :guilabel:`Stats`
|
||||
button appears on the right side of the question line. When clicked, Odoo reveals a separate page,
|
||||
showcasing the response metrics to that specific question.
|
||||
|
||||
To delete any question from the :guilabel:`Questions` tab, click the :icon:`fa-trash-o`
|
||||
:guilabel:`(trash can)` icon on the corresponding question line.
|
||||
|
||||
There is no limit to the number of questions that can be added in the :guilabel:`Questions` tab of
|
||||
an event form.
|
||||
|
||||
.. _events/event-notes:
|
||||
|
||||
Notes tab
|
||||
---------
|
||||
|
||||
In the :guilabel:`Notes` tab of an event form, users can leave detailed internal notes and/or
|
||||
event-related instructions/information for attendees.
|
||||
|
||||
.. image:: create_events/notes-tab.png
|
||||
:align: center
|
||||
:alt: Typical notes tab on an event form in the Odoo Events application.
|
||||
|
||||
In the :guilabel:`Note` field of the :guilabel:`Notes` tab, users can leave internal notes for other
|
||||
event employees, like "to-do" lists, contact information, instructions, and so on.
|
||||
|
||||
In the :guilabel:`Ticket Instructions` field of the :guilabel:`Notes` tab, users can leave specific
|
||||
instructions for people attending the event that appear on the attendees ticket.
|
||||
|
||||
Publish events
|
||||
==============
|
||||
|
||||
Once all configurations and modifications are complete on the event form, it is time to publish the
|
||||
event on the website. Doing so makes the event visible to website visitors, and makes it possible
|
||||
for people to register for the event.
|
||||
|
||||
To publish an event after all the customizations are complete, click the :icon:`fa-globe`
|
||||
:guilabel:`Go to Website` smart button at the top of the event form. Doing so reveals the event's
|
||||
web page, which can be customized like any other web page on the site, via the :guilabel:`Edit`
|
||||
button.
|
||||
|
||||
To learn more about website design functionality and options, consult the :doc:`Building block
|
||||
<../../websites/website/web_design/building_blocks>` documentation.
|
||||
|
||||
Once the event website is ready to be shared, click the red :guilabel:`Unpublished` toggle switch
|
||||
in the header menu, changing it to a green :guilabel:`Published` switch. At this point, the event
|
||||
web page is published, and viewable/accessible by all website visitors.
|
||||
|
||||
Send event invites
|
||||
==================
|
||||
|
||||
To send event invites to potential attendees, navigate to the desired event form, via
|
||||
:menuselection:`Events app --> Events`, and click into the desired event. Following this, click the
|
||||
:guilabel:`Invite` button in the upper-left corner of the event form.
|
||||
|
||||
Doing so reveals a blank email form to fill out, as desired. To learn more about how to create and
|
||||
customize emails like this, refer to the :ref:`Create an email <email_marketing/create_email>`
|
||||
documentation.
|
||||
|
||||
Proceed to create and customize an email message to send as an invite to potential attendees.
|
||||
Remember to include a link to the registration page on the event website, allowing interested
|
||||
recipients to quickly register.
|
||||
|
||||
.. tip::
|
||||
Sending emails from Odoo is subject to a daily limit, which, by default, is 200. To learn more
|
||||
about daily limits, visit the :ref:`email_communication/daily_limit_mail` documentation.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`event_essentials`
|
||||
- :doc:`track_manage_talks`
|
||||
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 18 KiB |