Compare commits

...

69 Commits

Author SHA1 Message Date
Amélie Dieudonné f0548c755b [IMP] documentation: update many2many_binary widget
The widget now also display an image preview for the files of MIME type "image".
A new option 'reverse_order' has been added to visually reverse the files order.
2024-11-19 13:29:25 +01:00
Felicious 07122aa8a8 [IMP] inventory: landed cost conditions
closes odoo/documentation#11395

X-original-commit: 22a0a1834e
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-11-15 16:38:13 +00:00
Loredana Perazzo 9490048209 [IMP] pos: remove warning "july 22" in six
task-4337378

closes odoo/documentation#11401

X-original-commit: 738703df14
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2024-11-15 15:14:03 +00:00
jero-odoo c31d61cb5b [IMP] POS: remove star printer reference
closes odoo/documentation#11383

X-original-commit: 54359951db
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-11-15 09:49:54 +00:00
Joris Makauskis 085613f63e [IMP] extract_api: Add bank statement documentation
- Updated documentation to include details on the new bank statement
extraction via OCR.
- Removed mention of unsupported discount, product, and unit features
from invoice_lines feature.

Task-3895452

closes odoo/documentation#11393

X-original-commit: 8c93ff790e
Signed-off-by: Joris Makauskis (jmak) <jmak@odoo.com>
2024-11-15 07:00:34 +00:00
afma-odoo 0292755fe1 [IMP] accounting: adding info about group payments
task-3518648

closes odoo/documentation#11358

X-original-commit: 75af17192f
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Anne-Françoise Marcq (afma) <afma@odoo.com>
2024-11-15 07:00:22 +00:00
Albaraa Maktabi 6d7d9aacb7 [FIX] developer/tutorials/pdf_reports: fix a grammer issue
On line 60 changed "we will can print..." to "we will be able to print..."

closes odoo/documentation#11366

X-original-commit: ad624afdf8
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-11-15 00:08:44 +00:00
Audrey (auva) 71b426177a [IMP] payment_providers/paypal: new PayPal version
task-3355211

closes odoo/documentation#11388

X-original-commit: 3a24e18b45
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-11-15 00:08:37 +00:00
Zachary Straub (ZST) b29eae5102 [FIX] accounting: fix broken OCR tutorial link
closes odoo/documentation#11371

X-original-commit: 724f7000d7
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-11-14 09:13:04 +00:00
jero-odoo 3218baee71 [ADD] Essentials: Keyboard shortcuts
closes odoo/documentation#10969

X-original-commit: e8f3736722
Signed-off-by: Jessica Rogers (jero) <jero@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-11-13 19:23:50 +00:00
xpl-odoo 08a3f15732 [IMP] upgrade: sla clarifications
closes odoo/documentation#11365

X-original-commit: 470af9bf21
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-11-13 09:04:17 +00:00
jero-odoo d458c753b5 [IMP] Calendar sync: changing title of google doc
closes odoo/documentation#11351

X-original-commit: e0b025fce0
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-11-11 16:49:31 +00:00
larm-odoo 740cf75f94 [ADD] Payroll: Salary attachments
closes odoo/documentation#11342

X-original-commit: afe998d6a0
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-11-08 15:32:01 +00:00
Krzysztof Magusiak 6395455f0b [IMP] core: SQLObject replaces _sql_constraints
task-3390431

closes odoo/documentation#11071

