Compare commits

...

59 Commits

Author SHA1 Message Date
guillaume gallant (guga) c4af9697c8 [ADD] project: new top bar page
task-4277055
2024-12-09 08:37:13 +01:00
jero-odoo 7e23234796 [IMP] General: Update manage inbound email doc
closes odoo/documentation#11308

X-original-commit: 1b14a732b9
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-11-05 18:27:37 +00:00
Tiffany Chang (tic) 63f88d7adb [I18N] *: export latest terms
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)

closes odoo/documentation#11327

Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-11-05 13:58:57 +00:00
Louis Wicket (wil) dc4d10edbb [I18N] add vi and id to the language switcher
closes odoo/documentation#11322

X-original-commit: 204db28154
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-11-05 10:14:47 +00:00
Sam Lieber (sali) 8b0fca19f5 [IMP] l10n_cl: Update main EDI module and description
closes odoo/documentation#11328

X-original-commit: dc20497ab1
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-11-05 08:08:59 +00:00
Damien Bouvy 65a752daf6 [ADD] Developer: data module tutorial
Introduce a new tutorial about creating Odoo modules using XML data files
instead of Python code.

This guide is follows closely the 'Server Framework 101' tutorial and
covers the following:

- Module structure and deployment
- Defining models and fields
- Setting up security and access rights
- Creating views and actions
- Implementing relational fields (many2one, many2many, one2many)
- Working with computed and related fields
- Adding business logic through server actions and automation rules
- Creating website controllers for API endpoints

The tutorial includes practical exercises and code examples to reinforce
learning, catering to developers who need to customize Odoo without writing
Python code (e.g. Odoo PS-Tech employees, partners that focus on SaaS instances
or author of Industry modules).

Task-4167176

closes odoo/documentation#11304

X-original-commit: c6a8619367
Signed-off-by: Bouvy Damien (dbo) <dbo@odoo.com>
2024-11-04 10:59:26 +00:00
Albaraa Maktabi 9946fd4ec6 [FIX] developer/view_architectures: fix a typo
Corrected a typo in the file view_architectures.rst on line 2395. Changed 'than' to 'that'.

closes odoo/documentation#11314

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-11-04 07:31:54 +00:00
Odoo Online 9794fee804 [I18N] Update translation terms from Transifex 2024-11-03 02:42:00 +01:00
larm-odoo 9dec09c9de [ADD] Payroll: Salary attachment report
closes odoo/documentation#11312

X-original-commit: ce55e4affb
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-11-01 13:54:14 +00:00
Aurelien van Delft (avd) ab963d305d [IMP] contributing/git: add [PERF] to the valid commit tags
The [PERF] commit tag passes the runbot minimal check and has been
used in lots of patches. E.g.
 - odoo/odoo@f02bcfadcb
 - odoo/odoo@b30b059898
 - odoo/odoo@780a2bb601

However this tag was not listed in the documentation yet. This led
to confusion for reviewers not accustomed with it. This commit
fixes that.

closes odoo/documentation#11299

X-original-commit: ac8f3d2aa4
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Aurélien van Delft (avd) <avd@odoo.com>
2024-10-29 11:08:24 +00:00
gmz-odoo 54d35d6cdd [IMP] accounting/l10n_pe: update modules and description
Remove older ‘Introduction section’
Add a table listing and update of the currently supported features and modules with a description of its functionality (like the format/structure displayed for Chile Localization page)
Update the description of suggested and related resources, such as Smart Tutorial videos

closes odoo/documentation#11280

X-original-commit: af29704626
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-10-28 15:37:29 +00:00
benderliz 8c31ffa49e [IMP] accounting: ca_l10n spelling fix
closes odoo/documentation#11259

X-original-commit: 96269013b5
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-10-27 16:11:31 +00:00
Odoo Translation Bot 34a73be30c [I18N] Update translation terms from Transifex 2024-10-27 02:45:22 +02:00
Loredana Perazzo 235b2889ec [IMP] POS: add a configuration step to enable ePos printers
task-4055549

closes odoo/documentation#11288

X-original-commit: f83f35955e
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2024-10-25 12:14:34 +00:00
jero-odoo dca01d9587 [IMP] Iot: Remove star printer reference
closes odoo/documentation#11279

X-original-commit: 229e633c9c
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-10-25 12:14:30 +00:00
“Dallas” 7a0b3a868c [FIX] l10n_de: Fix second broken GoBD link
There were two broken links originally, one of which was fixed by PR#10074. This commit will remove the first link entirely and fix the second link, as suggested by TSB.

task-4088554

closes odoo/documentation#11273

X-original-commit: 33ef1f8918
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Dallas Dean (dade) <dade@odoo.com>
2024-10-24 12:41:58 +00:00
benderliz 37d18858c4 [IMP] ar_l10n: remove extra comma
closes odoo/documentation#11255

X-original-commit: 15bc972085
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Liz Bender (beli) <beli@odoo.com>
2024-10-23 14:57:23 +00:00
Felicious ad6843be92 [ADD] inventory: dispatch management system
closes odoo/documentation#11224

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-10-23 14:57:22 +00:00
Aurelien van Delft (avd) b0ede2819a [ADD] tools: add populate cli documentation
closes odoo/documentation#11262

Signed-off-by: Aurélien van Delft (avd) <avd@odoo.com>
2024-10-23 06:32:06 +00:00
Loredana Perazzo 4556487f10 [IMP] POS: move replicated title into one page
task-3973404

Must come back in 16.0 & 17.0

closes odoo/documentation#11229

X-original-commit: 04a8e4657f
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2024-10-23 00:28:00 +00:00
Valentino 3156e4ba04 [IMP] accounting/l10n_br: IAP Free Credits Clarification
Odoo gives users 500 free IAP credits when they start with Odoo in BR in production databases. This is an important information that was not clarified.

closes odoo/documentation#11243

X-original-commit: 9ba3a1bc10
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-10-22 11:13:43 +00:00
xpl-odoo ba426cc9ea [ADD] sign: legality of electronic signatures in germany
closes odoo/documentation#11248

X-original-commit: 74437b0e74
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-10-22 11:13:42 +00:00
Ricardo Gomes Rodrigues 946c518039 [IMP] accounting: deferred full months
Feature added in commit https://github.com/odoo/enterprise/commit/5dca9c0c2691cba2335e110ad63a2dcc8bbf6d57

closes odoo/documentation#11238

X-original-commit: 939d0de821
Signed-off-by: Ricardo Gomes Rodrigues (rigr) <rigr@odoo.com>
2024-10-21 16:04:07 +00:00
Ricardo Gomes Rodrigues 8f73708332 [IMP] accounting: add loan management
This has been done in https://github.com/odoo/enterprise/pull/68698

closes odoo/documentation#11035

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-10-21 09:10:27 +00:00
Joseph (jcb) d50ff09926 [IMP] web: notification: custom autoclose delay
closes odoo/documentation#11219

Related: odoo/odoo#184037
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-10-18 10:48:31 +00:00
jero-odoo e9c19f63d4 [IMP] Contacts: Update contacts basics
closes odoo/documentation#11220

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-10-17 20:37:43 +00:00
benderliz 95aae86762 [IMP] Inventory: Updating serial numbers documentation
closes odoo/documentation#11217

X-original-commit: 3270549c3a
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Liz Bender (beli) <beli@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-10-17 15:53:50 +00:00
Louis Wicket (wil) da7fe3d69d [I18N] add es_419 to the documentation
This commit adds es_419 (LATAM Spanish) to the available languages. It
populates LATAM Spanish translation based on the existing Spanish
translation.

closes odoo/documentation#11210

Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
2024-10-17 15:53:48 +00:00
masp-odoo 9e9fce957f [FIX] general : Update link from Google Domains to Squarespace
Task-4224635

closes odoo/documentation#11213

X-original-commit: 399b20d9c7
Signed-off-by: Marion Spindler (masp) <masp@odoo.com>
2024-10-17 07:10:44 +00:00
Olivier Dony ab9313a451 [FIX] legal: update license info for 18.0 2024-10-16 19:07:31 +02:00
xpl-odoo 868ecc61a5 [IMP] studio: update approval rules for v18
closes odoo/documentation#11200

Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-10-16 11:13:34 +00:00
Felicious 73638c012c [IMP] inventory: improve routes definitions
closes odoo/documentation#11168

X-original-commit: 21cb6bb5cf
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-10-15 18:59:26 +00:00
Felicious 753d10106a [IMP] inventory: merge resupply
closes odoo/documentation#11204

X-original-commit: 7f24a51d7d
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Liz Bender <92882399+benderliz@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-10-15 18:59:25 +00:00
KC (ksc) 64a0fbd75e [IMP] surveys: add cards and links/intros
closes odoo/documentation#11176

X-original-commit: 3337149a62
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-10-15 14:23:05 +00:00
Odoo Translation Bot a2af035da6 [I18N] Update translation terms from Transifex 2024-10-13 02:42:30 +02:00
Felicious bb761431d5 [REF] inventory: resupply warehouses
closes odoo/documentation#11194

X-original-commit: ef367bd442
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-10-11 22:11:21 +00:00
Felicious 0b5e4bb5b4 [IMP] inventory: fix typos in shipping table
closes odoo/documentation#11184

X-original-commit: e41e3c7ba0
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-10-11 17:21:32 +00:00
larm-odoo 32ecbd0c5b [ADD] Payroll: Work entry analysis report
closes odoo/documentation#11180

X-original-commit: 34814984ec
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-10-11 16:07:13 +00:00
Odoo's Mergebot 31725deaf0 [FW][ADD] odoo.sh: new ci token usage
closes odoo/documentation#11189

Forward-port-of: odoo/documentation#11172
Signed-off-by: Fabien Meghazi (fme) <fme@odoo.com>
Signed-off-by: Stanislas Sobieski (sts) <sts@odoo.com>
Co-authored-by: Fabien Meghazi <fme@odoo.com>
Co-authored-by: Stanislas Sobieski <sts@odoo.com>
2024-10-11 11:35:31 +00:00
afma-odoo 0e71f8681e [IMP] accounting: pdf menu to export reports
task-3605633

closes odoo/documentation#11113

X-original-commit: 380c4bc10f
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Anne-Françoise Marcq (afma) <afma@odoo.com>
2024-10-11 08:58:30 +00:00
Demesmaeker da682b7f22 [ADD] payment_providers/worldline
task-3499275

New payment provider and its related configuration; remove Ogone and SIPS payments providers as they were replaced by Wordline.

closes odoo/documentation#11070

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-10-10 08:40:21 +00:00
Donatienne (dopi) cc270a9afe [IMP] ecommerce: products page updated
closes odoo/documentation#11164

Taskid: 4056328
X-original-commit: 1c5bf1337e
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-10-10 06:49:12 +00:00
Ricardo Gomes Rodrigues df0cf93856 [IMP] accounting: split deferred settings
This has been done in https://github.com/odoo/enterprise/commit/39fffc5541eb51d7a3ae25405abe90fe6031001a

closes odoo/documentation#11161

X-original-commit: ac69e2872c
Signed-off-by: Ricardo Gomes Rodrigues (rigr) <rigr@odoo.com>
2024-10-09 17:58:16 +00:00
dikd-odoo 213a3ca73b [IMP] calendar: expand parent documentation
[ADD] expand parent calendar documentation

[FIX] formatting changes

[FIX] formatting changes

[FIX] content changes

Apply suggestions from KAEK review

[FIX] KAEK review edits

[FIX] resize images

Apply suggestions from KSC review

[FIX] content from KSC review

[FIX] revisions KSC review

[FIX] formatting

newline

formatting

Apply suggestions from KSC review

[FIX] Content change

[FIX] Content changes

Apply suggestions from KSC review

Apply suggestions from SALI review

Apply suggestions from SALI review2

content changes

format

Apply suggestions from SALI review

content

content

closes odoo/documentation#11132

X-original-commit: 721c07d341
Signed-off-by: Dina Klarisse Dugar (dikd) <dikd@odoo.com>
Co-authored-by: kekiss <karaekiss@yahoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-10-08 19:20:15 +00:00
xpl-odoo 0e4810f40b [IMP] administration: on-premise publisher warranty URL
task-4226945

closes odoo/documentation#11154

X-original-commit: 544e2c18d0
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-10-07 16:38:37 +00:00
Tiffany Chang (tic) 4e7df807e7 [I18N] *: export latest terms
As per usual, leave off developer.pot and contributing.pot since we
don't translate them (not useful, can't really contribute to/dev in
Odoo without knowing English)

Also update the tx/config to point to v18 project

closes odoo/documentation#11148

X-original-commit: 5aa4151
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-10-07 15:14:06 +00:00
Odoo Translation Bot 0a3c8ec10a [I18N] Update translation terms from Transifex 2024-10-06 02:42:45 +02:00
Felicious 416fcaa7a1 [ADD] purchase: import vendor pricelist
closes odoo/documentation#11141

X-original-commit: 3b69030302
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: kekiss <karaekiss@yahoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-10-04 21:38:24 +00:00
Felicious d8e0ae04b9 [ADD] inventory: valuation by lots
closes odoo/documentation#11138

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-10-04 20:30:59 +00:00
larm-odoo 5688664e3a [IMP] Appraisals: Skills Report - highest improvement
closes odoo/documentation#11136

X-original-commit: 6c843244eb
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-10-04 19:16:45 +00:00
Antoine Vandevenne (anv) 61f05b699a [IMP] supported_versions: release 18.0
closes odoo/documentation#11125

X-original-commit: a0472c95e5
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-10-01 14:11:12 +00:00
Odoo Translation Bot 318d80a4a1 [I18N] Update translation terms from Transifex 2024-09-29 02:43:41 +02:00
Pierre Pulinckx (PIPU) b79c83f52a [IMP] developer/testing: update tours documentation
The towers interface was modified during version 17. Therefore, in this commit, we update the documentation of this interface.

closes odoo/documentation#11116

Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-09-28 14:29:32 +00:00
masp-odoo 6d2f193622 [FIX] website: recaptcha threshold number
task-4145451

closes odoo/documentation#11107

X-original-commit: 0aa1a671dd
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Marion Spindler (masp) <masp@odoo.com>
2024-09-26 15:09:34 +00:00
larm-odoo 0cd4dd2978 [ADD] Appraisals: Skills Evolution reporting
closes odoo/documentation#11100

X-original-commit: 1e39d90420
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-09-25 19:52:56 +00:00
larm-odoo b4beccaf8e [ADD] Employees: Certifications
closes odoo/documentation#11099

X-original-commit: 14007868bb
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-09-25 19:52:55 +00:00
larm-odoo fd5d5581cc [ADD] Employees: Employee retention report
closes odoo/documentation#11093

X-original-commit: 43d99f8070
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-09-25 19:52:49 +00:00
Parish Bracha 9083a0927c [IMP] Subscriptions: Contract in exception
closes odoo/documentation#11090

