Compare commits
11 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
2401a810bb | [IMP] accounting/l10n_cl: add Importante note to F29 report | ||
|
|
6f74248de1 |
[IMP] sales: adding global discount info
closes odoo/documentation#9962 Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com> |
||
|
|
be0b5e65d5 |
[ADD] events: revenues report
closes odoo/documentation#9953 Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com> |
||
|
|
83b6895deb |
[ADD] Expenses: post expenses to accounting journals
closes odoo/documentation#10392 Signed-off-by: Lara Martini (larm) <larm@odoo.com> |
||
|
|
16537bb9c5 |
[IMP] barcode: add nomenclature example
closes odoo/documentation#10432
X-original-commit:
|
||
|
|
71e2a50d40 |
[ADD] Fleet: new accident management doc
closes odoo/documentation#10263 Signed-off-by: Lara Martini (larm) <larm@odoo.com> |
||
|
|
514c175824 |
[FIX] contributing: remove smart quotes
There have been several new odooers who've hit legal/cla mismatches, and after
investigation their email address would be smart quoted in git (e.g.
`<“uid@example.org”>`).
That the documentation itself uses smart quotes is highly suspicious, it would
make sense that new developers just pasted the provided command, updated it to
match, and didn't even notice the quotes were wrong: `git` is perfectly happy
with it, only on reading it back can you realise it's wrong and the guide
doesn't say anything about *that*.
So fix the quotes in the doc, and hopefully that'll resolve the issue.
closes odoo/documentation#10442
X-original-commit:
|
||
|
|
65e7f1b3c5 |
[ADD] events: registration desk doc (17)
closes odoo/documentation#9348 Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com> |
||
|
|
d362d4ebdb |
[ADD] inventory: storage categories
closes odoo/documentation#10412
X-original-commit:
|
||
|
|
1aee294219 |
[ADD] sales: create quotations doc
closes odoo/documentation#9749 Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com> |
||
|
|
d8cd13b659 |
[ADD] Subscriptions: Wire transfer
closes odoo/documentation#10276 Signed-off-by: Parish Bracha (pabr) <pabr@odoo.com> |
@@ -4,8 +4,8 @@
|
||||
Expenses
|
||||
========
|
||||
|
||||
Odoo *Expenses* streamlines the management of expenses. After an employee submits their expenses in
|
||||
Odoo, they are reviewed by management and accounting teams. Once approved, payments can then be
|
||||
Odoo **Expenses** streamlines the management of expenses. After an employee submits their expenses
|
||||
in Odoo, they are reviewed by management and accounting teams. Once approved, payments can then be
|
||||
processed, and disbursed back to the employee for reimbursement.
|
||||
|
||||
.. seealso::
|
||||
@@ -372,46 +372,6 @@ the manager's team.
|
||||
:align: center
|
||||
:alt: Send messages in the chatter.
|
||||
|
||||
.. _expenses/post:
|
||||
|
||||
Post expenses in accounting
|
||||
===========================
|
||||
|
||||
Once an expense report is approved, the next step is to post the report to the accounting journal.
|
||||
To view all expense reports, go to :menuselection:`Expenses app --> Expense Reports`. To view only
|
||||
the expense reports that have been approved and need to be posted, adjust the filters on the left
|
||||
side so that only the :guilabel:`Approved` status is enabled.
|
||||
|
||||
.. image:: expenses/post-reports.png
|
||||
:align: center
|
||||
:alt: View reports to post by clicking on expense reports, then reports to post.
|
||||
|
||||
Just like approvals, expense reports can be posted in two ways (individually or several at once). To
|
||||
post multiple expense reports at once, remain in the list view. First, select the reports to post by
|
||||
ticking the checkbox next to each report, or tick the checkbox next to :guilabel:`Employee` to
|
||||
select all the reports in the list. Next, click :guilabel:`Post Entries`.
|
||||
|
||||
.. image:: expenses/post-entries.png
|
||||
:align: center
|
||||
:alt: Post multiple reports at a time from the Expense Reports view, with the Approved filter.
|
||||
|
||||
To post an individual report, click on a report to go to the detailed view of that report. In this
|
||||
view, several options are presented: :guilabel:`Post Journal Entries`, :guilabel:`Report In Next
|
||||
Payslip`, :guilabel:`Refuse`, or :guilabel:`Reset to Draft`. Click :guilabel:`Post Journal Entries`
|
||||
to post the report.
|
||||
|
||||
If :guilabel:`Refuse` is clicked, a pop-up window appears. Enter a brief explanation for the refusal
|
||||
in the :guilabel:`Reason to Refuse Expense` field, and then click :guilabel:`Refuse`. Refused
|
||||
reports can be viewed by going to :menuselection:`Expenses app --> Expense Reports`, then adjusting
|
||||
the filters on the left so that only :guilabel:`Refused` is selected. This will only show the
|
||||
refused expense reports.
|
||||
|
||||
.. important::
|
||||
To post expense reports to an accounting journal, the user must have following access rights:
|
||||
|
||||
- Accounting: Accountant or Adviser
|
||||
- Expenses: Manager
|
||||
|
||||
.. _expenses/reimburse:
|
||||
|
||||
Reimburse employees
|
||||
@@ -511,10 +471,10 @@ Distribution` is set on every expense line of a report. If an :guilabel:`Analyti
|
||||
missing, assign the correct accounts from the drop-down menu, and click :guilabel:`Approve` or
|
||||
:guilabel:`Refuse`.
|
||||
|
||||
The accounting department is typically responsible for :ref:`posting journal entries
|
||||
<expenses/post>`. Once an expense report is approved, it can then be posted. The :abbr:`SO (Sales
|
||||
Order)` is **only** updated *after the journal entries are posted*. One the journal entries are
|
||||
posted, the expenses now appear on the referenced :abbr:`SO (Sales Order)`.
|
||||
The accounting department is typically responsible for :doc:`posting journal entries
|
||||
<expenses/post_expenses>`. Once an expense report is approved, it can then be posted. The :abbr:`SO
|
||||
(Sales Order)` is **only** updated *after* the journal entries are posted. Once the journal entries
|
||||
are posted, the expenses now appear on the referenced :abbr:`SO (Sales Order)`.
|
||||
|
||||
Invoice expenses
|
||||
----------------
|
||||
@@ -549,9 +509,11 @@ clicking the radio button next to it. Then, click :guilabel:`Create Invoice`. Th
|
||||
been invoiced for the expenses.
|
||||
|
||||
.. seealso::
|
||||
:doc:`expenses/expense_reports`
|
||||
- :doc:`expenses/post_expenses`
|
||||
- :doc:`expenses/expense_reports`
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
expenses/post_expenses
|
||||
expenses/expense_reports
|
||||
|
||||
@@ -121,5 +121,6 @@ Click on a report to open it, then click :guilabel:`Submit To Manager`. After su
|
||||
the next step is to wait for the manager to approve it.
|
||||
|
||||
.. important::
|
||||
The :ref:`expenses/approve`, :ref:`expenses/post`, and :ref:`expenses/reimburse` sections are
|
||||
**only** for users with the appropriate *access rights*.
|
||||
:ref:`Approving <expenses/approve>`, :doc:`posting <../expenses/post_expenses>`, and
|
||||
:ref:`reimbursing <expenses/reimburse>` expenses are **only** for users with the appropriate
|
||||
:doc:`access rights <../../general/users/access_rights>`.
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@@ -0,0 +1,75 @@
|
||||
=============
|
||||
Post expenses
|
||||
=============
|
||||
|
||||
Once an expense report is :ref:`approved <expenses/approve>`, the next step is to post the expense
|
||||
report to the proper accounting journal.
|
||||
|
||||
.. important::
|
||||
To post expense reports to an accounting journal, the user **must** have the following
|
||||
:doc:`access rights <../../general/users/access_rights>`:
|
||||
|
||||
- Accounting: *Accountant* or *Adviser*
|
||||
- Expenses: *Manager*
|
||||
|
||||
Only expense reports with an *Approved* status can post the expenses to a journal. To view all
|
||||
expense reports, navigate to :menuselection:`Expenses app --> Expense Reports`. Next, to view
|
||||
**only** approved expense reports that need to be posted, adjust the filters on the left side, so
|
||||
only the :guilabel:`Approved` checkbox is ticked.
|
||||
|
||||
.. image:: post-expenses/post-reports.png
|
||||
:align: center
|
||||
:alt: View reports to post by clicking on expense reports, then reports to post.
|
||||
|
||||
.. note::
|
||||
The default :guilabel:`All Reports` dashboard displays all expense reports, except reports with a
|
||||
status of :guilabel:`Refused`.
|
||||
|
||||
Expense reports can be posted to accounting journals in two ways: :ref:`individually
|
||||
<expenses/individual>` or :ref:`in bulk <expenses/multiple>`.
|
||||
|
||||
.. _expenses/individual:
|
||||
|
||||
Post individual reports
|
||||
-----------------------
|
||||
|
||||
To post an individual report, navigate to :menuselection:`Expenses app --> Expense Reports`, and
|
||||
click on an individual report with a :guilabel:`Status` of :guilabel:`Approved`, to view the report
|
||||
form. In this view, several options are presented: :guilabel:`Post Journal Entries`,
|
||||
:guilabel:`Report In Next Payslip`, :guilabel:`Refuse`, or :guilabel:`Reset to Draft`.
|
||||
|
||||
Click :guilabel:`Post Journal Entries` to post the report.
|
||||
|
||||
The accounting journal the expenses are posted to is listed in the :guilabel:`Journal` field of the
|
||||
expense report.
|
||||
|
||||
After posting the expenses to an accounting journal, a :guilabel:`Journal Entry` smart button
|
||||
appears at the top of the screen. Click the :guilabel:`Journal Entry` smart button, and the details
|
||||
for the journal entry appear, with a status of :guilabel:`Posted`.
|
||||
|
||||
.. _expenses/multiple:
|
||||
|
||||
Post multiple reports
|
||||
---------------------
|
||||
|
||||
To post multiple expense reports at once, navigate to :menuselection:`Expenses app --> Expense
|
||||
Reports` to view a list of expense reports. Next, select the reports to approve by ticking the
|
||||
checkbox next to each report being approved.
|
||||
|
||||
.. note::
|
||||
Only expense reports with a status of :guilabel:`Approved` are able to post the expenses to an
|
||||
accounting journal. If an expense report is selected that **cannot** be posted, such as an
|
||||
unapproved report, or the report has already been posted to a journal, the :guilabel:`Post
|
||||
Entries` button is **not** visible.
|
||||
|
||||
.. tip::
|
||||
To select **only** approved expense reports, adjust the filters on the left side, so that only
|
||||
the :guilabel:`Approved` checkbox is ticked. Next, tick the checkbox next to the
|
||||
:guilabel:`Employee` column title to select **all** the :guilabel:`Approved` reports in the list
|
||||
at once.
|
||||
|
||||
Next, click the :guilabel:`Post Entries` button.
|
||||
|
||||
.. image:: post-expenses/post-entries.png
|
||||
:align: center
|
||||
:alt: Post multiple reports at a time from the Expense Reports view, with the Approved filter.
|
||||
@@ -1228,6 +1228,10 @@ taxpayers, and that replaces the *Purchase and Sales Books*. This report is inte
|
||||
Register (CR) and the Sales Register (RV). Its purpose is to support the transactions related to
|
||||
VAT, improving its control and declaration.
|
||||
|
||||
.. important::
|
||||
The *Propuesta F29 (CL)* report in Odoo covers the basic legal requirements as a first proposal
|
||||
for your final tax declaration.
|
||||
|
||||
This record is supplied by the electronic tax documents (DTE's) that have been received by the
|
||||
:abbr:`SII (Servicio de Impuestos Internos)`.
|
||||
|
||||
|
||||
@@ -85,6 +85,7 @@ When the information is entered, click :guilabel:`Save`.
|
||||
- :doc:`fleet/models`
|
||||
- :doc:`fleet/new_vehicle`
|
||||
- :doc:`fleet/service`
|
||||
- :doc:`fleet/accidents`
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
@@ -92,3 +93,4 @@ When the information is entered, click :guilabel:`Save`.
|
||||
fleet/models
|
||||
fleet/new_vehicle
|
||||
fleet/service
|
||||
fleet/accidents
|
||||
|
||||
@@ -0,0 +1,280 @@
|
||||
=========
|
||||
Accidents
|
||||
=========
|
||||
|
||||
When managing a fleet, accidents are inevitable. Tracking accidents is crucial for understanding
|
||||
vehicle maintenance costs and identifying safe drivers.
|
||||
|
||||
Odoo's *Fleet* app offers multiple ways to track accidents. Below are step-by-step instructions for
|
||||
only **one** method to monitor accidents and repair costs.
|
||||
|
||||
Structure
|
||||
=========
|
||||
|
||||
For this example, to track accidents, two :ref:`service types <fleet/new-type>` are created:
|
||||
`Accident - Driver's Fault` and `Accident - No Fault`.
|
||||
|
||||
This tracks various repairs associated with accidents, organized by who was at fault.
|
||||
|
||||
When an accident occurs, a service record is created. The specific repairs needed for the accident
|
||||
are logged in the *Description* of the service record, and the details about the accident are logged
|
||||
in the *Notes* section.
|
||||
|
||||
With this organizational structure, it is possible to view all accidents organized by fault, car,
|
||||
driver, or cost.
|
||||
|
||||
.. note::
|
||||
To manage accidents, the creation of service records is **required**.
|
||||
|
||||
Refer to the :doc:`service` documentation for detailed instructions on creating service records
|
||||
in Odoo's *Fleet* app.
|
||||
|
||||
Log accidents and repairs
|
||||
=========================
|
||||
|
||||
To log an accident, and initiate the repair process, the first step is to :ref:`create a service
|
||||
record <fleet/service-form>` detailing the specific repairs needed.
|
||||
|
||||
.. note::
|
||||
Some accidents require multiple repairs with several different vendors. For these scenarios, a
|
||||
separate service record is needed for each vendor performing repairs. To keep records organized,
|
||||
it is recommended to keep the *Notes* field identical, as well as attaching the same important
|
||||
documentation, such as a police report.
|
||||
|
||||
Navigate to :menuselection:`Fleet app --> Fleet --> Services` to view the main :guilabel:`Services`
|
||||
dashboard. Click :guilabel:`New` in the top-left corner, and a blank service form loads.
|
||||
|
||||
Enter the following information on the form:
|
||||
|
||||
- :guilabel:`Description`: enter the description of repairs needed to fully repair the vehicle, such
|
||||
as `Bodywork`, `Windshield Replacement`, or `Replacement Bumper, Tires, and Windows`.
|
||||
- :guilabel:`Service Type`: for this example, select either `Accident - Driver's Fault` or
|
||||
`Accident - No Fault`, depending on the situation.
|
||||
|
||||
When entering either of these two :guilabel:`Service Types` for the first time, type in the new
|
||||
service type, then click :guilabel:`Create (new service type)`. A :guilabel:`Create Service Type`
|
||||
pop-up window appears, with the new service type populating the :guilabel:`Name` field. In the
|
||||
:guilabel:`Category` field, select :guilabel:`Service` from the drop-down menu, then click the
|
||||
:guilabel:`Save & Close` button.
|
||||
|
||||
Once an accident service type has been added to the database, it is available to select from the
|
||||
drop-down menu in the :guilabel:`Service Type` field.
|
||||
- :guilabel:`Date`: using the calendar popover window, select the date the accident occurred.
|
||||
Navigate to the desired month using the :icon:`fa-chevron-left` :icon:`fa-chevron-right`
|
||||
:guilabel:`(arrow)` icons, then click the date to select it.
|
||||
- :guilabel:`Cost`: leave this field blank, as the repair cost is not yet known.
|
||||
- :guilabel:`Vendor`: select the vendor performing the repairs using the drop-down menu. If the
|
||||
vendor has not already been entered in the system, type in the vendor name, and click either
|
||||
:guilabel:`Create` to add them, or :guilabel:`Create and edit...` to :ref:`add and configure the
|
||||
vendor <fleet/new-vendor>`.
|
||||
- :guilabel:`Vehicle`: select the vehicle that was in the accident from the drop-down menu. When the
|
||||
vehicle is selected, the :guilabel:`Driver` field is populated, and the unit of measure for the
|
||||
:guilabel:`Odometer Value` field appears.
|
||||
- :guilabel:`Driver`: the current driver listed for the selected vehicle populates this field when
|
||||
the :guilabel:`Vehicle` is selected. If a different driver was operating the vehicle when the
|
||||
accident occurred, select the correct driver from the drop-down menu.
|
||||
- :guilabel:`Odometer Value`: enter the odometer reading when the accident occurred. The units of
|
||||
measure are either in kilometers (:guilabel:`km`) or miles (:guilabel:`mi`), depending on how the
|
||||
selected vehicle was configured.
|
||||
- :guilabel:`NOTES`: enter the specific details of the accident at the bottom of the service form,
|
||||
such as `Hit a deer` or `Rear-ended at an intersection while stopped`.
|
||||
|
||||
Odoo provides the ability to attach any important paperwork, such as repair estimates and police
|
||||
reports, to the service record. To do so, click the :icon:`fa-paperclip` :guilabel:`(paperclip)`
|
||||
icon, located in the *chatter* of the form, and a file explorer pop-up window appears. Navigate to
|
||||
the desired record, and click :guilabel:`Open` to upload the file.
|
||||
|
||||
.. note::
|
||||
Once a file is added to a service record, a :guilabel:`Files` section appears in the *chatter*.
|
||||
To attach more records, click :icon:`fa-plus-square` :guilabel:`Attach files` to add more
|
||||
documents.
|
||||
|
||||
.. image:: accidents/service-form.png
|
||||
:align: center
|
||||
:alt: Enter the information for an accident repair.
|
||||
|
||||
Service stages
|
||||
==============
|
||||
|
||||
In Odoo's *Fleet* app, there are four default service stages:
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. tab:: New
|
||||
|
||||
The default stage when a service record is created. The service has been requested, but
|
||||
repairs have not begun. The :guilabel:`Cost` field for this stage remains zero.
|
||||
|
||||
.. tab:: Running
|
||||
|
||||
The repair is in-process, but not yet complete. The estimate for repairs is listed in the
|
||||
:guilabel:`Cost` field.
|
||||
|
||||
.. tab:: Completed
|
||||
|
||||
All repairs listed on the service form have been completed. The :guilabel:`Cost` field is
|
||||
updated to reflect the final total cost charged for the repairs.
|
||||
|
||||
.. tab:: Cancelled
|
||||
|
||||
The service request has been cancelled.
|
||||
|
||||
During the repair process, change the service status to reflect the vehicle's current state in one
|
||||
of two ways: on the individual :ref:`service record <fleet/service_record>`, or in the :ref:`Kanban
|
||||
service view <fleet/Kanban>`.
|
||||
|
||||
.. _fleet/service_record:
|
||||
|
||||
Service record
|
||||
--------------
|
||||
|
||||
Open the main *Services* dashboard, by navigating to :menuselection:`Fleet app --> Fleet -->
|
||||
Services`. Next, click on the individual service record to open the detailed service form. Click the
|
||||
desired stage in the top-right corner, above the service form, to change the status.
|
||||
|
||||
.. image:: accidents/running.png
|
||||
:align: center
|
||||
:alt: The stages as seen from the service form.
|
||||
|
||||
.. _fleet/Kanban:
|
||||
|
||||
Kanban view
|
||||
-----------
|
||||
|
||||
Open the main *Services* dashboard, by navigating to :menuselection:`Fleet app --> Fleet -->
|
||||
Services`. First, click the :icon:`oi-view-kanban` :guilabel:`Kanban` icon in the top-right of the
|
||||
screen, which organizes all repairs by vehicle.
|
||||
|
||||
Next, remove the default :guilabel:`Service Type` filter in the search bar. Upon doing so, all
|
||||
services appear in a Kanban view, organized by their respective :guilabel:`Status`.
|
||||
|
||||
Drag-and-drop the service record to the desired stage.
|
||||
|
||||
.. image:: accidents/drag-n-drop.png
|
||||
:align: center
|
||||
:alt: The Kanban view of stages, with a card being dragged and dropped to the Running stage.
|
||||
|
||||
Accident reporting
|
||||
==================
|
||||
|
||||
One of the main reasons to track accidents using the method outlined in this document is the ability
|
||||
to view the total accident cost, determine the safest drivers, and calculate the actual total cost
|
||||
for specific vehicles.
|
||||
|
||||
The main :ref:`Services dashboard <fleet/services_dashboard>` displays all the various accident
|
||||
information, while the :ref:`Reporting dashboard <fleet/reporting_dashboard>` displays the total
|
||||
cost for specific vehicles.
|
||||
|
||||
.. _fleet/services_dashboard:
|
||||
|
||||
Services dashboard
|
||||
------------------
|
||||
|
||||
Navigate to :menuselection:`Fleet app --> Fleet --> Services` to view the :guilabel:`Services`
|
||||
dashboard. All service records are displayed in a :icon:`oi-view-list` :guilabel:`(List)` view,
|
||||
grouped alphabetically, by :guilabel:`Service Type`.
|
||||
|
||||
The two service types created for accident tracking appear in the list: :guilabel:`Accident -
|
||||
Driver Fault` and :guilabel:`Accident - No Fault`.
|
||||
|
||||
Each grouping displays the number of records within each type, and lists the individual records
|
||||
beneath each grouping title.
|
||||
|
||||
.. example::
|
||||
In this example, there are six accidents where the driver was at fault, and four accidents that
|
||||
were not the driver's fault. This dashboard also displays the estimated total :guilabel:`Cost`
|
||||
for all the accidents in each group.
|
||||
|
||||
An estimated `$19,164.81` dollars are for driver-caused accident repairs, and an estimated
|
||||
`$2,548.21` dollars are for no-fault accidents.
|
||||
|
||||
.. image:: accidents/group-accidents.png
|
||||
:align: center
|
||||
:alt: Accident services, with the total costs highlighted.
|
||||
|
||||
.. note::
|
||||
The total :guilabel:`Cost` calculates **all** costs on the repair form, including estimated
|
||||
costs, as well as final repair costs. This number may not be accurate, if there are any repairs
|
||||
in the *Running* stage, and the final bill has not yet been calculated.
|
||||
|
||||
.. _fleet/reporting_dashboard:
|
||||
|
||||
Reporting dashboard
|
||||
-------------------
|
||||
|
||||
Navigate to :menuselection:`Fleet app --> Reporting --> Costs` to view the :menuselection:`Cost
|
||||
Analysis` report. This report displays a :icon:`fa-bar-chart` :guilabel:`(Bar Chart)` of all
|
||||
:guilabel:`Contract` and :guilabel:`Service` costs for the current year, organized by month
|
||||
(:guilabel:`Date : (year)`), by default. The :guilabel:`Sum`, represented by a gray dotted line, is
|
||||
the combined total of both the :guilabel:`Contract` and :guilabel:`Service` costs.
|
||||
|
||||
To view the total cost by vehicle, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon at
|
||||
the right of the search bar, revealing a drop-down menu. Click :guilabel:`Vehicle` in the
|
||||
:icon:`oi-group` :guilabel:`Group By` column, and the data is organized by vehicle.
|
||||
|
||||
This displays the true cost for each vehicle, including both the contract cost (such as the monthly
|
||||
vehicle lease cost) and all service costs, including all accidents. Hover over a column to reveal a
|
||||
data popover window, which displays the vehicle name and the total cost. This allows for a more
|
||||
complete view of the vehicle cost.
|
||||
|
||||
.. image:: accidents/total-costs.png
|
||||
:align: center
|
||||
:alt: The Cost Analysis report, displaying total costs by vehicle.
|
||||
|
||||
To view the individual cost details for both contract costs and repairs, click the
|
||||
:icon:`oi-view-pivot` :guilabel:`(Pivot)` icon in the top-right corner of the :guilabel:`Cost
|
||||
Analysis` dashboard. This displays each vehicle on a separate line, and displays the
|
||||
:guilabel:`Contract` cost and :guilabel:`Service` cost, as well as the :guilabel:`Total` cost.
|
||||
|
||||
.. image:: accidents/fleet-pivot.png
|
||||
:align: center
|
||||
:alt: The Cost Analysis report, displaying the contract and service costs separately, as well as
|
||||
the total.
|
||||
|
||||
.. note::
|
||||
The :icon:`oi-view-pivot` :guilabel:`(Pivot)` view organizes the data by vehicle, by default,
|
||||
therefore grouping the data by :guilabel:`Vehicle` is not required. If this filer is already
|
||||
activated, it does not affect the presented data.
|
||||
|
||||
Manage accident repairs
|
||||
=======================
|
||||
|
||||
For companies with multiple employees, who manage a large fleet of vehicles, displaying only service
|
||||
records in the :guilabel:`New` and :guilabel:`Running` stages can be time-saving, if there are a
|
||||
large number of records in the *Services* dashboard.
|
||||
|
||||
Navigate to :menuselection:`Fleet app --> Fleet --> Services`, where all service requests are
|
||||
organized by :guilabel:`Service Type`. Next, click the :icon:`fa-caret-down` :guilabel:`(down
|
||||
arrow)` icon at the right of the search bar, revealing a drop-down menu. Click :guilabel:`Add Custom
|
||||
Filter` in the :icon:`fa-filter` :guilabel:`Filters` column, and a :guilabel:`Add Custom Filter`
|
||||
pop-up window appears.
|
||||
|
||||
Three drop-down fields need to be configured on the pop-up window.
|
||||
|
||||
In the first field, scroll down, and select :guilabel:`Stage`.
|
||||
|
||||
Leave the second field set to :guilabel:`=`.
|
||||
|
||||
Select :guilabel:`Running` from the drop-down menu in the last field.
|
||||
|
||||
Next, click the :icon:`fa-plus` :guilabel:`(plus)` icon to the right of the last field, and an
|
||||
identical rule appears beneath the current rule.
|
||||
|
||||
Then, change :guilabel:`Running` to :guilabel:`New` in the third field of the second rule, leaving
|
||||
the other fields as-is.
|
||||
|
||||
Click the :guilabel:`Add` button at the bottom to add the new custom filter.
|
||||
|
||||
.. image:: accidents/custom-filters.png
|
||||
:align: center
|
||||
:alt: The filter settings to be added to only display new and running services.
|
||||
|
||||
This slight modification only presents services in the :guilabel:`New` and :guilabel:`Running`
|
||||
stages. This is a helpful report for a company managing a high number of repairs at any given time.
|
||||
|
||||
To have this report appear as the default report when opening the :guilabel:`Services` dashboard,
|
||||
click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon at the far-right of the search bar.
|
||||
Next, click :guilabel:`Save current search`, beneath the :icon:`fa-star` :guilabel:`Favorites`
|
||||
column, which reveals another drop-down column beneath it. Tick the checkbox beside
|
||||
:guilabel:`Default Filter`, then click :guilabel:`Save`. Then, this customized :guilabel:`Services`
|
||||
dashboard appears, by default, anytime the :guilabel:`Services` dashboard is accessed.
|
||||
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
@@ -12,111 +12,139 @@ scanned, it is associated to the **first** rule with a matching pattern. The pat
|
||||
described in Odoo's nomenclature list using a regular expression, and a barcode is successfully read
|
||||
by Odoo if its prefix and/or length matches the one defined in the barcode's rule.
|
||||
|
||||
Odoo *Barcode* supports UPC (Universal Product Code), EAN (European Article Number), and GS1
|
||||
encoding. The pre-configured nomenclatures in Odoo are *Default Nomenclature* and *Default GS1
|
||||
Nomenclature*. The default nomenclature uses |UPC| and |EAN| encoding, and supports |UPC|/|EAN|
|
||||
conversion.
|
||||
For instance, at a :doc:`Point of Sale <../../../sales/point_of_sale>` station, product weight
|
||||
barcodes in the European Article Number (EAN) format, which begin with `21` and have five digits
|
||||
specifying the weight, are used to weigh products and generate a barcode depicting the weight and
|
||||
price. The `21` and five-digit weight is the barcode pattern used to identify the barcode and can be
|
||||
customized to ensure Odoo correctly interprets all barcodes for the business.
|
||||
|
||||
.. note::
|
||||
Barcodes are also commonly used with Odoo's **Inventory** and **Barcode** apps.
|
||||
|
||||
Odoo **Barcode** supports |EAN|, Universal Product Code (UPC), and :doc:`GS1 <gs1_nomenclature>`
|
||||
formats. This document exclusively focuses on :ref:`default rules and patterns in Odoo
|
||||
<barcode/operations/default-nomenclature-list>`, which use |UPC| and |EAN| encoding.
|
||||
|
||||
.. important::
|
||||
|UPC| and |EAN| barcodes **must** be `purchased from GS1
|
||||
<https://www.gs1.org/standards/get-barcodes>`_ to use these barcodes. GS1 is the **only**
|
||||
official provider of |UPC|/|EAN| and GS1 |GTINs| in the world.
|
||||
To use |UPC| and |EAN| barcodes for uniquely identifying products across the entire supply chain,
|
||||
they **must** be `purchased from GS1 <https://www.gs1.org/standards/get-barcodes>`_.
|
||||
|
||||
.. _barcode/operations/set-up-nomenclature:
|
||||
In Odoo, custom barcode patterns can be defined to recognize barcodes specific to the company.
|
||||
Barcodes do not need to be purchased if used only within the company, such as in the
|
||||
:ref:`example <barcode/operations/product-weight>` where the barcode is written in the |EAN|
|
||||
format.
|
||||
|
||||
Set up barcode nomenclature
|
||||
===========================
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To use default nomenclature, navigate to :menuselection:`Inventory app --> Configuration -->
|
||||
Settings`. Under the :guilabel:`Barcode` section, click the checkbox next to :guilabel:`Barcode
|
||||
Scanner` to enable barcodes. Doing so installs the *Barcode* app in the database.
|
||||
Settings`. Under the :guilabel:`Barcode` section, tick the :guilabel:`Barcode Scanner` checkbox.
|
||||
Doing so installs the **Barcode** app in the database.
|
||||
|
||||
Next, ensure that the :guilabel:`Default Nomenclature` setting is selected in the :guilabel:`Barcode
|
||||
Nomenclature` field. Then, click :guilabel:`Save`.
|
||||
Next, in the :guilabel:`Barcode Nomenclature` field, ensure :guilabel:`Default Nomenclature` is
|
||||
selected. Then, click :guilabel:`Save`.
|
||||
|
||||
.. image:: barcode_nomenclature/barcode-nomenclature-enabled-setting.png
|
||||
.. image:: barcode_nomenclature/enable-nomenclature.png
|
||||
:align: center
|
||||
:alt: Enabled barcode setting with Default Nomenclature selected.
|
||||
|
||||
Once the nomenclature is saved and selected, the :menuselection:`Barcode Nomenclatures` settings can
|
||||
be accessed, via a hidden menu that is **only** discoverable after enabling :ref:`developer mode
|
||||
<developer-mode>`.
|
||||
With the **Barcode** module installed, and the :guilabel:`Default Nomenclature` selected, the
|
||||
barcode actions using |UPC| and |EAN|, detailed in the :ref:`default nomenclature list
|
||||
<barcode/operations/default-nomenclature-list>`, are available for use. And, by default, Odoo
|
||||
automatically handles |UPC|/|EAN| conversion.
|
||||
|
||||
Once developer mode is enabled, navigate to :menuselection:`Inventory app --> Configuration -->
|
||||
Barcode Nomenclatures` menu, and select :guilabel:`Default Nomenclature`.
|
||||
.. _barcode/operations/product-weight:
|
||||
|
||||
From this page, the :guilabel:`Barcode Nomenclature` is specified at the top as the `Default
|
||||
Nomenclature`.
|
||||
Example: product weight barcode
|
||||
===============================
|
||||
|
||||
Under that, the :guilabel:`UPC/EAN Conversion` field is set to :guilabel:`Always`, by default. This
|
||||
setting determines if a |UPC|/|EAN| barcode should be automatically converted one way or another
|
||||
when trying to match a rule with the other encoding.
|
||||
To better understand how barcode nomenclature is used to identify products in Odoo, this example
|
||||
where product weight barcodes in |EAN| format are used to allow a :doc:`Point of Sale
|
||||
<../../../sales/point_of_sale>` business to automatically print barcodes, and calculate the price
|
||||
using the weight of the item.
|
||||
|
||||
The other available options for this field are :guilabel:`Never`, :guilabel:`EAN-13 to UPC-A`, and
|
||||
:guilabel:`UPC-A to EAN-13`.
|
||||
To set up barcodes for weighted products, the following rule is used:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Rule Name
|
||||
- Barcode Pattern
|
||||
- Field in Odoo
|
||||
* - Weighted Barcodes 3 Decimals
|
||||
- (21)....{NNDDD}
|
||||
- :guilabel:`Barcode` field on product form
|
||||
|
||||
.. example::
|
||||
To better understand the barcode pattern for weighted products, consider the barcode,
|
||||
`2112345000008`:
|
||||
|
||||
- `21`: code that identifies this a barcode for weighted products.
|
||||
- `12345`: five digits (denoted by `.....` in the table above) that identify the product.
|
||||
- `00000`: five digits (denoted by `{NNDDD}` in the table) representing the weight of the
|
||||
product. On the product form, the five weight values **must** be `00000`. The first two digits
|
||||
are whole number values, and the last three digits are decimal values. For example, "13.5
|
||||
grams" in the `{NNDDD}` format is `13500`.
|
||||
- `8`: `check digit <https://www.gs1.org/services/check-digit-calculator>`_ for `211234500000`.
|
||||
|
||||
Together, these components make up a 13-character |EAN| - 13 barcode.
|
||||
|
||||
To configure the product barcode for `Pasta Bolognese`, the |EAN| barcode for weighted products,
|
||||
`2112345000008`, is entered in the :guilabel:`Barcode` field on the product form (accessible by
|
||||
going to :menuselection:`Inventory app --> Products --> Products`, and selecting the desired
|
||||
product). In addition, the :guilabel:`Unit of Measure` is set to :guilabel:`kg`.
|
||||
|
||||
.. image:: barcode_nomenclature/barcode.png
|
||||
:align: center
|
||||
:alt: Barcode field on the product form.
|
||||
|
||||
Next, a customer's bowl of pasta is weighed to be `1.5` kilograms. This generates a new barcode for
|
||||
the pasta, according to the weight: `211234501500`, which has a check digit of `2`. The new barcode
|
||||
is `2112345015002`.
|
||||
|
||||
.. image:: barcode_nomenclature/weighted-barcode.png
|
||||
:align: center
|
||||
:alt: Generated barcode that includes a weight of 1.5 kg.
|
||||
|
||||
Ensure the products scan properly, by navigating to the :menuselection:`Barcode app --> Operations`.
|
||||
Next, click any operation type, such as :guilabel:`Receipts`. Then, click the :guilabel:`New` button
|
||||
to create a draft stock move. Scan the product weight barcode, such as `2112345015002`, and if the
|
||||
intended product appears, the barcode setup is correct.
|
||||
|
||||
.. image:: barcode_nomenclature/barcode-scan.png
|
||||
:align: center
|
||||
:alt: Show successfully scanned barcode.
|
||||
|
||||
Create rules
|
||||
============
|
||||
|
||||
.. important::
|
||||
For |UPC|/|EAN| conversion to work for every barcode scanned, the setting in the
|
||||
:guilabel:`UPC/EAN Conversion` field **must** be set to :guilabel:`Always`.
|
||||
Adding new rules is necessary for |UPC| and |EAN| formats that are **not** in Odoo's default
|
||||
list, since barcodes cannot be read successfully if there are unknown fields.
|
||||
|
||||
The last field at the top of the page is the :guilabel:`Is GS1 Nomenclature` field. For the
|
||||
:guilabel:`Default Nomenclature`, this field should remain unchecked. This is because the
|
||||
:guilabel:`Default Nomenclature` uses |UPC| and |EAN| encoding, *not* GS1 encoding.
|
||||
While new rules can be created, Odoo fields do **not** auto-populate with information from these
|
||||
rules. `Custom development <https://www.odoo.com/appointment/132>`_ is required for this
|
||||
functionality.
|
||||
|
||||
.. image:: barcode_nomenclature/barcode-nomenclature-page-fields.png
|
||||
To create a rule, first enable :ref:`developer mode <developer-mode>`. Then, navigate to
|
||||
:menuselection:`Inventory app --> Configuration --> Barcode Nomenclatures`, and select
|
||||
:guilabel:`Default Nomenclature`.
|
||||
|
||||
On this page, configure the following optional fields:
|
||||
|
||||
- :guilabel:`UPC/EAN Conversion`: determines if a |UPC|/|EAN| barcode should be automatically
|
||||
converted when matching a rule with another encoding. Options include :guilabel:`Always` (the
|
||||
default option), :guilabel:`Never`, :guilabel:`EAN-13 to UPC-A`, and :guilabel:`UPC-A to EAN-13`.
|
||||
- :guilabel:`Is GS1 Nomenclature`: ensure this checkbox is **not** ticked, as the
|
||||
:guilabel:`Default Nomenclature` uses |UPC| and |EAN| encoding, *not* GS1 encoding.
|
||||
|
||||
.. image:: barcode_nomenclature/rule-config.png
|
||||
:align: center
|
||||
:alt: Default Nomenclature page setting fields.
|
||||
|
||||
Further down the page, there is a list showcasing the :guilabel:`Rule Name`, :guilabel:`Type`,
|
||||
:guilabel:`Encoding`, and :guilabel:`Barcode Pattern` for the *rules* and *barcode patterns* that
|
||||
Odoo supports for the default nomenclature.
|
||||
|
||||
The :ref:`default nomenclature list <barcode/operations/default-nomenclature-list>` contains all the
|
||||
information that can be condensed with a |UPC|/|EAN| barcode.
|
||||
|
||||
.. _barcode/operations/use-upc-ean-barcodes:
|
||||
|
||||
Use UPC/EAN barcodes in Odoo
|
||||
============================
|
||||
|
||||
For product identification using |UPC|/|EAN| barcodes in Odoo, businesses **must** obtain `barcodes
|
||||
<https://www.gs1us.org/upcs-barcodes-prefixes/how-to-get-a-upc-barcode>`_ purchased directly from
|
||||
GS1.
|
||||
|
||||
The |UPC| and |EAN| barcode formats are predominantly used in their own regions. |UPC| is used only
|
||||
in the United States and Canada, while |EAN| is used everywhere else globally.
|
||||
|
||||
A |UPC| is usually a 12-digit barcode used to identify most products, while |EAN| barcodes use
|
||||
13-digit barcodes to identify products.
|
||||
|
||||
|UPC| codes can be converted to |EAN| by prefixing them with a zero. In Odoo, by default,
|
||||
|UPC|/|EAN| barcodes are automatically converted one way or another when trying to match a rule with
|
||||
the other encoding.
|
||||
|
||||
Refer to the :ref:`default nomenclature list <barcode/operations/default-nomenclature-list>` to see
|
||||
a comprehensive list of all barcode patterns and rules to follow.
|
||||
|
||||
Create rules
|
||||
------------
|
||||
|
||||
|UPC| and |EAN| barcodes contain specific information in the barcode. Scanning these codes from the
|
||||
:ref:`default nomenclature list <barcode/operations/default-nomenclature-list>` automatically fills
|
||||
corresponding data in the Odoo database.
|
||||
|
||||
Adding new barcode rules to this list ensures that non-standard (:dfn:`user-created`) formats are
|
||||
interpreted accurately.
|
||||
|
||||
To create new rules, first activate :ref:`developer mode <developer-mode>`. Then, navigate to
|
||||
:menuselection:`Inventory app --> Configuration --> Barcode Nomenclatures`. Select the
|
||||
:guilabel:`Default Nomenclature` list item.
|
||||
|
||||
On the :guilabel:`Default Nomenclature` page, select :guilabel:`Add a line` at the bottom of the
|
||||
On the :guilabel:`Default Nomenclature` page, click :guilabel:`Add a line` at the bottom of the
|
||||
table, which opens a :guilabel:`Create Rules` pop-up window to create a new rule.
|
||||
|
||||
.. image:: barcode_nomenclature/barcode-nomenclature-new-rule-popup.png
|
||||
:align: center
|
||||
:alt: Create Rules pop-up window on Default Nomenclature page.
|
||||
|
||||
The :guilabel:`Rule Name` field is used internally to identify what the barcode represents.
|
||||
|
||||
The :guilabel:`Sequence` field represents the priority of the rule; meaning the smaller the value,
|
||||
@@ -126,31 +154,23 @@ The barcode :guilabel:`Type` field represents different classifications of infor
|
||||
understood by the system (e.g., :guilabel:`Package`, :guilabel:`Lot`, :guilabel:`Location`,
|
||||
:guilabel:`Coupon`, etc.).
|
||||
|
||||
The :guilabel:`Encoding` field specifies which encoding the barcode uses; this rule **only** applies
|
||||
The :guilabel:`Encoding` field specifies which encoding the barcode uses. This rule **only** applies
|
||||
if the barcode uses this specific encoding. The available :guilabel:`Encoding` options are:
|
||||
:guilabel:`EAN-13`, :guilabel:`EAN-8`, :guilabel:`UPC-A`, and :guilabel:`GS1-28`.
|
||||
|
||||
The :guilabel:`Barcode Pattern` field represents how the sequence of letters or numbers is
|
||||
recognized by the system to contain information about the product. Odoo follows the sequential order
|
||||
of this table, and uses the first rule it matches, based on the sequence.
|
||||
recognized by the system to contain information about the product. Sometimes, when a certain amount
|
||||
of digits are required, the number of `.` is shown. `N` represents whole number digits, and `D`
|
||||
represent decimal digits.
|
||||
|
||||
.. note::
|
||||
Barcode patterns can also define how numerical values, such as weight or price, are encoded in
|
||||
the barcode.
|
||||
|
||||
They are indicated by **{NNN}**, where `N` defines where the number's digits are encoded.
|
||||
*Floats* are also supported with the decimals, indicated by `D`, such as **{NNNDD}**.
|
||||
|
||||
In this case, the barcode field on the associated records **must** show these digits as zeros.
|
||||
.. example::
|
||||
`1...` represents any 4-digit number that starts with 1. `NNDD` represents a two digit number
|
||||
with two decimal points. For example, `14.25` is 1425.
|
||||
|
||||
After filling in the information, click the :guilabel:`Save & New` button to save the rule, and
|
||||
instantly start creating another rule. Or, click :guilabel:`Save & Close` to save the rule, and
|
||||
return to the table of rules.
|
||||
|
||||
.. tip::
|
||||
When the :guilabel:`Barcode Pattern` field contains `.*`, it means it can contain **any** number
|
||||
of characters - those characters being **any** number or type of character.
|
||||
|
||||
.. _barcode/operations/default-nomenclature-list:
|
||||
|
||||
Default nomenclature list
|
||||
@@ -212,5 +232,9 @@ written in regular expressions.
|
||||
- Any
|
||||
- .*
|
||||
|
||||
.. note::
|
||||
When the :guilabel:`Barcode Pattern` contains `.*`, it means it can contain any number or type of
|
||||
characters.
|
||||
|
||||
.. seealso::
|
||||
:doc:`gs1_nomenclature`
|
||||
|
||||
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
@@ -13,4 +13,5 @@ Advanced operations
|
||||
advanced_operations_warehouse/cross_dock
|
||||
advanced_operations_warehouse/stock_warehouses
|
||||
advanced_operations_warehouse/putaway
|
||||
advanced_operations_warehouse/storage_category
|
||||
advanced_operations_warehouse/cluster_picking
|
||||
|
||||
@@ -93,85 +93,3 @@ match is found:
|
||||
:align: center
|
||||
:alt: Some examples of putaway rules.
|
||||
|
||||
.. _inventory/warehouses_storage/storage-category:
|
||||
|
||||
Storage categories
|
||||
==================
|
||||
|
||||
A *storage category* is an extra location attribute. Storage categories allow the user to define
|
||||
the quantity of products that can be stored in the location, and how the location will be selected
|
||||
with putaway rules.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
To enable storage categories, go to :menuselection:`Inventory app --> Configuration --> Settings`,
|
||||
and activate the :guilabel:`Storage Categories` feature in the :guilabel:`Warehouse` section. Then,
|
||||
click :guilabel:`Save`.
|
||||
|
||||
.. important::
|
||||
The :guilabel:`Storage Locations` feature **must** be enabled to enable :guilabel:`Storage
|
||||
Categories`.
|
||||
|
||||
Define storage category
|
||||
-----------------------
|
||||
|
||||
To create a storage category, go to :menuselection:`Inventory app --> Configuration --> Storage
|
||||
Categories` and click :guilabel:`Create`.
|
||||
|
||||
On the storage category form, type a name for the :guilabel:`Storage Category` field.
|
||||
|
||||
Options are available to limit the capacity by weight, by product, or by package type. The
|
||||
:guilabel:`Allow New Product` field defines when the location is considered available to store a
|
||||
product:
|
||||
|
||||
- :guilabel:`If location is empty`: a product can be added there only if the location is empty.
|
||||
- :guilabel:`If products are the same`: a product can be added there only if the same product is
|
||||
already there.
|
||||
- :guilabel:`Allow mixed products`: several different products can be stored in this location at
|
||||
the same time.
|
||||
|
||||
.. example::
|
||||
Create putaway rules for pallet-stored items and ensure real-time storage capacity checks by
|
||||
creating the `High Frequency pallets` storage category.
|
||||
|
||||
Name the :guilabel:`Storage Category`, and select :guilabel:`If all products are same` in the
|
||||
:guilabel:`Allow New Product` field.
|
||||
|
||||
Then, define package capacity in the :guilabel:`Capacity by Package` tab, specifying the number
|
||||
of packages for the designated :guilabel:`Package Type` and setting a maximum of `2.00` `Pallets`
|
||||
for a specific location.
|
||||
|
||||
.. image:: putaway/storage-category.png
|
||||
:align: center
|
||||
:alt: Create a storage category on the page.
|
||||
|
||||
Once the storage category settings are saved, the storage category can be linked to a location.
|
||||
|
||||
To do that, navigate to the location by going to :menuselection:`Inventory app --> Configuration -->
|
||||
Locations`, and select the location. Click :guilabel:`Edit` and select the created category in the
|
||||
:guilabel:`Storage Category` field.
|
||||
|
||||
.. example::
|
||||
Assign the `High Frequency pallets` storage category to the `WH/Stock/pallets/PAL 1`
|
||||
sub-location.
|
||||
|
||||
.. image:: putaway/location-storage-category.png
|
||||
:align: center
|
||||
:alt: When a Storage Category is created, it can be linked to a warehouse location.
|
||||
|
||||
Storage categories in putaway rules
|
||||
-----------------------------------
|
||||
|
||||
To continue the example from above, apply the `High Frequency Pallets` on the `PAL1` and `PAL2`
|
||||
locations and :ref:`rework the putaway rules <inventory/routes/putaway-rule>` as follows:
|
||||
|
||||
Assume one pallet of lemonade cans is received:
|
||||
|
||||
- If PAL1 and PAL2 are empty, the pallet will be redirected to WH/Stock/Pallets/PAL1.
|
||||
- If PAL1 is full, the pallet will be redirected to WH/Stock/Pallets/PAL2.
|
||||
- If PAL1 and 2 are full, the pallet will be redirected to WH/Stock/Pallets.
|
||||
|
||||
.. image:: putaway/smart-putaways.png
|
||||
:align: center
|
||||
:alt: Storage Categories used in a variety of putaway rules.
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
==================
|
||||
Storage categories
|
||||
==================
|
||||
|
||||
A *storage category* is used with :doc:`putaway rules <putaway>`, as an extra location attribute to
|
||||
automatically propose optimal storage locations for products.
|
||||
|
||||
Follow these steps to complete the setup:
|
||||
|
||||
#. :ref:`Enable the Storage Category feature <inventory/routes/enable-storage-categories>`
|
||||
#. :ref:`Define a storage category <inventory/routes/define-storage>` with specific limitations
|
||||
#. Assign a :ref:`category to storage locations <inventory/routes/assign-location>`
|
||||
#. Add the storage category as an attribute to a :ref:`putaway rule
|
||||
<inventory/routes/set-putaway-attribute>`
|
||||
|
||||
.. seealso::
|
||||
:doc:`putaway`
|
||||
|
||||
.. note::
|
||||
Assigning categories to storage locations tells Odoo these locations meet specific
|
||||
requirements, such as temperature or accessibility. Odoo then evaluates these locations, based on
|
||||
defined capacity, and recommends the best one on the warehouse transfer form.
|
||||
.. _inventory/routes/enable-storage-categories:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To enable storage categories, go to :menuselection:`Inventory app --> Configuration --> Settings`.
|
||||
Then, in the :guilabel:`Warehouse` section, ensure the :guilabel:`Storage Locations` and
|
||||
:guilabel:`Multi-Step Routes` features are enabled.
|
||||
|
||||
Next, activate the :guilabel:`Storage Categories` feature. Finally, click :guilabel:`Save`.
|
||||
|
||||
.. image:: storage_category/enable-categories.png
|
||||
:align: center
|
||||
:alt: Show the Storage Categories feature.
|
||||
|
||||
.. _inventory/routes/define-storage:
|
||||
|
||||
Define storage category
|
||||
=======================
|
||||
|
||||
A storage category with specific limitations **must** be created first, before it is applied to
|
||||
locations, in order to decide the optimal storage location.
|
||||
|
||||
To create a storage category, go to :menuselection:`Inventory app --> Configuration --> Storage
|
||||
Categories`, and click :guilabel:`Create`.
|
||||
|
||||
On the storage category form, type a name for the category in the :guilabel:`Storage Category`
|
||||
field.
|
||||
|
||||
Options are available to limit capacity by weight, product, and package type.
|
||||
|
||||
.. note::
|
||||
Weight limits can be combined with capacity by package or product (e.g. a maximum of one hundred
|
||||
products with a total weight of two hundred kilograms).
|
||||
|
||||
While it is possible to limit capacity by product and package type at the same location, it may
|
||||
be more practical to store items in different amounts across various locations, as shown in this
|
||||
example of :ref:`capacity by package <inventory/routes/set-capacity-package>`.
|
||||
|
||||
The :guilabel:`Allow New Product` field defines when the location is considered available to store a
|
||||
product:
|
||||
|
||||
- :guilabel:`If location is empty`: a product can be added there only if the location is empty.
|
||||
- :guilabel:`If products are the same`: a product can be added there only if the same product is
|
||||
already there.
|
||||
- :guilabel:`Allow mixed products`: several different products can be stored in this location at
|
||||
the same time.
|
||||
|
||||
.. tip::
|
||||
When clicked, the :guilabel:`Location` smart button shows which storage locations the category
|
||||
has been assigned to.
|
||||
|
||||
Capacity by weight
|
||||
------------------
|
||||
|
||||
On a storage category form (:menuselection:`Inventory app --> Configuration --> Storage
|
||||
Categories`), set a maximum product weight in the :guilabel:`Max Weight` field. This limit applies
|
||||
to each location assigned this storage category.
|
||||
|
||||
Capacity by product
|
||||
-------------------
|
||||
|
||||
In the :guilabel:`Capacity by Product` tab, click :guilabel:`Add a Line` to input items, and enter
|
||||
their capacities in the :guilabel:`Quantity` field.
|
||||
|
||||
.. example::
|
||||
Ensure only a maximum of five `Large Cabinets` and two `Corner Desk Right Sit` are stored at a
|
||||
single storage location, by specifying those amounts in the :guilabel:`Capacity by Product` tab
|
||||
of a storage category form.
|
||||
|
||||
.. image:: storage_category/capacity-by-product.png
|
||||
:align: center
|
||||
:alt: Show storage category limiting by product count.
|
||||
|
||||
.. _inventory/routes/set-capacity-package:
|
||||
|
||||
Capacity by package
|
||||
-------------------
|
||||
|
||||
For companies using :doc:`packages <../../product_management/product_tracking/package>`, it becomes
|
||||
possible to ensure real-time storage capacity checks, based on package types (e.g., crates, bins,
|
||||
boxes, etc.).
|
||||
|
||||
.. important::
|
||||
Enable the :guilabel:`Packages` feature in :menuselection:`Inventory app --> Configuration -->
|
||||
Settings` to show the :guilabel:`Capacity by Package` tab.
|
||||
|
||||
.. example::
|
||||
Create putaway rules for pallet-stored items, by creating the `High Frequency pallets` storage
|
||||
category.
|
||||
|
||||
In the :guilabel:`Capacity by Package` tab, specify the number of packages for the designated
|
||||
:guilabel:`Package Type`, and set a maximum of `2.00` `Pallets` for a specific location.
|
||||
|
||||
.. image:: storage_category/storage-category.png
|
||||
:align: center
|
||||
:alt: Create a storage category on the page.
|
||||
|
||||
.. _inventory/routes/assign-location:
|
||||
|
||||
Assign to location
|
||||
==================
|
||||
|
||||
Once the storage category is created, assign it to a location. Navigate to the location by going to
|
||||
:menuselection:`Inventory app --> Configuration --> Locations`, and select the desired location.
|
||||
Then, select the created category in the :guilabel:`Storage Category` field.
|
||||
|
||||
.. example::
|
||||
Assign the `High Frequency pallets` storage category (which limits pallets stored at any location
|
||||
to two pallets) to the `WH/Stock/pallets/PAL 1` sub-location.
|
||||
|
||||
.. image:: storage_category/location-storage-category.png
|
||||
:align: center
|
||||
:alt: When a Storage Category is created, it can be linked to a warehouse location.
|
||||
|
||||
.. _inventory/routes/set-putaway-attribute:
|
||||
|
||||
Putaway rule
|
||||
============
|
||||
|
||||
With the :ref:`storage category <inventory/routes/define-storage>` and :ref:`location
|
||||
<inventory/routes/assign-location>` set up, create the :doc:`putaway rule <putaway>` by navigating
|
||||
to :menuselection:`Inventory app --> Configuration --> Putaway Rules`.
|
||||
|
||||
Click the :guilabel:`Create` button to create the putaway rule. In the :guilabel:`Having Category`
|
||||
field of the new putaway rule form, select the storage category.
|
||||
|
||||
.. example::
|
||||
Continuing the example from above, the `High Frequency Pallets` storage category is assigned to
|
||||
the putaway rule directing pallets of lemonade to locations with the `High Frequency Pallets`
|
||||
storage category :ref:`assigned to them <inventory/routes/assign-location>`.
|
||||
|
||||
.. image:: storage_category/smart-putaways.png
|
||||
:align: center
|
||||
:alt: Storage Categories used in a variety of putaway rules.
|
||||
|
||||
Use case: limit capacity by package
|
||||
===================================
|
||||
|
||||
To limit the capacity of a storage location by a specific number of packages, :ref:`create a storage
|
||||
category with a Capacity By Package <inventory/routes/set-capacity-package>`.
|
||||
|
||||
Continuing the example from above, the `High Frequency Pallets` storage category is assigned to the
|
||||
`PAL1` and `PAL2` locations.
|
||||
|
||||
Then, :ref:`putaway rules <inventory/routes/putaway-rule>` are set, so that any pallets received in
|
||||
the warehouse are directed to be stored in `PAL1` and `PAL2` locations.
|
||||
|
||||
Depending on the number of pallets on-hand at each of the storage locations, when one pallet of
|
||||
lemonade cans is received, the following scenarios happen:
|
||||
|
||||
- If `PAL1` and `PAL2` are empty, the pallet is redirected to `WH/Stock/Pallets/PAL1`.
|
||||
- If `PAL1` is full, the pallet is redirected to `WH/Stock/Pallets/PAL2`.
|
||||
- If `PAL1` and `PAL2` are full, the pallet is redirected to `WH/Stock/Pallets`.
|
||||
|
||||
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 11 KiB |
@@ -52,9 +52,9 @@ location serves its intended purpose in the database:
|
||||
:guilabel:`Inventory Loss`, :guilabel:`Production`, or :guilabel:`Transit Location` to categorize
|
||||
the location. For details on each location type, refer to the :ref:`Location Types section
|
||||
<inventory/warehouses_storage/location-type>`.
|
||||
- :guilabel:`Storage Category`: only available with the :ref:`Storage Categories
|
||||
<inventory/warehouses_storage/storage-category>` feature enabled in :menuselection:`Inventory app
|
||||
--> Configuration --> Settings`.
|
||||
- :guilabel:`Storage Category`: only available with the :doc:`Storage Categories
|
||||
<../advanced_operations_warehouse/storage_category>` feature enabled in :menuselection:`Inventory
|
||||
app --> Configuration --> Settings`.
|
||||
- :guilabel:`Company`: the company the location belongs to.
|
||||
- :guilabel:`Is a Scrap Location?`: tick this checkbox to allow for scrapped/damaged goods to be
|
||||
stored in this location.
|
||||
|
||||
@@ -214,3 +214,5 @@ event-creation process.
|
||||
events/event_templates
|
||||
events/event_booths
|
||||
events/event_tracks
|
||||
events/registration_desk
|
||||
events/revenues_report
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
=================
|
||||
Registration Desk
|
||||
=================
|
||||
|
||||
Use the *Registration Desk* feature in Odoo **Events** to grant access to registered event attendees
|
||||
as they arrive, and store attendee-related data in the reporting metrics.
|
||||
|
||||
Registration Desk page
|
||||
======================
|
||||
|
||||
On a mobile device (on the Odoo app or in a browser), open the :menuselection:`Events app`, and
|
||||
click the :guilabel:`Registration Desk` to view the :guilabel:`Registration Desk` page.
|
||||
|
||||
.. image:: registration_desk/registration-desk-page.png
|
||||
:align: center
|
||||
:alt: The Registration Desk page in the Odoo Events application.
|
||||
|
||||
At the bottom of the :guilabel:`Registration Desk` box, there are options to either :guilabel:`Scan
|
||||
a badge` or :guilabel:`Select Attendee`.
|
||||
|
||||
Scan a badge
|
||||
============
|
||||
|
||||
Scan the codes present on event attendee badges, by navigating to :menuselection:`Events app -->
|
||||
Registration Desk`, and selecting the :guilabel:`Scan a badge` option.
|
||||
|
||||
.. important::
|
||||
Odoo **must** be granted access to the camera being used for the :guilabel:`Scan a badge` option
|
||||
to work.
|
||||
|
||||
Once Odoo has access to the camera, a :guilabel:`Barcode Scanner` pop-up window appears, showing the
|
||||
camera's point-of-view. There is also a specified view finder box present, whose size can be
|
||||
manually modified, accordingly, using the :icon:`fa-crop` :guilabel:`(crop)` icon.
|
||||
|
||||
.. image:: registration_desk/barcode-scanner-window.png
|
||||
:align: center
|
||||
:alt: The Barcode Scanner window of the Registration Desk in the Odoo Events application.
|
||||
|
||||
When the badge code is in the middle of the view finder box, the code is scanned, the
|
||||
:guilabel:`Barcode Scanner` pop-up window disappears, and the attendee is granted access to the
|
||||
event. Once the code is scanned, their attendance is logged in the Odoo **Events** app.
|
||||
|
||||
If the barcode being scanned is invalid, an error pop-up message appears in the upper-right corner.
|
||||
|
||||
Select attendee
|
||||
===============
|
||||
|
||||
Manually grant access to event attendees, by navigating to :menuselection:`Events app -->
|
||||
Registration Desk`, and selecting the :guilabel:`Select Attendee` option.
|
||||
|
||||
Odoo reveals an :guilabel:`Attendees` page, with all the attendees for every event in the database,
|
||||
in a default :icon:`oi-view-kanban` :guilabel:`Kanban` view.
|
||||
|
||||
.. image:: registration_desk/attendees-page.png
|
||||
:align: center
|
||||
:alt: The Attendees page, via the Registration Desk, located in the Odoo Events application.
|
||||
|
||||
On the :guilabel:`Attendees` page, each attendee card displays that person's name, which event they
|
||||
are registered to attend, their associated company (if applicable), what ticket tier they purchased
|
||||
(if applicable), along with two buttons: a :icon:`fa-check` :guilabel:`(checkmark)` and
|
||||
:icon:`fa-undo` :guilabel:`(counter-clockwise arrow)`.
|
||||
|
||||
To grant access to a person, marking them as attended, click the :icon:`fa-check`
|
||||
:guilabel:`(checkmark)` button on that attendee's card.
|
||||
|
||||
Click the :icon:`fa-undo` :guilabel:`(counter-clockwise arrow)` button on an attendee's card to undo
|
||||
the previous action.
|
||||
|
||||
.. tip::
|
||||
It is recommended to use an event-specific filter on the :guilabel:`Attendees` page, via the
|
||||
search bar drop-down menu.
|
||||
|
||||
To do that, click the :icon:`fa-sort-desc` :guilabel:`(down arrow)` beside the seach bar to
|
||||
reveal a drop-down menu with :guilabel:`Filters`, :guilabel:`Group By`, and :guilabel:`Favorites`
|
||||
options.
|
||||
|
||||
For example, click the :guilabel:`Event` option, in the :guilabel:`Group By` column. Then, click
|
||||
away to remove the drop-down menu. Odoo reveals the :guilabel:`Attendees` page with
|
||||
event-specific columns, allowing users to locate specific event attendees.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../essentials/search`
|
||||
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 97 KiB |
|
After Width: | Height: | Size: 26 KiB |
@@ -0,0 +1,191 @@
|
||||
===============
|
||||
Revenues report
|
||||
===============
|
||||
|
||||
The Odoo **Events** application creates custom reports, based on event-related data and analytics.
|
||||
These reports can either be focused on *Attendees* or *Revenues*.
|
||||
|
||||
The following documentation focuses on the reporting options related to event *Revenues*.
|
||||
|
||||
Revenues reporting page
|
||||
=======================
|
||||
|
||||
To access the *Attendees* reporting page, navigate to :menuselection:`Events app --> Reporting -->
|
||||
Revenues`.
|
||||
|
||||
.. image:: revenues_report/default-view.png
|
||||
:align: center
|
||||
:alt: The default view of the Revenues reporting page in the Odoo Events application.
|
||||
|
||||
By default, the :guilabel:`Revenues` reporting page appears as a graph (a :icon:`fa-line-chart`
|
||||
:guilabel:`(Line Chart)` with :icon:`fa-database` :guilabel:`(Stacked)` data). The default filters,
|
||||
:guilabel:`Non-free tickets` and :guilabel:`Event Start Date: (current year)`, are present in the
|
||||
search bar.
|
||||
|
||||
.. tip::
|
||||
To learn more about the various graph views (and graph view options), refer to the :ref:`Graph
|
||||
views <reporting/using-graph>` documentation.
|
||||
|
||||
The :guilabel:`Revenues` reporting page can also be viewed as a :ref:`pivot table
|
||||
<reporting/views/pivot>`, by clicking the :icon:`oi-view-pivot` :guilabel:`(Pivot)` icon in the
|
||||
upper-right corner.
|
||||
|
||||
Measures
|
||||
--------
|
||||
|
||||
Choosing specific :ref:`Measures <reporting/choosing-measures>` is a quick way to customize
|
||||
reporting pages.
|
||||
|
||||
Regardless of the chosen view, the measures on the :guilabel:`Revenues` reporting page are as
|
||||
follows: :guilabel:`Revenues`, :guilabel:`Untaxed Revenues`, and :guilabel:`Count`.
|
||||
|
||||
.. note::
|
||||
In the default graph view of the :guilabel:`Revenues` reporting page, only the
|
||||
:guilabel:`Revenues` option is set in the :guilabel:`Measures` drop-down menu.
|
||||
|
||||
In graph view, only one of the :guilabel:`Measures` can be selected at a time.
|
||||
|
||||
When the pivot option is selected, all :guilabel:`Measures` options are selected, by default.
|
||||
|
||||
- :guilabel:`Revenues`: shows the revenues generated from events.
|
||||
- :guilabel:`Untaxed Revenues`: shows the untaxed revenues generated from events.
|
||||
- :guilabel:`Count`: shows the total amount of registrants who attended events.
|
||||
|
||||
Filters and grouping options
|
||||
----------------------------
|
||||
|
||||
To reveal a drop-down menu of filter and grouping options to create custom reports, click the
|
||||
:icon:`fa-caret-down` :guilabel:`(down arrow)` to the right of the search bar.
|
||||
|
||||
Doing so opens a drop-down mega menu of options organized into columns: :ref:`Filters
|
||||
<search/preconfigured-filters>`, :ref:`Group By <search/group>`, and :ref:`Favorites
|
||||
<search/favorites>`.
|
||||
|
||||
.. note::
|
||||
If a time-related option has been selected from the :guilabel:`Filters` column (e.g. the default
|
||||
:guilabel:`Event Start Date: (year)` filter), a :guilabel:`Comparison` column appears, with
|
||||
comparison options for the corresponding time-related filter option selected.
|
||||
|
||||
Only **one** selection can be made from the :guilabel:`Comparison` column at a time.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../essentials/search`
|
||||
|
||||
Filter options
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
In the :guilabel:`Filters` column of the drop-down mega menu, there are various event-related
|
||||
options that can be utilized to create custom reports, based on a number of specific criteria.
|
||||
|
||||
Multiple options in the :guilabel:`Filters` column can be selected at once.
|
||||
|
||||
The :guilabel:`Filters` column has the following options:
|
||||
|
||||
- :guilabel:`Non-free tickets`: event tickets/registrations that were **not** free.
|
||||
- :guilabel:`Free`: event tickets/registrations that *were* free.
|
||||
- :guilabel:`Pending payment`: event tickets/registrations that were purchased, but still have
|
||||
payment pending.
|
||||
- :guilabel:`Sold`: event tickets/registrations that have been successfully sold (and paid for).
|
||||
- :guilabel:`Registration Date`: Click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon to
|
||||
reveal a list of month, quarter, and year options. Select any number of these options to view a
|
||||
specific periods of time and see how many registrations happened during that time.
|
||||
- :guilabel:`Upcoming/Running`: include revenue-related information for events that are either
|
||||
currently running or are going to happen in the future.
|
||||
- :guilabel:`Past Events`: include revenue-related information for events that have already taken
|
||||
place.
|
||||
- :guilabel:`Event Start Date`: Click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon to
|
||||
reveal a list of month, quarter, and year options. Select any number of these options to designate
|
||||
event start dates to use as filters for revenue-related event data.
|
||||
- :guilabel:`Event End Date`: Click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon to
|
||||
reveal a list of month, quarter, and year options. Select any number of these options to designate
|
||||
event end dates to use as filters for revenue-related event data.
|
||||
- :guilabel:`Published Events`: Select this option to show revenue-related data for published
|
||||
events.
|
||||
- :guilabel:`Add Custom Filter`: Create a custom filter to analyze event-related revenue data. To
|
||||
learn more, refer to the documentation on :ref:`custom filters <search/custom-filters>`.
|
||||
|
||||
Group By options
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
In the :guilabel:`Group By` column of the drop-down mega menu, there are various event-related
|
||||
options to create custom groupings of data.
|
||||
|
||||
Multiple :guilabel:`Group By` options can be selected at once.
|
||||
|
||||
The :guilabel:`Group By` column has the following options:
|
||||
|
||||
- :guilabel:`Event Type`: Group data based on the type of event.
|
||||
- :guilabel:`Event`: Organize data into individual groups, separated by events.
|
||||
- :guilabel:`Product`: Group data based on the event registration product.
|
||||
- :guilabel:`Ticket`: Group data based on the type of event ticket purchased by attendees.
|
||||
- :guilabel:`Registration Status`: Group data based on the status of registrations.
|
||||
- :guilabel:`Sale Order Status`: Group data based on the status of event-related sales orders.
|
||||
- :guilabel:`Customer`: Group data based on customer records.
|
||||
- :guilabel:`Add Custom Group`: Click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon to
|
||||
reveal a drop-down of grouping options. To select one, click on the desired option, and Odoo adds
|
||||
it to the :guilabel:`Group By` column. Multiple selections can be made.
|
||||
|
||||
Sample report: event ticket analysis (graph)
|
||||
============================================
|
||||
|
||||
The following is an example of how various filters and grouping options can create a useful analytic
|
||||
graph report related to event revenues. In this case, the configurations present data about sold or
|
||||
free tickets to published events, with the metrics separated by ticket type and event.
|
||||
|
||||
.. image:: revenues_report/event-ticket-analysis.png
|
||||
:align: center
|
||||
:alt: The event ticket analysis sample report with unique filters and groupings in place.
|
||||
|
||||
To create such a report, navigate to :menuselection:`Events app --> Reporting --> Revenues`. Stay in
|
||||
the default graph view, but remove the default filters from the search bar.
|
||||
|
||||
Then, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` to the right of the search bar, to
|
||||
reveal the drop-down mega menu of filter and grouping options.
|
||||
|
||||
From here, select :guilabel:`Free` and :guilabel:`Sold` from the :guilabel:`Filters` column.
|
||||
|
||||
Then, since it is desired to **only** view data related to already published events, select the
|
||||
:guilabel:`Published Events` option in the :guilabel:`Filters` column, as well.
|
||||
|
||||
Next, in the :guilabel:`Group By` column, select the :guilabel:`Event` and :guilabel:`Ticket`
|
||||
options, **in that sequential order**. Doing so first groups the data by event, *then* by ticket
|
||||
type, which provides a more useful array of data to analyze.
|
||||
|
||||
.. important::
|
||||
The order in which the options are selected in the :guilabel:`Group By` column directly affects
|
||||
how the data is presented on the report.
|
||||
|
||||
From there, additional configurations can be added for more detailed data, if desired.
|
||||
|
||||
If no additional filters or groupings are added, Odoo presents a graphical representation of data
|
||||
related to all *free* or *sold* tickets for *published events*, grouped by *event*, and organized by
|
||||
*ticket* type.
|
||||
|
||||
Sample report: event type analysis (pivot table)
|
||||
================================================
|
||||
|
||||
The following is an example of how various filters and grouping options can create a useful analytic
|
||||
pivot table report related to event revenues. In this case, the configurations present data about
|
||||
how much revenue different event types have generated, in order to gauge which events are the most
|
||||
profitable.
|
||||
|
||||
.. image:: revenues_report/event-type-analysis.png
|
||||
:align: center
|
||||
:alt: The event type analysis sample report with unique filters and groupings in place.
|
||||
|
||||
First, navigate to :menuselection:`Events app --> Reporting --> Revenues`, and switch to the pivot
|
||||
table view, by clicking the :icon:`oi-view-pivot` :guilabel:`(Pivot)` icon in the upper-right
|
||||
corner.
|
||||
|
||||
Keep the default filters (:guilabel:`Non-free tickets` and :guilabel:`Event Start Date: (year)`) in
|
||||
the search bar.
|
||||
|
||||
Next, open the :guilabel:`Measures` drop-down menu, and deselect the option for :guilabel:`Count`,
|
||||
because this report is only going to focus on revenues.
|
||||
|
||||
Then, click :icon:`fa-plus-square` :guilabel:`Total` above the column titles, and select
|
||||
:guilabel:`Event Type` from the resulting drop-down menu.
|
||||
|
||||
With these configurations in place, all the revenues generated from the events (and their
|
||||
corresponding registrations) are displayed, organized by the event type (presented as expandable
|
||||
columns).
|
||||
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 34 KiB |
@@ -353,6 +353,49 @@ discount for each product line and the new price will automatically be calculate
|
||||
Positive values for :guilabel:`Disc.%` will apply a *discount*, while negative values can be
|
||||
used to *increase* the price.
|
||||
|
||||
Discount button
|
||||
---------------
|
||||
|
||||
In Odoo 17, with the :ref:`Discounts setting <sales/discounts>` enabled, a :guilabel:`Discount`
|
||||
button appears at the bottom of sales orders.
|
||||
|
||||
.. image:: pricing/discount-button-sales-order.png
|
||||
:align: center
|
||||
:alt: The discount button located at the bottom of a sales order form in the Odoo Sales app.
|
||||
|
||||
When the :guilabel:`Discount` button on a sales order is clicked, a :guilabel:`Discount` pop-up
|
||||
window appears.
|
||||
|
||||
On this pop-up window, configure the :guilabel:`Discount` percentage, and select one of the
|
||||
following discount options: :guilabel:`On All Order Lines`, :guilabel:`Global Discount`, or
|
||||
:guilabel:`Fixed Amount`.
|
||||
|
||||
- :guilabel:`On All Order Lines`: When selected, Odoo provides the ability to add the specified
|
||||
discount percentage (configured in the :guilabel:`Discount` field of the pop-up window) on all
|
||||
existing order lines of the sales order.
|
||||
- :guilabel:`Global Discount`: When selected, Odoo adds a discount product to the order, which has
|
||||
the cumulative value equivalent to the specified discount percentage (configured in the
|
||||
:guilabel:`Discount` field of the pop-up window). Any product added (or removed) *after* the
|
||||
discount is added does **not** affect the discount value on the order line.
|
||||
|
||||
.. example::
|
||||
In this example, since the total of the order is $600, and there is a 30% global discount, that
|
||||
specific line is added to the sales order with a -180 value (which is 30% of $600).
|
||||
|
||||
.. image:: pricing/global-discount-option-so.png
|
||||
:align: center
|
||||
:alt: The sales order with the applied global discount option in the Odoo Sales application.
|
||||
|
||||
- :guilabel:`Fixed Amount`: When selected, the percentage designation in the :guilabel:`Discount`
|
||||
field turns to a monetary value (e.g. dollars), wherein a specific amount must be entered. This
|
||||
configured value is added as a discount line on the sales order.
|
||||
|
||||
.. note::
|
||||
It is more beneficial to add a :guilabel:`Fixed Amount` discount after **all** desired products
|
||||
have been added to a sales order. If there are changes made to the sales order *after* the
|
||||
discount is added, make sure to change the value on the :guilabel:`Discount` line, or remove the
|
||||
line and add the discount again.
|
||||
|
||||
.. _sales/advanced-price-rules:
|
||||
|
||||
Advanced price rules
|
||||
|
||||
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 15 KiB |
@@ -7,6 +7,7 @@ Send Quotations
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
send_quotations/create_quotations
|
||||
send_quotations/quote_template
|
||||
send_quotations/optional_products
|
||||
send_quotations/get_signature_to_validate
|
||||
|
||||
@@ -0,0 +1,331 @@
|
||||
=================
|
||||
Create quotations
|
||||
=================
|
||||
|
||||
In Odoo **Sales**, quotations can be created and sent to customers. Once a quotation has been
|
||||
confirmed, it officially turns into a *sales order*, which can then be invoiced and paid for.
|
||||
|
||||
.. _sales/quotation-settings:
|
||||
|
||||
Quotation settings
|
||||
==================
|
||||
|
||||
To access these setting options, navigate to :menuselection:`Sales app --> Configuration -->
|
||||
Settings`, and scroll to the :guilabel:`Quotations & Orders` section.
|
||||
|
||||
.. image:: create_quotations/quotations-orders-section.png
|
||||
:align: center
|
||||
:alt: The Quotations and Orders section on the Odoo Sales app Settings page.
|
||||
|
||||
- :guilabel:`Quotation Templates`: Enable this option to create quotation templates featuring
|
||||
standard product offers, which are then selectable on quotation forms. When this checkbox is
|
||||
ticked, an additional field, :guilabel:`Default Template`, appears, along with a link to the
|
||||
:guilabel:`Quotation Templates` page.
|
||||
- :guilabel:`Online Signature`: Request an online signature to confirm orders.
|
||||
- :guilabel:`Online Payment`: Request an online prepayment from customers to confirm orders. Request
|
||||
a full or partial payment (via down payment). When this checkbox is ticked, an additional field,
|
||||
:guilabel:`Prepayment amount (%)`, appears. There is also a link to the :guilabel:`Payment
|
||||
Providers` page.
|
||||
- :guilabel:`Default Quotation Validity`: Determine a set amount (in :guilabel:`days`) that
|
||||
quotations can remain valid for.
|
||||
- :guilabel:`Default Recurrence`: Select a default period from the drop-down menu to use as a
|
||||
recurrence period for a new quotation.
|
||||
- :guilabel:`Sale Warnings`: Get warning messages about orders that include specific products or
|
||||
customers.
|
||||
- :guilabel:`PDF Quote builder`: Customize the look of quotations with header pages, product
|
||||
descriptions, footer pages, and more.
|
||||
- :guilabel:`Lock Confirmed Sales`: Ensure no further edits can be made to confirmed orders.
|
||||
- :guilabel:`Pro-Forma Invoice`: Send pro-forma invoices to customers.
|
||||
|
||||
To activate any of these settings, tick the checkbox beside the desired option(s). Then, click
|
||||
:guilabel:`Save`.
|
||||
|
||||
Quotations dashboard
|
||||
====================
|
||||
|
||||
The *Quotations* dashboard is the page that appears when the :menuselection:`Sales app` is opened.
|
||||
|
||||
By default, the :guilabel:`Quotations` dashboard displays all quotations in the database related to
|
||||
the current user, as indicated by the default :guilabel:`My Quotations` filter present in the search
|
||||
bar.
|
||||
|
||||
.. image:: create_quotations/quotations-dashboard.png
|
||||
:align: center
|
||||
:alt: The Quotations dashboard present in the Odoo Sales application.
|
||||
|
||||
.. note::
|
||||
To view *all* quotations in the database, remove the :guilabel:`My Quotations` filter from the
|
||||
search bar.
|
||||
|
||||
Quotations on this page appear in a default list view, but can also be viewed in a
|
||||
:icon:`oi-view-kanban` :guilabel:`Kanban` view, :icon:`fa-calendar` :guilabel:`Calendar`,
|
||||
:icon:`oi-view-pivot` :guilabel:`Pivot` table, :icon:`fa-area-chart` :guilabel:`Graph`, or
|
||||
:icon:`fa-clock-o` :guilabel:`Activity` view.
|
||||
|
||||
To view and/or modify any listed quotation from the :guilabel:`Quotations` dashboard, click on the
|
||||
desired quotation line from the list, and Odoo reveals the specific form for that selected
|
||||
quotation.
|
||||
|
||||
Create quotation
|
||||
================
|
||||
|
||||
To create a quotation, open the :menuselection:`Sales app`, and click the :guilabel:`New` button,
|
||||
located in the upper-left corner of the main :guilabel:`Quotations` dashboard.
|
||||
|
||||
.. important::
|
||||
The :guilabel:`New` button is **only** present if the :guilabel:`Quotations` dashboard is in list
|
||||
or Kanban view.
|
||||
|
||||
Clicking the :guilabel:`New` button reveals a blank quotation form, with various fields and tabs to
|
||||
configure.
|
||||
|
||||
.. image:: create_quotations/quotation-form.png
|
||||
:align: center
|
||||
:alt: A typical quotation form in the Odoo Sales application.
|
||||
|
||||
Begin by entering the customer's name in the :guilabel:`Customer` field at the top of the form. This
|
||||
is a **required** field.
|
||||
|
||||
If the customer's information is already in the database, the :guilabel:`Invoice Address` and
|
||||
:guilabel:`Delivery Address` fields auto-populate with the saved information for those respective
|
||||
fields, based on the data from that customer's contact record (found in the **Contacts**
|
||||
application).
|
||||
|
||||
If the customer was referred by another customer or contact, enter their name in the
|
||||
:guilabel:`Referrer` field.
|
||||
|
||||
If a :guilabel:`Referrer` is selected, a new field, :guilabel:`Commission Plan` appears, in which a
|
||||
commission can be selected from the drop-down menu. This commission is rewarded to the contact
|
||||
selected in the :guilabel:`Referrer` field.
|
||||
|
||||
Next, if they have not already been auto-populated with the customer's information, enter the
|
||||
appropriate addresses in the :guilabel:`Invoice Address` and :guilabel:`Delivery Address` fields.
|
||||
Both of these fields are **required**.
|
||||
|
||||
Then, if desired, choose a :guilabel:`Quotation Template` from the drop-down field to apply to this
|
||||
quotation. It should be noted that some additional fields may appear, depending on the template
|
||||
selected.
|
||||
|
||||
The default date that appears in the :guilabel:`Expiration` field is based on the number configured
|
||||
in the :ref:`Default Quotation Validity setting <sales/quotation-settings>` (in
|
||||
:menuselection:`Sales app --> Configuration --> Settings`).
|
||||
|
||||
.. tip::
|
||||
When using a quotation template, the date in the :guilabel:`Expiration` field is based off the
|
||||
:guilabel:`Quotation Validity` figure on the template form.
|
||||
|
||||
If the quotation is for a recurring product or subscription, select the desired :guilabel:`Recurring
|
||||
Plan` from that specific drop-down menu.
|
||||
|
||||
If desired, select a specific :guilabel:`Pricelist` to be applied to this quotation.
|
||||
|
||||
Lastly, select any specific :guilabel:`Payment Terms` to be used for this quotation.
|
||||
|
||||
Order Lines tab
|
||||
---------------
|
||||
|
||||
The first tab on the quotation form is the :guilabel:`Order Lines` tab.
|
||||
|
||||
In this tab, select products, and quantities of those products, to add them to the quotation.
|
||||
|
||||
There are two ways to add products to the quotation from this tab.
|
||||
|
||||
Click :guilabel:`Add a product`, select the desired item from the :guilabel:`Product` drop-down
|
||||
field, and proceed to adjust the quantity of that selected product, if necessary.
|
||||
|
||||
Or, click :guilabel:`Catalog` to reveal a separate page, showcasing every item (and every potential
|
||||
product variant) in an organized catalog display, with items organizable by :guilabel:`Product
|
||||
Category` and :guilabel:`Attributes`.
|
||||
|
||||
.. image:: create_quotations/product-catalog.png
|
||||
:align: center
|
||||
:alt: A product catalog accessible via a quotation in the Odoo Sales application.
|
||||
|
||||
From here, simply locate the desired items, click the :icon:`fa-shopping-cart` :guilabel:`Add`
|
||||
button on the product card, and adjust the quantity, if needed. When complete, click the
|
||||
:guilabel:`Back to Quotation` button in the upper-left corner to return to the quotation, where the
|
||||
newly-selected catalog items can be found in the :guilabel:`Order Lines` tab.
|
||||
|
||||
If multiple items should be presented in a more organized way on the quotation, click :guilabel:`Add
|
||||
a section`, enter a name for the section, and drag-and-drop that section heading in the desired
|
||||
location amongst the items in the :guilabel:`Order Lines` tab. The section heading appears in bold.
|
||||
|
||||
If needed, click :guilabel:`Add a note` beneath a certain product line to add a custom note about
|
||||
that specific product. The note appears in italics. Then, if needed, proceed to drag-and-drop the
|
||||
note beneath the desired product line.
|
||||
|
||||
Beneath the product lines, there are buttons that can be clicked to apply any of the following:
|
||||
:guilabel:`Coupon Code`, :guilabel:`Promotions`, :guilabel:`Discount`, and/or :guilabel:`Add
|
||||
shipping`.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../products_prices/ewallets_giftcards`
|
||||
- :doc:`../products_prices/loyalty_discount`
|
||||
- :doc:`../products_prices/prices/pricing`
|
||||
|
||||
Optional Products tab
|
||||
---------------------
|
||||
|
||||
Open the :guilabel:`Optional Products` tab to select related products that can be presented to the
|
||||
customer, which may result in an increased sale.
|
||||
|
||||
For example, if the customer wants to buy a car, an optional product that could be offered is a
|
||||
*Trailer Hitch*.
|
||||
|
||||
.. seealso::
|
||||
:doc:`optional_products`
|
||||
|
||||
Other Info tab
|
||||
--------------
|
||||
|
||||
In the :guilabel:`Other Info` tab, there are various quotation-related configurations separated into
|
||||
four different sections: :guilabel:`Sales`, :guilabel:`Delivery`, :guilabel:`Invoicing`, and
|
||||
:guilabel:`Tracking`.
|
||||
|
||||
.. note::
|
||||
Some fields **only** appear if specific settings and options have been configured.
|
||||
|
||||
Sales section
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
In the :guilabel:`Sales` section of the :guilabel:`Other Info` tab, there are sales specific fields
|
||||
that can be configured.
|
||||
|
||||
.. image:: create_quotations/other-info-sales.png
|
||||
:align: center
|
||||
:alt: The Sales section of the Other Info tab of a quotation form in Odoo Sales.
|
||||
|
||||
- :guilabel:`Salesperson`: Assign a salesperson from the drop-down menu to be associated with this
|
||||
quotation. The user who originally created the quotation is selected in this field, by default.
|
||||
- :guilabel:`Sales Team`: Assign a specific sales team to this quotation. If the selected
|
||||
:guilabel:`Salesperson` is a member of a sales team, that team is auto-populated in the field.
|
||||
- :guilabel:`Company`: Select a company from the drop-down menu this quotation should be associated
|
||||
with. This field only appears when working in a multi-company environment.
|
||||
- :guilabel:`Online signature`: Tick this checkbox to request an online signature from the customer
|
||||
to confirm the order. This field only appears if the *Online Signature* setting has been enabled.
|
||||
- :guilabel:`Online payment`: Tick this checkbox, and enter a desired percentage in the adjacent
|
||||
field, to request an online payment from the customer (for that designated percentage of the total
|
||||
amount) to confirm the order. This field only appears if the *Online Payment* setting has been
|
||||
enabled.
|
||||
- :guilabel:`Customer Reference`: Enter a custom reference ID for this customer. The entered
|
||||
reference ID can contain letters, numbers, or a mix of both.
|
||||
- :guilabel:`Tags`: Add specific tags to the quotation for added organization and enhanced
|
||||
searchability in the Odoo **Sales** application. Multiple tags can be added, if necessary.
|
||||
|
||||
Delivery section
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
In the :guilabel:`Delivery` section of the :guilabel:`Other Info` tab, there are delivery-specific
|
||||
fields that can be configured.
|
||||
|
||||
.. image:: create_quotations/other-info-delivery.png
|
||||
:align: center
|
||||
:alt: The Delivery section of the Other Info tab of a quotation form in Odoo Sales.
|
||||
|
||||
- :guilabel:`Shipping Weight`: Displays the weight of the items being shipped. This field is not
|
||||
modifiable. Product weight is configured on individual product forms.
|
||||
- :guilabel:`Incoterm`: Select an Incoterm (International Commerical Term) to use as predefined
|
||||
commerical terms for international transactions.
|
||||
- :guilabel:`Incoterm Location`: If an Incoterm is being used, enter the international location in
|
||||
this field.
|
||||
- :guilabel:`Shipping Policy`: Select a desired shipping policy from the drop-down menu. If all
|
||||
products are delivered at once, the delivery order is scheduled, based on the greatest product
|
||||
lead time. Otherwise, it is based on the shortest lead time. The available options are:
|
||||
:guilabel:`As soon as possible` or :guilabel:`When all products are ready`.
|
||||
- :guilabel:`Delivery Date`: Click into the empty field to reveal a calendar popover, from which a
|
||||
customer delivery date can be selected. If no custom date is required, refer to the
|
||||
:guilabel:`Expected` date listed to the right of that field.
|
||||
|
||||
Invoicing section
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
In the :guilabel:`Invoicing` section of the :guilabel:`Other Info` tab, there are invoicing specific
|
||||
fields that can be configured.
|
||||
|
||||
.. image:: create_quotations/other-info-invoicing.png
|
||||
:align: center
|
||||
:alt: The Invoicing section of the Other Info tab of a quotation form in Odoo Sales.
|
||||
|
||||
- :guilabel:`Fiscal Position`: Select a fiscal position to be used to adapt taxes and accounts for
|
||||
particular customers or sales orders/invoices. The default value comes from the customer. If a
|
||||
selection is made in this field, an :icon:`fa-refresh` :guilabel:`Update Taxes` clickable link and
|
||||
icon appear. When clicked, the taxes for this partiuclar customer and quotation are updated. A
|
||||
confirmation window appears, as well.
|
||||
- :guilabel:`Analytic Account`: Select an analytic account to apply to this customer/quotation.
|
||||
|
||||
Tracking section
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
In the :guilabel:`Tracking` section of the :guilabel:`Other Info` tab, there are tracking specific
|
||||
fields that can be configured.
|
||||
|
||||
.. image:: create_quotations/other-info-tracking.png
|
||||
:align: center
|
||||
:alt: The Tracking section of the Other Info tab of a quotation form in Odoo Sales.
|
||||
|
||||
- :guilabel:`Source Document`: Enter the reference of the document that generated the
|
||||
quotation/sales order, if applicable.
|
||||
- :guilabel:`Opportunity`: Select the specific opportunity (from the **CRM** app) related to this
|
||||
quotation, if applicable.
|
||||
- :guilabel:`Campaign`: Select the marketing campaign related to this quotation, if applicable.
|
||||
- :guilabel:`Medium`: Select the method by which this quotation originated (e.g. *Email*), if
|
||||
applicable.
|
||||
- :guilabel:`Source`: Select the source of the link used to generate this quotation (e.g.
|
||||
*Facebook*), if applicable.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../../websites/website/reporting/link_tracker`
|
||||
|
||||
Notes tab
|
||||
---------
|
||||
|
||||
In the :guilabel:`Notes` tab of the quotation form, enter any specific internal notes about the
|
||||
quotation and/or customer, if desired.
|
||||
|
||||
Sending and confirming quotations
|
||||
=================================
|
||||
|
||||
Once all the necessary fields and tabs have been configured, it is time to send the quotation to the
|
||||
customer for confirmation. Upon confirmation, the quotation turns into an official sales order.
|
||||
|
||||
At the top of the form, there is a series of buttons:
|
||||
|
||||
- :guilabel:`Send by Email`: When clicked, a pop-up window appears with the customer's name and
|
||||
email address in the :guilabel:`Recipients` field, the quotation (and reference ID) in the
|
||||
:guilabel:`Subject` field, and a brief default message in the body of the email, which can be
|
||||
modified, if needed.
|
||||
|
||||
Below that, a PDF copy of the quotation is attached. When ready, click :guilabel:`Send` to send
|
||||
the quotation, via email, to the customer, so they can review and confirm it.
|
||||
- :guilabel:`Send PRO-FORMA Invoice`: This button **only** appears if the *Pro-Forma Invoice*
|
||||
setting has been enabled. When clicked, a pop-up window appears with the customer's name and email
|
||||
address in the :guilabel:`Recipients` field, the *Proforma* invoice (and reference ID) in the
|
||||
:guilabel:`Subject` field, and a brief default message in the body of the email, which can be
|
||||
modified, if needed.
|
||||
|
||||
Below that, a PDF copy of the quotation is attached. When ready, click :guilabel:`Send` to send
|
||||
the quotation, via email, to the customer, so they can review and confirm it.
|
||||
- :guilabel:`Confirm`: When clicked, the quotation is confirmed, and the status changes to
|
||||
:guilabel:`Sales Order`.
|
||||
- :guilabel:`Preview`: When clicked, Odoo reveals a preview of the quotation the customer sees when
|
||||
they log into their customer portal. Click the :icon:`fa-arrow-right` :guilabel:`Back to edit
|
||||
mode` link at the top of the preview page, in the blue banner, to return to the quotation form.
|
||||
- :guilabel:`Cancel`: When clicked, the quotation is canceled.
|
||||
|
||||
.. note::
|
||||
If the *Lock Confirmed Sales* setting is enabled, the sales order becomes :guilabel:`Locked`, and
|
||||
is indicated as such on the sales order form.
|
||||
|
||||
At this point, the quotation has been confirmed, turned into a sales order, and is now ready to be
|
||||
invoiced and paid for.
|
||||
|
||||
For more information about invoicing, refer to the :doc:`Invoice based on delivered or ordered
|
||||
quantities <../invoicing/invoicing_policy>`
|
||||
|
||||
.. seealso::
|
||||
- :doc:`quote_template`
|
||||
- :doc:`deadline`
|
||||
- :doc:`get_signature_to_validate`
|
||||
- :doc:`get_paid_to_validate`
|
||||
- :doc:`pdf_quote_builder`
|
||||
- :doc:`../invoicing/proforma`
|
||||
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 40 KiB |
@@ -87,3 +87,4 @@ invoice manually.
|
||||
subscriptions/automatic_alerts
|
||||
subscriptions/scheduled_actions
|
||||
subscriptions/reports
|
||||
subscriptions/payment_providers
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
:nosearch:
|
||||
|
||||
=================
|
||||
Payment providers
|
||||
=================
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
payment_providers/wire_transfer
|
||||
@@ -0,0 +1,156 @@
|
||||
=============
|
||||
Wire transfer
|
||||
=============
|
||||
|
||||
The *wire transfer* payment method allows for payment instructions to be shared with a customer
|
||||
after purchasing a product. With a subscription, these payment instructions are shared every time
|
||||
the payment is renewed.
|
||||
|
||||
.. note::
|
||||
The wire transfer payment method requires minimal setup, but in most cases, it is inefficient
|
||||
compared to other online payment providers. It is recommended to use another payment provider
|
||||
with subscriptions, due to wire transfers requiring manual confirmation for each payment.
|
||||
|
||||
.. _subscriptions/wire-transfer-configuration:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To use the wire transfer payment method, first ensure the *Wire Transfer* payment method is enabled.
|
||||
|
||||
To do so, begin by navigating to the *Payment Providers* page in either the **Accounting**,
|
||||
**Website**, or **Sales** apps.
|
||||
|
||||
For example, navigate to :menuselection:`Accounting app --> Configuration --> Online Payments:
|
||||
Payment Providers`, then click the :guilabel:`Wire Transfer` card.
|
||||
|
||||
.. tip::
|
||||
If the **Accounting** app is not installed, the *Payment Providers* page can also be reached by
|
||||
navigating to :menuselection:`Website app --> Configuration --> eCommerce: Payment Providers`, or
|
||||
:menuselection:`Sales app --> Configuration --> Online Payments: Payment Providers`.
|
||||
|
||||
Next, set the :guilabel:`State` to :guilabel:`Enabled` to enable wire transfers. Use the drop-down
|
||||
menus next to the :guilabel:`Company` and :guilabel:`Website` fields to set where wire transfers can
|
||||
be used.
|
||||
|
||||
The options in the :guilabel:`Configuration` tab can be used to customize the wire transfer.
|
||||
Optionally tick the checkbox next to :guilabel:`Enable QR Codes` to enable the use of QR codes when
|
||||
paying by wire transfer, if desired.
|
||||
|
||||
Use the drop-down menu next to the :guilabel:`Communication` field to select the communication type
|
||||
used on sales orders. Choose :guilabel:`Based on Document Reference` to use the sales order (or
|
||||
invoice number), or :guilabel:`Based on Customer ID` to use the customer identifier. With either
|
||||
method selected, communication is given to the customer, once they choose the wire transfer payment
|
||||
method.
|
||||
|
||||
The configuration options listed under the :guilabel:`Availability` section are used to set payment
|
||||
restrictions, and are optional. Use the :guilabel:`Maximum Amount` field to set a maximum payment
|
||||
value, the :guilabel:`Currencies` field to restrict any currencies from being used for payment, and
|
||||
the :guilabel:`Countries` field to restrict payment from any particular countries, if desired.
|
||||
|
||||
In the :guilabel:`Messages` tab, use the :guilabel:`Pending Message` field to add a message
|
||||
containing wire transfer information. This message is displayed to the customer after confirming
|
||||
their order, as well as if the order is marked as pending after the payment is processed.
|
||||
|
||||
If :doc:`a bank account <../../../finance/accounting/bank>` has already been defined, the account
|
||||
number is automatically added to the default message generated by Odoo. A bank account can also be
|
||||
added afterwards, and the message updates with the appropriate bank information by clicking
|
||||
:icon:`fa-refresh` :guilabel:`Reload pending message`.
|
||||
|
||||
Once all necessary configuration settings are complete, the :icon:`fa-eye-slash`
|
||||
:guilabel:`Unpublished` smart button located at the top of the page automatically changes to
|
||||
:icon:`fa-globe` :guilabel:`Published` to show the wire transfer payment option is now visible
|
||||
to customers. Only keep the payment method published if payments are ready to be received.
|
||||
|
||||
.. tip::
|
||||
It is possible to keep the payment method enabled, but **not** visible to customers, until
|
||||
payments are ready to be received. To do that, set the smart button to :icon:`fa-eye-slash`
|
||||
:guilabel:`Unpublished` after setting the :guilabel:`State` to :guilabel:`Enabled`.
|
||||
|
||||
.. image:: wire_transfer/wire-transfer-published.png
|
||||
:align: center
|
||||
:alt: The wire transfer card enabled and published.
|
||||
|
||||
Test mode
|
||||
---------
|
||||
|
||||
The wire transfer payment method can be tested before it is accessed by customers by selecting the
|
||||
:guilabel:`Test Mode` option in the :guilabel:`State` field on the form. Upon selecting
|
||||
:guilabel:`Test Mode`, an orange :guilabel:`Test mode` banner appears in the upper-right corner of
|
||||
the form.
|
||||
|
||||
Next, enter the credentials for a bank account with accessible transactions in the
|
||||
:guilabel:`Messages` tab. To re-enable normal function after testing, change the :guilabel:`State`
|
||||
setting to :guilabel:`Enabled`.
|
||||
|
||||
.. note::
|
||||
By default, the payment provider remains :guilabel:`Unpublished` in :guilabel:`Test Mode`, so it
|
||||
is not visible to visitors.
|
||||
|
||||
.. warning::
|
||||
It is recommended to use the :guilabel:`Test Mode` setting on a duplicate (or test) database to
|
||||
avoid potential issues with invoice numbering.
|
||||
|
||||
.. _subscriptions/wire-transfer-payment:
|
||||
|
||||
Pay by wire transfer
|
||||
====================
|
||||
|
||||
With wire transfers :ref:`enabled and published <subscriptions/wire-transfer-configuration>`,
|
||||
customers see wire transfers as an available payment method at checkout when purchasing a product.
|
||||
|
||||
When this method is selected by a customer, they are shown the *Pending Message* set in the
|
||||
:ref:`wire transfer configuration page <subscriptions/wire-transfer-configuration>`, after
|
||||
confirming their purchase. Once the purchase is confirmed, a sales order is created.
|
||||
|
||||
.. image:: wire_transfer/payment-instructions-checkout.png
|
||||
:align: center
|
||||
:alt: The wire transfer pending message shown to customers.
|
||||
|
||||
.. important::
|
||||
Online orders remain in the *Quotation sent* (i.e. unpaid order) stage until both the payment is
|
||||
received, *and* the order is confirmed manually, using the :guilabel:`Confirm` button on the
|
||||
sales order.
|
||||
|
||||
To begin processing the payment, navigate to :menuselection:`Sales app --> Orders --> Orders`, and
|
||||
click the corresponding sales order. Ensure the sales order is correct, then click
|
||||
:guilabel:`Confirm` to confirm the sales order.
|
||||
|
||||
Next, click the new :guilabel:`Create Invoice` button, then choose :guilabel:`Regular invoice`, and
|
||||
click :guilabel:`Create Draft Invoice`. A draft of the invoice appears. Click :guilabel:`Confirm` to
|
||||
validate the invoice.
|
||||
|
||||
To send this invoice to the customer, click the :guilabel:`Send & Print` button. A :guilabel:`Send`
|
||||
pop-up window appears, with an email template configured, and a PDF invoice attached.
|
||||
|
||||
Ensure the information is correct, then click :guilabel:`Send & Print`. The pop-up window
|
||||
disappears, and the :guilabel:`Send & Print` button turns gray to show the invoice has been sent.
|
||||
|
||||
.. tip::
|
||||
The default template for sending an invoice can be modified by navigating to
|
||||
:menuselection:`Settings app --> Companies --> Email Templates --> Review All Templates -->
|
||||
Invoice: Sending`.
|
||||
|
||||
Next, click the :guilabel:`Register payment` button on the invoice page. A pop-up window titled,
|
||||
:guilabel:`Register Payment`, appears with options for selecting the type of payment. In the
|
||||
:guilabel:`Journal` field, select :guilabel:`Bank` from the drop-down menu. Next, set the
|
||||
:guilabel:`Payment Method` to :guilabel:`Manual`. Ensure the :guilabel:`Amount` and
|
||||
:guilabel:`Payment Date` are correct, then click the :guilabel:`Create Payment` button.
|
||||
|
||||
.. image:: wire_transfer/register-payment.png
|
||||
:align: center
|
||||
:alt: The register payment pop-up window.
|
||||
|
||||
The customer invoice is revealed with a green :guilabel:`In Payment` banner in the upper-right
|
||||
corner. At this point, the flow is now complete.
|
||||
|
||||
.. image:: wire_transfer/in-payment-banner.png
|
||||
:align: center
|
||||
:alt: The green in payment banner displayed on the invoice.
|
||||
|
||||
.. note::
|
||||
If payment has been received before sending the invoice, such as in cash, the payment can still
|
||||
be registered in Odoo by clicking the :guilabel:`Register Payment` button, and creating the
|
||||
payment *before* clicking :guilabel:`Send & Print`. Now, when an invoice is sent using the
|
||||
:guilabel:`Send & Print` button, a new line is automatically added to the invoice message,
|
||||
stating the invoice is already paid.
|
||||
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 22 KiB |
@@ -3,5 +3,5 @@ address you used to register on GitHub.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ git config --global user.name “Your Name”
|
||||
$ git config --global user.email “youremail@example.com”
|
||||
$ git config --global user.name "Your Name"
|
||||
$ git config --global user.email "youremail@example.com"
|
||||
|
||||