Related: odoo/odoo#175783
Related: odoo/enterprise#68589
Signed-off-by: Krzysztof Magusiak (krma) <krma@odoo.com>
2024-11-08 07:33:30 +00:00
Louis Wicket (wil) 381ae7793b [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#11221

X-original-commit: da7fe3d69d
Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
2024-11-07 10:49:02 +00:00
Tiffany Chang (tic) 7d8368e553 [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#11331

X-original-commit: 63f88d7adb
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-11-05 16:26:16 +00:00
jero-odoo 07ef80ec47 [IMP] General: Update manage inbound email doc
closes odoo/documentation#11309

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 15:13:53 +00:00
Louis Wicket (wil) 973c9a1f5a [I18N] add vi and id to the language switcher
closes odoo/documentation#11323

X-original-commit: 204db28154
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-11-05 09:30:53 +00:00
Sam Lieber (sali) d7b4114728 [IMP] l10n_cl: Update main EDI module and description
closes odoo/documentation#11329

X-original-commit: dc20497ab1
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-11-04 19:31:51 +00:00
larm-odoo 2e661006e5 [ADD] Payroll: Salary attachment report
closes odoo/documentation#11313

X-original-commit: ce55e4affb
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-11-04 15:09:37 +00:00
Albaraa Maktabi 7c2a16b28d [FW][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#11317

Forward-port-of: odoo/documentation#11314
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-11-04 15:09:23 +00:00
Damien Bouvy 44b4138a45 [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#11305

X-original-commit: c6a8619367
Signed-off-by: Bouvy Damien (dbo) <dbo@odoo.com>
2024-11-04 13:52:31 +00:00
Aurelien van Delft (avd) 7b6f0d9226 [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#11300

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 15:07:08 +00:00
gmz-odoo 24bf905cd9 [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#11282

X-original-commit: af29704626
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-10-28 13:19:59 +00:00
Julien Castiaux f3d2381bf4 [IMP] developer/changelog: controllers json -> jsonrpc
Task-4257153

closes odoo/documentation#11292

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-10-28 09:38:24 +00:00
benderliz 117aae0771 [IMP] accounting: ca_l10n spelling fix
closes odoo/documentation#11260

X-original-commit: 96269013b5
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-10-27 16:11:12 +00:00
Loredana Perazzo 9c4d9b35dc [IMP] POS: add a configuration step to enable ePos printers
task-4055549

closes odoo/documentation#11289

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

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:12:21 +00:00
“Dallas” 8b7c7f4b6e [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#11274

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 10:59:52 +00:00
Felicious eed7e42a14 [ADD] inventory: dispatch management system
closes odoo/documentation#11268

X-original-commit: ad6843be92
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 17:41:17 +00:00
Krzysztof Magusiak 11cc952979 [IMP] core: Deprecate toggle_active()
task-3983933

closes odoo/documentation#11261

Related: odoo/odoo#183691
Related: odoo/enterprise#71963
Signed-off-by: Krzysztof Magusiak (krma) <krma@odoo.com>
2024-10-23 13:30:32 +00:00
Aurelien van Delft (avd) 9049311711 [ADD] tools: add populate cli documentation
closes odoo/documentation#11266

X-original-commit: b0ede2819a
Signed-off-by: Aurélien van Delft (avd) <avd@odoo.com>
2024-10-23 12:07:16 +00:00
Loredana Perazzo 51369b1001 [IMP] POS: move replicated title into one page
task-3973404

Must come back in 16.0 & 17.0

closes odoo/documentation#11265

X-original-commit: 4556487f10
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
2024-10-23 10:50:24 +00:00
benderliz 1e551ebb73 [IMP] ar_l10n: remove extra comma
closes odoo/documentation#11256

X-original-commit: 15bc972085
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Signed-off-by: Liz Bender (beli) <beli@odoo.com>
2024-10-22 18:56:31 +00:00
Valentino 9dfef5e151 [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#11245

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

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

closes odoo/documentation#11239

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

closes odoo/documentation#11235

X-original-commit: 8f73708332
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
Signed-off-by: Ricardo Gomes Rodrigues (rigr) <rigr@odoo.com>
2024-10-21 12:22:39 +00:00
Joseph (jcb) e6ffeb0da4 [IMP] web: notification: custom autoclose delay
closes odoo/documentation#11230

X-original-commit: d50ff09926
Related: odoo/odoo#184297
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com>
2024-10-21 09:37:08 +00:00
jero-odoo cfd0fbe6b0 [IMP] Contacts: Update contacts basics
closes odoo/documentation#11223

X-original-commit: e9c19f63d4
Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-10-18 12:14:34 +00:00
benderliz dfa899e959 [IMP] Inventory: Updating serial numbers documentation
closes odoo/documentation#11218

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 17:48:37 +00:00
masp-odoo 76d6a9a84e [FIX] general : Update link from Google Domains to Squarespace
Task-4224635

closes odoo/documentation#11215

X-original-commit: 399b20d9c7
Signed-off-by: Marion Spindler (masp) <masp@odoo.com>
2024-10-17 09:17:49 +00:00
Olivier Dony 343d8cafb4 [FIX] legal: update license info for 18.0
X-original-commit: ab9313a451
2024-10-16 19:11:27 +02:00
xpl-odoo 72ccbd43d7 [IMP] studio: update approval rules for v18
closes odoo/documentation#11209

X-original-commit: 868ecc61a5
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-10-16 15:19:52 +00:00
bhra-odoo 4caa891ad8 [ADD] l10n_in_withholding: add TDS/TCS threshold alert (India)
with this commit:
added TDS/TCS threshold alert (India)

task - 4143155

closes odoo/documentation#11109

Signed-off-by: Raj Bhuva (bhra) <bhra@odoo.com>
2024-10-16 14:05:52 +00:00
Felicious dcb48c3dc4 [IMP] inventory: improve routes definitions
closes odoo/documentation#11169

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 20:22:41 +00:00
Felicious 8b7be69be6 [IMP] inventory: merge resupply
closes odoo/documentation#11205

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 20:22:40 +00:00
KC (ksc) 81f28e0793 [IMP] surveys: add cards and links/intros
closes odoo/documentation#11177

X-original-commit: 3337149a62
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-10-15 13:34:44 +00:00
Gorash f1a607a9c7 [IMP] *: Using class name corresponding to odoo models
closes odoo/documentation#11115

Related: odoo/odoo#178200
Related: odoo/enterprise#69762
Related: odoo/upgrade#6577
Related: odoo/design-themes#988
Related: odoo/upgrade-util#143
Signed-off-by: Christophe Matthieu (chm) <chm@odoo.com>
2024-10-15 09:33:04 +00:00
Felicious 9368181d04 [REF] inventory: resupply warehouses
closes odoo/documentation#11195

X-original-commit: ef367bd442
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-10-12 00:07:43 +00:00
Felicious d87271002b [IMP] inventory: fix typos in shipping table
closes odoo/documentation#11185

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 18:36:35 +00:00
larm-odoo 783ab8f2c0 [ADD] Payroll: Work entry analysis report
closes odoo/documentation#11181

X-original-commit: 34814984ec
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-10-11 14:12:17 +00:00
Odoo's Mergebot da0360cdd5 [FW][ADD] odoo.sh: new ci token usage
closes odoo/documentation#11190

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 12:51:43 +00:00
Demesmaeker e17d6d7689 [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#11173

X-original-commit: da682b7f22
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-10-10 12:18:16 +00:00
Donatienne (dopi) e174fa9e3e [IMP] ecommerce: products page updated
closes odoo/documentation#11165

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:11:28 +00:00
Ricardo Gomes Rodrigues 3d2422b3bd [IMP] accounting: split deferred settings
This has been done in https://github.com/odoo/enterprise/commit/39fffc5541eb51d7a3ae25405abe90fe6031001a

closes odoo/documentation#11163

X-original-commit: ac69e2872c
Signed-off-by: Ricardo Gomes Rodrigues (rigr) <rigr@odoo.com>
2024-10-09 13:23:06 +00:00
dikd-odoo d7eb8f014b [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#11133

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 16:57:49 +00:00
xpl-odoo 9a2921ba52 [IMP] administration: on-premise publisher warranty URL
task-4226945

closes odoo/documentation#11155

X-original-commit: 544e2c18d0
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-10-07 17:10:50 +00:00
Tiffany Chang (tic) c42963cda9 [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#11149

X-original-commit: d21d77b181
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-10-07 14:42:49 +00:00
Felicious 38ce2431e5 [ADD] purchase: import vendor pricelist
closes odoo/documentation#11142

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:22:31 +00:00
larm-odoo 5c43477540 [IMP] Appraisals: Skills Report - highest improvement
closes odoo/documentation#11137

X-original-commit: 6c843244eb
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-10-04 19:37:34 +00:00
Felicious e56cfe5e48 [ADD] inventory: valuation by lots
closes odoo/documentation#10858

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-04 19:37:33 +00:00
Antoine Vandevenne (anv) 5627bea8aa [IMP] supported_versions: release 18.0
closes odoo/documentation#11126

X-original-commit: a0472c95e5
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-10-01 12:07:13 +00:00
Pierre Pulinckx (PIPU) 3f048e7997 [FW][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#11117

Forward-port-of: odoo/documentation#11116
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2024-09-30 15:13:24 +00:00
afma-odoo a13bf9b24f [IMP] accounting: pdf menu to export reports
task-3605633

closes odoo/documentation#11114

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-09-29 19:51:54 +00:00
masp-odoo 615d282910 [FIX] website: recaptcha threshold number
task-4145451

closes odoo/documentation#11108

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 22:58:38 +00:00
larm-odoo f820f189a2 [ADD] Appraisals: Skills Evolution reporting
closes odoo/documentation#11102

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 20:43:42 +00:00
larm-odoo 1d17ceda3c [ADD] Employees: Certifications
closes odoo/documentation#11101

X-original-commit: 14007868bb
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-09-25 20:43:41 +00:00
larm-odoo 4b5b008063 [ADD] Employees: Employee retention report
closes odoo/documentation#11094

X-original-commit: 43d99f8070
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-09-25 20:43:39 +00:00
297 changed files with 298264 additions and 9075 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
+4 -7
View File
@@ -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
+2 -4
View File
@@ -430,10 +430,8 @@ Upgrade services not covered by the SLA
The following upgrade-related services are **not** included:
- the **cleaning** of pre-existing data and configurations while upgrading;
- the upgrade of **custom modules created in-house or by third parties**, including Odoo partners;
- lines of **code added to standard modules**, i.e., customizations created outside the Studio app,
code entered manually, and :ref:`automated actions using Python code
<studio/automated-actions/action>`; and
- the upgrade of **additional modules not covered by a maintenance contract** that are created
in-house or by third parties, including Odoo partners; and
- **training** on using the upgraded version's features and workflows.
.. seealso::
+1
View File
@@ -10,3 +10,4 @@ Odoo essentials
essentials/contacts
essentials/export_import_data
essentials/in_app_purchase
essentials/keyboard_shortcuts
+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
============
@@ -0,0 +1,86 @@
==================
Keyboard shortcuts
==================
Users in Odoo can utilize several keyboard shortcuts to navigate through modules, execute actions,
and manage data.
.. tip::
Hold :kbd:`Ctrl` to view the keyboard shortcuts assigned to each element on the interface.
.. image:: keyboard_shortcuts/menu-shortcuts.png
:align: center
:alt: A selection of keyboard shortcuts in Odoo.
.. important::
Some keyboard shortcuts may not be available on different versions of Odoo or effective depending
on browsers, extensions, or other individual settings.
Keyboard shortcuts by operating system
======================================
Below is a list of some of the most commonly used keyboard shortcuts within Odoo, listed by
operating system.
.. list-table::
:header-rows: 1
:stub-columns: 1
* - Description
- Windows / Linux
- macOS
* - Previous breadcrumb
- :kbd:`Alt` + :kbd:`B`
- :kbd:`Ctrl` + :kbd:`B`
* - Create new record
- :kbd:`Alt` + :kbd:`C`
- :kbd:`Ctrl` + :kbd:`C`
* - Odoo Home Page
- :kbd:`Alt` + :kbd:`H`
- :kbd:`Ctrl` + :kbd:`H`
* - Discard changes
- :kbd:`Alt` + :kbd:`J`
- :kbd:`Ctrl` + :kbd:`J`
* - Save changes
- :kbd:`Alt` + :kbd:`S`
- :kbd:`Ctrl` + :kbd:`S`
* - Next page
- :kbd:`Alt` + :kbd:`N`
- :kbd:`Ctrl` + :kbd:`N`
* - Previous page
- :kbd:`Alt` + :kbd:`P`
- :kbd:`Ctrl` + :kbd:`P`
* - Search
- :kbd:`Alt` + :kbd:`Q`
- :kbd:`Ctrl` + :kbd:`Q`
* - Select menus
- :kbd:`Alt` + :kbd:`1-9`
- :kbd:`Ctrl` + :kbd:`1-9`
* - Create a new To-Do
- :kbd:`Alt` + :kbd:`Shift` + :kbd:`T`
- :kbd:`Ctrl` + :kbd:`Shift` + :kbd:`T`
* - Search a Knowledge article
- :kbd:`Alt` + :kbd:`F`
- :kbd:`Ctrl` + :kbd:`F`
* - Share a Knowledge article
- :kbd:`Alt` + :kbd:`Shift` + :kbd:`S`
- :kbd:`Ctrl` + :kbd:`Shift` + :kbd:`S`
* - Open command palette
- :kbd:`Ctrl` + :kbd:`K`
- :kbd:`Command` + :kbd:`K`
.. tip::
After opening the command palette, search using the following keyboard shortcuts:
- :kbd:`/`: search for menus, applications, and modules.
- :kbd:`@`: search for users.
- :kbd:`#`: search for **Discuss** channels.
- :kbd:`?`: search for **Knowledge** articles.
Enter a name (or term) in the search bar, or use the arrow keys to scroll through the available
options. Then, click :kbd:`Ctrl` + :kbd:`Enter` to open the selected app, module, or menu in a
new tab.
.. image:: keyboard_shortcuts/command-palete.png
:align: center
:alt: The command palette in Odoo, with the menu search option selected.
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -193,3 +193,4 @@ Payments` tab. To display the outstanding accounts column, click on the toggle b
bank/reconciliation
bank/reconciliation_models
bank/foreign_currency
bank/loans
@@ -0,0 +1,70 @@
================
Loans management
================
Odoo's loan management gives a comprehensive list of all loans undertaken by your company in order
to maintain a holistic and forecasted view of upcoming due dates (e.g., cash forecast). Set up
amortization schedules—or import them—and let Odoo automatically handle monthly interest and
principal adjustments so that your financial reports are always accurate with minimal effort.
Create a new loan
-----------------
Create a new loan by going to :menuselection:`Accounting --> Accounting --> Loans`. When creating a
new loan, there are three options for how to create amortization schedules:
- importing it from a supported file;
- calculating it from multiple input values (e.g., the :guilabel:`Amount Borrowed`, the
:guilabel:`Duration`, etc.) using the :guilabel:`Compute` button;
- manually filling in the lines of the schedule.
In each case, three different fields are required for each line of the amortization schedule: the
:guilabel:`Date`, the :guilabel:`Principal`, and the :guilabel:`Interest`.
The :guilabel:`Amount Borrowed`, :guilabel:`Interest`, and :guilabel:`Duration` fields will be red
if the sum of the lines does not match the total of the amortization schedule lines.
Loan entries mechanism
----------------------
When the amount borrowed is credited to a bank account, it should be transferred to a long-term
account (defined in the :guilabel:`Loan Settings` tab). Then, upon the validation of the loan, Odoo
creates the necessary journal entries so that there is always a holistic and forecasted view of
upcoming due dates. The entire process is completely automated with a long-term and short-term
principal reclassification mechanism.
For each line of the amortization schedule, Odoo creates the following entries:
A payment entry on the same date that
- debits the principal amount to the long-term account;
- debits the interest amount to the expense account;
- credits the payment amount to the short-term account: this is the amount that will be
withdrawn by the bank.
A reclassification entry on the same date that
- debits the sum of the principal amounts of the next 12 months to the long-term account;
- credits the sum of the principal amounts of the next 12 months to the short-term account.
A reversed entry of the reclassification entry on *the next day* that simply reverses the previous
one.
With this mechanism, month after month, the short-term account is always up to date with the
current short-term due amounts.
Closing a loan
--------------
By default, a loan will be closed whenever its last payment entry is posted. However, it can also
be manually closed (e.g., because it is being paid off early) by clicking on the :guilabel:`Close`
button. A wizard will appear asking from which date the loan should be closed. All draft entries
after this date will be deleted too.
A loan can also be cancelled. In that case, all entries will be deleted even if they were already
posted.
Loans Analysis Report
---------------------
By going to :menuselection:`Accounting --> Reporting --> Loans Analysis`, you can access a
report with a pivot view of your ongoing loans. By default, the report shows the principal,
interest, and total payment for each year for the loan duration.
@@ -33,19 +33,28 @@ Make sure the default settings are correctly configured for your business. To do
Journal
The deferral entries are posted in this journal.
Deferred Expense Account
Expenses are deferred on this Current Asset account until they are recognized.
Deferred Revenue Account
Deferred Revenue
Revenues are deferred on this Current Liability account until they are recognized.
Generate Entries
By default, Odoo :ref:`automatically generates <customer_invoices/deferred/generate_on_validation>`
the deferral entries when you post a customer invoice. However, you can also choose to
:ref:`generate them manually <customer_invoices/deferred/generate_manually>` by selecting the
:guilabel:`Manually & Grouped` option instead.
Amount Computation
Suppose an invoice of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
computation accounts for $100 each month, while the :guilabel:`Based on days` computation
accounts for different amounts depending on the number of days in each month.
Based on
Suppose an invoice of $1200 must be deferred over 12 months.
- The :guilabel:`Months` option accounts for $100 each month prorated to the number of days in
that month (e.g., $50 for the first month if the :guilabel:`Start Date` is set to the 15th of
the month).
- The :guilabel:`Full Months` option considers each month started to be full (e.g., $100 for the
first month even if the :guilabel:`Start Date` is set to the 15th of the month); this means that
with the :guilabel:`Full Months` option, a full $100 is recognized in the first partial month,
eliminating the need for a 13th month to recognize any remainder as would be the case when using
the :guilabel:`Months` option.
- The :guilabel:`Days` option accounts for different amounts depending on the number of days in
each month (e.g., ~$102 for January and ~$92 for February).
.. _customer_invoices/deferred/generate_on_validation:
@@ -69,8 +69,9 @@ When new products arrive, the new average cost for each product is recomputed us
- **Incoming Qty**: count of products arriving in the new shipment;
- **Purchase Price**: estimated price of products at the reception of products (since vendor bills
may arrive later). The amount includes not only the price for the products, but also added costs,
such as shipping, taxes, and :ref:`landed costs <inventory/reporting/landed_costs>`. At reception
of the vendor bill, this price is adjusted;
such as shipping, taxes, and :doc:`landed costs
<../../../inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs>`. At
reception of the vendor bill, this price is adjusted;
- **Final Qty**: quantity of on-hand stock after the stock move.
.. _inventory/avg_cost/definite_rule:
@@ -7,20 +7,20 @@ Payments
In Odoo, payments can either be automatically linked to an invoice or bill or be stand-alone records
for use at a later date:
- If a payment is **linked to an invoice or bill**, it reduces/settles the amount due of the
invoice. You can have multiple payments related to the same invoice.
- If a payment is **linked to an invoice or bill**, it reduces/settles the amount due on the
invoice. Multiple payments on the same invoice are possible.
- If a payment is **not linked to an invoice or bill**, the customer has an outstanding credit with
your company, or your company has an outstanding debit with a vendor. You can use those
outstanding amounts to reduce/settle unpaid invoices/bills.
the company, or the company has an outstanding debit with a vendor. Those outstanding amounts
reduce/settle unpaid invoices/bills.
.. seealso::
- :doc:`Internal transfers <payments/internal_transfers>`
- :doc:`bank/reconciliation`
- `Odoo Tutorials: Bank Configuration
<https://www.odoo.com/slides/slide/bank-configuration-1880>`_
<https://www.odoo.com/slides/slide/bank-configuration-6832>`_
.. _payments/register:
.. _accounting/payments/from-invoice-bill:
Registering payment from an invoice or bill
===========================================
@@ -29,11 +29,12 @@ When clicking :guilabel:`Register payment` in a customer invoice or vendor bill,
journal entry and changes the amount due according to the payment amount. The counterpart is
reflected in an :ref:`outstanding <bank/outstanding-accounts>` **receipts** or **payments** account.
At this point, the customer invoice or vendor bill is marked as :guilabel:`In payment`. Then, when
the outstanding account is reconciled with a bank statement line, the invoice or vendor bill changes
to the :guilabel:`Paid` status.
the outstanding account is reconciled with a bank transaction line, the invoice or vendor bill
changes to the :guilabel:`Paid` status.
The information icon near the payment line displays more information about the payment. You can
access additional information, such as the related journal, by clicking :guilabel:`View`.
The :icon:`fa-info-circle` information icon next to the payment line displays more
information about the payment. To access additional information, such as the related journal, click
:guilabel:`View`.
.. image:: payments/information-icon.png
:alt: See detailed information of a payment.
@@ -41,65 +42,89 @@ access additional information, such as the related journal, by clicking :guilabe
.. note::
- The customer invoice or vendor bill must be in the :guilabel:`Posted` status to register the
payment.
- If you unreconcile a payment, it still appears in your books but is no longer linked to the
- If a payment is unreconciled, it still appears in the books but is no longer linked to the
invoice.
- If you (un)reconcile a payment in a different currency, a journal entry is automatically
- If a payment is (un)reconciled in a different currency, a journal entry is automatically
created to post the currency exchange gains/losses (reversal) amount.
- If you (un)reconcile a payment and an invoice having cash basis taxes, a journal entry is
automatically created to post the cash basis tax (reversal) amount.
- If a payment is (un)reconciled and an invoice with cash-basis taxes, a journal entry is
automatically created to post the cash-basis tax (reversal) amount.
.. tip::
- If your main bank account is set as an :ref:`outstanding account
<bank/outstanding-accounts>`, and the payment is registered in Odoo (not through a related
bank statement), invoices and bills are directly registered as :guilabel:`Paid`.
If the main bank account is set as an :ref:`outstanding account
<bank/outstanding-accounts>`, and the payment is registered in Odoo (not through a related
bank transaction), invoices and bills are directly registered as :guilabel:`Paid`.
.. _accounting/payments/not-tied:
Registering payments not tied to an invoice or bill
===================================================
When a new payment is registered via :menuselection:`Customers / Vendors --> Payments` menu, it is
not directly linked to an invoice or bill. Instead, the account receivable or the account payable is
When a new payment is registered via :menuselection:`Customers / Vendors --> Payments`, it is not
directly linked to an invoice or bill. Instead, the account receivable or the account payable is
matched with the **outstanding account** until it is manually matched with its related invoice or
bill.
.. _accounting/payments/matching-invoices-bills:
Matching invoices and bills with payments
-----------------------------------------
A blue banner appears when you validate a new invoice/bill and an **outstanding payment** exists for
this specific customer or vendor. It can easily be matched from the invoice or bill by clicking
:guilabel:`ADD` under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
A blue banner appears when validating a new invoice/bill and an **outstanding payment** exists for
this specific customer or vendor. To match it with the invoice or bill, click :guilabel:`ADD`
under :guilabel:`Outstanding Credits` or :guilabel:`Outstanding Debits`.
.. image:: payments/add-option.png
:alt: Shows the ADD option to reconcile an invoice or a bill with a payment.
The invoice or bill is now marked as :guilabel:`In payment` until it is reconciled with its
corresponding bank statement.
corresponding bank transaction.
.. _payments/batch-payments:
.. _accounting/payments/group-payments:
Batch payment
-------------
Group payments
--------------
Batch payments allow you to group different payments to ease :doc:`reconciliation
<bank/reconciliation>`. They are also useful when you deposit :doc:`checks <payments/checks>` to the
bank or for :doc:`SEPA payments <payments/pay_sepa>`. To do so, go to :menuselection:`Accounting -->
Customers --> Batch Payments` or :menuselection:`Accounting --> Vendors --> Batch Payments`. In the
list view of payments, you can select and group several payments in a batch by clicking
:menuselection:`Action --> Create Batch Payment`.
Group payments allow combining outgoing and incoming payments from the same contact into a single
payment to simplify the process and improve payment usability. To register a group payment:
#. Go to :menuselection:`Accounting --> Customers --> Invoices/Credit Notes` or
:menuselection:`Accounting --> Vendors --> Bills/Refunds`.
#. Select the relevant invoices/credit notes or bills/refunds linked to a specific contact.
#. Click the :icon:`fa-cog` (:guilabel:`Action menu`) icon and select :guilabel:`Register Payment`.
#. In the :guilabel:`Register Payment` window, select the :guilabel:`Journal`, the
:guilabel:`Payment Method`, and the :guilabel:`Payment Date`.
#. Enable the :guilabel:`Group Payments` option and click :guilabel:`Create payment`.
The invoices or bills are now marked as :guilabel:`In payment` until they are reconciled with the
corresponding bank transactions. The credit notes or refunds are marked as :guilabel:`Paid`.
.. _accounting/payments/batch-payments:
Batch payments
--------------
Batch payments allow grouping payments from multiple contacts to ease
:doc:`reconciliation <bank/reconciliation>`. They are also useful when depositing :doc:`checks
<payments/checks>` to the bank or for :doc:`SEPA payments <payments/pay_sepa>`. To do so, go to
:menuselection:`Accounting --> Customers --> Batch Payments` or :menuselection:`Accounting -->
Vendors --> Batch Payments`. In the list view of payments, to group several payments in a
batch, select them and click :menuselection:`Action --> Create Batch Payment`.
.. seealso::
- :doc:`payments/batch`
- :doc:`payments/batch_sdd`
.. _payments/matching:
.. _accounting/payments/matching:
Payments matching
-----------------
The :guilabel:`Payments matching` tool opens all unreconciled customer invoices or vendor bills and
allows you to process them individually, matching all payments and invoices in one place. You can
reach this tool from the :menuselection:`Accounting Dashboard --> Customer Invoices / Vendor Bills`,
click the drop-down menu button (:guilabel:`⋮`), and select :guilabel:`Payments Matching`, or go to
:menuselection:`Accounting --> Accounting --> Reconciliation`.
allows them to be processed individually, matching all payments and invoices in one place. Go to the
:guilabel:`Accounting Dashboard`, click the :icon:`fa-ellipsis-v` (:guilabel:`dropdown menu`)
button from the :guilabel:`Customer Invoices` or :guilabel:`Vendor Bills` journals, and select
:guilabel:`Payments Matching`, or go to :menuselection:`Accounting --> Accounting -->
Reconciliation`.
.. image:: payments/payments-journal.png
:alt: Payments matching menu in the drop-down menu.
@@ -107,39 +132,49 @@ click the drop-down menu button (:guilabel:`⋮`), and select :guilabel:`Payment
.. note::
During the :doc:`reconciliation <bank/reconciliation>`, if the sum of the debits and credits does
not match, there is a remaining balance. This either needs to be reconciled at a later date or
needs to be written off directly.
written off directly.
.. _accounting/payments/batch-payments-matching:
Batch payments matching
-----------------------
You can use the **batch reconciliation feature** to reconcile several outstanding payments or
invoices simultaneously for a specific customer or vendor. Go to your **Accounting Dashboard** and
open your **bank journal**. In the **bank reconciliation** view, select a **transaction**, and click
the :guilabel:`Batch Payments` tab. From here, you can reconcile your
:doc:`batch payments <payments/batch>` with your outstanding payments or invoices.
Use the batch reconciliation feature to reconcile several outstanding payments or invoices
simultaneously for a specific customer or vendor. Go to :menuselection:`Accounting --> Reporting -->
Aged Receivable / Aged Payable`. All transactions that have not yet been reconciled for that
contact are visible, and when a customer or vendor is selected, the :guilabel:`Reconcile` option is
displayed.
.. image:: payments/reconcile-option.png
:alt: The batch payment reconcile option.
.. _accounting/payments/partial-payment:
Registering a partial payment
=============================
To register a **partial payment**, click :guilabel:`Register payment` from the related invoice or
bill, and enter the amount received or paid. Upon entering the amount, a prompt appears to decide
whether to :guilabel:`Keep open` the invoice or bill, or :guilabel:`Mark as fully paid`. Select
:guilabel:`Keep open` and click :guilabel:`Create payment`. The invoice or bill is now marked as
:guilabel:`Partial`. Select :guilabel:`Mark as fully paid` if you wish to settle the invoice or bill
with a difference in the amount.
To register a partial payment, click on :guilabel:`Register Payment` from the related invoice or
bill. In the case of a partial payment (when the :guilabel:`Amount` paid is less than the total
remaining amount on the invoice or the bill), the :guilabel:`Payment Difference` field displays the
outstanding balance. There are two options:
.. image:: payments/payment-difference.png
:alt: Partial payment of an invoice or bill.
- :guilabel:`Keep open`: Keep the invoice or the bill open and mark it with a :guilabel:`Partial`
banner;
- :guilabel:`Mark as fully paid`: Select an account in the :guilabel:`Post Difference In` field and
change the :guilabel:`Label` if needed. A journal entry will be created to balance the accounts
payable or receivable with the selected account.
Reconciling payments with bank statements
=========================================
.. image:: payments/partial-payment.png
:alt: register a partial payment
.. _accounting/payments/reconciling-payments:
Reconciling payments with bank transactions
===========================================
Once a payment has been registered, the status of the invoice or bill is :guilabel:`In payment`. The
next step is :doc:`reconciling <bank/reconciliation>` it with the related bank statement line to
have the transaction finalized and the invoice or bill marked as :guilabel:`Paid`.
next step is :doc:`reconciling <bank/reconciliation>` it with the related bank transaction line to
finalize the payment workflow and mark the invoice or bill as :guilabel:`Paid`.
.. toctree::
:titlesonly:
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

@@ -24,8 +24,9 @@ the details.
.. image:: reporting/reporting-annotate.png
:alt: Annotate reports.
To export reports in PDF or XLSX format, click :guilabel:`PDF` or :guilabel:`XLSX` at the top of the
page.
To export reports in PDF or XLSX format, click :guilabel:`PDF` at the top or click the
:icon:`fa-caret-down` (:guilabel:`down arrow`) icon next to the :guilabel:`PDF` button and
select :guilabel:`XLSX`.
To compare values across periods, click the :guilabel:`Comparison` menu and select the periods you
want to compare.
@@ -62,10 +62,10 @@ Then, to close the fiscal year:
<accounting/reporting/aged-payable>` reports.
- Audit all accounts, being sure to fully understand all transactions and their nature, making
sure to include loans and fixed assets.
- Optionally, run :ref:`payments matching <payments/matching>` to validate any open vendor bills
and customer invoices with their payments. While this step is optional, it could assist the
year-end closing process if all outstanding payments and invoices are reconciled, potentially
finding errors or mistakes in the system.
- Optionally, run :ref:`payments matching <accounting/payments/matching>` to validate any open
vendor bills and customer invoices with their payments. While this step is optional, it could
assist the year-end closing process if all outstanding payments and invoices are reconciled,
potentially finding errors or mistakes in the system.
Next, the accountant likely verifies balance sheet items and book entries for:
@@ -37,7 +37,7 @@ appropriately completed:
- :guilabel:`Vendor`: Odoo automatically fills some information based on the vendor's registered
information, previous purchase orders, or bills.
- :guilabel:`Bill Reference`: add the sales order reference provided by the vendor and is used to do
the :ref:`matching <payments/matching>` when you receive the products.
the :ref:`matching <accounting/payments/matching>` when you receive the products.
- :guilabel:`Auto-Complete`: select a past bill/purchase order to automatically complete the
document. The :guilabel:`Vendor` field should be completed prior to completing this field.
- :guilabel:`Bill Date`: is the issuance date of the document.
@@ -33,19 +33,28 @@ Make sure the default settings are correctly configured for your business. To do
Journal
The deferral entries are posted in this journal.
Deferred Expense Account
Deferred Expense
Expenses are deferred on this Current Asset account until they are recognized.
Deferred Revenue Account
Revenues are deferred on this Current Liability account until they are recognized.
Generate Entries
By default, Odoo :ref:`automatically generates <vendor_bills/deferred/generate_on_validation>`
the deferral entries when you post a vendor bill. However, you can also choose to
:ref:`generate them manually <vendor_bills/deferred/generate_manually>` by selecting the
:guilabel:`Manually & Grouped` option instead.
Amount Computation
Suppose a bill of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
computation recognizes $100 each month, while the :guilabel:`Based on days` computation recognizes
different amounts depending on the number of days in each month.
Based on
Suppose a bill of $1200 must be deferred over 12 months.
- The :guilabel:`Months` option accounts for $100 each month prorated to the number of days in
that month (e.g., $50 for the first month if the :guilabel:`Start Date` is set to the 15th of
the month).
- The :guilabel:`Full Months` option considers each month started to be full (e.g., $100 for the
first month even if the :guilabel:`Start Date` is set to the 15th of the month); this means that
with the :guilabel:`Full Months` option, a full $100 is recognized in the first partial month,
eliminating the need for a 13th month to recognize any remainder as would be the case when using
the :guilabel:`Months` option.
- The :guilabel:`Days` option accounts for different amounts depending on the number of days in
each month (e.g., ~$102 for January and ~$92 for February).
.. _vendor_bills/deferred/generate_on_validation:
@@ -11,8 +11,8 @@ created and populated based on the scanned invoices.
.. seealso::
- `Test Odoo's invoice digitization <https://www.odoo.com/app/invoice-automation>`_
- `Odoo Tutorials: Invoice Digitization with OCR
<https://www.odoo.com/slides/slide/digitize-bills-with-ocr-1712>`_
- `Odoo Tutorials: Vendor Bill Digitization
<https://www.odoo.com/slides/slide/vendor-bill-digitization-7065>`_
Configuration
=============
@@ -619,9 +619,9 @@ document, an automatic validation can be set in :menuselection:`Accounting --> S
Argentinean Localization --> Validate document in the AFIP`, considering the following levels:
- :guilabel:`Not available:` the verification is not done (this is the default value);
- :guilabel:`Available:` the verification is done. In case the number is not valid it, only displays
- :guilabel:`Available:` the verification is done. In case the number is not valid, it only displays
a warning but still allows the vendor bill to be posted;
- :guilabel:`Required:` the verification is done and it does not allow the user to post the vendor
- :guilabel:`Required:` the verification is done, and it does not allow the user to post the vendor
bill if the document number is not valid.
.. image:: argentina/verify-vendor-bills.png
@@ -136,6 +136,7 @@ Correction letter, Invalidate invoice number range), an API call is made using c
.. note::
- Odoo is a certified partner of Avalara Brazil.
- You can `buy IAP credit on odoo.com <https://iap.odoo.com/iap/in-app-services/819>`_.
- On creation, new databases receive 500 free credits.
Credential configuration
~~~~~~~~~~~~~~~~~~~~~~~~
@@ -139,7 +139,7 @@ Positions`.
The following fiscal positions are available by default:
- :guilabel:`Alberta (AB)`
- :guilabel:`British Colombia (BC)`
- :guilabel:`British Columbia (BC)`
- :guilabel:`Manitoba (MB)`
- :guilabel:`New Brunswick (NB)`
- :guilabel:`Newfoundland and Labrador (NL)`
@@ -39,12 +39,9 @@ localization.
- Adds the *Propuesta F29* and *Balance Tributario (8 columnas)* reports.
* - :guilabel:`Chile - E-invoicing`
- `l10n_cl_edi`
- Includes all technical and functional requirements to generate and receive electronic
invoices online based on the :abbr:`SII (Servicio de Impuestos Internos)` regulations.
* - :guilabel:`Chile - Electronic Receipt`
- `l10n_cl_boletas`
- Includes all technical and functional requirements to generate and receive electronic
invoices digitally based on the :abbr:`SII (Servicio de Impuestos Internos)` regulations.
- Includes all technical and functional requirements to receive and generate **electronic
receipts** and **invoices** online based on the :abbr:`SII (Servicio de Impuestos Internos)`
regulations.
* - :guilabel:`Electronic Exports of Goods for Chile`
- `l10n_cl_edi_exports`
- Includes technical and functional requirements to generate electronic invoices for exporting
@@ -170,9 +170,8 @@ triggered and is being processed. You have to click on *Refresh State* to check
German Tax Accounting Standards: Odoo's guide to GoBD Compliance
================================================================
**GoBD** stands for `Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern,
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_.
**GoBD** stands for *Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern,
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff*.
In short, it is a **guideline for the proper management and storage of books, records, and documents
in electronic form, as well as for data access**, that is relevant for the German tax authority, tax
declaration, and balance sheet.
@@ -191,7 +190,7 @@ What do you need to know about GoBD when relying on accounting software?
.. note::
If you can, the best way to understand GoBD is to Read the `Official GoBD text
<https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2019-11-28-GoBD.pdf>`_.
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_.
It is a bit long but quite readable for non-experts. But in short, here is what to expect:
The **GoBD is binding for companies that have to present accounts, which includes SMEs, freelancers,
@@ -312,7 +311,7 @@ offer our customer any legal certainty.
.. important::
The BMF actually states the following in the `Official GoBD text
<https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2019-11-28-GoBD.pdf>`_:
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_:
- 180. Positive attestations on the correctness of the bookkeeping - and thus on the correctness
of IT-based bookkeeping systems - are not issued either in the context of a tax field audit or
@@ -567,3 +567,95 @@ goods (i.e :guilabel:`Opening Stock` + purchases during the period - :guilabel:`
.. image:: india/profit-and-loss-report.png
:alt: Profit and Loss report
.. _india/tds-tcs-threshold:
TDS/TCS threshold alert
=======================
:abbr:`TDS (tax deducted at source)` and :abbr:`TCS (tax collected at source)` are tax provisions
under Indian law, triggered when transaction amounts exceed specified thresholds. This alert
notifies users when the value of invoices or bills surpasses these limits, prompting the application
of the appropriate TDS/TCS.
To configure Odoo to advise you on when to apply TDS/TCS, set the :guilabel:`TDS/TCS section`
field on the corresponding account in the chart of accounts. Odoo will display a banner suggesting
the TDS/TCS section under which tax might be applicable when recording an invoice or bill.
Configuration
-------------
#. Navigate to :menuselection:`Accounting --> Configuration --> Settings`
#. In the :guilabel:`Indian Integration` section, enable the :guilabel:`TDS and TCS` feature.
#. Navigate to :menuselection:`Accounting --> Configuration --> Chart of Accounts`.
#. Click :guilabel:`View` on the desired account, and set the :guilabel:`TDS/TCS Section` field.
.. note::
The TDS/TCS sections are pre-configured with threshold limits. If you need to modify these
limits, go to :menuselection:`Accounting --> Configuration --> Taxes`. In the :guilabel:`Advanced
Options` tab, click on the :icon:`fa-arrow-right` :guilabel:`(internal link)` icon of the
:guilabel:`Section` field.
.. image:: india/tds-tcs-section-modify.png
:alt: TDS/TCS section modify
Applying TCS/TDS on invoices and bills
--------------------------------------
Based on the account used on the customer invoice or vendor bill, Odoo checks the TCS/TDS threshold
limit. If the limit specified in the :guilabel:`TCS/TDS Section` of the account is exceeded, Odoo
displays an alert that suggests applying the appropriate TCS/TDS. The alert will disappear once the
TCS/TDS is applied.
.. image:: india/tcs-warning.png
:alt: TCS advice
**TCS** is directly applicable in the tax on the invoice lines. To apply **TDS**, click the
:guilabel:`TDS Entry` smart button on the vendor bill/payment. The popup window allows specifying
the TDS details. Confirm the entry to apply the TDS.
.. image:: india/tds-apply.png
:alt: TDS application
In Odoo, the aggregate total is calculated for partners sharing the same PAN number, across all company branches.
.. example::
.. list-table::
:header-rows: 1
:widths: 10 20 10 20 15
* - **Branch**
- **Customer**
- **Invoice**
- **Transaction Amount (₹)**
- **PAN Number**
* - IN - MH
- XYZ Enterprise - GJ
- Invoice 1
- ₹50,000
- ABCPX1234E
* - IN - MH
- XYZ Enterprise - GJ
- Invoice 2
- ₹30,000
- ABCPX1234E
* - IN - MH
- XYZ Enterprise - MH
- Invoice 3
- ₹40,000
- ABCPX1234E
* - IN - DL
- XYZ Enterprise - GJ
- Invoice 4
- ₹20,000
- ABCPX1234E
* - IN - GJ
- XYZ Enterprise - MH
- Invoice 5
- ₹60,000
- ABCPX1234E
- **Aggregate total** = 50,000 + 30,000 + 40,000 + 20,000 + 60,000 = ₹200,000
- The aggregate total for all customers (XYZ Enterprise - GJ, MH, DL) sharing the PAN number
ABCPX1234E across all branches is ₹200,000.
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

@@ -369,7 +369,7 @@ the SAT documentation, there are two types of payments:
- `PPD` (Pago en Parcialidades o Diferido/Payment in Installements or Deferred)
.. seealso::
:doc:`../../inventory_and_mrp/inventory/product_management/inventory_valuation/integrating_landed_costs`
:doc:`../../inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs`
The difference lies in the *Due Date* or *Payment Terms* of the invoice.
@@ -883,8 +883,8 @@ Configuration
~~~~~~~~~~~~~
In order to track the correct customs number for a specific invoice, Odoo uses :doc:`landed costs
<../../inventory_and_mrp/inventory/product_management/inventory_valuation/integrating_landed_costs>`.
Go to :menuselection:`Inventory --> Configuration --> Settings --> Valuation`. Make sure that
<../../inventory_and_mrp/inventory/product_management/inventory_valuation/landed_costs>`. Go to
:menuselection:`Inventory --> Configuration --> Settings --> Valuation`. Make sure that
:guilabel:`Landed Costs` is activated.
Begin by creating a *service*-type product called, `Pedimento`. In the :guilabel:`Purchase` tab,
@@ -2,33 +2,80 @@
Peru
====
.. |SUNAT| replace:: :abbr:`SUNAT (Superintendencia Nacional de Aduanas y de Administración Tributaria)`
.. |SUNAT| replace:: :abbr:`SUNAT (Superintendencia Nacional de Aduanas y de Administración
Tributaria)`
.. |GRE| replace:: :abbr:`GRE (Guía de Remisión Electrónica)`
.. |RUS| replace:: :abbr:`RUS (Régimen Único Simplificado)`
.. |EDI| replace:: :abbr:`EDI (Electronic Data Interchange)`
Introduction
============
Modules
=======
The Peruvian localization has been improved and extended, in this version the next modules are
available:
:ref:`Install <general/install>` the following modules to utilize all the current features of the
Peruvian localization.
- **l10n_pe**: Adds accounting features for the Peruvian localization, which represent the minimal
configuration required for a company to operate in Peru and under the SUNAT regulations and
guidelines. The main elements included in this module are: Chart of account, taxes,
document types.
.. list-table::
:header-rows: 1
- **l10n_pe_edi**: includes all technical and functional requirements to generate and validate
Electronic Invoice, based on the SUNAT specification to create and process valid electronic
documents, for more technical detail you can access the
`SUNAT EDI specifications <https://cpe.sunat.gob.pe/node/88/>`_,
that keeps track of new changes and updates.
The features of this module are based on the resolutions published on the
`SUNAT Legislation <https://www.sunat.gob.pe/legislacion/general/index.html/>`_.
* - Name
- Technical name
- Description
* - :guilabel:`Peru - Accounting`
- `l10n_pe`
- Adds accounting features for the Peruvian localization, which represent the minimal
configuration required for a company to operate in Peru and under the SUNAT regulations and
guidelines. The main elements included in this module are the chart of accounts, taxes,
document types.
* - :guilabel:`Peru - E-invoicing`
- `l10n_pe_edi`
- Includes all technical and functional requirements to generate and receive electronic
invoices online based on the SUNAT regulations.
* - :guilabel:`Peru - Accounting Reports`
- `l10n_pe_reports`
- Includes the following financial reports:
- 1st set of main financial reports:
- Registro de Ventas e Ingresos (RVIE) - 14.4
- Registro de Compras Electrónico (RCE) - 8.4
- Registro de Compras Electrónico - Información de Operaciones con Sujetos no Domiciliados
(RCE) - 8.5
- 2nd set of financial reports:
- PLE 5.1 General Journal
- PLE 5.3 Chart of Accounts
- PLE 6.1 General Ledger
- 3rd set of financial reports:
- PLE 1.1 Libro de Caja
- PLE 1.2 Libro de Bancos
* - :guilabel:`Peruvian - Electronic Delivery Note`
- `l10n_pe_edi_stock`
- Adds the delivery guide (Guía de Remisión), which is needed as proof that you are sending
goods between A and B. It is only when a delivery order is validated that the delivery guide
can be created.
* - :guilabel:`Peruvian eCommerce`
- `l10n_pe_website_sale`
- Enables the identification type in eCommerce checkout forms and the ability to generate
electronic invoices.
* - :guilabel:`Peruvian - Point of Sale with PE Doc`
- `l10n_pe_pos`
- Enables contact fiscal information to be editable from a PoS Session to generate electronic
invoices and refunds.
.. note::
- Odoo automatically installs the appropriate package for the company according to the country
selected at the creation of the database.
- The *Peruvian - Electronic Delivery Guide* module depends on the *Inventory* application to be
installed.
.. seealso::
- `App Tour - Localización de Peru <https://youtu.be/Ic3mGovkf8Y>`_
- `Smart Tutorial - Localización de Peru <https://www.odoo.com/slides/smart-tutorial-localizacion-de-peru-133>`_
- `Smart Tutorial - Localización de Peru (videos for workflows and configurations)
<https://www.odoo.com/slides/smart-tutorial-localizacion-de-peru-133>`_
Configuration
=============
@@ -41,7 +88,6 @@ dependency with *Peru - Accounting*. In case this last one is not installed, Odo
automatically within EDI.
.. image:: peru/peru-modules.png
:align: center
:alt: The "Module" filter is set on "Peru"
.. note::
@@ -57,9 +103,7 @@ the establishment code assigned by the SUNAT when companies register their RUC (
Registration):
.. image:: peru/peru-company.png
:align: center
:alt: Company data for Peru including RUC and Address type code
:alt: Company data for Peru including RUC and Address type code.
.. tip::
In case the Address type code is unknown, you can set it as the default value: 0000. Be aware
@@ -68,7 +112,6 @@ Registration):
.. note::
The NIF should be set following the RUC format.
Chart of Account
~~~~~~~~~~~~~~~~
@@ -105,7 +148,6 @@ Here are some terms that are essential on the Peruvian localization:
- **SOL Credentials**: Sunat Operaciones en Línea. User and password are provided by the SUNAT and
grant access to Online Operations systems.
Signature Provider
~~~~~~~~~~~~~~~~~~
@@ -126,8 +168,7 @@ This is the default and the suggested option, considering the digital ceritifica
part of the service.
.. image:: peru/peru-IAP.png
:align: center
:alt: IAP option as signature providers
:alt: IAP option as signature providers.
What is the IAP?
^^^^^^^^^^^^^^^^
@@ -190,8 +231,7 @@ document validation directly to Digiflow. In this case you need to consider:
- Provide your SOL credentials.
.. image:: peru/peru-Digiflow.png
:align: center
:alt: Digiflow
:alt: Digiflow.
SUNAT
*****
@@ -230,18 +270,16 @@ certificate with the extension ``.pfx`` is required. Proceed to this section and
password.
.. image:: peru/peru-Certificate.png
:align: center
:alt: EDI Certificate wizard
:alt: EDI Certificate wizard.
Multicurrency
~~~~~~~~~~~~~
The official currency exchange rate in Peru is provided by the Bank of Peru. Odoo can connect
directly to its services and get the currency rate either automatically or manually.
The official currency exchange rate in Peru is provided by the SUNAT. Odoo can connect directly to
its services and get the currency rate either automatically or manually.
.. image:: peru/peru-multicurrency.png
:align: center
:alt: Bank of Peru is displayed in Multicurrency Service option
.. image:: peru/l10n-pe-banksync-sunat.png
:alt: SUNAT displayed in Multicurrency Service option.
Please refer to the next section in our documentation for more information about
:doc:`multicurrencies <../accounting/get_started/multi_currency>`.
@@ -258,8 +296,7 @@ As part of the localization module the taxes are created automatically with thei
financial account and electronic invoice configuration.
.. image:: peru/peru-taxes.png
:align: center
:alt: List of default taxes
:alt: List of default taxes.
EDI Configuration
*****************
@@ -269,9 +306,7 @@ the taxes created by default have this data included, but in case you create new
sure you fill in the fields:
.. image:: peru/peru-taxes-edi.png
:align: center
:alt: Taxes EDI data for Peru
:alt: Taxes EDI data for Peru.
Fiscal Positions
~~~~~~~~~~~~~~~~
@@ -297,8 +332,7 @@ The information required for the document types is included by default so the us
to fill anything on this view:
.. image:: peru/peru-document-type.png
:align: center
:alt: Document Type list
:alt: Document Type list.
.. warning::
Currently the documents supported on customer invoices are: Invoice, Boleta, Debit Note and
@@ -324,8 +358,7 @@ This section indicates which EDI workflow is used in the invoice, for Peru we mu
“Peru UBL 2.1”.
.. image:: peru/peru-journal-edi.png
:align: center
:alt: Journal EDI field
:alt: Journal EDI field.
.. warning::
By default, the value Factur-X (FR) is always displayed, make sure you can uncheck it manually.
@@ -341,9 +374,7 @@ available on the Partner form, this information is essential for most transactio
the sender company and in the customer, make sure you fill in this information in your records.
.. image:: peru/peru-id-type.png
:align: center
:alt: Partner identification type
:alt: Partner identification type.
Product
~~~~~~~
@@ -352,9 +383,7 @@ Additional to the basic information in your products, for the Peruvian localizat
Code on the product is a required value to be configured.
.. image:: peru/peru-unspc-code.png
:align: center
:alt: UNSPC Code on products
:alt: UNSPC Code on products.
Usage and testing
=================
@@ -374,16 +403,14 @@ fields required as part of the Peru EDI:
document type if needed and select Boleta for example.
.. image:: peru/peru-invoice-document-type.png
:align: center
:alt: Invoice document type field on invoices
:alt: Invoice document type field on invoices.
- **Operation type**: This value is required for Electronic Invoice and indicates the transaction
type, the default value is “Internal Sale” but another value can be selected manually when needed,
for example Export of Goods.
.. image:: peru/peru-operation-type.png
:align: center
:alt: Invoice operation type field on invoices
:alt: Invoice operation type field on invoices.
- **EDI Affectation Reason**: In the invoice lines, additional to the Tax there is a field “EDI
Affectation Reason” that determines the tax scope based on the SUNAT list that is displayed.
@@ -391,8 +418,7 @@ fields required as part of the Peru EDI:
you can manually select another one when creating the invoice.
.. image:: peru/peru-tax-affectation-reason.png
:align: center
:alt: Tax affectation reason in invoice line
:alt: Tax affectation reason in invoice line.
Invoice validation
~~~~~~~~~~~~~~~~~~
@@ -402,8 +428,7 @@ action registers the account move and triggers the Electronic invoice workflow t
OSE and the SUNAT. The following message is displayed at the top of the invoice:
.. image:: peru/peru-posted-invoice.png
:align: center
:alt: Sending of EDI Invoice in blue
:alt: Sending of EDI Invoice in blue.
Asynchronous means that the document is not sent automatically after the invoice has been posted.
@@ -417,16 +442,14 @@ done either automatically by Odoo with a *cron* that runs every hour, or the use
immediately by clicking on the button “Sent now”.
.. image:: peru/peru-sent-manual.png
:align: center
:alt: Send EDI manually
:alt: Send EDI manually.
**Sent**: Indicates the document was sent to the OSE and was successfully validated. As part of
the validation a ZIP file is downloaded and a message is logged in the chatter indicating the
correct Government validation.
.. image:: peru/peru-invoice-sent.png
:align: center
:alt: Message on chatter when the invoice is valid
:alt: Message on chatter when the invoice is valid.
In case there is a validation error the Electronic Invoice status remains in “To be sent” so the
corrections can be made and the invoice can be sent again.
@@ -453,8 +476,7 @@ If a validation error is received, you have two options:
changes, and then send the invoice again to the SUNAT for another validation.
.. image:: peru/peru-errors.png
:align: center
:alt: List of common errors on invoices
:alt: List of common errors on invoices.
For more detail please refert to `Common errors in SUNAT
<https://www.nubefact.com/codigos-error-sunat/>`_.
@@ -466,8 +488,7 @@ After the invoice is accepted and validated by the SUNAT, the invoice PDF report
The report includes a QR code, indicating the invoice is a valid fiscal document.
.. image:: peru/peru-PDF.png
:align: center
:alt: Invoice PDF report
:alt: Invoice PDF report.
IAP Credits
~~~~~~~~~~~
@@ -480,8 +501,7 @@ additional credits are required, you can easily buy them by accessing the link p
the message.
.. image:: peru/peru-credits-IAP.png
:align: center
:alt: Buying credits in the IAP
:alt: Buying credits in the IAP.
In the IAP service includes packages with different pricing based on the number of credits.
The price list in the IAP is always displayed in EUR.
@@ -497,8 +517,7 @@ If the invoice was already sent and validated by the SUNAT, the correct way to p
clicking on the button Request Cancellation:
.. image:: peru/peru-cancellation.png
:align: center
:alt: Request invoice cancellation button
:alt: Request invoice cancellation button.
In order to cancel an invoice, please provide a cancellation Reason.
@@ -511,22 +530,20 @@ immediately by clicking on the button “Send now”. Once it is sent, a cancell
created, as a result the next message and CDR File are logged in the chatter:
.. image:: peru/peru-cancellation-cdr.png
:align: center
:alt: Cancellation CDR sent by the SUNAT
:alt: Cancellation CDR sent by the SUNAT.
**Cancelled**: Indicates the cancellation request was sent to the OSE and was successfully
validated. As part of the validation a ZIP file is downloaded and a message is logged in the
chatter indicating the correct Government validation.
.. image:: peru/peru-cancelled.png
:align: center
:alt: nvoice after cancellation
:alt: Invoice after cancellation.
.. warning::
One credit is consumed on each cancellation request.
Cancellation process
********************
Export invoices
***************
When creating exportation invoices, take into account the next considerations:
@@ -535,8 +552,7 @@ When creating exportation invoices, take into account the next considerations:
- The taxes included in the invoice lines should be EXP taxes.
.. image:: peru/peru-exp-invoice.png
:align: center
:alt: Exportation invoices main data
:alt: Exportation invoices main data.
Advance Payments
****************
@@ -555,13 +571,11 @@ When creating invoices that is subject to Detractions, take into account the nex
#. All the products included in the invoice must have these fields configured:
.. image:: peru/peru-detraction.png
:align: center
:alt: Detraction fields on products
:alt: Detraction fields on products.
#. Operation type in your invoice must be ``1001``
.. image:: peru/peru-detraction-invoice.png
:align: center
:alt: Detraction code on invoices.
Credit Notes
@@ -572,8 +586,7 @@ for this just click on the button “Add Credit Note”, a part of the Peruvian
to prove a Credit Reason selecting one of the options in the list.
.. image:: peru/peru-credit-note.png
:align: center
:alt: Add Credit Note from invoice
:alt: Add Credit Note from invoice.
.. tip::
When creating your first credit Note, select the Credit Method: Partial Refund, this allows you
@@ -582,8 +595,7 @@ to prove a Credit Reason selecting one of the options in the list.
By default the Credit Note is set in the document type:
.. image:: peru/peru-credit-note-document.png
:align: center
:alt: Credit Note document type
:alt: Credit Note document type.
To finish the workflow please follow the instructions on :doc:`our page about Credit Notes
<../accounting/customer_invoices/credit_notes>`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

@@ -717,7 +717,7 @@ Create batch payment
Now, record each payment in Odoo using the |NACHA| payment method.
.. seealso::
:ref:`Register Payments in Odoo <payments/register>`
:ref:`Register Payments in Odoo <accounting/payments/from-invoice-bill>`
.. important::
Be aware of the cut-off time for same-day payments. Either the file needs to have a future date
@@ -17,11 +17,10 @@ Online payments
payment_providers/flutterwave
payment_providers/mercado_pago
payment_providers/mollie
payment_providers/ogone
payment_providers/paypal
payment_providers/razorpay
payment_providers/sips
payment_providers/stripe
payment_providers/worldline
payment_providers/xendit
Odoo embeds several **payment providers** that allow your customers to pay online, on their
@@ -126,18 +125,18 @@ Online payment providers
- Full only
- Full and partial
-
* - :doc:`SIPS <payment_providers/sips>`
- The provider's website
-
-
-
-
* - :doc:`Stripe <payment_providers/stripe>`
- Odoo
- |V|
- Full only
- Full and partial
- |V|
* - :doc:`Worldline <payment_providers/worldline>`
- The provider's website
- |V|
-
-
-
* - :doc:`Xendit <payment_providers/xendit>`
- The provider's website
-
@@ -457,11 +456,10 @@ other payments.
- :doc:`payment_providers/demo`
- :doc:`payment_providers/mercado_pago`
- :doc:`payment_providers/mollie`
- :doc:`payment_providers/ogone`
- :doc:`payment_providers/paypal`
- :doc:`payment_providers/razorpay`
- :doc:`payment_providers/sips`
- :doc:`payment_providers/stripe`
- :doc:`payment_providers/worldline`
- :doc:`payment_providers/xendit`
- :doc:`../websites/ecommerce/checkout_payment_shipping/payments`
- :doc:`accounting/bank`
@@ -1,107 +0,0 @@
=====
Ogone
=====
`Ogone <https://www.ingenico.com/>`_, also known as **Ingenico Payment Services** is a France-based
company that provides the technology involved in secure electronic transactions.
.. seealso::
- :ref:`payment_providers/add_new`
- `Ogone's documentation <https://epayments-support.ingenico.com/get-started/>`_.
.. warning::
The provider Ogone is deprecated. It is recommended to use :doc:`stripe` instead.
Settings in Ogone
=================
Create an API user
------------------
Log into your Ogone account and head to the :guilabel:`Configuration` tab.
You need to create an **API user** to be used in the creation of transactions from Odoo. While you
can use your main account to do so, using an **API user** ensures that if the credentials used in
Odoo are leaked, no access to your Ogone configuration is possible. Additionally, passwords for
**API users** do not need to be updated regularly, unlike normal users.
To create an **API user**, go to :menuselection:`Configuration --> Users` and click on
:guilabel:`New User`. The following fields must be configured:
.. _ogone/ogone:
- :guilabel:`UserID`: you can choose anything you want.
- :guilabel:`User's Name, E-mail and Timezone`: you can enter the information you want.
- :guilabel:`Profile`: should be set to :guilabel:`Admin`.
- :guilabel:`Special user for API`: should be checked.
After the creation of the user, you are required to generate a password. Save the password and
**UserID**, as they will be required later on during the setup.
.. tip::
If you already have an user set up, make sure it is activated without any error. If not, simply
click the :guilabel:`Activate(Errors)` button to reset the user.
Set up Ogone for Odoo
---------------------
Ogone must now be configured to accept payments from Odoo. Head to :menuselection:`Configuration -->
Technical Information --> Global Security Parameters`, select :guilabel:`SHA-512` as
:guilabel:`Hash Algorithm` and :guilabel:`UTF-8` as :guilabel:`character encoding`. Then, go to the
:guilabel:`Data and Origin verification` tab of the same page and leave the URL field of the
:guilabel:`e-Commerce and Alias Gateway` section blank.
.. tip::
If you need to use another algorithm, such as `sha-1` or `sha-256`, within Odoo, activate the
:ref:`developer mode <developer-mode>` and go to the **Payment Providers** page in
:menuselection:`Accounting --> Configuration --> Payment Providers`. Click on :guilabel:`Ogone`,
and in the :guilabel:`Credentials` tab, select the algorithm you wish to use in the
:guilabel:`Hash function` field.
You are now required to generate **SHA-IN** passphrases. **SHA-IN** and **SHA-OUT** passphrases are
used to digitally sign the transaction requests and responses between Odoo and Ogone. By using these
secret passphrases and the `sha-1` algorithm, both systems can ensure that the information they
receive from the other was not altered or tampered with.
Enter the same **SHA-IN** passphrase in both :guilabel:`Checks for e-Commerce & Alias Gateway` and
:guilabel:`Checks for DirectLink and Batch (Automatic)`. You can leave the IP address field blank.
Your **SHA-IN** and **SHA-OUT** passphrases should be different, and between 16 and 32 characters
long. Make sure to use the same **SHA-IN** and **SHA-OUT** passphrases throughout the entire Ogone
configuration, as Odoo only allows a single **SHA-IN** and single **SHA-OUT** passphrase.
In order to retrieve the **SHA-OUT** key, log into your Ogone account, go to
:menuselection:`Configuration --> Technical Information --> Transaction feedback --> All
transaction submission modes`, and get or generate your **API Key** and **Client Key**. Be careful
to copy your API key as 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>`.
@@ -2,7 +2,7 @@
PayPal
======
`Paypal <https://www.paypal.com/>`_ is an American online payment provider available worldwide, and
`Paypal <https://www.paypal.com/>`_ is an American online payment provider available worldwide and
one of the few that does not charge a subscription fee.
.. note::
@@ -10,112 +10,71 @@ one of the few that does not charge a subscription fee.
<https://www.paypal.com/webapps/mpp/country-worldwide>`_, only `a selection of currencies are
supported <https://developer.paypal.com/docs/reports/reference/paypal-supported-currencies>`_.
Settings in PayPal
==================
.. _payment_providers/paypal/configuration-paypal:
To access your PayPal account settings, log into PayPal, open the :guilabel:`Account Settings`, and
open the :guilabel:`Website payments` menu.
Configuration in PayPal
=======================
.. image:: paypal/paypal-account.png
:align: center
:alt: PayPal account menu
#. `Log into your PayPal Developer Dashboard <https://developer.paypal.com/dashboard/>`_.
#. Click :guilabel:`Apps & Credentials` and click :guilabel:`Create App`.
#. Enter an :guilabel:`App Name` and click :guilabel:`Create App`.
#. Copy the :guilabel:`Client ID` and :guilabel:`Secret` and save them for
:ref:`later <payment_providers/paypal/configuration-odoo>`.
.. important::
Note that for PayPal to work **in Odoo**, the options :ref:`Auto Return <paypal/auto-return>` and
:ref:`PDT <paypal/pdt>` **must** be enabled.
If you use customer names or addresses that include accented or non-Latin characters, you
**must** configure the encoding format of the payment request sent by Odoo to PayPal to avoid
transaction failures without notice. To do so, access the `PayPal button language encoding
setting <https://www.paypal.com/cgi-bin/websrc?cmd=_profile-language-encoding>`_, click
:guilabel:`More Options`, and set the :guilabel:`Encoding` field to :guilabel:`UTF-8`.
.. _paypal/auto-return:
Auto Return
-----------
The **Auto Return** feature automatically redirects customers to Odoo once the payment is processed.
From :guilabel:`Website payments`, go to :menuselection:`Website preferences --> Update --> Auto
return for website payments --> Auto return` and select :guilabel:`On`. Enter the address of your
Odoo database (e.g., `https://yourcompany.odoo.com`) in the :guilabel:`Return URL` field, and
:guilabel:`Save`.
.. note::
Any URL does the job. Odoo only needs the setting to be enabled since it uses another URL.
.. _paypal/pdt:
Payment Data Transfer (PDT)
---------------------------
:abbr:`PDT (Payment Data Transfer)` allows to receive payment confirmations, displays the payment
status to the customers, and verifies the authenticity of the payments. From :menuselection:`Website
preferences --> Update`, scroll down to :guilabel:`Payment data transfer` and select :guilabel:`On`.
If you are trying PayPal as a test, access your :ref:`PayPal Sandbox account
<payment_providers/paypal/testing>` and `configure the encoding format for your sandbox account
<https://sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`_.
.. tip::
PayPal displays your **PDT Identity Token** as soon as :ref:`Auto return <paypal/auto-return>`
and :ref:`Payment Data Transfer (PDT) <paypal/pdt>` are enabled. If you need the **PDT Identity
Token**, disable and re-enable :guilabel:`Payment data transfer` to display the token again.
For encrypted website payments & EWP_SETTINGS errors, please check the `PayPal documentation
<https://developer.paypal.com/docs/online/>`_.
PayPal Account Optional
-----------------------
.. _payment_providers/paypal/configuration-odoo:
We advise not to prompt customers to log in with a PayPal account upon payment. It is better and
more accessible for customers to pay with a debit/credit card. To disable that prompt, go to
:menuselection:`Account Settings --> Website payments --> Update` and select :guilabel:`On` for
:guilabel:`PayPal account optional`.
Configuration in Odoo
=====================
Payment Messages Format
-----------------------
#. :ref:`Navigate to the payment provider PayPal <payment_providers/add_new>`.
#. In the :guilabel:`Credentials` tab, enter the :guilabel:`Email` linked to your PayPal account,
then fill in the :guilabel:`Client ID` and :guilabel:`Client Secret` fields with the values you
saved at the step :ref:`payment_providers/paypal/configuration-paypal`.
#. Click :guilabel:`Generate your webhook` to create the :guilabel:`Webhook ID`.
#. Set the :guilabel:`State` field to :guilabel:`Enabled`, and make sure the PayPal payment provider
is :guilabel:`Published`.
#. Configure the remaining options as desired.
If you use accented characters (or anything other than primary Latin characters) for customer names
or addresses, then you **must** configure the encoding format of the payment request sent by Odoo to
PayPal. If you do not, some transactions fail without notice.
.. _payment_providers/paypal/testing:
To do so, go to `your production account <https://www.paypal.com/cgi-bin/customerprofileweb
?cmd=_profile-language-encoding>`_. Then, click :guilabel:`More Options` and set the two default
encoding formats as :guilabel:`UTF-8`.
Testing
=======
.. tip::
- For Encrypted Website Payments & EWP_SETTINGS error, please check the `Paypal documentation
<https://developer.paypal.com/docs/online/>`_.
- Configure your :ref:`Paypal Sandbox account <paypal/testing>`, then follow this
`link <https://sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-language-encoding>`_
to configure the encoding format in a test environment.
PayPal provides two sandbox accounts that you can use to simulate live transactions:
Settings in Odoo
================
.. seealso::
:ref:`payment_providers/add_new`
Odoo needs your **API Credentials** to connect with your PayPal account. To do so, go to
:menuselection:`Accounting --> Configuration --> Payment Providers` and :guilabel:`Activate` PayPal.
Then, enter your PayPal account credentials in the :guilabel:`Credentials` tab:
- :guilabel:`Email`: the login email address in Paypal;
- :guilabel:`PDT Identity Token`: the key used to verify the authenticity of transactions.
.. _paypal/testing:
Test environment
================
Configuration
-------------
Thanks to PayPal sandbox accounts, you can test the entire payment flow in Odoo.
Log into the `Paypal Developer Site <https://developer.paypal.com/>`_ using your PayPal credentials,
which creates two sandbox accounts:
- A business account (to use as merchants, e.g.,
`pp.merch01-facilitator@example.com <mailto:pp.merch01-facilitator@example.com>`_);
- A default personal account (to use as shoppers, e.g.,
`pp.merch01-buyer@example.com <mailto:pp.merch01-buyer@example.com>`_).
Log into PayPal sandbox using the merchant account and follow the same configuration instructions.
Enter your sandbox credentials in Odoo (:menuselection:`Accounting --> Configuration --> Payment
Providers --> PayPal` in the :guilabel:`Credentials` tab, and make sure the status is set on
:guilabel:`Test Mode`.
Run a test transaction from Odoo using the sandbox personal account.
- A business account (to use as the merchant account, e.g., `ab-1abc12345678@business.example.com`);
- A default personal account (to use as the shopper account, e.g.,
`ba-9cba87654321@personal.example.com`).
To test the PayPal payment workflow in Odoo:
#. Log into the `Paypal Developer Site <https://developer.paypal.com/>`_ using your PayPal
credentials and go to :menuselection:`Testing Tools --> Sandbox Accounts`.
#. Click the :icon:`fa-ellipsis-v` (:guilabel:`ellipsis`) icon next to the sandbox business account
and select :guilabel:`View/Edit account`.
#. Copy the :guilabel:`Email`, :guilabel:`Client ID`, and :guilabel:`Secret` and save them for the
next step.
#. In Odoo, :ref:`configure the PayPal payment provider <payment_providers/paypal/configuration-odoo>`
with the values saved at the previous step and set the :guilabel:`State` field to
:guilabel:`Test Mode`.
You can then run a test transaction from Odoo using the sandbox personal account.
.. seealso::
- :ref:`payment_providers/test-mode`
- :doc:`../payment_providers`
@@ -1,32 +0,0 @@
====
SIPS
====
`SIPS <https://sips.worldline.com/>`_ is an online payments solution from the multinational
Worldline.
Configuration
=============
.. seealso::
- :ref:`payment_providers/add_new`
Credentials tab
---------------
Odoo needs your **API Credentials** to connect with your SIPS account, which comprise:
- **Merchant ID**: The ID solely used to identify the merchant account with SIPS.
- **Secret Key**: The key to sign the merchant account with SIPS.
- **Secret Key Version**: The version of the key, pre-filled.
- **Interface Version**: Pre-filled, don't change it.
You can copy your credentials from your SIPS environment info documentation, in the section
**PROD**, and paste them in the related fields under the **Credentials** tab.
.. important::
If you are trying SIPS as a test, with the *TEST* credentials, change the **State** to *Test
Mode*. We recommend doing this on a test Odoo database, rather than on your main database.
.. seealso::
- :doc:`../payment_providers`
@@ -0,0 +1,68 @@
=========
Worldline
=========
`Worldline <https://worldline.com/>`_ is a France-based company and the world's fourth largest
payment provider.
Settings in Worldline
=====================
.. _worldline/API-user:
Create an API user
------------------
It is recommended to set up an **API user** to create transactions from Odoo to ensure that your
Worldline configuration remains safe even if credentials are compromised. Additionally, API users do
not require frequent password updates like regular accounts.
To create an **API user**, proceed as follows:
#. Log into your `Worldline Merchant Portal <https://merchant-portal.preprod.worldline-solutions.com/dashboard>`_,
click the :icon:`fa-th` (:guilabel:`menu`) icon, and select :guilabel:`Back Office`.
#. Go to :menuselection:`Configuration --> Users` and click on :guilabel:`New User`.
#. Configure the following fields:
#. Specify a :guilabel:`UserID`, :guilabel:`User's name`, :guilabel:`E-mail address`, and
:guilabel:`Timezone` of your choice.
#. Set the :guilabel:`Profile` field to :guilabel:`Admin`.
#. Enable :guilabel:`Special user for API`.
.. tip::
If you have already set up a user, make sure it is activated without any error.
.. _worldline/set-up:
Set up Worldline for Odoo
-------------------------
Worldline must now be configured to accept payments from Odoo.
#. From your merchant portal, go to :menuselection:`Developer --> Payment API` and click on
:guilabel:`Generate API key`. Copy the :guilabel:`API key ID` and the :guilabel:`Secret API key`
and save them for :ref:`later <wordline/odoo-configuration>`.
#. Go to :menuselection:`Developer --> Webhooks` and click on :guilabel:`Generate webhook keys`.
Copy the :guilabel:`Webhook ID` and the associated :guilabel:`Secret webhook key` and
save them for :ref:`later <wordline/odoo-configuration>`.
#. | Click :guilabel:`Add webhook endpoint`, enter your Odoo database's URL followed by
`/payment/worldline/webhook` in the :guilabel:`Endpoint url` field, and :guilabel:`Confirm`.
| For example: `https://example.odoo.com/payment/worldline/webhook`.
.. _wordline/odoo-configuration:
Settings in Odoo
================
To set up Worldline in Odoo:
#. :ref:`Navigate to the payment provider Worldline <payment_providers/add_new>` and change its
state to :guilabel:`Enabled`.
#. In the :guilabel:`Credentials` tab, enter the :guilabel:`PSPID` of your Worldline account and
fill in the :guilabel:`API Key`, :guilabel:`API Secret`, :guilabel:`Webhook Key`, and
:guilabel:`Webhook Secret` with the values you saved at the step :ref:`Set up Worldline for
Odoo <worldline/set-up>`.
#. Configure the rest of the options to your liking.
.. seealso::
:doc:`../payment_providers`
@@ -141,7 +141,7 @@ SPF, DKIM and DMARC documentation of common providers
- `GoDaddy CNAME record <https://www.godaddy.com/help/add-a-cname-record-19236>`_
- `NameCheap <https://www.namecheap.com/support/knowledgebase/article.aspx/317/2237/how-do-i-add-txtspfdkimdmarc-records-for-my-domain/>`_
- `CloudFlare DNS <https://support.cloudflare.com/hc/en-us/articles/360019093151>`_
- `Google Domains <https://support.google.com/domains/answer/3290350?hl=en>`_
- `Squarespace DNS records <https://support.squarespace.com/hc/en-us/articles/360002101888-Adding-custom-DNS-records-to-your-Squarespace-managed-domain>`_
- `Azure DNS <https://docs.microsoft.com/en-us/azure/dns/dns-getstarted-portal>`_
To fully test the configuration, use the `Mail-Tester <https://www.mail-tester.com/>`_ tool, which
@@ -317,3 +317,43 @@ To change the default behavior, enable :ref:`developer-mode`, then go to :menuse
.. important::
These parameters are only used to prevent the creation of new records. They **do not prevent
replies** from being added to the chatter.
Allow alias domain system parameter
===================================
Incoming aliases are set in the Odoo database to create records by receiving incoming emails. To
view aliases set in the Odoo database, first activate the :ref:`developer mode <developer-mode>`.
Then, go to :menuselection:`Settings app --> Technical --> Aliases`.
The following system parameter, `mail.catchall.domain.allowed`, set with allowed alias domain
values, separated by commas, filters out correctly addressed emails to aliases. Setting the domains
for which the alias can create a ticket, lead, opportunity, etc., eliminates false positives where
email addresses with only the prefix alias, not the domain, are present.
In some instances, matches have been made in the Odoo database when an email is received with the
same alias prefix and a different domain on the incoming email address. This is true in the sender,
recipient, and :abbr:`CC (Carbon Copy)` email addresses of an incoming email.
.. example::
When Odoo receives emails with the `commercial` prefix alias in the sender, recipient, or
:abbr:`CC (Carbon Copy)` email addresses (e.g. commercial\@example.com), the database falsely
treats the email as the full `commercial` alias, with a different domain, and therefore, creates
a ticket/lead/opportunity/etc.
To add the `mail.catchall.domain.allowed` system parameter, first, activate the :ref:`developer mode
<developer-mode>`. Then, go to :menuselection:`Settings app --> Technical --> System Parameters`.
Click :guilabel:`New`. Then, type in `mail.catchall.domain.allowed` for the :guilabel:`Key` field.
Next, for the :guilabel:`Value` field, add the domains separated by commas. Manually
:icon:`fa-cloud-upload` :guilabel:`(Save)`, and the system parameter takes immediate effect.
.. image:: email_servers_inbound/allowed-domain.png
:alt: mail.catchall.domain.allowed system parameter set.
Local-part based incoming detection
===================================
When creating a new alias, there is an option to enable :guilabel:`Local-part based incoming
detection`. If enabled, Odoo only requires the local-part to match for routing an incoming email. If
this feature is turned off, Odoo requires the whole email address to match for routing an incoming
email.
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

+7 -20
View File
@@ -665,25 +665,6 @@ field.
.. _payroll/salary-attachment-types:
Salary attachment types
-----------------------
Salary attachments, also thought of as "wage garnishments", are portions of earnings taken out of a
payslip for something specific. Much like all other aspects of payroll configurations, the types of
salary attachments **must** be defined.
To view the currently configured salary attachments, navigate to :menuselection:`Payroll app -->
Configuration --> Salary --> Salary Attachment Types`. The default salary attachment types are
:guilabel:`Attachment of Salary`, :guilabel:`Assignment of Salary`, and :guilabel:`Child Support`.
To make a new type of salary attachment, click the :guilabel:`New` button. Then, enter the
:guilabel:`Name`, the :guilabel:`Code` (used in the salary rules to compute payslips), and decide if
it should have :guilabel:`No End Date`.
.. image:: payroll/new-attachment.png
:align: center
:alt: A new salary attachment form filled in.
Salary package configurator
===========================
@@ -960,14 +941,20 @@ form.
.. seealso::
- :doc:`payroll/contracts`
- :doc:`payroll/payslips`
- :doc:`payroll/work_entries`
- :doc:`payroll/salary_attachments`
- :doc:`payroll/payslips`
- :doc:`payroll/reporting`
- :doc:`payroll/work_entry_analysis`
- :doc:`payroll/salary_attachment`
.. toctree::
:titlesonly:
payroll/contracts
payroll/work_entries
payroll/salary_attachments
payroll/payslips
payroll/reporting
payroll/work_entry_analysis
payroll/salary_attachment
+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

@@ -0,0 +1,154 @@
==================
Salary attachments
==================
Salary attachments are portions of earnings taken directly out of a payslip for a specific purpose,
whether voluntary or required.
When the deduction is voluntary, they are typically considered *deductions*. When the deduction is
court-ordered, or involuntary, it is sometimes referred to as a *wage garnishment*. In Odoo, these
are all universally called, *salary attachments*.
.. _payroll/salary-attachment/types:
Salary attachment types
=======================
To view the currently configured salary attachment types, navigate to :menuselection:`Payroll app
--> Configuration --> Salary Attachment Types`. The default salary attachment types are:
:guilabel:`Attachment of Salary`, :guilabel:`Assignment of Salary`, and :guilabel:`Child Support`.
Each salary attachment type displays the :guilabel:`Name` of the attachment type, the
:guilabel:`Code` used when calculating payslips, a checkbox to indicate if there is :guilabel:`No
End Date`, and whether it is :guilabel:`Country` specific (or universal).
.. image:: salary_attachments/attachment-types.png
:alt: The default salary attachment types.
Create new salary attachment types
----------------------------------
.. danger::
Upon installation of the **Payroll** application, the pre-configured default salary attachment
types are linked to a variety of rules that are linked to various salary structures, as well as
the installed :ref:`localization package <fiscal_localizations/packages>`.
It is **not** recommended to alter or modify **any** of the preconfigured salary attachment
types, especially if they have been previously used on payslips in the database. Doing so may
affect various salary rules, and can prevent the creation of payslips.
A new salary attachment type *can* be created, but this should only be done when absolutely
necessary. All salary attachments can be associated with one of the three default salary
attachment types.
To make a new type of salary attachment, click the :guilabel:`New` button, and a blank
:guilabel:`Salary Attachment Types` form loads. Enter the :guilabel:`Name` for the new salary
attachment type in the corresponding field. Next, enter the :guilabel:`Code` used in the salary
rules to compute payslips. Last, tick the :guilabel:`No End Date` checkbox if this salary attachment
never expires.
If in a multi-company database, with locations in multiple countries, a :guilabel:`Country` field
also appears on the :guilabel:`Salary Attachment Types` form. Select the country the attachment
applies to, or leave blank if it is universal.
.. _payroll/salary-attachment/create:
Create a salary attachment
==========================
All salary attachments must be configured separately for each employee, for each type of salary
attachment. To view the currently configured salary attachments, navigate to :menuselection:`Payroll
app --> Contracts --> Salary Attachments`.
All salary attachments appear in a default list view, and displays the name of the
:guilabel:`Employees`, :guilabel:`Description`, the salary attachment :guilabel:`Type`, the
:guilabel:`Monthly Amount`, :guilabel:`Start Date`, and current :guilabel:`Status`.
To create a new salary attachment, click the :guilabel:`New` button in the top-left corner, and a
blank :guilabel:`Salary Attachment` form loads. Enter the following information on the form:
- :guilabel:`Employees`: Using the drop-down menu, select the desired employees. Multiple employees
can be listed in this field.
- :guilabel:`Description`: Enter a short description of the salary attachment.
- :guilabel:`Type`: Using the drop-down menu, select the specific :ref:`salary attachment type
<payroll/salary-attachment/types>`.
- :guilabel:`Start Date`: Using the calendar selector, select the date the salary attachment goes
into effect.
- :guilabel:`Estimated End Date`: This field is **not** modifiable, and **only** appears after the
:guilabel:`Monthly Amount` field is populated. This field is the estimated date when the salary
attachment will be completed. Today's date populates the field by default. Then, when the
:guilabel:`Total Amount` field is populated, this date is updated.
- :guilabel:`Document`: If any documentation is needed, such as a court order, click the
:guilabel:`Upload your file` button, and a file explorer window loads. Select the desired document
to attach it to the record. Only **one** document can be attached to a salary attachment.
- :guilabel:`Monthly Amount`: Enter the amount taken out of each paycheck every month in this field.
- :guilabel:`Total Amount`: This field **only** appears if the :ref:`salary attachment type
<payroll/salary-attachment/types>` has no end date (the :guilabel:`No End Date` option is
**not** ticked.)
.. image:: salary_attachments/salary-attachment-form.png
:alt: The salary attachment form with all fields filled out.
Since the salary attachment form auto saves as the fields are populated, after making a salary
attachment for an individual employee, there is no further action required.
If creating salary attachments for multiple employees on a single salary attachment form, after the
form is filled out, click the :guilabel:`Create Individual Attachments` button. This creates
separate salary attachments for each of the employees listed in the :guilabel:`Employees` field.
After the separate salary attachments have been created, the screen returns to the :guilabel:`Salary
Attachment` dashboard, but with a :guilabel:`Description` filter, populated with the description
filled in on the salary attachment form. All the salary attachments have a status of
:guilabel:`Running`, since they are currently active. Clear the filter in the search box to view the
default :guilabel:`Salary Attachment` dashboard in its entirety.
Manage salary attachments
=========================
Salary attachments can have one of three statuses: *Running*, *Completed*, or *Canceled*. To view
the current status of all salary attachments, navigate to :menuselection:`Payroll app --> Contracts
--> Salary Attachments`.
All salary attachments appear in the order they were configured. To view the salary attachments by
a particular metric, such as the :guilabel:`Status`, or :guilabel:`Type`, click on the column title
to sort by that specific column.
Completed salary attachments
----------------------------
When a salary attachment is created, it has a status of :guilabel:`Running`. Once the salary
attachment is finished (the *Total Amount* entered on the :ref:`salary attachment form
<payroll/salary-attachment/create>` has been paid in full), the status automatically changes to
*Completed*, and the employee no longer has the money taken out of future paychecks.
If a salary attachment has been fulfilled, but has not automatically changed to *Completed*, the
record can be manually updated. To change the status, open the *Salary Attachment* dashboard by
navigating to :menuselection:`Payroll app --> Contracts --> Salary Attachments`.
Click on the record to update, and the detailed :guilabel:`Salary Attachment` form loads. On the
individual :guilabel:`Salary Attachment` record, click the :guilabel:`Mark as Completed` button in
the upper-left corner, and the status changes to :guilabel:`Completed`.
.. example::
The following is an example of when a payroll manager may need to manually change a salary
attachment from :guilabel:`Active` to :guilabel:`Cancelled`.
Rose Smith has a salary attachment for a lawsuit settlement, where she is required to pay
$3,000.00. A salary attachment is created that takes $250.00 a month out of Rose's paycheck, to
go towards this settlement payment.
After six months, Rose has paid $1,500.00 from her salary. She received a tax refund, and uses
the money to pay off the remainder of the lawsuit settlement. After sending the relevant
documentation to the payroll manager, showing the settlement has been paid in full, the payroll
manager manually changes the status of her salary attachment to :guilabel:`Completed`.
Cancel salary attachments
-------------------------
Any salary attachment can be cancelled at any time. To cancel a salary attachment, click on the
individual attachment record from the main :guilabel:`Salary Attachment` dashboard to open the
record. From the :guilabel:`Salary Attachment` record, click the :guilabel:`Cancel` button to cancel
the salary attachment, and stop having the designated money taken out of future paychecks.
.. seealso::
:doc:`salary_attachment`
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

@@ -59,8 +59,8 @@ Enter the following information on the form:
this field is left blank, it automatically populates once an employee is selected. The default
entry is `Attendance: (Employee)`.
- :guilabel:`Employee`: select the employee the work entry is for, using the drop-down menu.
- :guilabel:`Work Entry Type`: select the :ref:`work entry type <payroll/work-entries-config>` using
the drop-down menu.
- :guilabel:`Work Entry Type`: select the :ref:`work entry type <payroll/work-entries>` using the
drop-down menu.
- :guilabel:`From` and :guilabel:`To`: enter the start (:guilabel:`From`) and end (:guilabel:`To`)
dates and times for the work entry.
@@ -0,0 +1,80 @@
===================
Work entry analysis
===================
The default *Work Entries Analysis* report provides an overview of the validated work entries for
the current month. To view this report, navigate to :menuselection:`Payroll app --> Reporting -->
Work Entry Analysis`.
The work entries appear in a pivot table, with the default filters of :guilabel:`Current month:
(Month)(Year)` and :guilabel:`Validated`. The various types of :doc:`work_entries` populate the
rows, while the :guilabel:`Total` values populate the only visible column.
To change the displayed information, click :icon:`fa-plus-square` :guilabel:`Total` above the main
column, revealing a drop-down menu of available metrics. Click on one of the available groupings,
and the data is further organized by that selected metric. The default options are :guilabel:`Work
Entry Type`, :guilabel:`Employee`, and :guilabel:`Department`. If in a multi-company database, a
:guilabel:`Company` option also appears.
Work entry analysis comparison
==============================
It is possible to compare the work entries from one time period to a previous time period. To view
this comparison, first navigate to :menuselection:`Payroll app --> Reporting --> Work Entry
Analysis`.
Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, revealing a
drop-down menu. Under the :icon:`fa-adjust` :guilabel:`Comparison` section, click on either
:guilabel:`Current Month: Previous Period` or :guilabel:`Current Month: Previous Year`.
The report updates and displays the data for the current time period, data for the selected previous
time period, as well as the :guilabel:`Variation` between the two, in a percentage.
.. image:: work_entry_analysis/work-entry-comparison.png
:alt: A pivot table comparing the work entries of the current month and the previous month.
.. note::
If no work entries for a specific :ref:`work entry type <payroll/work-entries>` are logged for
the time period, it does **not** appear on the report. That does **not** mean the work entry type
does not exist, or is not configured.
Additionally, if the default :guilabel:`Current month: (Month)(Year)` filter is removed from the
search bar, the :guilabel:`Comparison` column does **not** appear; there must be a time-frame
selected to view the :guilabel:`Comparison` column.
Use case: overtime report comparison
====================================
It is possible to alter the *Work Entries Analysis* report to show a comparison of only overtime
work entries, grouped by employee, for a specific time period. To view this data, first navigate to
the default *Work entry analysis* report by going to :menuselection:`Payroll app --> Reporting -->
Work Entry Analysis`.
Next, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon in the search bar, revealing a
drop-down menu. Under the :icon:`fa-filter` :guilabel:`Filters` column, click :guilabel:`Add Custom
Filter`, and a :guilabel:`Add Custom Filter` pop-up window appears.
Using the drop-down menu, select :guilabel:`Work Entry Type` for the first field, leave the middle
field as-is (with :guilabel:`is in` populating the field), and select :guilabel:`Overtime Hours` for
the last field. Click :guilabel:`Add`, and all other work entry types disappear, and
:guilabel:`Overtime Hours` appear in the sole row.
To compare overtime from the current month to the previous month, to see which month had more
overtime logged, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon again in the search
bar. Under the :icon:`fa-adjust` :guilabel:`Comparison` section, click :guilabel:`Current Month:
Previous Period`. Click away from the drop-down menu to close it.
Now, the report displays the :guilabel:`Overtime Hours` for the current month and the previous
month, along with the :guilabel:`Variation`, in a percentage.
To view which employees received the most overtime, click :icon:`fa-plus-square` :guilabel:`Overtime
Hours`, revealing a drop-down menu of options. Click :guilabel:`Employee`, and all employees with
overtime work entries for either the current or previous month appears.
In this example, it can be determined that :guilabel:`Marc Demo` worked the most overtime in
:guilabel:`August 2024`, whereas :guilabel:`Beth Evans` worked the most overtime hours in
:guilabel:`September 2024`. Additionally, :guilabel:`Mitchell Admin` had the largest variation
change, with a :guilabel:`-100%` change from :guilabel:`August 2024` to :guilabel:`September 2024`.
.. image:: work_entry_analysis/variation.png
:alt: A pivot table comparing the overtime from September 2024 with August 2024.
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
------------------------
@@ -9,4 +9,6 @@ Inventory valuation
inventory_valuation/inventory_valuation_config
inventory_valuation/using_inventory_valuation
inventory_valuation/integrating_landed_costs
inventory_valuation/landed_costs
inventory_valuation/valuation_by_lots
@@ -2,8 +2,6 @@
Landed costs
============
.. _inventory/reporting/landed_costs:
.. |RfQ| replace:: :abbr:`RfQ (Request for Quotation)`
.. |PO| replace:: :abbr:`PO (Purchase Order)`
.. |FIFO| replace:: :abbr:`FIFO (First In First Out)`
@@ -32,8 +30,7 @@ Costs` feature in the :guilabel:`Valuation` section.
Click the :guilabel:`Default Journal` drop-down menu to reveal a list of accounting journals. Select
a journal for which all accounting entries related to landed costs should be recorded.
.. image:: integrating_landed_costs/integrating-landed-costs-enabled-setting.png
:align: center
.. image:: landed_costs/integrating-landed-costs-enabled-setting.png
:alt: Landed Costs feature and resulting Default Journal field in the Inventory settings.
Create landed cost product
@@ -65,17 +62,16 @@ appears below it, prompting a selection. Clicking that drop-down menu reveals th
- :guilabel:`By Weight`: splits the cost, according to the weight of the products in the receipt.
- :guilabel:`By Volume`: splits the cost, according to the volume of the products in the receipt.
.. image:: integrating_landed_costs/integrating-landed-costs-landed-cost-product.png
:align: center
.. image:: landed_costs/integrating-landed-costs-landed-cost-product.png
:alt: Is a Landed Cost checkbox and Default Split Method on service type product form.
When creating new vendor bills, this product can be added as an invoice line as a landed cost.
.. important::
To apply a landed cost on a vendor bill, the products included in the original |PO| **must**
belong to a *Product Category* with its *Force Removal Strategy* set to |FIFO|. The *Costing
Method* can be set to either |AVCO| or |FIFO|, and the valuation method can be :doc:`manual
<using_inventory_valuation>` or :doc:`automatic <inventory_valuation_config>`.
To apply a landed cost on a vendor bill, products in the original |PO| **must** belong to a
*Product Category* with a *Costing Method* of either |AVCO| or |FIFO|, and the valuation method
can be :doc:`manual <using_inventory_valuation>` or :doc:`automatic
<inventory_valuation_config>`.
Create purchase order
=====================
@@ -105,8 +101,7 @@ menu in the :guilabel:`Product` column to select the previously-created landed c
the :icon:`fa-cloud-upload` :guilabel:`(cloud with arrow)` icon to manually save and update the
draft bill.
.. image:: integrating_landed_costs/integrating-landed-costs-checkboxes.png
:align: center
.. image:: landed_costs/integrating-landed-costs-checkboxes.png
:alt: Landed Costs column checkboxes for product and landed cost.
In the :guilabel:`Landed Costs` column, the product ordered from the vendor does **not** have its
@@ -115,8 +110,7 @@ costs from all other costs displayed on the bill.
Additionally, at the top of the form, a :guilabel:`Create Landed Costs` button appears.
.. image:: integrating_landed_costs/integrating-landed-costs-create-button.png
:align: center
.. image:: landed_costs/integrating-landed-costs-create-button.png
:alt: Create Landed Costs button on vendor bill.
Add landed cost
@@ -131,8 +125,7 @@ product line in the :guilabel:`Additional Costs` tab.
From the :guilabel:`Landed Cost` form, click the :guilabel:`Transfers` drop-down menu, and select
which transfer the landed cost belongs to.
.. image:: integrating_landed_costs/integrating-landed-costs-transfers-menu.png
:align: center
.. image:: landed_costs/integrating-landed-costs-transfers-menu.png
:alt: Landed cost form with selected receipt transfer.
.. tip::
@@ -171,6 +164,5 @@ To view the valuation of *every* product, including landed costs, navigate to
Click into the journal entry to view the :guilabel:`Journal Items`, and other information about
the entry.
.. image:: integrating_landed_costs/integrating-landed-costs-journal-entry.png
:align: center
.. image:: landed_costs/integrating-landed-costs-journal-entry.png
:alt: Journal Entry form for landed cost created from vendor bill.
@@ -108,6 +108,8 @@ available during a prior specified date can be seen and selected.
the teal :guilabel:`➡️ (right arrow)` button to the right of the :guilabel:`Reference` column
value.
.. _inventory/product_management/update-unit-price:
Update product unit price
-------------------------
@@ -0,0 +1,209 @@
================================
Valuation by lots/serial numbers
================================
Track :doc:`inventory valuation <using_inventory_valuation>` by :doc:`lots or serial numbers
<../../product_management/product_tracking>` to:
#. :ref:`Compare and differentiate purchasing cost <inventory/product_management/view-valuation>`,
based on lot or serial numbers.
#. Track the actual cost of manufactured products, based on the real cost of each tracked component
used.
#. Depreciate specific lot or serial numbers when they :doc:`sit in stock for too long
<../../warehouses_storage/reporting/aging>`.
.. important::
Please read this :doc:`introduction to inventory valuation <inventory_valuation_config>` before
setting up valuation by lot/serial numbers.
Configuration
=============
To enable valuation by lots or serial numbers, begin by enabling the :ref:`Lots and Serial Numbers
feature <inventory/product_management/enable-lot-serial>`. After that, go to
:menuselection:`Inventory app --> Products --> Products`, and select the desired product, or create
a new product, by clicking :guilabel:`New`.
On the product form, in the :guilabel:`Category` field, choose a product category. Ensure the
product category's :ref:`Costing Method <inventory/warehouses_storage/costing_methods>` is set to
*First In First Out (FIFO)* or *Average Cost (AVCO)*.
.. tip::
To check the costing method set on the product category, hover over the :guilabel:`Category`
field, and click the :icon:`oi-arrow-right` :guilabel:`(Internal Link)` icon.
.. seealso::
:ref:`Costing methods <inventory/warehouses_storage/costing_methods>`
Next, activate the product to be tracked by lots or serial numbers by ticking the :guilabel:`Track
Inventory` checkbox. Then, click the adjacent field that appears, and choose either :guilabel:`By
Lots` or :guilabel:`By Unique Serial Number` from the resulting drop-down menu.
Doing so makes the :guilabel:`Valuation by Lot/Serial number` checkbox appear below it. Tick that
checkbox, and the configuration to track valuation by lot or serial numbers is complete.
.. figure:: valuation_by_lots/product-form.png
:alt: Product form showing the Valuation by Lot or Serial Number feature.
Product form showing the Valuation by Lot or Serial Number feature
Valuation layers
================
To understand how valuation by lots and serial numbers works, consider these scenarios:
#. :ref:`Purchase and sell products <inventory/product_management/valuation-cost-example>`: cost is
calculated based on the *product category's* costing method.
#. :ref:`Create new lot/serial numbers <inventory/product_management/valuation-cost-new>` using an
inventory adjustment: value of the new lot/serial number is assigned to the cost from the product
form.
#. Inventory adjustment to update quantities for an :ref:`existing lot/serial number
<inventory/product_management/valuation-cost-existing>`: value is assigned based on the most
recent cost for that lot/serial number.
For both :abbr:`AVCO (Average Cost)` and :abbr:`FIFO (First In First Out)` methods, the *Cost* field
on the product form is calculated using this formula:
:math:`Avg~Cost = \frac{Total~Value}{Total~Qty}`
.. _inventory/product_management/valuation-cost-example:
Purchase products
-----------------
Consider how purchasing products affect the inventory valuation, in the table below.
.. list-table::
:header-rows: 1
:stub-columns: 1
* -
- Quantity
- Lot number
- Math
- Average cost on product form
* - Empty stock
- 0.00
-
-
- $0
* - Day 1: Receive one product at $10/unit
- 1.00
- LOT 1
- :math:`\frac{10}{1}`
- $10
* - Day 2: Receive another product at $20/unit
- 1.00
- LOT 2
- :math:`\frac{10+20}{2}`
- $15
.. figure:: valuation_by_lots/lip-gloss.png
:alt: Show Cost on the product form.
As a result, the product form displays an average cost of $15 in the **Cost** field.
.. _inventory/product_management/valuation-cost-new:
Create new lot/serial number
----------------------------
Creating a new lot/serial number through an :doc:`inventory adjustment
<../../warehouses_storage/inventory_management/count_products>` assigns the same value as the cost
on the product form.
To make an inventory adjustment, and assign a lot number, go to :menuselection:`Inventory app -->
Operations --> Physical Inventory`. Then, click :guilabel:`New`.
In the new inventory adjustment line that appears, set the :guilabel:`Product`, create the
:guilabel:`Lot/Serial Number`, set the :guilabel:`Counted Quantity`, and click :icon:`fa-floppy-o`
:guilabel:`Apply`.
To view the valuation layer, go to :menuselection:`Inventory app --> Reporting --> Valuation`. The
:guilabel:`Total Value` per unit matches the *Cost* on the product form.
.. example::
Continuing the example in the table above, when the product cost is `$15`, the valuation for a
newly-created `LOT3` is also be `$15`.
.. image:: valuation_by_lots/create-new.png
:alt: Show inventory adjustment valuation.
.. _inventory/product_management/valuation-cost-existing:
Existing lot/serial number
--------------------------
When adjusting the quantity of an existing lot/serial number, the value is based on the most recent
valuation layer for that specific lot/serial number.
.. example::
Continuing the example in the table above, the value for `LOT 1` is `$10`.
So, when the quantity is updated from `1.00` to `2.00`, the additional quantity is also valued at
`$10`, reflecting the latest valuation layer for `LOT 1`.
.. figure:: valuation_by_lots/existing.png
:alt: Show valuation of LOT 1 getting updated.
The inventory adjustment (top line) is valued the same as LOT 1 (bottom line).
.. _inventory/product_management/view-valuation:
View valuation
==============
To find the average cost of a specific lot/serial number, go to :menuselection:`Inventory app -->
Products --> Lots/Serial Numbers`, and select the desired record.
Both the :guilabel:`Cost` and :guilabel:`Average Cost` fields show a unit's average cost. The
:guilabel:`Total Value` reflects the total on-hand value for that lot/serial number.
.. important::
Ensure the costing method is set to *First In First Out (FIFO)* or *Average Cost (AVCO)* to
display the cost on this page.
.. figure:: valuation_by_lots/lot.png
:alt: Show cost of the lot/serial number.
Lot form, displaying **Cost** field. The **Valuation** smart button is in the top-right.
Valuation layers of a lot/serial number can be viewed through the :ref:`valuation report
<inventory/product_management/valuation-report>`, or by clicking the lot/serial number's
:guilabel:`Valuation` smart button. These detailed, line-by-line records can help determine how each
inventory move of the specific lot/serial number affects its valuation.
.. _inventory/product_management/valuation-report:
Valuation report
----------------
Display the valuation of lots and serial numbers in the database by going to
:menuselection:`Inventory app --> Reporting --> Valuation`.
On the resulting :guilabel:`Stock Valuation` report, click the search bar, and in the
:icon:`oi-group` :guilabel:`Group By` section of the resulting drop-down menu, select
:guilabel:`Lot/Serial number`.
.. tip::
Click the :icon:`fa-plus` :guilabel:`(plus)` icon to the right of a collapsed lot number line to
:ref:`manually modify the cost <inventory/product_management/update-unit-price>`.
This is useful for adjusting individual lot prices when a purchase order or bill includes
multiple lots/serial numbers, as initial prices are identical upon reception.
.. image:: valuation_by_lots/stock-valuation.png
:alt: Show valuation report, by lots.
Valuation smart button
----------------------
To access a filtered part of the *Stock Valuation* report, specific to a lot or serial number, go to
:menuselection:`Inventory app --> Products --> Lots/Serial Numbers`, and select the desired item.
On the :guilabel:`Lot/Serial Numbers` page, click the :guilabel:`Valuation` smart button.
.. figure:: valuation_by_lots/lot-stock-valuation.png
:alt: All stock moves relating to `LOT 1`.
All stock moves that affect the valuation of `LOT 1`.

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