X-original-commit: ea2fc6dbc4
Signed-off-by: Parish Bracha (pabr) <pabr@odoo.com>
2024-09-25 15:42:47 +00:00
Christophe Monniez b5c37e33b1 [REL] 18.0 2024-09-25 12:35:25 +00:00
584 changed files with 5338103 additions and 281929 deletions
+15 -15
View File
@@ -1,7 +1,7 @@
[main]
host = https://www.transifex.com
[o:odoo:p:odoo-17-doc:r:administration]
[o:odoo:p:odoo-18-doc:r:administration]
file_filter = locale/<lang>/LC_MESSAGES/administration.po
source_file = locale/sources/administration.pot
type = POT
@@ -11,7 +11,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:applications]
[o:odoo:p:odoo-18-doc:r:applications]
file_filter = locale/<lang>/LC_MESSAGES/applications.po
source_file = locale/sources/applications.pot
type = POT
@@ -21,7 +21,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:essentials]
[o:odoo:p:odoo-18-doc:r:essentials]
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
source_file = locale/sources/essentials.pot
type = POT
@@ -31,7 +31,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:finance]
[o:odoo:p:odoo-18-doc:r:finance]
file_filter = locale/<lang>/LC_MESSAGES/finance.po
source_file = locale/sources/finance.pot
type = POT
@@ -41,7 +41,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:general]
[o:odoo:p:odoo-18-doc:r:general]
file_filter = locale/<lang>/LC_MESSAGES/general.po
source_file = locale/sources/general.pot
type = POT
@@ -51,7 +51,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:hr]
[o:odoo:p:odoo-18-doc:r:hr]
file_filter = locale/<lang>/LC_MESSAGES/hr.po
source_file = locale/sources/hr.pot
type = POT
@@ -61,7 +61,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:index]
[o:odoo:p:odoo-18-doc:r:index]
file_filter = locale/<lang>/LC_MESSAGES/index.po
source_file = locale/sources/index.pot
type = POT
@@ -71,7 +71,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:inventory_and_mrp]
[o:odoo:p:odoo-18-doc:r:inventory_and_mrp]
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
source_file = locale/sources/inventory_and_mrp.pot
type = POT
@@ -81,7 +81,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:marketing]
[o:odoo:p:odoo-18-doc:r:marketing]
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
source_file = locale/sources/marketing.pot
type = POT
@@ -91,7 +91,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:productivity]
[o:odoo:p:odoo-18-doc:r:productivity]
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
source_file = locale/sources/productivity.pot
type = POT
@@ -101,7 +101,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:sales]
[o:odoo:p:odoo-18-doc:r:sales]
file_filter = locale/<lang>/LC_MESSAGES/sales.po
source_file = locale/sources/sales.pot
type = POT
@@ -111,7 +111,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:services]
[o:odoo:p:odoo-18-doc:r:services]
file_filter = locale/<lang>/LC_MESSAGES/services.po
source_file = locale/sources/services.pot
type = POT
@@ -121,7 +121,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:user_settings]
[o:odoo:p:odoo-18-doc:r:user_settings]
file_filter = locale/<lang>/LC_MESSAGES/settings.po
source_file = locale/sources/settings.pot
type = POT
@@ -131,7 +131,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:studio]
[o:odoo:p:odoo-18-doc:r:studio]
file_filter = locale/<lang>/LC_MESSAGES/studio.po
source_file = locale/sources/studio.pot
type = POT
@@ -141,7 +141,7 @@ replace_edited_strings = false
keep_translations = false
source_lang = en
[o:odoo:p:odoo-17-doc:r:websites]
[o:odoo:p:odoo-18-doc:r:websites]
file_filter = locale/<lang>/LC_MESSAGES/websites.po
source_file = locale/sources/websites.pot
type = POT
+1 -1
View File
@@ -27,7 +27,7 @@ SOURCE_DIR = content
HTML_BUILD_DIR = $(BUILD_DIR)/html
ifdef VERSIONS
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/18.0
endif
ifneq ($(CURRENT_LANG),en)
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
+5 -8
View File
@@ -22,7 +22,7 @@ copyright = 'Odoo S.A.'
# `version` is the version info for the project being documented, acts as replacement for |version|,
# also used in various other places throughout the built documents.
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
version = release = 'master'
version = release = '18.0'
# `current_branch` is the technical name of the current branch.
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).
@@ -231,18 +231,12 @@ sphinx.transforms.i18n.docname_to_domain = (
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
versions_names = {
'master': "Master",
'18.0': "Odoo 18",
'saas-17.4': "Odoo Online",
'saas-17.2': "Odoo Online",
'saas-17.1': "Odoo Online",
'17.0': "Odoo 17",
'saas-16.4': "Odoo Online",
'saas-16.3': "Odoo Online",
'saas-16.2': "Odoo Online",
'saas-16.1': "Odoo Online",
'16.0': "Odoo 16",
'saas-15.2': "Odoo Online",
'15.0': "Odoo 15",
'14.0': "Odoo 14",
}
# The language names that should be shown in the language switcher, if the config option `languages`
@@ -251,7 +245,9 @@ languages_names = {
'de': 'DE',
'en': 'EN',
'es': 'ES',
'es_419': 'ES (LATAM)',
'fr': 'FR',
'id': 'ID',
'it': 'IT',
'ja': 'JA',
'ko': 'KR',
@@ -261,6 +257,7 @@ languages_names = {
'sv': 'SV',
'th': 'TH',
'uk': 'UA',
'vi': 'VI',
'zh_CN': 'ZH (CN)',
'zh_TW': 'ZH (TW)'
}
@@ -217,6 +217,26 @@ Production and staging builds are excluded, visitors can only see their status.
.. _odoosh-gettingstarted-settings-modules-installation:
GitHub commit statuses
======================
This option enables Odoo.sh to push commit statuses to your GitHub repository when a build is
created or updated. It requires a GitHub token with permissions to push commit statuses to the
repository. Refer to `GitHub's documentation on personal access tokens <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens>`_
for instructions to create yours.
.. note::
GitHub's **fine-grained personal tokens** have an expiration date and will be disabled if they
fail to update the commit status. You can replace the token at any time on Odoo.sh.
The commit statuses pushed to GitHub can have the following contexts:
- :guilabel:`ci/odoo.sh (dev)`: status of a development build
- :guilabel:`ci/odoo.sh (staging)`: status of a staging build
- :guilabel:`ci/odoo.sh (production)`: status of a production build
- :guilabel:`ci/odoo.sh (test_ci)`: testing the token from the Settings page will push a test
status on the last commit of your repository
Custom domains
==============
+2 -2
View File
@@ -61,8 +61,8 @@ To resolve the issue:
your **network and firewall settings** allow the Odoo server to open outgoing connections
towards:
- `services.odoo.com` on port `443` (or `80`)
- for older deployments, `services.openerp.com` on port `443` (or `80`)
- Odoo 18.0 and above: `services.odoo.com` on port `443` (or `80`)
- Odoo 17.0 and below: `services.openerp.com` on port `443` (or `80`)
These ports must be kept open even after registering a database, as the update notification runs
once a week.
+15 -21
View File
@@ -31,24 +31,24 @@ This matrix shows the support status of every version.
- On-Premise
- Release date
- End of support
* - Odoo saas~17.4
* - **Odoo 18.0**
- |green|
- |green|
- |green|
- October 2024
- October 2027 (planned)
* - Odoo SaaS 17.4
- |green|
- N/A
- N/A
- July 2024
-
* - Odoo saas~17.2
* - Odoo SaaS 17.2
- |green|
- N/A
- N/A
- April 2024
-
* - Odoo saas~17.1
- |green|
- N/A
- N/A
- January 2024
-
* - **Odoo 17.0**
- |green|
- |green|
@@ -60,31 +60,25 @@ This matrix shows the support status of every version.
- |green|
- |green|
- October 2022
- November 2025 (planned)
- October 2025 (planned)
* - **Odoo 15.0**
- |green|
- |green|
- |green|
- |red|
- |red|
- |red|
- October 2021
- November 2024 (planned)
- October 2024
* - **Odoo 14.0**
- |red|
- |red|
- |red|
- October 2020
- November 2023
* - **Odoo 13.0**
- |red|
- |red|
- |red|
- October 2019
- October 2022
* - Older versions
- |red|
- |red|
- |red|
- Before 2019
- Before 2022
- Before 2020
- Before 2023
.. admonition:: Legend
+3 -3
View File
@@ -4,9 +4,9 @@
Contacts
========
The *Contacts* application comes installed on all Odoo databases. Contacts are created for customers
the company does business with through Odoo. A contact is a repository of vital business
information, facilitating communication and business transactions.
Contacts are created in the **Contacts** application for customers the company does business with
through Odoo. A contact is a repository of vital business information, facilitating communication
and business transactions.
Contact form
============
@@ -193,3 +193,4 @@ Payments` tab. To display the outstanding accounts column, click on the toggle b
bank/reconciliation
bank/reconciliation_models
bank/foreign_currency
bank/loans
@@ -0,0 +1,70 @@
================
Loans management
================
Odoo's loan management gives a comprehensive list of all loans undertaken by your company in order
to maintain a holistic and forecasted view of upcoming due dates (e.g., cash forecast). Set up
amortization schedules—or import them—and let Odoo automatically handle monthly interest and
principal adjustments so that your financial reports are always accurate with minimal effort.
Create a new loan
-----------------
Create a new loan by going to :menuselection:`Accounting --> Accounting --> Loans`. When creating a
new loan, there are three options for how to create amortization schedules:
- importing it from a supported file;
- calculating it from multiple input values (e.g., the :guilabel:`Amount Borrowed`, the
:guilabel:`Duration`, etc.) using the :guilabel:`Compute` button;
- manually filling in the lines of the schedule.
In each case, three different fields are required for each line of the amortization schedule: the
:guilabel:`Date`, the :guilabel:`Principal`, and the :guilabel:`Interest`.
The :guilabel:`Amount Borrowed`, :guilabel:`Interest`, and :guilabel:`Duration` fields will be red
if the sum of the lines does not match the total of the amortization schedule lines.
Loan entries mechanism
----------------------
When the amount borrowed is credited to a bank account, it should be transferred to a long-term
account (defined in the :guilabel:`Loan Settings` tab). Then, upon the validation of the loan, Odoo
creates the necessary journal entries so that there is always a holistic and forecasted view of
upcoming due dates. The entire process is completely automated with a long-term and short-term
principal reclassification mechanism.
For each line of the amortization schedule, Odoo creates the following entries:
A payment entry on the same date that
- debits the principal amount to the long-term account;
- debits the interest amount to the expense account;
- credits the payment amount to the short-term account: this is the amount that will be
withdrawn by the bank.
A reclassification entry on the same date that
- debits the sum of the principal amounts of the next 12 months to the long-term account;
- credits the sum of the principal amounts of the next 12 months to the short-term account.
A reversed entry of the reclassification entry on *the next day* that simply reverses the previous
one.
With this mechanism, month after month, the short-term account is always up to date with the
current short-term due amounts.
Closing a loan
--------------
By default, a loan will be closed whenever its last payment entry is posted. However, it can also
be manually closed (e.g., because it is being paid off early) by clicking on the :guilabel:`Close`
button. A wizard will appear asking from which date the loan should be closed. All draft entries
after this date will be deleted too.
A loan can also be cancelled. In that case, all entries will be deleted even if they were already
posted.
Loans Analysis Report
---------------------
By going to :menuselection:`Accounting --> Reporting --> Loans Analysis`, you can access a
report with a pivot view of your ongoing loans. By default, the report shows the principal,
interest, and total payment for each year for the loan duration.
@@ -33,19 +33,28 @@ Make sure the default settings are correctly configured for your business. To do
Journal
The deferral entries are posted in this journal.
Deferred Expense Account
Expenses are deferred on this Current Asset account until they are recognized.
Deferred Revenue Account
Deferred Revenue
Revenues are deferred on this Current Liability account until they are recognized.
Generate Entries
By default, Odoo :ref:`automatically generates <customer_invoices/deferred/generate_on_validation>`
the deferral entries when you post a customer invoice. However, you can also choose to
:ref:`generate them manually <customer_invoices/deferred/generate_manually>` by selecting the
:guilabel:`Manually & Grouped` option instead.
Amount Computation
Suppose an invoice of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
computation accounts for $100 each month, while the :guilabel:`Based on days` computation
accounts for different amounts depending on the number of days in each month.
Based on
Suppose an invoice of $1200 must be deferred over 12 months.
- The :guilabel:`Months` option accounts for $100 each month prorated to the number of days in
that month (e.g., $50 for the first month if the :guilabel:`Start Date` is set to the 15th of
the month).
- The :guilabel:`Full Months` option considers each month started to be full (e.g., $100 for the
first month even if the :guilabel:`Start Date` is set to the 15th of the month); this means that
with the :guilabel:`Full Months` option, a full $100 is recognized in the first partial month,
eliminating the need for a 13th month to recognize any remainder as would be the case when using
the :guilabel:`Months` option.
- The :guilabel:`Days` option accounts for different amounts depending on the number of days in
each month (e.g., ~$102 for January and ~$92 for February).
.. _customer_invoices/deferred/generate_on_validation:
@@ -24,8 +24,9 @@ the details.
.. image:: reporting/reporting-annotate.png
:alt: Annotate reports.
To export reports in PDF or XLSX format, click :guilabel:`PDF` or :guilabel:`XLSX` at the top of the
page.
To export reports in PDF or XLSX format, click :guilabel:`PDF` at the top or click the
:icon:`fa-caret-down` (:guilabel:`down arrow`) icon next to the :guilabel:`PDF` button and
select :guilabel:`XLSX`.
To compare values across periods, click the :guilabel:`Comparison` menu and select the periods you
want to compare.
@@ -33,19 +33,28 @@ Make sure the default settings are correctly configured for your business. To do
Journal
The deferral entries are posted in this journal.
Deferred Expense Account
Deferred Expense
Expenses are deferred on this Current Asset account until they are recognized.
Deferred Revenue Account
Revenues are deferred on this Current Liability account until they are recognized.
Generate Entries
By default, Odoo :ref:`automatically generates <vendor_bills/deferred/generate_on_validation>`
the deferral entries when you post a vendor bill. However, you can also choose to
:ref:`generate them manually <vendor_bills/deferred/generate_manually>` by selecting the
:guilabel:`Manually & Grouped` option instead.
Amount Computation
Suppose a bill of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
computation recognizes $100 each month, while the :guilabel:`Based on days` computation recognizes
different amounts depending on the number of days in each month.
Based on
Suppose a bill of $1200 must be deferred over 12 months.
- The :guilabel:`Months` option accounts for $100 each month prorated to the number of days in
that month (e.g., $50 for the first month if the :guilabel:`Start Date` is set to the 15th of
the month).
- The :guilabel:`Full Months` option considers each month started to be full (e.g., $100 for the
first month even if the :guilabel:`Start Date` is set to the 15th of the month); this means that
with the :guilabel:`Full Months` option, a full $100 is recognized in the first partial month,
eliminating the need for a 13th month to recognize any remainder as would be the case when using
the :guilabel:`Months` option.
- The :guilabel:`Days` option accounts for different amounts depending on the number of days in
each month (e.g., ~$102 for January and ~$92 for February).
.. _vendor_bills/deferred/generate_on_validation:
@@ -619,9 +619,9 @@ document, an automatic validation can be set in :menuselection:`Accounting --> S
Argentinean Localization --> Validate document in the AFIP`, considering the following levels:
- :guilabel:`Not available:` the verification is not done (this is the default value);
- :guilabel:`Available:` the verification is done. In case the number is not valid it, only displays
- :guilabel:`Available:` the verification is done. In case the number is not valid, it only displays
a warning but still allows the vendor bill to be posted;
- :guilabel:`Required:` the verification is done and it does not allow the user to post the vendor
- :guilabel:`Required:` the verification is done, and it does not allow the user to post the vendor
bill if the document number is not valid.
.. image:: argentina/verify-vendor-bills.png
@@ -136,6 +136,7 @@ Correction letter, Invalidate invoice number range), an API call is made using c
.. note::
- Odoo is a certified partner of Avalara Brazil.
- You can `buy IAP credit on odoo.com <https://iap.odoo.com/iap/in-app-services/819>`_.
- On creation, new databases receive 500 free credits.
Credential configuration
~~~~~~~~~~~~~~~~~~~~~~~~
@@ -139,7 +139,7 @@ Positions`.
The following fiscal positions are available by default:
- :guilabel:`Alberta (AB)`
- :guilabel:`British Colombia (BC)`
- :guilabel:`British Columbia (BC)`
- :guilabel:`Manitoba (MB)`
- :guilabel:`New Brunswick (NB)`
- :guilabel:`Newfoundland and Labrador (NL)`
@@ -39,12 +39,9 @@ localization.
- Adds the *Propuesta F29* and *Balance Tributario (8 columnas)* reports.
* - :guilabel:`Chile - E-invoicing`
- `l10n_cl_edi`
- Includes all technical and functional requirements to generate and receive electronic
invoices online based on the :abbr:`SII (Servicio de Impuestos Internos)` regulations.
* - :guilabel:`Chile - Electronic Receipt`
- `l10n_cl_boletas`
- Includes all technical and functional requirements to generate and receive electronic
invoices digitally based on the :abbr:`SII (Servicio de Impuestos Internos)` regulations.
- Includes all technical and functional requirements to receive and generate **electronic
receipts** and **invoices** online based on the :abbr:`SII (Servicio de Impuestos Internos)`
regulations.
* - :guilabel:`Electronic Exports of Goods for Chile`
- `l10n_cl_edi_exports`
- Includes technical and functional requirements to generate electronic invoices for exporting
@@ -170,9 +170,8 @@ triggered and is being processed. You have to click on *Refresh State* to check
German Tax Accounting Standards: Odoo's guide to GoBD Compliance
================================================================
**GoBD** stands for `Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern,
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_.
**GoBD** stands for *Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern,
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff*.
In short, it is a **guideline for the proper management and storage of books, records, and documents
in electronic form, as well as for data access**, that is relevant for the German tax authority, tax
declaration, and balance sheet.
@@ -191,7 +190,7 @@ What do you need to know about GoBD when relying on accounting software?
.. note::
If you can, the best way to understand GoBD is to Read the `Official GoBD text
<https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2019-11-28-GoBD.pdf>`_.
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_.
It is a bit long but quite readable for non-experts. But in short, here is what to expect:
The **GoBD is binding for companies that have to present accounts, which includes SMEs, freelancers,
@@ -312,7 +311,7 @@ offer our customer any legal certainty.
.. important::
The BMF actually states the following in the `Official GoBD text
<https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2019-11-28-GoBD.pdf>`_:
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_:
- 180. Positive attestations on the correctness of the bookkeeping - and thus on the correctness
of IT-based bookkeeping systems - are not issued either in the context of a tax field audit or
@@ -2,33 +2,80 @@
Peru
====
.. |SUNAT| replace:: :abbr:`SUNAT (Superintendencia Nacional de Aduanas y de Administración Tributaria)`
.. |SUNAT| replace:: :abbr:`SUNAT (Superintendencia Nacional de Aduanas y de Administración
Tributaria)`
.. |GRE| replace:: :abbr:`GRE (Guía de Remisión Electrónica)`
.. |RUS| replace:: :abbr:`RUS (Régimen Único Simplificado)`
.. |EDI| replace:: :abbr:`EDI (Electronic Data Interchange)`
Introduction
============
Modules
=======
The Peruvian localization has been improved and extended, in this version the next modules are
available:
:ref:`Install <general/install>` the following modules to utilize all the current features of the
Peruvian localization.
- **l10n_pe**: Adds accounting features for the Peruvian localization, which represent the minimal
configuration required for a company to operate in Peru and under the SUNAT regulations and
guidelines. The main elements included in this module are: Chart of account, taxes,
document types.
.. list-table::
:header-rows: 1
- **l10n_pe_edi**: includes all technical and functional requirements to generate and validate
Electronic Invoice, based on the SUNAT specification to create and process valid electronic
documents, for more technical detail you can access the
`SUNAT EDI specifications <https://cpe.sunat.gob.pe/node/88/>`_,
that keeps track of new changes and updates.
The features of this module are based on the resolutions published on the
`SUNAT Legislation <https://www.sunat.gob.pe/legislacion/general/index.html/>`_.
* - Name
- Technical name
- Description
* - :guilabel:`Peru - Accounting`
- `l10n_pe`
- Adds accounting features for the Peruvian localization, which represent the minimal
configuration required for a company to operate in Peru and under the SUNAT regulations and
guidelines. The main elements included in this module are the chart of accounts, taxes,
document types.
* - :guilabel:`Peru - E-invoicing`
- `l10n_pe_edi`
- Includes all technical and functional requirements to generate and receive electronic
invoices online based on the SUNAT regulations.
* - :guilabel:`Peru - Accounting Reports`
- `l10n_pe_reports`
- Includes the following financial reports:
- 1st set of main financial reports:
- Registro de Ventas e Ingresos (RVIE) - 14.4
- Registro de Compras Electrónico (RCE) - 8.4
- Registro de Compras Electrónico - Información de Operaciones con Sujetos no Domiciliados
(RCE) - 8.5
- 2nd set of financial reports:
- PLE 5.1 General Journal
- PLE 5.3 Chart of Accounts
- PLE 6.1 General Ledger
- 3rd set of financial reports:
- PLE 1.1 Libro de Caja
- PLE 1.2 Libro de Bancos
* - :guilabel:`Peruvian - Electronic Delivery Note`
- `l10n_pe_edi_stock`
- Adds the delivery guide (Guía de Remisión), which is needed as proof that you are sending
goods between A and B. It is only when a delivery order is validated that the delivery guide
can be created.
* - :guilabel:`Peruvian eCommerce`
- `l10n_pe_website_sale`
- Enables the identification type in eCommerce checkout forms and the ability to generate
electronic invoices.
* - :guilabel:`Peruvian - Point of Sale with PE Doc`
- `l10n_pe_pos`
- Enables contact fiscal information to be editable from a PoS Session to generate electronic
invoices and refunds.
.. note::
- Odoo automatically installs the appropriate package for the company according to the country
selected at the creation of the database.
- The *Peruvian - Electronic Delivery Guide* module depends on the *Inventory* application to be
installed.
.. seealso::
- `App Tour - Localización de Peru <https://youtu.be/Ic3mGovkf8Y>`_
- `Smart Tutorial - Localización de Peru <https://www.odoo.com/slides/smart-tutorial-localizacion-de-peru-133>`_
- `Smart Tutorial - Localización de Peru (videos for workflows and configurations)
<https://www.odoo.com/slides/smart-tutorial-localizacion-de-peru-133>`_
Configuration
=============
@@ -41,7 +88,6 @@ dependency with *Peru - Accounting*. In case this last one is not installed, Odo
automatically within EDI.
.. image:: peru/peru-modules.png
:align: center
:alt: The "Module" filter is set on "Peru"
.. note::
@@ -57,9 +103,7 @@ the establishment code assigned by the SUNAT when companies register their RUC (
Registration):
.. image:: peru/peru-company.png
:align: center
:alt: Company data for Peru including RUC and Address type code
:alt: Company data for Peru including RUC and Address type code.
.. tip::
In case the Address type code is unknown, you can set it as the default value: 0000. Be aware
@@ -68,7 +112,6 @@ Registration):
.. note::
The NIF should be set following the RUC format.
Chart of Account
~~~~~~~~~~~~~~~~
@@ -105,7 +148,6 @@ Here are some terms that are essential on the Peruvian localization:
- **SOL Credentials**: Sunat Operaciones en Línea. User and password are provided by the SUNAT and
grant access to Online Operations systems.
Signature Provider
~~~~~~~~~~~~~~~~~~
@@ -126,8 +168,7 @@ This is the default and the suggested option, considering the digital ceritifica
part of the service.
.. image:: peru/peru-IAP.png
:align: center
:alt: IAP option as signature providers
:alt: IAP option as signature providers.
What is the IAP?
^^^^^^^^^^^^^^^^
@@ -190,8 +231,7 @@ document validation directly to Digiflow. In this case you need to consider:
- Provide your SOL credentials.
.. image:: peru/peru-Digiflow.png
:align: center
:alt: Digiflow
:alt: Digiflow.
SUNAT
*****
@@ -230,18 +270,16 @@ certificate with the extension ``.pfx`` is required. Proceed to this section and
password.
.. image:: peru/peru-Certificate.png
:align: center
:alt: EDI Certificate wizard
:alt: EDI Certificate wizard.
Multicurrency
~~~~~~~~~~~~~
The official currency exchange rate in Peru is provided by the Bank of Peru. Odoo can connect
directly to its services and get the currency rate either automatically or manually.
The official currency exchange rate in Peru is provided by the SUNAT. Odoo can connect directly to
its services and get the currency rate either automatically or manually.
.. image:: peru/peru-multicurrency.png
:align: center
:alt: Bank of Peru is displayed in Multicurrency Service option
.. image:: peru/l10n-pe-banksync-sunat.png
:alt: SUNAT displayed in Multicurrency Service option.
Please refer to the next section in our documentation for more information about
:doc:`multicurrencies <../accounting/get_started/multi_currency>`.
@@ -258,8 +296,7 @@ As part of the localization module the taxes are created automatically with thei
financial account and electronic invoice configuration.
.. image:: peru/peru-taxes.png
:align: center
:alt: List of default taxes
:alt: List of default taxes.
EDI Configuration
*****************
@@ -269,9 +306,7 @@ the taxes created by default have this data included, but in case you create new
sure you fill in the fields:
.. image:: peru/peru-taxes-edi.png
:align: center
:alt: Taxes EDI data for Peru
:alt: Taxes EDI data for Peru.
Fiscal Positions
~~~~~~~~~~~~~~~~
@@ -297,8 +332,7 @@ The information required for the document types is included by default so the us
to fill anything on this view:
.. image:: peru/peru-document-type.png
:align: center
:alt: Document Type list
:alt: Document Type list.
.. warning::
Currently the documents supported on customer invoices are: Invoice, Boleta, Debit Note and
@@ -324,8 +358,7 @@ This section indicates which EDI workflow is used in the invoice, for Peru we mu
“Peru UBL 2.1”.
.. image:: peru/peru-journal-edi.png
:align: center
:alt: Journal EDI field
:alt: Journal EDI field.
.. warning::
By default, the value Factur-X (FR) is always displayed, make sure you can uncheck it manually.
@@ -341,9 +374,7 @@ available on the Partner form, this information is essential for most transactio
the sender company and in the customer, make sure you fill in this information in your records.
.. image:: peru/peru-id-type.png
:align: center
:alt: Partner identification type
:alt: Partner identification type.
Product
~~~~~~~
@@ -352,9 +383,7 @@ Additional to the basic information in your products, for the Peruvian localizat
Code on the product is a required value to be configured.
.. image:: peru/peru-unspc-code.png
:align: center
:alt: UNSPC Code on products
:alt: UNSPC Code on products.
Usage and testing
=================
@@ -374,16 +403,14 @@ fields required as part of the Peru EDI:
document type if needed and select Boleta for example.
.. image:: peru/peru-invoice-document-type.png
:align: center
:alt: Invoice document type field on invoices
:alt: Invoice document type field on invoices.
- **Operation type**: This value is required for Electronic Invoice and indicates the transaction
type, the default value is “Internal Sale” but another value can be selected manually when needed,
for example Export of Goods.
.. image:: peru/peru-operation-type.png
:align: center
:alt: Invoice operation type field on invoices
:alt: Invoice operation type field on invoices.
- **EDI Affectation Reason**: In the invoice lines, additional to the Tax there is a field “EDI
Affectation Reason” that determines the tax scope based on the SUNAT list that is displayed.
@@ -391,8 +418,7 @@ fields required as part of the Peru EDI:
you can manually select another one when creating the invoice.
.. image:: peru/peru-tax-affectation-reason.png
:align: center
:alt: Tax affectation reason in invoice line
:alt: Tax affectation reason in invoice line.
Invoice validation
~~~~~~~~~~~~~~~~~~
@@ -402,8 +428,7 @@ action registers the account move and triggers the Electronic invoice workflow t
OSE and the SUNAT. The following message is displayed at the top of the invoice:
.. image:: peru/peru-posted-invoice.png
:align: center
:alt: Sending of EDI Invoice in blue
:alt: Sending of EDI Invoice in blue.
Asynchronous means that the document is not sent automatically after the invoice has been posted.
@@ -417,16 +442,14 @@ done either automatically by Odoo with a *cron* that runs every hour, or the use
immediately by clicking on the button “Sent now”.
.. image:: peru/peru-sent-manual.png
:align: center
:alt: Send EDI manually
:alt: Send EDI manually.
**Sent**: Indicates the document was sent to the OSE and was successfully validated. As part of
the validation a ZIP file is downloaded and a message is logged in the chatter indicating the
correct Government validation.
.. image:: peru/peru-invoice-sent.png
:align: center
:alt: Message on chatter when the invoice is valid
:alt: Message on chatter when the invoice is valid.
In case there is a validation error the Electronic Invoice status remains in “To be sent” so the
corrections can be made and the invoice can be sent again.
@@ -453,8 +476,7 @@ If a validation error is received, you have two options:
changes, and then send the invoice again to the SUNAT for another validation.
.. image:: peru/peru-errors.png
:align: center
:alt: List of common errors on invoices
:alt: List of common errors on invoices.
For more detail please refert to `Common errors in SUNAT
<https://www.nubefact.com/codigos-error-sunat/>`_.
@@ -466,8 +488,7 @@ After the invoice is accepted and validated by the SUNAT, the invoice PDF report
The report includes a QR code, indicating the invoice is a valid fiscal document.
.. image:: peru/peru-PDF.png
:align: center
:alt: Invoice PDF report
:alt: Invoice PDF report.
IAP Credits
~~~~~~~~~~~
@@ -480,8 +501,7 @@ additional credits are required, you can easily buy them by accessing the link p
the message.
.. image:: peru/peru-credits-IAP.png
:align: center
:alt: Buying credits in the IAP
:alt: Buying credits in the IAP.
In the IAP service includes packages with different pricing based on the number of credits.
The price list in the IAP is always displayed in EUR.
@@ -497,8 +517,7 @@ If the invoice was already sent and validated by the SUNAT, the correct way to p
clicking on the button Request Cancellation:
.. image:: peru/peru-cancellation.png
:align: center
:alt: Request invoice cancellation button
:alt: Request invoice cancellation button.
In order to cancel an invoice, please provide a cancellation Reason.
@@ -511,22 +530,20 @@ immediately by clicking on the button “Send now”. Once it is sent, a cancell
created, as a result the next message and CDR File are logged in the chatter:
.. image:: peru/peru-cancellation-cdr.png
:align: center
:alt: Cancellation CDR sent by the SUNAT
:alt: Cancellation CDR sent by the SUNAT.
**Cancelled**: Indicates the cancellation request was sent to the OSE and was successfully
validated. As part of the validation a ZIP file is downloaded and a message is logged in the
chatter indicating the correct Government validation.
.. image:: peru/peru-cancelled.png
:align: center
:alt: nvoice after cancellation
:alt: Invoice after cancellation.
.. warning::
One credit is consumed on each cancellation request.
Cancellation process
********************
Export invoices
***************
When creating exportation invoices, take into account the next considerations:
@@ -535,8 +552,7 @@ When creating exportation invoices, take into account the next considerations:
- The taxes included in the invoice lines should be EXP taxes.
.. image:: peru/peru-exp-invoice.png
:align: center
:alt: Exportation invoices main data
:alt: Exportation invoices main data.
Advance Payments
****************
@@ -555,13 +571,11 @@ When creating invoices that is subject to Detractions, take into account the nex
#. All the products included in the invoice must have these fields configured:
.. image:: peru/peru-detraction.png
:align: center
:alt: Detraction fields on products
:alt: Detraction fields on products.
#. Operation type in your invoice must be ``1001``
.. image:: peru/peru-detraction-invoice.png
:align: center
:alt: Detraction code on invoices.
Credit Notes
@@ -572,8 +586,7 @@ for this just click on the button “Add Credit Note”, a part of the Peruvian
to prove a Credit Reason selecting one of the options in the list.
.. image:: peru/peru-credit-note.png
:align: center
:alt: Add Credit Note from invoice
:alt: Add Credit Note from invoice.
.. tip::
When creating your first credit Note, select the Credit Method: Partial Refund, this allows you
@@ -582,8 +595,7 @@ to prove a Credit Reason selecting one of the options in the list.
By default the Credit Note is set in the document type:
.. image:: peru/peru-credit-note-document.png
:align: center
:alt: Credit Note document type
:alt: Credit Note document type.
To finish the workflow please follow the instructions on :doc:`our page about Credit Notes
<../accounting/customer_invoices/credit_notes>`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

@@ -17,11 +17,10 @@ Online payments
payment_providers/flutterwave
payment_providers/mercado_pago
payment_providers/mollie
payment_providers/ogone
payment_providers/paypal
payment_providers/razorpay
payment_providers/sips
payment_providers/stripe
payment_providers/worldline
payment_providers/xendit
Odoo embeds several **payment providers** that allow your customers to pay online, on their
@@ -126,18 +125,18 @@ Online payment providers
- Full only
- Full and partial
-
* - :doc:`SIPS <payment_providers/sips>`
- The provider's website
-
-
-
-
* - :doc:`Stripe <payment_providers/stripe>`
- Odoo
- |V|
- Full only
- Full and partial
- |V|
* - :doc:`Worldline <payment_providers/worldline>`
- The provider's website
- |V|
-
-
-
* - :doc:`Xendit <payment_providers/xendit>`
- The provider's website
-
@@ -457,11 +456,10 @@ other payments.
- :doc:`payment_providers/demo`
- :doc:`payment_providers/mercado_pago`
- :doc:`payment_providers/mollie`
- :doc:`payment_providers/ogone`
- :doc:`payment_providers/paypal`
- :doc:`payment_providers/razorpay`
- :doc:`payment_providers/sips`
- :doc:`payment_providers/stripe`
- :doc:`payment_providers/worldline`
- :doc:`payment_providers/xendit`
- :doc:`../websites/ecommerce/checkout_payment_shipping/payments`
- :doc:`accounting/bank`
@@ -1,107 +0,0 @@
=====
Ogone
=====
`Ogone <https://www.ingenico.com/>`_, also known as **Ingenico Payment Services** is a France-based
company that provides the technology involved in secure electronic transactions.
.. seealso::
- :ref:`payment_providers/add_new`
- `Ogone's documentation <https://epayments-support.ingenico.com/get-started/>`_.
.. warning::
The provider Ogone is deprecated. It is recommended to use :doc:`stripe` instead.
Settings in Ogone
=================
Create an API user
------------------
Log into your Ogone account and head to the :guilabel:`Configuration` tab.
You need to create an **API user** to be used in the creation of transactions from Odoo. While you
can use your main account to do so, using an **API user** ensures that if the credentials used in
Odoo are leaked, no access to your Ogone configuration is possible. Additionally, passwords for
**API users** do not need to be updated regularly, unlike normal users.
To create an **API user**, go to :menuselection:`Configuration --> Users` and click on
:guilabel:`New User`. The following fields must be configured:
.. _ogone/ogone:
- :guilabel:`UserID`: you can choose anything you want.
- :guilabel:`User's Name, E-mail and Timezone`: you can enter the information you want.
- :guilabel:`Profile`: should be set to :guilabel:`Admin`.
- :guilabel:`Special user for API`: should be checked.
After the creation of the user, you are required to generate a password. Save the password and
**UserID**, as they will be required later on during the setup.
.. tip::
If you already have an user set up, make sure it is activated without any error. If not, simply
click the :guilabel:`Activate(Errors)` button to reset the user.
Set up Ogone for Odoo
---------------------
Ogone must now be configured to accept payments from Odoo. Head to :menuselection:`Configuration -->
Technical Information --> Global Security Parameters`, select :guilabel:`SHA-512` as
:guilabel:`Hash Algorithm` and :guilabel:`UTF-8` as :guilabel:`character encoding`. Then, go to the
:guilabel:`Data and Origin verification` tab of the same page and leave the URL field of the
:guilabel:`e-Commerce and Alias Gateway` section blank.
.. tip::
If you need to use another algorithm, such as `sha-1` or `sha-256`, within Odoo, activate the
:ref:`developer mode <developer-mode>` and go to the **Payment Providers** page in
:menuselection:`Accounting --> Configuration --> Payment Providers`. Click on :guilabel:`Ogone`,
and in the :guilabel:`Credentials` tab, select the algorithm you wish to use in the
:guilabel:`Hash function` field.
You are now required to generate **SHA-IN** passphrases. **SHA-IN** and **SHA-OUT** passphrases are
used to digitally sign the transaction requests and responses between Odoo and Ogone. By using these
secret passphrases and the `sha-1` algorithm, both systems can ensure that the information they
receive from the other was not altered or tampered with.
Enter the same **SHA-IN** passphrase in both :guilabel:`Checks for e-Commerce & Alias Gateway` and
:guilabel:`Checks for DirectLink and Batch (Automatic)`. You can leave the IP address field blank.
Your **SHA-IN** and **SHA-OUT** passphrases should be different, and between 16 and 32 characters
long. Make sure to use the same **SHA-IN** and **SHA-OUT** passphrases throughout the entire Ogone
configuration, as Odoo only allows a single **SHA-IN** and single **SHA-OUT** passphrase.
In order to retrieve the **SHA-OUT** key, log into your Ogone account, go to
:menuselection:`Configuration --> Technical Information --> Transaction feedback --> All
transaction submission modes`, and get or generate your **API Key** and **Client Key**. Be careful
to copy your API key as youll not be allowed to get it later without generating a new one.
When done, head to :menuselection:`Configuration --> Technical Information --> Transaction Feedback`
and check the following options:
- The :guilabel:`URL` fields for :guilabel:`HTTP redirection in the browser` can be left empty, as
Odoo will specify these URLs for every transaction request.
- :guilabel:`I would like to receive transaction feedback parameters on the redirection URLs`:
should be checked.
- :guilabel:`Direct HTTP server-to-server request`: should to be set to `Online but switch to a
deferred request when the online request fails`.
- Both **URL** fields should contain the same following URL, with `<example>` replaced by your
database: `https://<example>/payment/ogone/return`.
- :guilabel:`Dynamic eCommerce Parameters` should contain the following values: `ALIAS`, `AMOUNT`,
`CARDNO`, `CN`, `CURRENCY`, `IP`, `NCERROR` `ORDERID`, `PAYID`, `PM`, `STATUS`, `TRXDATE`. Other
parameters can be included (if you have another integration with Ogone that requires them), but
are not advised.
- In the :guilabel:`All transaction submission modes` section, fill out **SHA-OUT** passphrase and
disable `HTTP request for status change`.
To allow your customers to save their credit card credentials for future use, head to
:menuselection:`Configuration --> Alias --> My alias information`. From this tab, you can configure
how the user can have its card details saved, for how long the information is saved, if a checkbox
to save the card information should be displayed, etc.
Settings in Odoo
================
To set up Ogone in Odoo, head to :menuselection:`Accounting --> Configuration --> Payment Providers`
and open the Ogone provider. In the :guilabel:`Credentials` tab, enter the **PSPID** of your Ogone
account, and fill out the other fields as configured in your :ref:`Ogone portal <ogone/ogone>`.
@@ -1,32 +0,0 @@
====
SIPS
====
`SIPS <https://sips.worldline.com/>`_ is an online payments solution from the multinational
Worldline.
Configuration
=============
.. seealso::
- :ref:`payment_providers/add_new`
Credentials tab
---------------
Odoo needs your **API Credentials** to connect with your SIPS account, which comprise:
- **Merchant ID**: The ID solely used to identify the merchant account with SIPS.
- **Secret Key**: The key to sign the merchant account with SIPS.
- **Secret Key Version**: The version of the key, pre-filled.
- **Interface Version**: Pre-filled, don't change it.
You can copy your credentials from your SIPS environment info documentation, in the section
**PROD**, and paste them in the related fields under the **Credentials** tab.
.. important::
If you are trying SIPS as a test, with the *TEST* credentials, change the **State** to *Test
Mode*. We recommend doing this on a test Odoo database, rather than on your main database.
.. seealso::
- :doc:`../payment_providers`
@@ -0,0 +1,68 @@
=========
Worldline
=========
`Worldline <https://worldline.com/>`_ is a France-based company and the world's fourth largest
payment provider.
Settings in Worldline
=====================
.. _worldline/API-user:
Create an API user
------------------
It is recommended to set up an **API user** to create transactions from Odoo to ensure that your
Worldline configuration remains safe even if credentials are compromised. Additionally, API users do
not require frequent password updates like regular accounts.
To create an **API user**, proceed as follows:
#. Log into your `Worldline Merchant Portal <https://merchant-portal.preprod.worldline-solutions.com/dashboard>`_,
click the :icon:`fa-th` (:guilabel:`menu`) icon, and select :guilabel:`Back Office`.
#. Go to :menuselection:`Configuration --> Users` and click on :guilabel:`New User`.
#. Configure the following fields:
#. Specify a :guilabel:`UserID`, :guilabel:`User's name`, :guilabel:`E-mail address`, and
:guilabel:`Timezone` of your choice.
#. Set the :guilabel:`Profile` field to :guilabel:`Admin`.
#. Enable :guilabel:`Special user for API`.
.. tip::
If you have already set up a user, make sure it is activated without any error.
.. _worldline/set-up:
Set up Worldline for Odoo
-------------------------
Worldline must now be configured to accept payments from Odoo.
#. From your merchant portal, go to :menuselection:`Developer --> Payment API` and click on
:guilabel:`Generate API key`. Copy the :guilabel:`API key ID` and the :guilabel:`Secret API key`
and save them for :ref:`later <wordline/odoo-configuration>`.
#. Go to :menuselection:`Developer --> Webhooks` and click on :guilabel:`Generate webhook keys`.
Copy the :guilabel:`Webhook ID` and the associated :guilabel:`Secret webhook key` and
save them for :ref:`later <wordline/odoo-configuration>`.
#. | Click :guilabel:`Add webhook endpoint`, enter your Odoo database's URL followed by
`/payment/worldline/webhook` in the :guilabel:`Endpoint url` field, and :guilabel:`Confirm`.
| For example: `https://example.odoo.com/payment/worldline/webhook`.
.. _wordline/odoo-configuration:
Settings in Odoo
================
To set up Worldline in Odoo:
#. :ref:`Navigate to the payment provider Worldline <payment_providers/add_new>` and change its
state to :guilabel:`Enabled`.
#. In the :guilabel:`Credentials` tab, enter the :guilabel:`PSPID` of your Worldline account and
fill in the :guilabel:`API Key`, :guilabel:`API Secret`, :guilabel:`Webhook Key`, and
:guilabel:`Webhook Secret` with the values you saved at the step :ref:`Set up Worldline for
Odoo <worldline/set-up>`.
#. Configure the rest of the options to your liking.
.. seealso::
:doc:`../payment_providers`
@@ -141,7 +141,7 @@ SPF, DKIM and DMARC documentation of common providers
- `GoDaddy CNAME record <https://www.godaddy.com/help/add-a-cname-record-19236>`_
- `NameCheap <https://www.namecheap.com/support/knowledgebase/article.aspx/317/2237/how-do-i-add-txtspfdkimdmarc-records-for-my-domain/>`_
- `CloudFlare DNS <https://support.cloudflare.com/hc/en-us/articles/360019093151>`_
- `Google Domains <https://support.google.com/domains/answer/3290350?hl=en>`_
- `Squarespace DNS records <https://support.squarespace.com/hc/en-us/articles/360002101888-Adding-custom-DNS-records-to-your-Squarespace-managed-domain>`_
- `Azure DNS <https://docs.microsoft.com/en-us/azure/dns/dns-getstarted-portal>`_
To fully test the configuration, use the `Mail-Tester <https://www.mail-tester.com/>`_ tool, which
@@ -317,3 +317,43 @@ To change the default behavior, enable :ref:`developer-mode`, then go to :menuse
.. important::
These parameters are only used to prevent the creation of new records. They **do not prevent
replies** from being added to the chatter.
Allow alias domain system parameter
===================================
Incoming aliases are set in the Odoo database to create records by receiving incoming emails. To
view aliases set in the Odoo database, first activate the :ref:`developer mode <developer-mode>`.
Then, go to :menuselection:`Settings app --> Technical --> Aliases`.
The following system parameter, `mail.catchall.domain.allowed`, set with allowed alias domain
values, separated by commas, filters out correctly addressed emails to aliases. Setting the domains
for which the alias can create a ticket, lead, opportunity, etc., eliminates false positives where
email addresses with only the prefix alias, not the domain, are present.
In some instances, matches have been made in the Odoo database when an email is received with the
same alias prefix and a different domain on the incoming email address. This is true in the sender,
recipient, and :abbr:`CC (Carbon Copy)` email addresses of an incoming email.
.. example::
When Odoo receives emails with the `commercial` prefix alias in the sender, recipient, or
:abbr:`CC (Carbon Copy)` email addresses (e.g. commercial\@example.com), the database falsely
treats the email as the full `commercial` alias, with a different domain, and therefore, creates
a ticket/lead/opportunity/etc.
To add the `mail.catchall.domain.allowed` system parameter, first, activate the :ref:`developer mode
<developer-mode>`. Then, go to :menuselection:`Settings app --> Technical --> System Parameters`.
Click :guilabel:`New`. Then, type in `mail.catchall.domain.allowed` for the :guilabel:`Key` field.
Next, for the :guilabel:`Value` field, add the domains separated by commas. Manually
:icon:`fa-cloud-upload` :guilabel:`(Save)`, and the system parameter takes immediate effect.
.. image:: email_servers_inbound/allowed-domain.png
:alt: mail.catchall.domain.allowed system parameter set.
Local-part based incoming detection
===================================
When creating a new alias, there is an option to enable :guilabel:`Local-part based incoming
detection`. If enabled, Odoo only requires the local-part to match for routing an incoming email. If
this feature is turned off, Odoo requires the whole email address to match for routing an incoming
email.
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

@@ -97,8 +97,8 @@ printer.
:alt: Edit the printer connected to the IoT box.
.. note::
Epson and Star receipt printers and Zebra label printers do not need a driver to work. Make sure
that no driver is selected for those printers.
Epson receipt printers and Zebra label printers do not need a driver to work. Make sure that no
driver is selected for those printers.
The printer is detected but is not recognized correctly
-------------------------------------------------------
Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

+2
View File
@@ -174,6 +174,7 @@ document.
- :doc:`appraisals/new_appraisals`
- :doc:`appraisals/goals`
- :doc:`appraisals/appraisal_analysis`
- :doc:`appraisals/skills_evolution`
.. toctree::
:titlesonly:
@@ -181,3 +182,4 @@ document.
appraisals/new_appraisals
appraisals/goals
appraisals/appraisal_analysis
appraisals/skills_evolution
@@ -24,13 +24,12 @@ Each appraisal card displays the following information:
- **Name**: the employee's name.
- **Department**: the department the employee is associated with.
- **Company**: the company the employee works for. This only appears in a multi-company
database.
- **Company**: the company the employee works for. This only appears in a multi-company database.
- **Date**: the date the appraisal was requested, or is scheduled for in the future.
- **Activities**: any :doc:`activities <../../essentials/activities>` that are scheduled for the
appraisal, such as *Meetings* or *Phone Calls*.
- **Manager**: the employee's manager, indicated by the profile icon in the bottom-right
corner of an appraisal card.
- **Manager**: the employee's manager, indicated by the profile icon in the bottom-right corner of
an appraisal card.
- **Status banner**: the status of the appraisal. A banner appears if an appraisal is marked as
either *Canceled* or *Done*. If no banner is present, that means the appraisal has not happened,
or has not been scheduled yet.
@@ -274,8 +273,9 @@ Once the appraisal is marked as *Done*, the :guilabel:`Mark as Done` button disa
button.
Then, click the :guilabel:`Confirm` button that appears, and make any modifications needed. Once
all modifications are complete, click the the :guilabel:`Mark as Done` button again.
all modifications are complete, click the :guilabel:`Mark as Done` button again.
.. seealso::
- :doc:`../appraisals/goals`
- :doc:`../appraisals/appraisal_analysis`
- :doc:`../appraisals/skills_evolution`
@@ -0,0 +1,164 @@
================
Skills evolution
================
In Odoo's **Appraisals** app, it is possible to view employee's skills as they progress over time in
the :ref:`Skills Evolution <appraisals/identify-skills-evolution>` report, also known as the
*Appraisal Skills Report*.
Managers can use this to see who is achieving their various skill goals set on their appraisals, who
is meeting their skill deadlines, who has the highest performance in terms of skill development, and
more.
The *Skills Evolution* report also provides the ability to :ref:`search for employees with specific
skills <appraisals/identify-skills>` at certain levels, which can be helpful for scenarios where
specific skills are required.
.. _appraisals/identify-skills-evolution:
Skills evolution report
=======================
To access this *Skills Evolution* report, navigate to :menuselection:`Appraisals app --> Reporting
--> Skills Evolution`.
Doing so reveals the :guilabel:`Appraisal Skills Report` page, which displays a report of all
skills, grouped by employee, in alphabetical order, by default.
.. note::
Skill levels are **only** updated after an appraisal is marked as done. Any skill level changes
from ongoing appraisals that have **not** been finalized are **not** included in this report.
All the :guilabel:`Employee` lines are expanded, with all the various skill types nested below. Each
individual skill type is collapsed, by default. To view the individual skills contained within a
skill type, click anywhere on the skill type line to expand the data.
Each skill has the following information listed:
- :guilabel:`Employee`: the name of the employee.
- :guilabel:`Skill Type`: the category the skill falls under.
- :guilabel:`Skill`: the specific, individual skill.
- :guilabel:`Previous Skill Level`: the level the employee had previously achieved for the skill.
- :guilabel:`Previous Skill Progress`: the previous percentage of competency achieved for the skill
(based on the :guilabel:`Skill Level`).
- :guilabel:`Current Skill Level`: the current level the employee has achieved for the skill.
- :guilabel:`Current Skill Progress`: the current percentage of competency achieved for the skill.
- :guilabel:`Justification`: any notes entered on the skill, explaining the progress.
The color of the skill text indicates any changes from the previous appraisal. Skill levels that
have increased since the last appraisal appear in green, as an *Improvement*. Skill levels that have
**not** changed appear in black, as *No Change*. Skills that have regressed appear in red, as
*Regression*.
This report can be modified to find specific information by adjusting the :ref:`filters
<search/filters>` and :ref:`groupings <search/group>` set in the search bar at the top.
.. image:: skills_evolution/skills-report.png
:align: center
:alt: A report showing all the skills grouped by employee.
.. _appraisals/identify-skills:
Use case: Identify employees with specific skills
=================================================
Since the :guilabel:`Appraisal Skills Report` organizes all skills by employee, it can be difficult
to find employees with a specific skill at a specific level. To find these employees, a custom
filter must be used.
In this example, the report is modified to show employees with an expert level of Javascript
knowledge. To view only those employees, first remove all active filters in the search bar.
Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, then click
:guilabel:`Add Custom Filter` beneath the :icon:`fa-filters` :guilabel:`Filters` column to load an
:guilabel:`Add Custom Filter` pop-up window.
Using the drop-down menu in the first field, select :guilabel:`Skill`. Then, keep the second field
as-is, and select :guilabel:`Javascript` from the third drop-down menu in the third field.
Next, click :guilabel:`New Rule`, and another line appears. In this second line, select
:guilabel:`Current Skill Level` for the first drop-down field, leave the second field as-is, then
select :guilabel:`Expert` for the third drop-down field.
After the :guilabel:`New Rule` button is clicked, the word :guilabel:`"any"` in the sentence
:guilabel:`Match any of the following rules:`, changes from plain text into a drop-down menu. Click
the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon after the word :guilabel:`any`, and select
:guilabel:`all`.
Finally, click the :guilabel:`Add` button.
.. image:: skills_evolution/javascript.png
:align: center
:alt: The Custom Filter pop-up with the parameters set.
Now, only employees that have an :guilabel:`Expert` level for the skill :guilabel:`Javascript`
appear. In this example, only :guilabel:`Marc Demo` meets these criteria.
.. image:: skills_evolution/results.png
:align: center
:alt: The employees with expert Javascript skills.
Use case: Assess highest improvement
====================================
Another way to modify the :guilabel:`Appraisal Skills Report` is to identify the employee who has
the highest amount of improved skills over a specific period of time.
To view this information, first remove the default filter in the search bar. Next, click the
:icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, then click
:guilabel:`Improvement` beneath the :icon:`fa-filter` :guilabel:`Filters` column. Enabling this
filter only presents skills that have improved.
It is possible to view the skills that have improved over a period of time, such as a specific
quarter, or month. With the search bar drop-down menu still expanded, click :guilabel:`Add Custom
Filter` at the bottom of the :icon:`fa-filter` :guilabel:`Filters` column, and an :guilabel:`Add
Custom Filter` pop-up window appears.
Select :guilabel:`Create Date` for the first drop-down field, then select :guilabel:`is between` for
the second drop-down field. Once :guilabel:`is between` is selected, a second field appears after
the last field. Using the calendar selector, select the date range to apply the filter to. Once all
the fields are properly formatted, click :guilabel:`Add`.
The custom filter presents only the skills that have improved during the specified time period,
organized by employee.
.. example::
To determine the employee with the most amount of improved skills for the third quarter, remove
the default filter in the search bar of the :guilabel:`Appraisal Skills Report`. Next, activate
the :guilabel:`Improvement` filter, then click :guilabel:`Add Custom Filter` at the bottom of the
:icon:`fa-filter` :guilabel:`Filters` column.
In the resulting :guilabel:`Add Custom Filter` pop-up window, select :guilabel:`Create Date` for
the first drop-down field, then select :guilabel:`is between` for the second drop-down field. Two
date fields appear after :guilabel:`is between` is selected.
Using the calendar selector, set the first date to :guilabel:`07/01/2024` and the second date to
:guilabel:`09/30/2024`, then click :guilabel:`Add`.
These filters present only the skills that have improved during the third quarter (between July
1st and September 30th, 2024), organized by employee.
.. image:: skills_evolution/custom-filter.png
:alt: The Custom Filter pop-up with the parameters set.
To view the number of employees and skills in further detail, click the :icon:`oi-view-pivot`
:guilabel:`(Pivot)` icon in the top-right corner to view the data in a pivot table. This presents a
pivot table with the employees populating the rows, and the only visible column represents the total
number of improved skills.
To expand more rows or columns to view which skill types had the most overall improvement, click
:icon:`fa-plus-square` :guilabel:`Total` above the :guilabel:`Count` column, then click
:guilabel:`Skill Type` from the resulting drop-down menu. This organizes the total improved skills
by their respective skill type.
.. example::
In this example, it is determined that :guilabel:`Charles Reginald` had the largest improvement
in the third quarter, with six improved skills. Additionally, they also had the most skill
improvements for both :guilabel:`Languages` (three) and :guilabel:`Programming Languages` (two).
.. image:: skills_evolution/largest-improvement.png
:alt: The pivot table showing the skill improvements for the third quarter.
.. seealso::
- :doc:`Odoo essentials reporting <../../essentials/reporting>`
- :doc:`../../essentials/search`
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

+2
View File
@@ -13,4 +13,6 @@ Odoo *Employees* organizes a company's employee records, contracts, and departme
employees/new_employee
employees/departments
employees/certifications
employees/offboarding
employees/retention_report
@@ -0,0 +1,117 @@
==============
Certifications
==============
When jobs require specific knowledge, it is necessary to track employee certifications to ensure the
necessary knowledge and certifications are in place.
Certifications include classes, tests, professional seminars, and more. There are no restrictions in
terms of what type of certification records can be added in Odoo.
.. important::
To access the *Employee Certifications* report, the **Surveys** app **must** be installed.
View certifications
===================
To view a full list of all employee certifications, navigate to :menuselection:`Employees app -->
Reporting --> Certifications`.
All certifications appear in a list view, grouped by employee. Each certification entry displays the
following:
- :guilabel:`Employee`: the employee's name, along with their avatar image.
- :guilabel:`Name`: the title of the certification.
- :guilabel:`Validity Start`: when the employee received the certification.
- :guilabel:`Validity End`: when the certification expires.
- :guilabel:`Certification`: the corresponding course in the **Surveys** app that was completed by
the employee, if applicable.
The entries are also color-coded. Current certifications that are still valid appear in black,
expired certifications appear in red, and certifications that are going to expire within the next
90 days appear in orange.
.. image:: certifications/certifications.png
:align: center
:alt: The list of employee certifications.
.. important::
**Only** certification records with the *Display Type* set to *Certification* on their
:ref:`certification form <employees/certifications-form>` appear on the :guilabel:`Employee
Certifications` report. All other certifications appear in the resume section of the
:doc:`employee form <new_employee>`.
View certifications by expiration status
----------------------------------------
When managing a large number of employees with a variety of certifications, it can be difficult to
determine which employees need to keep necessary certifications current in the default list view. In
this scenario, it is beneficial to view the certifications by expiration status.
To do so, navigate to :menuselection:`Employees app --> Reporting --> Certifications`. Next, click
the :icon:`fa-caret-down` :guilabel:`(down arrow)` in the search bar, then click :guilabel:`Add
Custom Group`, revealing a drop-down menu. Click :guilabel:`Expiration Status`, then click away from
the drop-down menu to close it.
After doing so, all the certifications are organized by status, starting with :guilabel:`Expired`
certifications, then certifications that are :guilabel:`Expiring` soon (within the next 90 days),
and lastly, certifications that are still :guilabel:`Valid`.
This view provides an easy way to see which employees have certifications that are going to expire
soon, to determine which employees need to take action to keep their certifications current.
.. image:: certifications/status.png
:align: center
:alt: The list of employee certifications, grouped by status.
.. _employees/certifications-form:
Log a certification
===================
To log a certification for an employee, navigate to :menuselection:`Employees app --> Reporting -->
Certifications`. Click :guilabel:`New`, and a blank certification form loads. Enter the following
information on the form:
- :guilabel:`Title`: Enter a short description for the certification in this field.
- :guilabel:`Employee`: Using the drop-down menu, select the employee who received the
certification.
- :guilabel:`Type`: Using the drop-down menu, select the type of certification received. This field
determines where on the employee's resume the certification appears. To create a new
:guilabel:`Type`, enter the type in the field, then click :guilabel:`Create "type"`.
The default options are:
- :guilabel:`Experience`: Select this option to have the certification appear in the *Experience*
section of the *Resume* tab on the :doc:`employee form <new_employee>`.
- :guilabel:`Education`: Select this option to have the certification appear in the *Education*
section of the *Resume* tab on the :doc:`employee form <new_employee>`.
- :guilabel:`Internal Certification`: Select this option to have the certification appear in the
*Internal Certification* section of the *Resume* tab on the :doc:`employee form <new_employee>`.
- :guilabel:`Completed Internal Training`: Select this option to have the certification appear in
*Completed Internal Training* section of the *Resume* tab on the :doc:`employee form
<new_employee>`.
- :guilabel:`Display Type`: Select the visibility of the certification in this field. The default
options are:
- :guilabel:`Classic`: Select this option to have the certification appear in the *Resume* section
of the employee form, and **not** appear on the *Employee Certifications* report.
- :guilabel:`Course`: Select this option to have the certification appear in the *Resume* section
of the employee form, and **not** appear on the *Employee Certifications* report. Once this
option is selected, a :guilabel:`Course` field appears beneath the :guilabel:`Display Type`
field. Using the drop-down menu, select the course the employee took. The course is created in
the **Surveys** app.
- :guilabel:`Certification`: Select this option to have the certification appear in the *Resume*
section of the employee form, **and** appear on the *Employee Certifications* report. Once this
is selected, a :guilabel:`Certification` field appears beneath the :guilabel:`Display
Type` field. Using the drop-down menu, select the certification the employee took.
- :guilabel:`Description`: Enter a description for the certification in this field.
- :guilabel:`Duration`: Click into the first field, and a calendar pop-over window appears. Click on
the start and end dates for the certification validity period. When the correct dates are
selected, click :icon:`fa-check` :guilabel:`Apply`, and both fields are populated.
.. image:: certifications/osha.png
:align: center
:alt: A certification form filled out for an OSHA certificate for construction.
Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@@ -0,0 +1,103 @@
=========================
Employee retention report
=========================
It is possible to determine the retention rate for a company by modifying an existing report.
First, navigate to :menuselection:`Employees app --> Reporting --> Contracts` to open the
:guilabel:`Employee Analysis` report. This report shows the number of all employees for the
:guilabel:`Last 365 Days`, in a default :icon:`fa-line-chart` :guilabel:`Line Chart`.
.. image:: retention_report/employees-analysis.png
:align: center
:alt: The default Employees Analysis report.
Next, click the :guilabel:`Measures` :icon:`fa-caret-down` button in the upper-left corner,
revealing a drop-down menu. Click :guilabel:`# Departure Employee` in the list, then click away from
the drop-down menu to close it. Now, the report shows all the employees who were archived for the
:guilabel:`Last 365 Days`.
To view this information in an easier format, click the :icon:`oi-view-pivot` :guilabel:`(Pivot)`
icon in the upper-right corner, and the data is presented in a pivot table.
The various employees, organized by department, populate the rows. The columns display the following
totals: the monthly :guilabel:`Wage`, the :guilabel:`Fuel Card` budget, total :guilabel:`Annual
Employee Budget` (also referred to as the *annual salary*), the number of :guilabel:`New Employees`,
as well as the number of :guilabel:`Departure Employees` (employees who left).
.. image:: retention_report/pivot-departures.png
:align: center
:alt: The Employees Analysis report, modified to show departed employees only.
Employee retention rate comparison report
=========================================
It is possible to compare data only for employees who left, compared to the total current employees,
between two separate time periods. This is commonly referred to as the *employee retention rate*.
To view these metrics, first open the :guilabel:`Employee Analysis` report by navigating to
:menuselection:`Employees app --> Reporting --> Contracts`. Click the :icon:`oi-view-pivot`
:guilabel:`(Pivot)` icon in the upper-right corner to view the information in a pivot table.
Next, click the :guilabel:`Measures` :icon:`fa-caret-down` button in the upper-left corner,
revealing a drop-down menu. Click :guilabel:`# New Employees`, :guilabel:`Annual Employee Budget`,
:guilabel:`Fuel Card`, and :guilabel:`Wage` in the list, to deselect these metrics and hide them in
the table. Then, click :guilabel:`Count` at the bottom of the list to enable that metric.
Click away from the drop-down menu to close it. Now, the report shows all the employees who left the
company (:guilabel:`# Departure Employee`), as well as the total number of employees
(:guilabel:`Count`), for the :guilabel:`Last 365 Days`.
To compare the data for the current year with the previous year, click the :icon:`fa-caret-down`
:guilabel:`(down arrow)` in the search bar, revealing multiple filter and grouping options. Click
:guilabel:`Last 365 Days` in the :icon:`fa-filter` :guilabel:`Filters` column, to turn off that
filter. Then, click :guilabel:`Date`, and click the current year (in this example, :guilabel:`2024`)
from the resulting drop-down menu.
Once a selection is made beneath :guilabel:`Date` in the :icon:`fa-filter` :guilabel:`Filters`
column, a :icon:`fa-adjust` :guilabel:`Comparison` column appears. Click :guilabel:`Date: Previous
Year` in the new column, then click off of the drop-down menu to close it.
.. note::
In Odoo, in order to access the :icon:`fa-adjust` :guilabel:`Comparison` column, a specific time
*other than* :guilabel:`Last 365 Days` **must** be selected. If not, the :icon:`fa-adjust`
:guilabel:`Comparison` column is **not** visible.
Now, the pivot table displays the total number of employees who left the company (:guilabel:`#
Departure Employee`), as well as the total number of employees (:guilabel:`Count`) in the columns.
These are further divided by the two different years, and also displays the :guilabel:`Variation`
between the two.
The rows display the departments, and lists each individual employee for each department, in the
rows.
For a more concise view of this report, click :icon:`fa-minus-square-o` :guilabel:`Total` above the
top row of the departments and employees, to collapse the rows. Now, the table presents the total
number of employees who left the company for both years, compared to the total number of employees
for both years, including the difference, in a percentage.
.. example::
In this example, :guilabel:`3` employees out of :guilabel:`83` left in 2023, and :guilabel:`8`
employees out of :guilabel:`202` left in 2024. There was a :guilabel:`166.67%` increase in the
employees who left in 2024 as compared to 2023. Additionally, there was a :guilabel:`143.37%`
increase in the total number of employees in 2024 as compared to 2023.
.. image:: retention_report/comparison-years.png
:align: center
:alt: The report modified to show the difference between two years of employees who left.
To view more detailed rates for each department, click :icon:`fa-plus-square` :guilabel:`Total` in
the single row, revealing a drop-down menu, and click :guilabel:`Department`. Click away from the
drop-down to close it, and now the pivot table displays the total number of employees who left
(:guilabel:`# Departure Employee`), the total number of employees (:guilabel:`Count`), and the
:guilabel:`Variation` (in a percentage) for both 2023 and 2024, organized by department.
.. example::
In this example, it can be determined that the :guilabel:`Management` department had the best
retention rate in 2024 as compared to 2023, with a :guilabel:`Variation` rate of
:guilabel:`-100%`. Additionally, it can be determined that the :guilabel:`Management / Research &
Development` department had the most turnover, with a :guilabel:`Variation` of :guilabel:`300%`.
.. image:: retention_report/department-totals.png
:align: center
:alt: The expanded employee retention report by department.
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

+6
View File
@@ -192,6 +192,12 @@ The order of the list does not affect the database in any way. However, it may b
the vehicle categories in a specific order, for example, by size, or the numbers of passengers the
vehicle can carry.
.. note::
When used with the **Inventory** app, the :guilabel:`Max Weight` and :guilabel:`Max Volume`
fields track a vehicle's capacity. This helps manage in-house deliveries by :doc:`showing how
much space and weight remain for loading products
<../../inventory_and_mrp/inventory/shipping_receiving/setup_configuration/dispatch>`.
.. image:: models/categories.png
:align: center
:alt: List view of the models in the fleet.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 14 KiB

+4
View File
@@ -963,6 +963,8 @@ form.
- :doc:`payroll/payslips`
- :doc:`payroll/work_entries`
- :doc:`payroll/reporting`
- :doc:`payroll/work_entry_analysis`
- :doc:`payroll/salary_attachment`
.. toctree::
:titlesonly:
@@ -971,3 +973,5 @@ form.
payroll/work_entries
payroll/payslips
payroll/reporting
payroll/work_entry_analysis
payroll/salary_attachment
+4 -90
View File
@@ -178,97 +178,11 @@ spreadsheet view with the report added to it.
.. _payroll/doc-storage:
.. note::
If the *Documents* app is **not** installed, the :guilabel:`Insert in Spreadsheet` option places
the newly-created spreadsheet in the *Dashboards* app.
If the **Documents** app is **not** installed, the :guilabel:`Insert in Spreadsheet` option
places the newly-created spreadsheet in the **Dashboards** app.
If the *Documents* application **is** installed, the spreadsheet has the option to be stored in
either the *Dashboards* app or *Documents* app.
Work entry analysis
-------------------
The default :guilabel:`Work entry analysis` report provides an overview of the validated work
entries for the current month. To view this report, navigate to :menuselection:`Payroll app -->
Reporting --> Work Entry Analysis`.
The work entries appear in a pivot table, with the default filters of `Current month: (Month)(Year)`
and `Validated`. The various types of :doc:`work_entries` are listed on the left-hand side (x-axis),
while the :guilabel:`Total` values appear along the top (the y-axis).
To change the displayed view, click the :guilabel:` (plus)` icon next to the word
:guilabel:`Total`, then click on one of the grouping options. The available options are
:guilabel:`Work Entry Type`, :guilabel:`Employee`, and :guilabel:`Department`. If in a multi-company
database, a :guilabel:`Company` option also appears.
To add a new group to sort the data, click :guilabel:`Add Custom Group`, then click one of the
presented options.
.. tip::
Wherever a :guilabel:` (plus)` icon appears on a pivot table, the information can be further
grouped. Click on a :guilabel:` (plus)` icon to reveal the available grouping options.
Click on a :guilabel:` (minus)` icon anywhere on the pivot table to remove that respective
grouping.
It is possible to compare the current :guilabel:`Work entry analysis` report to the previous month
or the previous year. To view these comparisons, click the :guilabel:`⬇️ (down arrow)` icon in the
search bar to reveal the various :ref:`filter <payroll/filters>` and grouping options.
In the section titled :guilabel:`Comparison`, click on either :guilabel:`Current Month: Previous
Period` or :guilabel:`Current Month: Previous Year`. The report updates and displays the previous
time period values, as well as the :guilabel:`Variation` between the two.
.. image:: reporting/work-entry-comparison.png
:align: center
:alt: A pivot table comparing the work entries of the current month and the previous month.
To export the data in an XLSX format, click the :guilabel:`Download xlsx` button, represented by a
:guilabel:`⬇️ (down arrow above a horizontal bar)` icon, located at the far-right of the available
icons. The information is then downloaded into a spreadsheet.
The data can also be inserted into a spreadsheet. Click the :guilabel:`Insert in Spreadsheet` button
and a :guilabel:`Select a spreadsheet to insert your (type of report)` pop-up window appears, asking
which spreadsheet to place the information in. Select an existing spreadsheet or dashboard, or
select a new :guilabel:`Blank spreadsheet`. Click the :guilabel:`Confirm` button to move to a
spreadsheet view with the report added to it.
.. note::
The work entry analysis spreadsheet is :ref:`stored in the same locations <payroll/doc-storage>`
as a pivot table.
Salary attachment report
------------------------
The :guilabel:`Salary Attachment Report` shows all deductions or allocations per employee, such as
child support payments and wage garnishments. To view this report, navigate to
:menuselection:`Payroll app --> Reporting --> Salary Attachment Report`.
.. image:: reporting/attachment-of-salary.png
:align: center
:alt: View the Attachment of Salary report that shows all salary garnishments.
The employees are listed in the left-side column, while the different deductions are listed in the
top row, organized by deduction and monthly individual payslips.
The report can be exported as an XLSX file, or inserted into a spreadsheet, using the corresponding
buttons at the top.
Click the :guilabel:`Measures` button to reveal the options of what data can be displayed.
:guilabel:`Assignment of salary`, :guilabel:`Attachment of salary`, :guilabel:`Child support`, and
:guilabel:`Count` can all be selected or deselected by clicking on the item. If an item has a
checkmark next to it, that information is displayed.
.. image:: reporting/attachment-measures.png
:align: center
:alt: Select the options to be displayed in the Salary Attachment Report.
The :guilabel:`Salary Attachment Report` can be compared to the report for the previous time period
or the previous year. To view these comparisons, click the :guilabel:`⬇️ (down arrow)` icon in the
search bar to reveal the various :ref:`filter <payroll/filters>` and grouping options.
In the section titled :guilabel:`Comparison`, click on either :guilabel:`Payslip End Date: Previous
Period` or :guilabel:`Payslip End Date: Previous Year`. The report updates and displays the
previous time period values, as well as the :guilabel:`Variation` between the two.
If the **Documents** application *is* installed, the spreadsheet has the option to be stored in
either the **Dashboards** app or **Documents** app.
.. _payroll/filters:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

@@ -0,0 +1,63 @@
========================
Salary attachment report
========================
*Salary attachments* in Odoo refer to a portion of an employee's earnings that are designated for
a specific purpose, both voluntary and involuntary. These can include contributions to a retirement
plan, repayment of a loan, wage garnishments, or child support.
Voluntary salary attachments, such as repaying a loan, or contributing to a charity on a monthly
basis, are considered *Assignments of Salary* in Odoo. Salary attachments that are required, such as
a lawsuit settlement repayment, or repaying a tax lien, are considered *Attachments of Salary* in
Odoo. Child support payments have their own category, and are simply referred to as *Child Support*
in Odoo.
To view this report, navigate to :menuselection:`Payroll app --> Reporting --> Salary Attachment
Report`. The :guilabel:`Salary Attachment Report` shows all deductions or allocations per employee,
organized by payslip, in a default pivot table. The default filter is the end of the current year
(:guilabel:`Payslip End Date: (year)`). The employees populate the rows, while the various
deductions populate the columns, organized by type of deduction, and further grouped by individual
payslip.
The default report contains **all** payslips for the current year, so the report typically contains
a large number of columns. This could make it difficult to view all the data at once, as the report
may be very wide and require scrolling to view all the data.
To view a condensed version of salary attachments, and have all the salary attachment columns
visible on one page, click the :icon:`fa-minus-square-o` :guilabel:`Total` icon at the top of the
report, above the various payslips.
This presents the salary attachments for the current year, and only displays three columns,
:guilabel:`Attachment of Salary`, :guilabel:`Assignment of Salary`, and :guilabel:`Child Support.`
Each entry displays the total amount paid for each specific type of salary attachment, for each
employee.
.. image:: salary_attachment/salary-attachment.png
:alt: The Attachment of Salary report that shows all salary garnishments in a condensed view.
The report can be downloaded as an XLSX file, or :doc:`inserted into a spreadsheet
<../../productivity/spreadsheet/insert>` using the corresponding buttons at the top.
Click the :guilabel:`Measures` button to reveal the options of what data is displayed.
:guilabel:`Assignment of salary`, :guilabel:`Attachment of salary`, and :guilabel:`Child support`
are all selected and visible, by default, while the :guilabel:`Count` option is not.
Click an option to either show or hide that particular metric. A :icon:`fa-check`
:guilabel:`(checkmark)` icon indicates the data is visible.
Compare to previous year
========================
The :guilabel:`Salary Attachment Report` can be compared to the report for the previous time period
or the previous year.
To view these comparisons, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the
search bar, then click either :guilabel:`Payslip End Date: Previous Period` or :guilabel:`Payslip
End Date: Previous Year`, beneath the :icon:`fa-adjust` :guilabel:`Comparison` column.
The report updates and displays the current time period values, and the previous time period values,
as well as the :guilabel:`Variation` between the two, in a percentage.
.. image:: salary_attachment/comparison-attachment.png
:alt: The salary attachment report modified to compare to the previous year.
Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

@@ -59,8 +59,8 @@ Enter the following information on the form:
this field is left blank, it automatically populates once an employee is selected. The default
entry is `Attendance: (Employee)`.
- :guilabel:`Employee`: select the employee the work entry is for, using the drop-down menu.
- :guilabel:`Work Entry Type`: select the :ref:`work entry type <payroll/work-entries-config>` using
the drop-down menu.
- :guilabel:`Work Entry Type`: select the :ref:`work entry type <payroll/work-entries>` using the
drop-down menu.
- :guilabel:`From` and :guilabel:`To`: enter the start (:guilabel:`From`) and end (:guilabel:`To`)
dates and times for the work entry.
@@ -0,0 +1,80 @@
===================
Work entry analysis
===================
The default *Work Entries Analysis* report provides an overview of the validated work entries for
the current month. To view this report, navigate to :menuselection:`Payroll app --> Reporting -->
Work Entry Analysis`.
The work entries appear in a pivot table, with the default filters of :guilabel:`Current month:
(Month)(Year)` and :guilabel:`Validated`. The various types of :doc:`work_entries` populate the
rows, while the :guilabel:`Total` values populate the only visible column.
To change the displayed information, click :icon:`fa-plus-square` :guilabel:`Total` above the main
column, revealing a drop-down menu of available metrics. Click on one of the available groupings,
and the data is further organized by that selected metric. The default options are :guilabel:`Work
Entry Type`, :guilabel:`Employee`, and :guilabel:`Department`. If in a multi-company database, a
:guilabel:`Company` option also appears.
Work entry analysis comparison
==============================
It is possible to compare the work entries from one time period to a previous time period. To view
this comparison, first navigate to :menuselection:`Payroll app --> Reporting --> Work Entry
Analysis`.
Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, revealing a
drop-down menu. Under the :icon:`fa-adjust` :guilabel:`Comparison` section, click on either
:guilabel:`Current Month: Previous Period` or :guilabel:`Current Month: Previous Year`.
The report updates and displays the data for the current time period, data for the selected previous
time period, as well as the :guilabel:`Variation` between the two, in a percentage.
.. image:: work_entry_analysis/work-entry-comparison.png
:alt: A pivot table comparing the work entries of the current month and the previous month.
.. note::
If no work entries for a specific :ref:`work entry type <payroll/work-entries>` are logged for
the time period, it does **not** appear on the report. That does **not** mean the work entry type
does not exist, or is not configured.
Additionally, if the default :guilabel:`Current month: (Month)(Year)` filter is removed from the
search bar, the :guilabel:`Comparison` column does **not** appear; there must be a time-frame
selected to view the :guilabel:`Comparison` column.
Use case: overtime report comparison
====================================
It is possible to alter the *Work Entries Analysis* report to show a comparison of only overtime
work entries, grouped by employee, for a specific time period. To view this data, first navigate to
the default *Work entry analysis* report by going to :menuselection:`Payroll app --> Reporting -->
Work Entry Analysis`.
Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, revealing a
drop-down menu. Under the :icon:`fa-filter` :guilabel:`Filters` column, click :guilabel:`Add Custom
Filter`, and a :guilabel:`Add Custom Filter` pop-up window appears.
Using the drop-down menu, select :guilabel:`Work Entry Type` for the first field, leave the middle
field as-is (with :guilabel:`is in` populating the field), and select :guilabel:`Overtime Hours` for
the last field. Click :guilabel:`Add`, and all other work entry types disappear, and
:guilabel:`Overtime Hours` appear in the sole row.
To compare overtime from the current month to the previous month, to see which month had more
overtime logged, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon again in the search
bar. Under the :icon:`fa-adjust` :guilabel:`Comparison` section, click :guilabel:`Current Month:
Previous Period`. Click away from the drop-down menu to close it.
Now, the report displays the :guilabel:`Overtime Hours` for the current month and the previous
month, along with the :guilabel:`Variation`, in a percentage.
To view which employees received the most overtime, click :icon:`fa-plus-square` :guilabel:`Overtime
Hours`, revealing a drop-down menu of options. Click :guilabel:`Employee`, and all employees with
overtime work entries for either the current or previous month appears.
In this example, it can be determined that :guilabel:`Marc Demo` worked the most overtime in
:guilabel:`August 2024`, whereas :guilabel:`Beth Evans` worked the most overtime hours in
:guilabel:`September 2024`. Additionally, :guilabel:`Mitchell Admin` had the largest variation
change, with a :guilabel:`-100%` change from :guilabel:`August 2024` to :guilabel:`September 2024`.
.. image:: work_entry_analysis/variation.png
:alt: A pivot table comparing the overtime from September 2024 with August 2024.
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@@ -167,6 +167,8 @@ warehouse. Next, in the :guilabel:`Applicable on` section, tick the :guilabel:`P
Route with "Packagings" selected, with "Products" and "Warehouses" not selected.
.. _inventory/product_management/route-on-packaging:
Apply route on packaging
------------------------
@@ -10,3 +10,4 @@ Inventory valuation
inventory_valuation/inventory_valuation_config
inventory_valuation/using_inventory_valuation
inventory_valuation/integrating_landed_costs
inventory_valuation/valuation_by_lots
@@ -108,6 +108,8 @@ available during a prior specified date can be seen and selected.
the teal :guilabel:`➡️ (right arrow)` button to the right of the :guilabel:`Reference` column
value.
.. _inventory/product_management/update-unit-price:
Update product unit price
-------------------------
@@ -0,0 +1,208 @@
================================
Valuation by lots/serial numbers
================================
Track :doc:`inventory valuation <using_inventory_valuation>` by :doc:`lots or serial numbers
<../../product_management/product_tracking>` to:
#. :ref:`Compare and differentiate purchasing cost <inventory/product_management/view-valuation>`,
based on lot or serial numbers.
#. Track the actual cost of manufactured products, based on the real cost of each tracked component
used.
#. Depreciate specific lot or serial numbers when they :doc:`sit in stock for too long
<../../warehouses_storage/reporting/aging>`.
.. important::
Please read this :doc:`introduction to inventory valuation <inventory_valuation_config>` before
setting up valuation by lot/serial numbers.
Configuration
=============
To enable valuation by lots or serial numbers, begin by enabling the :doc:`Lots and Serial Numbers
feature <../product_tracking>`. After that, go to :menuselection:`Inventory app --> Products -->
Products`, and select the desired product, or create a new product, by clicking :guilabel:`New`.
On the product form, in the :guilabel:`Category` field, choose a product category. Ensure the
product category's :ref:`Costing Method <inventory/warehouses_storage/costing_methods>` is set to
*First In First Out (FIFO)* or *Average Cost (AVCO)*.
.. tip::
To check the costing method set on the product category, hover over the :guilabel:`Category`
field, and click the :icon:`oi-arrow-right` :guilabel:`(Internal Link)` icon.
.. seealso::
:ref:`Costing methods <inventory/warehouses_storage/costing_methods>`
Next, activate the product to be tracked by lots or serial numbers by ticking the :guilabel:`Track
Inventory` checkbox. Then, click the adjacent field that appears, and choose either :guilabel:`By
Lots` or :guilabel:`By Unique Serial Number` from the resulting drop-down menu.
Doing so makes the :guilabel:`Valuation by Lot/Serial number` checkbox appear below it. Tick that
checkbox, and the configuration to track valuation by lot or serial numbers is complete.
.. figure:: valuation_by_lots/product-form.png
:alt: Product form showing the Valuation by Lot or Serial Number feature.
Product form showing the Valuation by Lot or Serial Number feature
Valuation layers
================
To understand how valuation by lots and serial numbers works, consider these scenarios:
#. :ref:`Purchase and sell products <inventory/product_management/valuation-cost-example>`: cost is
calculated based on the *product category's* costing method.
#. :ref:`Create new lot/serial numbers <inventory/product_management/valuation-cost-new>` using an
inventory adjustment: value of the new lot/serial number is assigned to the cost from the product
form.
#. Inventory adjustment to update quantities for an :ref:`existing lot/serial number
<inventory/product_management/valuation-cost-existing>`: value is assigned based on the most
recent cost for that lot/serial number.
For both :abbr:`AVCO (Average Cost)` and :abbr:`FIFO (First In First Out)` methods, the *Cost* field
on the product form is calculated using this formula:
:math:`Avg~Cost = \frac{Total~Value}{Total~Qty}`
.. _inventory/product_management/valuation-cost-example:
Purchase products
-----------------
Consider how purchasing products affect the inventory valuation, in the table below.
.. list-table::
:header-rows: 1
:stub-columns: 1
* -
- Quantity
- Lot number
- Math
- Average cost on product form
* - Empty stock
- 0.00
-
-
- $0
* - Day 1: Receive one product at $10/unit
- 1.00
- LOT 1
- :math:`\frac{10}{1}`
- $10
* - Day 2: Receive another product at $20/unit
- 1.00
- LOT 2
- :math:`\frac{10+20}{2}`
- $15
.. figure:: valuation_by_lots/lip-gloss.png
:alt: Show Cost on the product form.
As a result, the product form displays an average cost of $15 in the **Cost** field.
.. _inventory/product_management/valuation-cost-new:
Create new lot/serial number
----------------------------
Creating a new lot/serial number through an :doc:`inventory adjustment
<../../warehouses_storage/inventory_management/count_products>` assigns the same value as the cost
on the product form.
To make an inventory adjustment, and assign a lot number, go to :menuselection:`Inventory app -->
Operations --> Physical Inventory`. Then, click :guilabel:`New`.
In the new inventory adjustment line that appears, set the :guilabel:`Product`, create the
:guilabel:`Lot/Serial Number`, set the :guilabel:`Counted Quantity`, and click :icon:`fa-floppy-o`
:guilabel:`Apply`.
To view the valuation layer, go to :menuselection:`Inventory app --> Reporting --> Valuation`. The
:guilabel:`Total Value` per unit matches the *Cost* on the product form.
.. example::
Continuing the example in the table above, when the product cost is `$15`, the valuation for a
newly-created `LOT3` is also be `$15`.
.. image:: valuation_by_lots/create-new.png
:alt: Show inventory adjustment valuation.
.. _inventory/product_management/valuation-cost-existing:
Existing lot/serial number
--------------------------
When adjusting the quantity of an existing lot/serial number, the value is based on the most recent
valuation layer for that specific lot/serial number.
.. example::
Continuing the example in the table above, the value for `LOT 1` is `$10`.
So, when the quantity is updated from `1.00` to `2.00`, the additional quantity is also valued at
`$10`, reflecting the latest valuation layer for `LOT 1`.
.. figure:: valuation_by_lots/existing.png
:alt: Show valuation of LOT 1 getting updated.
The inventory adjustment (top line) is valued the same as LOT 1 (bottom line).
.. _inventory/product_management/view-valuation:
View valuation
==============
To find the average cost of a specific lot/serial number, go to :menuselection:`Inventory app -->
Products --> Lots/Serial Numbers`, and select the desired record.
Both the :guilabel:`Cost` and :guilabel:`Average Cost` fields show a unit's average cost. The
:guilabel:`Total Value` reflects the total on-hand value for that lot/serial number.
.. important::
Ensure the costing method is set to *First In First Out (FIFO)* or *Average Cost (AVCO)* to
display the cost on this page.
.. figure:: valuation_by_lots/lot.png
:alt: Show cost of the lot/serial number.
Lot form, displaying **Cost** field. The **Valuation** smart button is in the top-right.
Valuation layers of a lot/serial number can be viewed through the :ref:`valuation report
<inventory/product_management/valuation-report>`, or by clicking the lot/serial number's
:guilabel:`Valuation` smart button. These detailed, line-by-line records can help determine how each
inventory move of the specific lot/serial number affects its valuation.
.. _inventory/product_management/valuation-report:
Valuation report
----------------
Display the valuation of lots and serial numbers in the database by going to
:menuselection:`Inventory app --> Reporting --> Valuation`.
On the resulting :guilabel:`Stock Valuation` report, click the search bar, and in the
:icon:`oi-group` :guilabel:`Group By` section of the resulting drop-down menu, select
:guilabel:`Lot/Serial number`.
.. tip::
Click the :icon:`fa-plus` :guilabel:`(plus)` icon to the right of a collapsed lot number line to
:ref:`manually modify the cost <inventory/product_management/update-unit-price>`.
This is useful for adjusting individual lot prices when a purchase order or bill includes
multiple lots/serial numbers, as initial prices are identical upon reception.
.. image:: valuation_by_lots/stock-valuation.png
:alt: Show valuation report, by lots.
Valuation smart button
----------------------
To access a filtered part of the *Stock Valuation* report, specific to a lot or serial number, go to
:menuselection:`Inventory app --> Products --> Lots/Serial Numbers`, and select the desired item.
On the :guilabel:`Lot/Serial Numbers` page, click the :guilabel:`Valuation` smart button.
.. figure:: valuation_by_lots/lot-stock-valuation.png
:alt: All stock moves relating to `LOT 1`.
All stock moves that affect the valuation of `LOT 1`.
@@ -104,7 +104,6 @@ quantities with that assigned number. For unique serial numbers that are *not* r
:titlesonly:
product_tracking/serial_numbers
product_tracking/create_sn
product_tracking/lots
product_tracking/reassign
product_tracking/expiration_dates
@@ -1,204 +0,0 @@
=====================
Assign serial numbers
=====================
Assigning serial numbers to individual products allows the for tracking of properties,
:doc:`expiration dates <expiration_dates>`, and location throughout the supply chain, which
particularly benefits manufacturers providing after-sales services.
.. seealso::
- `Odoo Tutorials: Serial Numbers <https://www.youtube.com/watch?v=ZP-gMz2X5AY>`_
- :doc:`serial_numbers`
In Odoo, serial numbers are assigned to products:
- in the :ref:`Detailed Operations page <inventory/product_management/detailed-operations>` on a
receipt
- by clicking the :ref:`Assign Serial Numbers <inventory/product_management/assign-sn>` button on a
receipt
- in the :ref:`Open: Stock move window <inventory/product_management/stock-move-section>` on a
receipt
- :doc:`during a manufacturing order
<../../../manufacturing/basic_setup/configure_manufacturing_product>` for a product tracked by
lot/serial numbers
- when making an inventory adjustment
.. _inventory/product_management/detailed-operations-popup:
.. figure:: create_sn/assign-serial-numbers.png
:align: center
:alt: Display the Detailed Operations smart button and bulleted list icon on a receipt.
Display the **Detailed Operations** smart button and bulleted list icon on a receipt.
Configuration
=============
To assign serial numbers to products, activate the :guilabel:`Lots and Serial Numbers` feature in
:menuselection:`Inventory app --> Configuration --> Settings`.
Then, in the :guilabel:`Inventory` tab of an item's product form, set the :guilabel:`Tracking` field
to :guilabel:`By Unique Serial Number`.
.. seealso::
- :ref:`Enable serial numbers <inventory/product_management/enable-lots>`
- :ref:`Track products by serial numbers <inventory/product_management/configure-lots>`
.. _inventory/product_management/configure-new-serials:
Next, enable creating new serial numbers by going to :menuselection:`Inventory app --> Configuration
--> Operations Types`.
From the :guilabel:`Operations Types` page, select the desired operation type (e.g.
:guilabel:`Receipts`, :guilabel:`Delivery Orders`, or :guilabel:`Manufacturing`), and select the
:guilabel:`Create New` option in the :guilabel:`Lots/Serial Numbers` section of the operation type's
configuration page.
.. image:: create_sn/create-new.png
:align: center
:alt: Show "Create New" option is selected on the Receipts operation type.
.. _inventory/product_management/detailed-operations:
Detailed Operations
===================
Serial numbers can be assigned to products when entering stock for the first time, from the
:guilabel:`Detailed Operations` page on the receipt. Receipts can be accessed by navigating to
:menuselection:`Inventory app --> Operations --> Receipts`.
.. important::
Serial numbers can **not** be assigned to products on a request for quotation (RfQ) or purchase
order (PO) — **only** on a receipt.
.. figure:: create_sn/purchase-order-or-receipt.png
:align: center
:alt: Show the purchase order and the Receipt smart button
Screenshot of a "Purchase Order" with the "Receipt" smart button at the top.
To record an item's serial number before receiving the item, follow the steps in the next
sections to assign serial numbers, but do **not** click the receipt's :guilabel:`Validate`
button, until the products are received from the vendor.
Assign a single serial number to a product by clicking the :guilabel:`Detailed Operations` smart
button on a receipt.
In the :guilabel:`Lot/Serial Number Name` column, manually type in the serial number for a single
product.
.. image:: create_sn/add-a-line.png
:align: center
:alt: Add a line on the Detailed Operations page to assign serial numbers.
When finished, click the receipt's breadcrumbs, and the assigned serial numbers are automatically
saved.
.. _inventory/product_management/assign-sn:
Assign serial numbers
=====================
To generate new serial numbers in a sequence, click the :guilabel:`+ (plus)` icon in the
:ref:`product line <inventory/product_management/detailed-operations-popup>`.
.. image:: create_sn/plus-icon.png
:align: center
:alt: Show the plus icon in the product line.
.. important::
If the icon is not visible, ensure the :guilabel:`Create New` option is selected in the
:ref:`receipt's configuration page <inventory/product_management/configure-new-serials>`.
Doing so opens the :guilabel:`Assign Serial Numbers` pop-up window. The :guilabel:`Number of SN`
field is auto-filled based on the product quantity requiring serial numbers. Manually input the
first serial number in the :guilabel:`First SN` field, and click :guilabel:`Assign Serial Numbers`
to generate a sequence of serial numbers based on the first serial number entered.
.. image:: create_sn/assign-numbers-in-sequence.png
:align: center
:alt: Show Assign Serial numbers pop-up.
.. _inventory/product_management/stock-move-section:
Stock move pop-up window
========================
For various methods of assigning serial numbers in bulk, click the :guilabel:`⦙≣ (bulleted list)`
icon in the :ref:`product line <inventory/product_management/detailed-operations-popup>` of a
receipt.
Add a line
----------
In the :guilabel:`Open: Stock move` pop-up window that appears, manually input the serial numbers in
the :guilabel:`Lot/Serial Number` column.
.. image:: create_sn/add-a-line-stock-move.png
:align: center
:alt: Add a line on the Stock move pop-up.
Generate Serials
----------------
Assign multiple serial numbers at once by clicking the :guilabel:`Generate Serials/Lots` button in
the :guilabel:`Open: Stock move` pop-up window.
.. image:: create_sn/generate-serials.png
:align: center
:alt: Show generate serials button.
Doing so opens the :guilabel:`Generate Serial numbers` pop-up window, where the first serial number
is entered in the :guilabel:`First SN` field to generate a sequence of serial numbers, based on the
first serial number entered.
For more details on how to fill in this pop-up window, :ref:`refer to this section
<inventory/product_management/assign-sn>`.
Import Serials
--------------
Assign multiple serial numbers at once by clicking the :guilabel:`Import Serials/Lots` button in the
:guilabel:`Open: Stock move` pop-up window.
.. important::
If the button is not visible, ensure the :guilabel:`Create New` option is selected in the
:ref:`receipt's configuration page <inventory/product_management/configure-new-serials>`.
Doing so opens the :guilabel:`Import Lots` pop-up window. Enter each serial number on a separate
line in the :guilabel:`Lots/Serial numbers` text field.
.. tip::
Copy/paste serial numbers from an existing excel spreadsheet and add them to the
:guilabel:`Lots/Serial numbers` text field.
.. image:: create_sn/copy-from-excel.png
:align: center
:alt: Show excel sheet to copy serial numbers from.
Tick the :guilabel:`Keep current lines` checkbox to add serial numbers to the list of products, and
serial numbers in the :guilabel:`Lot/Serial Number` table, in the :guilabel:`Open: Stock move`
pop-up window. To replace the serial numbers in the list, leave the :guilabel:`Keep current lines`
option unchecked.
Finally, click :guilabel:`Generate`.
.. example::
For a receipt with a :guilabel:`Demand` of `3.00` products, one product has already been assigned
a serial number in the :guilabel:`Open: Stock move` pop-up window.
So, in the :guilabel:`Import Lots` pop-up window, two serial numbers, `124` and `125` are
assigned to the remaining products by entering the following in the :guilabel:`Lots/Serial
numbers` input field:
.. code-block::
124
125
The :guilabel:`Keep current lines` option is selected to add these two serial numbers **in
addition** to the serial number, `123`, that has already been assigned.
.. image:: create_sn/import-serial.png
:align: center
:alt: Show example of correctly inputting serial numbers in the text field.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

@@ -17,7 +17,6 @@ assigned lots.
.. seealso::
- :doc:`Set up and use lot numbers <lots>`
- :doc:`Set up serial numbers <create_sn>`
- :doc:`Use serial numbers <serial_numbers>`
Change on-hand quantity to zero
@@ -1,66 +1,109 @@
====================================
Use serial numbers to track products
====================================
==============
Serial numbers
==============
*Serial numbers* are one of the two ways to identify and track products in Odoo. A serial number is
a unique identifier assigned incrementally (or sequentially) to an item or product, used to
distinguish it from other items and products.
*Serial numbers* are one of the two ways to identify and track products in Odoo, along with
:doc:`lots <lots>`. A serial number is a unique identifier assigned to a product to distinguish it
from other products in a series. Serial numbers can consist of several character types: they can
contain numbers, letters, other typographical characters, or any mix of these character types.
Serial numbers can consist of many different types of characters: they can be strictly numerical,
they can contain letters and other typographical symbols, or they can be a mix of all of the above.
The goal of assigning serial numbers to individual products is to make sure that every item's
history is identifiable when it travels through the supply chain. This can be especially useful for
manufacturers that provide after-sales services to products that they sell and deliver.
The goal of assigning serial numbers allows for the tracking of individual products and their
:doc:`expiration dates <expiration_dates>` and location throughout the supply chain. For instance,
serial numbers can help manufacturers locate products to provide after-sales services or in the
event of a recall.
.. seealso::
:doc:`/applications/inventory_and_mrp/inventory/product_management/product_tracking/lots`
`Odoo Tutorials: Serial Numbers <https://www.youtube.com/watch?v=ZP-gMz2X5AY>`_
.. _inventory/product_management/enable-lots:
Enable lots & serial numbers
============================
To track products using serial numbers, the :guilabel:`Lots & Serial Numbers` feature must be
enabled. To enable this, go to :menuselection:`Inventory app --> Configuration --> Settings`, scroll
down to the :guilabel:`Traceability` section, and click the box next to :guilabel:`Lots & Serial
Numbers`. Remember to click the :guilabel:`Save` button to save changes.
To track products using serial numbers, two settings need to be enabled: the :ref:`Lots & Serial
Numbers traceability setting <inventory/product_management/traceability-setting>`, and :ref:`serial
number usage by operation type <inventory/product_management/operation-type-setting>`.
.. image:: serial_numbers/serial-numbers-enabled-setting.png
:align: center
:alt: Enabled lots and serial numbers setting.
.. _inventory/product_management/traceability-setting:
.. _inventory/product_management/configure-lots:
Traceability setting
--------------------
Configure serial number tracking on products
============================================
The *Lots & Serial Numbers* traceability feature *must* be enabled first to track
products. To do so, go to :menuselection:`Inventory app --> Configuration --> Settings`, scroll down
to the :guilabel:`Traceability` section, and tick the :guilabel:`Lots & Serial Numbers` checkbox.
Remember to click the :guilabel:`Save` button to save changes.
Once the :guilabel:`Lots & Serial Numbers` setting has been activated, individual products can now
be tracked using serial numbers. To configure this, go to :menuselection:`Inventory app --> Products
--> Products`, and choose a desired product to track.
Once on the product form, click :guilabel:`Edit`, and click the :guilabel:`Inventory` tab.
.. image:: serial_numbers/enabled-setting.png
:alt: Enabled Lots & Serial Numbers setting.
Once on the product form, click :guilabel:`Edit`, navigate to the :guilabel:`Inventory` tab, and
scroll to the :guilabel:`Traceability` section. Then, select the :guilabel:`By Unique Serial Number`
option, and click :guilabel:`Save` to save the changes. Existing or new serial numbers can now be
selected and assigned to newly-received or manufactured batches of this product.
.. _inventory/product_management/operation-type-setting:
.. image:: serial_numbers/serial-numbers-product-tracking.png
:align: center
By operation type
-----------------
Next, specify whether the ability to create new or use existing serial numbers should be turned on
for particular operation types (such as shipping or receiving goods). In other words, this setting
allows for serial number tracking on warehouse receipts and delivery orders.
.. example::
Enabling the *Create New* option for receipts allows new serial numbers to be assigned
as items are received. However, for delivery orders, it is often disabled to prevent workers from
accidentally assigning serial numbers that do not exist in inventory.
To enable the creation of new serial numbers on an operation, navigate to :menuselection:`Inventory
app --> Configuration --> Operations Types`.
From the :guilabel:`Operations Types` page, select the desired operation type (e.g.
:guilabel:`Receipts`, :guilabel:`Delivery Orders`, or :guilabel:`Manufacturing`), and select the
:guilabel:`Create New` option in the :guilabel:`Lots/Serial Numbers` section of the operation type's
configuration page.
.. image:: serial_numbers/create-new-setting.png
:alt: Show "Create New" option is selected on the Receipts operation type.
.. _inventory/product_management/detailed-operations:
Configure serial number tracking on individual products
=======================================================
Once the :ref:`Lots & Serial Numbers setting <inventory/product_management/traceability-setting>`
has been activated, individual products can now be tracked using serial numbers. To track a product,
go to :menuselection:`Inventory app --> Products --> Products`, and select the desired product.
In the :guilabel:`General Information` tab on the product form, make sure the box next to
:guilabel:`Track Inventory` is checked. Then, select :guilabel:`By Unique Serial Number`, and click
:guilabel:`Save` to save the changes. Now, existing or new serial numbers can now be selected and
assigned to newly-received or manufactured batches of this product.
.. image:: serial_numbers/product-tracking.png
:alt: Enabled serial number tracking on product form.
.. warning::
If a product doesn't have a serial number assigned to it, a user error pop-up window will appear.
The error message states that the product(s) in stock have no lot/serial number. However, a
lot/serial number can be assigned to the product by making an inventory adjustment.
.. _inventory/product_management/assign-sn:
Assign serial numbers
=====================
In Odoo, serial numbers can be assigned at several times and places:
- When a product is :ref:`already in stock <inventory/product_management/already-in-stock>`
- Via the :ref:`Moves smart button <inventory/product_management/moves-button>` on a receipt
- Via the :ref:`Open: Stock move window <inventory/product_management/stock-move>` on a receipt
- :doc:`During a manufacturing order
<../../../manufacturing/basic_setup/configure_manufacturing_product>` for a product tracked by
lots/serial numbers
- When :doc:`making an inventory adjustment
<../../warehouses_storage/inventory_management/count_products>`
.. _inventory/product_management/already-in-stock:
Create new serial numbers for products already in stock
-------------------------------------------------------
New serial numbers can be created for products already in stock with no assigned serial number. To
do this, go to :menuselection:`Inventory --> Products --> Lots/Serial Numbers`, and click
:guilabel:`Create`. Doing so reveals a blank lots/serial numbers form. On this form, a new
do so, go to :menuselection:`Inventory --> Products --> Lots/Serial Numbers`, and click
:guilabel:`New`. Doing so reveals a blank lot/serial number form. On this form, a new
:guilabel:`Lot/Serial Number` is generated automatically.
.. tip::
@@ -72,222 +115,234 @@ Once the :guilabel:`Lot/Serial Number` is generated, click the blank field next
:guilabel:`Product` to reveal a drop-down menu. From this menu, select the product to which this new
number will be assigned.
This form also provides the option to adjust the :guilabel:`Quantity`, to assign a unique
:guilabel:`Internal Reference` number (for traceability purposes), and to assign this specific
lot/serial number configuration to a specific website in the :guilabel:`Website` field (if working
in a multi-website environment).
This form also provides the option to adjust the :guilabel:`On Hand Quantity`, to assign a unique
:guilabel:`Internal Reference` number (for additional traceability), and to assign this specific
lot/serial number configuration to a specific company in the :guilabel:`Company` field. A detailed
description of this specific lot/serial number can also be added in the :guilabel:`Description` tab
below.
A detailed description of this specific lot/serial number can also be added in the
:guilabel:`Description` tab below.
.. tip::
The :guilabel:`Internal Reference` number field is a space for manufacturers to input an
additional unique number to allow for easier tracking. For instance, SKU values may be used
here.
When all desired configurations are complete, click the :guilabel:`Save` button to save all changes.
.. image:: serial_numbers/serial-numbers-new-serial-number.png
:align: center
.. image:: serial_numbers/new-serial-number.png
:alt: New serial number created for existing product stock.
After a new serial number has been created, assigned to the desired product, and saved, navigate
back to the product form, by going to :menuselection:`Products --> Products`, and selecting the
product that this newly-created serial number was just assigned to.
back to the product form, by going to :menuselection:`Inventory app --> Products --> Products`, and
selecting the product that this newly-created serial number was just assigned to.
On that product's detail form, click the :guilabel:`Lot/Serial Numbers` smart button to view the new
serial number.
Manage serial numbers for shipping and receiving
================================================
.. _inventory/product_management/incoming-outgoing-products:
Serial numbers can be assigned for both **incoming** and **outgoing** goods. For incoming goods,
serial numbers are assigned directly on the purchase order form. For outgoing goods, serial numbers
are assigned directly on the sales order form.
Create serial numbers to incoming or outgoing products
------------------------------------------------------
Assign serial numbers to newly received products
------------------------------------------------
Serial numbers can be assigned to both incoming and outgoing goods. The receipt and delivery order
forms mirror one another; the instructions below can be followed to assign serial numbers in either
form.
Assigning serial numbers to **incoming** goods can be done on the receipt, by clicking the
:ref:`Detailed Operations smart button <inventory/product_management/detailed-operations>` or by
clicking the :guilabel:`⦙≣ (bulleted list)` icon in the product line.
- **Incoming goods:** Assign serial numbers directly on the **receipt**. Receipts can be accessed by
navigating to :menuselection:`Inventory app --> Operations --> Receipts`.
- **Outgoing goods:** Assign serial numbers directly on the **delivery order**. Receipts can be
accessed by navigating to :menuselection:`Inventory app --> Operations --> Deliveries`.
.. seealso::
:doc:`create_sn`
.. important::
Before assigning serial numbers on receipts or delivery orders, be sure that the ability to
:ref:`create new serial numbers by operations type
<inventory/product_management/operation-type-setting>` is enabled.
.. image:: serial_numbers/assign-serial-numbers.png
:align: center
:alt: Display the bulleted list icon and Detailed Operations smart buttons.
Lots/serial number field
~~~~~~~~~~~~~~~~~~~~~~~~
.. warning::
Clicking :guilabel:`Validate` before assigning a serial number to received quantities will cause
a :guilabel:`User Error` pop-up to appear. The pop-up requires entry of a lot or serial number
for the ordered products. The :abbr:`RFQ (request for quotation)` **cannot** be validated without
a serial number being assigned.
Serial numbers can be entered directly into the :guilabel:`Serial Numbers` field on a receipt or
delivery order.
.. image:: serial_numbers/serial-numbers-user-error-popup.png
:align: center
:alt: User error popup prompting serial number entry.
There are multiple ways to do this: manually assigning serial numbers, automatically assigning
serial numbers, and copy/pasting serial numbers from a spreadsheet.
Assign serial numbers automatically
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If a large quantity of products need individual serial numbers assigned to them, Odoo can
automatically generate and assign serial numbers to each of the individual products.
To accomplish this, start with the :guilabel:`First SN` field in the :guilabel:`Detailed Operations`
pop-up window, and type the first serial number in the desired order to be assigned.
Then, in the :guilabel:`Number of SN` field, type the total number of items that need
newly-generated unique serial numbers assigned to them.
Finally, click :guilabel:`Assign Serial Numbers`, and a list will populate with new serial numbers
matching the ordered quantity of products.
.. image:: serial_numbers/serial-numbers-auto-assign-sn.png
:align: center
:alt: Automatic serial number assignment in detailed operations popup.
Copy/paste serial numbers from a spreadsheet
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To copy and paste serial numbers from an existing spreadsheet, first populate a spreadsheet with all
of the serial numbers received from the supplier (or manually chosen upon receipt). Then, copy and
paste them in the :guilabel:`Lot/Serial Number Name` column. Odoo will automatically create the
necessary number of lines based on the amount of numbers pasted in the column.
From here, the :guilabel:`To` locations and :guilabel:`Done` quantities can be manually entered in
each of the serial number lines.
.. image:: serial_numbers/serial-numbers-excel-spreadsheet.png
:align: center
:alt: List of serial numbers copied in Excel spreadsheet.
.. image:: serial_numbers/enter-in-field.png
:alt: Select value for Serial Number field on receipt.
.. tip::
For purchase orders that include large quantities of products to receive, the best method of
serial number assignment is to automatically assign serial numbers using the :guilabel:`Assign
Serial Numbers` button located on the :abbr:`PO (purchase order)`. This prevents any serial
numbers from being reused or duplicated, and improves traceability reporting.
To make the :guilabel:`Serial Numbers` field visible on a receipt or delivery order, click the
:icon:`oi-settings-adjust` :guilabel:`(Adjust Settings)` icon, and in the drop-down menu, tick
the :guilabel:`Serial Numbers` checkbox.
Once all product quantities have been assigned a serial number, click the :guilabel:`Confirm` button
to close the pop-up. Then, click :guilabel:`Validate`.
.. figure:: serial_numbers/field-visible.png
:alt: Allow Serial Numbers field to show on a receipt or delivery order.
A :guilabel:`Traceability` smart button appears upon validating the receipt. Click the
:guilabel:`Traceability` smart button to see the updated :guilabel:`Traceability Report`, which
includes: a :guilabel:`Reference` document, the :guilabel:`Product` being traced, the
:guilabel:`Lot/Serial #`, and more.
Example **Serial Numbers** field on a delivery order.
Once all product quantities have been assigned a serial number, click :guilabel:`Confirm` to close
the popup, and click :guilabel:`Validate`. A :guilabel:`Traceability` smart button will appear upon
validating the receipt. Click the :guilabel:`Traceability` smart button to see the updated
:guilabel:`Traceability Report`, which includes: a :guilabel:`Reference` document, the
:guilabel:`Product` being traced, the :guilabel:`Lot/Serial #`, and more.
.. _inventory/product_management/stock-move:
Manage serial numbers on delivery orders
----------------------------------------
Stock move pop-up window
~~~~~~~~~~~~~~~~~~~~~~~~
Assigning serial numbers to **outgoing** goods can be done directly from the sales order (SO).
For various methods of assigning serial numbers individually or in bulk, click the :icon:`fa-list`
:guilabel:`(list)` icon in the product line of a receipt.
To create an :abbr:`SO (sales order)`, navigate to the :menuselection:`Sales` app, and click the
:guilabel:`Create` button. Doing so reveals a new, blank quotation form. On this blank quotation
form, fill out the necessary information, by adding a :guilabel:`Customer`, and adding products to
the :guilabel:`Product` lines (in the :guilabel:`Order Lines` tab), by clicking :guilabel:`Add a
product`.
Add a line
**********
Then, choose the desired quantity to sell by changing the number in the :guilabel:`Quantity` column.
In the :guilabel:`Open: Stock move` pop-up window, manually enter serial numbers in the
:guilabel:`Lot/Serial Number` column. This method is best reserved for adding only one or a few
serial numbers.
Once the quotation has been filled out, click the :guilabel:`Confirm` button to confirm the
quotation. When the quotation is confirmed, the quotation becomes an :abbr:`SO (sales order)`, and a
:guilabel:`Delivery` smart button appears.
.. image:: serial_numbers/stock-move-add-line.png
:alt: Add a line on the stock move pop-up.
Click the :guilabel:`Delivery` smart button to view the warehouse receipt form for that specific
:abbr:`SO (sales order)`.
.. _inventory/product_management/generate-serials:
From here, click the :guilabel:`Additional Options` menu, represented by a `hamburger` icon (four
horizontal lines, located to the right of the :guilabel:`Unit of Measure` column in the
:guilabel:`Operations` tab). Clicking that icon reveals a :guilabel:`Detailed Operations` pop-up.
Generate Serials/Lots
*********************
In the pop-up, a :guilabel:`Lot/Serial Number` will be chosen by default, with each product of the
total :guilabel:`Reserved` quantity listed with their unique serial numbers (most likely listed in
sequential order).
Assign multiple serial numbers at once by clicking the :guilabel:`Generate Serials/Lots` button in
the :guilabel:`Open: Stock move` pop-up window.
To manually change a product's serial number, click the drop-down menu under :guilabel:`Lot/Serial
Number`, and choose (or type) the desired serial number. Then, mark the :guilabel:`Done` quantities,
and click :guilabel:`Confirm` to close the pop-up.
.. image:: serial_numbers/stock-move-generate-serials.png
:alt: Show generate serials pop-up.
Finally, click the :guilabel:`Validate` button to deliver the products.
Doing so opens a new popup, :guilabel:`Generate Serial numbers`, which contains a few fields:
.. image:: serial_numbers/serial-numbers-detailed-operations-popup.png
:align: center
:alt: Serial numbers listed in detailed operations popup.
- :guilabel:`First SN`: Input the first serial number that should start the sequence. From there,
Odoo automatically detects what pattern should be followed to generate more serial numbers.
- :guilabel:`Number of SN`: Specify the desired number of serial numbers to generate.
Upon validating the delivery order, a :guilabel:`Traceability` smart button appears. Click the
:guilabel:`Traceability` smart button to see the updated :guilabel:`Traceability Report`, which
includes: a :guilabel:`Reference` document, the :guilabel:`Product` being traced, the
:guilabel:`Date`, and the :guilabel:`Lot/Serial #` assigned.
.. note::
The number of serials generated will be reflected in the :guilabel:`Quantity` field on a
receipt or delivery order. Even if the number of serial numbers generated exceeds the
:guilabel:`Demand` value, Odoo still allows the quantity (based on the serial numbers) to be
delivered or received.
The :guilabel:`Traceability Report` can also include a :guilabel:`Reference` receipt from the
previous purchase order (PO), if any of the product quantities shared a serial number assigned
during receipt of that specific :abbr:`PO (purchase order)`.
.. image:: serial_numbers/stock-move-generate-quantity-tip.png
:alt: Show how the quantity of serial numbers alters the delivery order quantity.
Manage serial numbers for different operations types
====================================================
- :guilabel:`Keep current lines` checkbox: Check this box to keep existing serial numbers that may
have been previously added. To replace existing serial numbers in the list, leave the box
unchecked.
By default in Odoo, the creation of new serial numbers is only allowed upon **receiving** products
from a purchase order. **Existing** serial numbers cannot be used. For sales orders, the opposite is
true: new serial numbers cannot be created on the delivery order, only existing serial numbers can
be used.
After filling out these fields, click the :guilabel:`Generate` button. The newly generated serials
now appear in the :guilabel:`Open: Stock move` window. By clicking :icon:`fa-cloud-upload`
:guilabel:`(Save)`, the :guilabel:`Quantity` and the :guilabel:`Serial Numbers` fields on the
delivery order or receipt update automatically.
To change the ability to use new (or existing) serial numbers on any operation type, go to
:menuselection:`Inventory app --> Configuration --> Operations Types`, and select the desired
:guilabel:`Operation Type`.
Import Serials/Lots
*******************
For the :guilabel:`Receipts` operation type, found on the :guilabel:`Operations Types` page, the
:guilabel:`Use Existing Lots/Serial Numbers` option can be enabled, by selecting
:guilabel:`Receipts` from the :guilabel:`Operations Types` page, clicking :guilabel:`Edit`, and then
clicking the checkbox beside the :guilabel:`Use Existing Lots/Serial Numbers` option (in the
:guilabel:`Traceability` section). Lastly, click the :guilabel:`Save` button to save the changes.
Another option for assigning multiple serial numbers at once is to click the :guilabel:`Import
Serials/Lots` button in the :guilabel:`Open: Stock move` pop-up window.
For the :guilabel:`Delivery Orders` operation type, located on the :guilabel:`Operations Types`
page, the :guilabel:`Create New Lots/Serial Numbers` option can be enabled, by selecting
:guilabel:`Delivery Orders` from the :guilabel:`Operations Types` page, clicking :guilabel:`Edit`,
and clicking the checkbox beside the :guilabel:`Create New Lots/Serial Numbers` option (in the
:guilabel:`Traceability` section). Be sure to click :guilabel:`Save` to save changes.
.. important::
If the import button is not visible, ensure the :guilabel:`Create New` box is checked in the
:ref:`receipt's configuration page <inventory/product_management/operation-type-setting>`.
.. image:: serial_numbers/serial-numbers-operations-types.png
:align: center
:alt: Enabled traceability setting in operations type form.
Doing so opens the :guilabel:`Import Serials` pop-up window. Enter each serial number on a separate
line in the :guilabel:`Lots/Serial numbers` text field.
Serial number traceability
==========================
As when :ref:`generating serials <inventory/product_management/generate-serials>`, check the
:guilabel:`Keep current lines` box to keep existing serial numbers, or leave it unchecked to
overwrite them.
Manufacturers and companies can refer to the traceability reports to see the entire lifecycle of a
product: where it came from (and when), where it was stored, and who it went to.
.. tip::
To expedite this process, copy/paste serial numbers from an existing spreadsheet and add them to
the :guilabel:`Lots/Serial numbers` text field.
Finally, click :guilabel:`Generate`.
.. image:: serial_numbers/stock-move-import-serials.png
:alt: Show import serials pop-up.
.. example::
For a receipt with a :guilabel:`Demand` of `3.00` products, one product has already been assigned
a serial number in the :guilabel:`Open: Stock move` pop-up window.
So, in the :guilabel:`Import Lots` pop-up window, two serial numbers, `124` and `125` are
assigned to the remaining products by entering the following in the :guilabel:`Lots/Serial
numbers` input field:
.. code-block::
124
125
The :guilabel:`Keep current lines` option is selected to add these two serial numbers **in
addition** to the serial number, `123`, that has already been assigned.
.. image:: serial_numbers/import-serial.png
:alt: Show example of correctly inputting serial numbers in the text field.
.. _inventory/product_management/moves-button:
Detailed operations
~~~~~~~~~~~~~~~~~~~
Accessible from both receipt and delivery order forms, the *Detailed Operations* page shows a
detailed view of product movements, including information about serial numbers, exact locations,
expiration dates, etc. This level of detail permits more precise tracking, for example, when
handling perishable or regulated goods.
To access this page, first :ref:`select a warehouse receipt or delivery order
<inventory/product_management/incoming-outgoing-products>`. Then, click on the :icon:`fa-bars`
:guilabel:`Moves` smart button at the top of the page.
In the :guilabel:`Lot/Serial Number` column, manually type (or select from the drop-down menu)
the desired serial numbers for each individual product.
.. image:: serial_numbers/moves-button.png
:alt: Show the detailed Moves page.
When finished, click the receipt/delivery order's breadcrumbs, and the assigned serial numbers are
automatically saved.
Traceability & reporting
========================
Manufacturers and companies can refer to the *Lots/Serial Numbers* dashboard and traceability
reports to see the entire lifecycle of a product: when and where it originated, where it was stored,
and who it was shipped to.
Lots/Serial Numbers dashboard
-----------------------------
To see the full traceability of a product, or group by serial numbers, go to
:menuselection:`Inventory app --> Products --> Lots/Serial Numbers`. Doing so reveals the
:guilabel:`Lots/Serial Numbers` dashboard.
From here, products with serial numbers assigned to them will be listed by default, and can be
expanded to show what serial numbers have been specifically assigned to them.
Reporting
~~~~~~~~~
On the :guilabel:`Lots/Serial Numbers` dashboard, products with serial numbers assigned to them are
listed by default. Click the :icon:`fa-caret-right` :guilabel:`(expand)` icon to show which serial
numbers are assigned to the chosen product.
To group by serial numbers (or lots), first remove any default filters from the search bar in the
upper-right corner. Then, click :guilabel:`Group By`, and select :guilabel:`Add Custom Group`, which
reveals a mini drop-down menu. From this mini drop-down menu, select :guilabel:`Lot/Serial Number`,
and click :guilabel:`Apply`.
upper-right corner. Then, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon and select
:guilabel:`Add Custom Group`, which reveals a mini drop-down menu. From this mini drop-down menu,
select :guilabel:`Lot/Serial Number`, and click :guilabel:`Apply`.
Doing so reveals all existing serial numbers and lots, and can be expanded to show all quantities of
products with that assigned number. For unique serial numbers that are not reused, there should be
just one product per serial number.
Doing so reveals all existing serial numbers and lots. Each row can be expanded to show all
quantities of product assigned to that serial/lot number. For unique serial numbers that are not
reused, there should be just one product per serial number.
.. image:: serial_numbers/serial-numbers-reporting-page.png
:align: center
.. image:: serial_numbers/serial-numbers-dashboard.png
:alt: Serial numbers reporting page with drop-down lists.
.. tip::
For additional information regarding an individual serial number (or lot number), click the line
item for the serial number to reveal that specific serial number's :guilabel:`Serial Number`
form. From this form, click the :guilabel:`Location` and :guilabel:`Traceability` smart buttons
to see all stock on-hand using that serial number, and any operations made using that serial
number.
For additional information regarding an individual serial (or lot) number, click the line
item for the serial number to reveal that specific :guilabel:`Serial Number` form. From this
form, click the :guilabel:`Location` and :guilabel:`Traceability` smart buttons to see all stock
on-hand using that serial number, and any operations made using that serial number.
.. seealso::
:doc:`../product_tracking`
:doc:`Reassign <reassign>`
In addition to using the :guilabel:`Lots/Serial Numbers` dashboard, there are several other
reporting templates that display the :guilabel:`Lot/Serial Number` field or the ability to filter
by serial number. Go to :menuselection:`Inventory app --> Reporting` to access:
- :guilabel:`Locations` report
- :guilabel:`Moves History` report
- :guilabel:`Moves Analysis` report

Some files were not shown because too many files have changed in this diff Show More