Compare commits

...

180 Commits

Author SHA1 Message Date
Parish Bracha 4939c2177a [ADD] Subscriptions: Wire transfer 2024-07-29 10:26:11 -07:00
Marion (masp) 2f5e130179 [IMP] website: complete google search console doc
task-3799063

closes odoo/documentation#10342

X-original-commit: bea85886d4
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Marion Spindler (masp) <masp@odoo.com>
2024-07-29 10:53:47 +00:00
Tom Aarab (toaa) d5fd2f1c66 [IMP] mexico: broken url
Removing a dead URL

taskid-3636231

closes odoo/documentation#10348

X-original-commit: 0451d1f2a8
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-29 09:07:04 +00:00
Sam Lieber (sali) 92c5c3db31 [FW][FIX] accounting/l10n_cl: remove company image
closes odoo/documentation#10396

X-original-commit: 44c2b65fa0
Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-07-27 06:05:55 +00:00
jero-odoo bed068f95a [IMP] General: Multi-Company Limitations
closes odoo/documentation#10315

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-27 06:05:44 +00:00
John Holton (hojo) 7212fc98cd [IMP] Essentials: update search doc
closes odoo/documentation#10235

Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-07-27 06:05:43 +00:00
Lara Martini (larm) 3b40e6c1ec [ADD] Expenses: new expese reports doc
closes odoo/documentation#10308

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-26 21:19:38 +00:00
jero-odoo d2497d2b14 [IMP] Essentials:  Export and Import
closes odoo/documentation#10293

Signed-off-by: Jessica Rogers (jero) <jero@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-07-26 21:19:36 +00:00
bve-odoo 5965bad8ea [FIX] microsoft_outlook: redirect URL error if not matching
_compute_outlook_uri is using get_base_url, providing the
web.base.url of the database that is subject to changed as
stated on the website documentation: if the user logging-in
is using another URL to connect to the db, and has the
Administration/Settings access right (res.groups: base.group_system)

opw-4056377

closes odoo/documentation#10374

X-original-commit: 1f7c0a9b2e
Signed-off-by: Baptiste Vergote (bve) <bve@odoo.com>
2024-07-26 15:12:40 +00:00
Tom Aarab (toaa) ee8aed02c8 [IMP] argentina: menu move
taskid-3962220

closes odoo/documentation#10333

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-26 05:57:45 +00:00
John Holton (hojo) 17787e62c3 [ADD] Manufacturing: Production analysis report
closes odoo/documentation#10155

Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-07-25 19:38:39 +00:00
rps-odoo 7ecaf74124 [IMP] accounting/l10n_ec: point of sale invoicing
closes odoo/documentation#8962

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-07-25 19:38:38 +00:00
Lara Martini (larm) afbc491940 [ADD] Recruitment: adding new recruitment flow doc
closes odoo/documentation#9616

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-25 15:06:16 +00:00
Zuzanna Luczynska b3e2b51a6a [ADD] project: new doc about sub-tasks
taskid-4066254

closes odoo/documentation#10290

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-25 13:15:59 +00:00
Donatienne (dopi) acf8d5e4a7 [IMP] Sign: signing order to be updated
taskid-4058926

closes odoo/documentation#10292

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-25 10:00:55 +00:00
guillaume gallant (guga) 916b185065 [IMP] Field_Service: Creating tasks page
taskid-4043610

closes odoo/documentation#10176

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-24 07:16:39 +00:00
guillaume gallant (guga) 93a0f41756 [IMP] Field_Service: add product to the task
taskid-4043214

closes odoo/documentation#10142

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-23 15:52:51 +00:00
Tiffany Chang (tic) bf9bbff058 [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#10306

Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-07-23 14:24:44 +00:00
Lara Martini (larm) 32976cdd84 [ADD] spreadsheet: global filters
closes odoo/documentation#9524

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Samuel Lieber <sali@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-07-23 14:24:40 +00:00
jero-odoo 00e96e5635 [ADD] Members: members analysis
closes odoo/documentation#10132

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-22 23:38:34 +00:00
Felicious c4fd10f94e [IMP] inventory: refactor WH and locations
closes odoo/documentation#10287

X-original-commit: 1c927fa911
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Jess Rogers <104637850+jero-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-22 17:56:59 +00:00
Odoo Translation Bot 10a92e66cf [I18N] *: export 17.0 source terms 2024-07-20 02:37:50 +00:00
jero-odoo 634a5af824 [IMP] Users: Enforce two-factor authentication
closes odoo/documentation#10237

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: StraubCreative <zst@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-19 21:12:43 +00:00
Parish Bracha 53f8dcd991 [ADD] crm: add marketing attribution doc
Apply suggestions from code review

closes odoo/documentation#9566

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-07-19 21:12:42 +00:00
KC (ksc) a535d2fe9d [ADD] events: added an event tracks doc
closes odoo/documentation#9241

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-07-19 00:27:43 +00:00
Felicious cb51299cf1 [IMP] inventory: switch valuation to auto
closes odoo/documentation#10159

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-07-18 22:54:49 +00:00
KC (ksc) a42a88bf7c [ADD] events: event booths doc (17)
closes odoo/documentation#9342

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-07-18 21:07:42 +00:00
jero-odoo 8cea31c24d [ADD] Users: Facebook OAuth
closes odoo/documentation#10189

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-07-18 16:29:47 +00:00
Donatienne (dopi) d03b45c6f9 [MOV] ecommerce: moving product management page
taskid-4056328

closes odoo/documentation#10227

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-18 09:59:51 +00:00
jero-odoo e238e63240 [FIX] VoIP: Correct Axivox Link
closes odoo/documentation#10239

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-07-17 23:24:05 +00:00
Felicious e14c53b60c [IMP] inventory: sendcloud shipping rules
closes odoo/documentation#10191

X-original-commit: 21779a5eb6
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
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>
2024-07-17 22:02:23 +00:00
sovi-odoo d1398e5889 [IMP] accounting/l10n: tell users to install l10n_fr_invoice_addr
In Odoo 15.0, an extra module is necessary to conform to the french
legislation. This will tell users to install it.

This is a forward port of odoo/documentation#9820

task-3856826

closes odoo/documentation#10230

X-original-commit: c84d525452
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Solal Vignal (sovi) <sovi@odoo.com>
Co-authored-by: toaa-odoo <toaa@odoo.com>
2024-07-17 09:10:40 +00:00
Donatienne (dopi) c226214530 [IMP] website: translations
taskid-3617120

closes odoo/documentation#10215

X-original-commit: fda2534a74
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-07-16 15:56:47 +00:00
xpl-odoo c6e7dba0bd [FIX] sign: line break after 100 characters
closes odoo/documentation#10069

X-original-commit: 50b8a2100d
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-07-16 15:56:44 +00:00
guillaume gallant (guga) 79745b702f [IMP] Field Service: Correction on Itinerary doc
task 4053589

closes odoo/documentation#10186

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-16 11:21:46 +00:00
Donatienne (dopi) baf1e9b464 [IMP] Website: link to be updated
taskid-4047508

closes odoo/documentation#10175

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-16 09:56:49 +00:00
“Audrey 26e296e1a7 [ADD] Studio: approval rules
task-3553095

closes odoo/documentation#10141

X-original-commit: 13ddb59da9
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-16 06:50:37 +00:00
Lara Martini (larm) 11a2af286d [ADD] Recruitment: offer job positions
closes odoo/documentation#10099

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-15 23:11:51 +00:00
Lara Martini (larm) 7c10386675 [ADD] Time off: new allocations doc
closes odoo/documentation#10135

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-15 21:25:40 +00:00
Lara Martini (larm) a00fa1c997 [ADD] Referrals: new points doc
closes odoo/documentation#10134

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-15 21:25:39 +00:00
KC (ksc) 1f88f9dd67 [FIX] subscriptions: corrected invoicing info
closes odoo/documentation#10131

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-07-15 19:56:09 +00:00
lejeune quentin 7598c57f48 [ADD] point_of_sale: Documentation for Viva wallet
This PR add the documentation needed to use viva wallet payment method in Point Of Sale.
task-3667968

closes odoo/documentation#8532

Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
Co-authored-by: lejeune quentin <qle@odoo.com>
Co-authored-by: Perazzo Loredana <lrpz@odoo.com>
2024-07-15 10:49:36 +00:00
Odoo Translation Bot da17cb4fef [I18N] *: export 15.0 source terms 2024-07-13 02:42:21 +00:00
Felicious bb1322131d [IMP] inventory: bpost customer accounts
closes odoo/documentation#10101

X-original-commit: e22b63a953
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
2024-07-12 19:58:54 +00:00
Donatienne (dopi) 3b573b0e60 [IMP] documents: new changes in V17
closes odoo/documentation#6735

Taskid: 3491654
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-07-12 09:55:33 +00:00
John Holton (hojo) d4f2a2768c [ADD] Manufacturing: OEE
closes odoo/documentation#10051

Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-07-12 04:22:59 +00:00
John Holton (hojo) d4fe1eb4d1 [ADD] Manufacturing: Continuous product improvement
closes odoo/documentation#9964

Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-07-09 15:28:23 +00:00
Parish Bracha 9af6b453fe [IMP] crm: add quotation product catalog
closes odoo/documentation#10045

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-07-09 12:35:02 +00:00
Parish Bracha 11ef368a58 [IMP] CRM: Inactive lost leads
closes odoo/documentation#10065

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-07-08 22:13:37 +00:00
Odoo Translation Bot 60d6f7ee59 [I18N] *: export 15.0 source terms 2024-07-08 20:12:09 +00:00
KC (ksc) ba86ed096a [IMP] sales: added important admonition to amazon docs
closes odoo/documentation#10103

X-original-commit: 03f5c0660e
Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-07-08 14:37:59 +00:00
jero-odoo 6e18b6f7de [IMP] IoT: clear printer cache
closes odoo/documentation#10063

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-07-06 01:40:02 +00:00
John Holton (hojo) 2de0593eb7 [ADD] Manufacturing: MO costs
closes odoo/documentation#10015

Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-07-06 01:40:01 +00:00
KC (ksc) 6b17ed5052 [IMP] events: update track and manage talks
closes odoo/documentation#9223

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-07-06 01:40:00 +00:00
Parish Bracha 9d228fc301 [IMP] sales: 100 percent down section
closes odoo/documentation#9664

Signed-off-by: Parish Bracha (pabr) <pabr@odoo.com>
2024-07-06 01:39:59 +00:00
jero-odoo f56dce3a15 [IMP] Helpdesk: merge tickets
closes odoo/documentation#10039

Signed-off-by: Jessica Rogers (jero) <jero@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>
2024-07-05 21:32:59 +00:00
Felicious 6263eea056 [FIX] inventory: UoM redirect rules
closes odoo/documentation#10090

X-original-commit: 58990cb4c6
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-07-04 22:54:31 +00:00
“Dallas” 5738af24c6 [FIX] german localization: Fixed broken GoBD link
If merged, this commit will replace the broken GoBD link with the correct link.

task ID: 4034487

closes odoo/documentation#10077

X-original-commit: 0e783b0dfa
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Dallas Dean (dade) <dade@odoo.com>
2024-07-04 17:33:11 +00:00
Tom Aarab (toaa) 5a151eafd5 [IMP] loca kenya: remove screenshot
Removing a leftover screenshot.

closes odoo/documentation#10061

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-04 14:31:38 +00:00
guillaume gallant (guga) 18ca6d9f80 [ADD] field_service: create new page about worksheet
task-3991994

closes odoo/documentation#9795

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-04 12:36:42 +00:00
xpl-odoo c8555a7e1a [ADD] sign: legality
task-4008122

closes odoo/documentation#10040

X-original-commit: fa64368f21
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-07-03 09:45:08 +00:00
Lara Martini (larm) 9c5cee3f96 [ADD] Appraisals: new appraisal doc
closes odoo/documentation#9835

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-02 21:57:59 +00:00
Lara Martini (larm) 4072bf6ece [ADD] Lunch: new vendors doc
closes odoo/documentation#9963

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-07-02 20:35:42 +00:00
jero-odoo 0e82e60673 [ADD] General: Multi Company
closes odoo/documentation#9960

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-07-02 18:48:38 +00:00
Tom Aarab (toaa) 18c7aa4c47 [IMP] loca: Kenya menu update
Menus moved around since last PR. This updates it.

taskid-4028177

closes odoo/documentation#10028

Signed-off-by: Tom Aarab (toaa) <toaa@odoo.com>
2024-07-02 12:23:48 +00:00
Zuzanna Luczynska 5938ac0931 [ADD] project: new task creation and statuses docs
task-4010729

closes odoo/documentation#9944

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-07-02 12:23:44 +00:00
Odoo Translation Bot c44d4dfcab [I18N] Update translation terms from Transifex 2024-06-30 00:41:22 +02:00
Odoo Translation Bot dd5f46d011 [I18N] *: fetch 17.0 translations 2024-06-29 02:10:49 +00:00
Lara Martini (larm) 0752255be8 [ADD] Fleet: new models doc
closes odoo/documentation#9942

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-28 20:52:49 +00:00
jero-odoo 35500f8035 [ADD] Members: Overview
closes odoo/documentation#9789

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-06-28 20:52:48 +00:00
jero-odoo fc144a96fd [IMP] CRM: merge leads improvements
closes odoo/documentation#9959

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-28 18:09:38 +00:00
Lara Martini (larm) 9ae3ffc925 [IMP] Attendances: updating hardware to include badges
closes odoo/documentation#9892

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-28 18:09:37 +00:00
Sam Lieber (sali) 8ca247d9dd [ADD] data cleaning: overview
closes odoo/documentation#9866

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-06-28 18:09:36 +00:00
jero-odoo 9ed575b01e [ADD] Live chat: participate
closes odoo/documentation#9958

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-06-28 16:46:59 +00:00
Rodrigo Alfaro Domínguez 4e5ae3ea87 [IMP] sales: market connectors eBay marketplace
Added how to configure the policies of the product in order to prevent the error ```Input data for tag <Item.SellerProfiles.SellerPaymentProfile.PaymentProfileID> is invalid or missing.````from appearing when the user is listing the product. Also changed the section of listing images to indicate that they are necessary to prevent error ```A description is required.(106)Add at least 1 photo. More photos are better! Show off your item from every angle and zoom in on details.(21919136)``` from appearing. The first error is really common when a user is listing products and there have been multiple help tickets opened for the same reason

closes odoo/documentation#9939

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-28 16:46:58 +00:00
jero-odoo 6d74ff585b [IMP] Live Chat: Canned responses
closes odoo/documentation#9937

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: Felicia Kuan <feku@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-06-28 16:46:57 +00:00
Lara Martini (larm) d383da505d [ADD] Attendances: new kiosk mode doc
closes odoo/documentation#9832

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-28 16:46:56 +00:00
Donatienne (dopi) 8f5909a0cb [IMP] General: Change language
taskid-3964562

closes odoo/documentation#9931

X-original-commit: afe32dfbeb
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-06-28 07:02:36 +00:00
jero-odoo 9584fed709 [ADD] Contacts: Merge Contacts
closes odoo/documentation#9952

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: pabr-odoo <pabr@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-06-27 22:04:42 +00:00
John Holton (hojo) e79a2e674d [IMP] Manufacturing: Update MPS
closes odoo/documentation#9916

Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-06-27 22:04:41 +00:00
Lara Martini (larm) 217ca237bf [ADD] Recruitment: schedule interviews
closes odoo/documentation#9724

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-27 22:04:40 +00:00
Felicious 6495e78998 [ADD] inventory: format zebra labels
closes odoo/documentation#9699

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@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-06-27 22:04:39 +00:00
jero-odoo cac8d8a558 [ADD] IoT: SSH Connection
closes odoo/documentation#9936

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: larm-odoo <121518652+larm-odoo@users.noreply.github.com>
2024-06-27 20:30:41 +00:00
Tom Aarab (toaa) 0d28e54c4a [IMP] Kenya loca: adding onboarding steps explanations
Adding a fews steps to sign up on eTIMS and link Odoo.

taskid-3835

closes odoo/documentation#9946

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-26 07:45:47 +00:00
Donatienne (dopi) 3acda8ef04 [IMP] Documents: share section to be improved
taskid-3898917

closes odoo/documentation#9288

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-25 11:52:37 +00:00
Tiffany Chang (tic) 06b380921b [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#9911

X-original-commit: a727f25
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-06-24 08:47:05 +00:00
XPL 15b741e785 [IMP] upgrade: remove ticket go-live mention
The phrase is confusing and leads customers to contact support to carry out
the upgrade for them.

closes odoo/documentation#9896

X-original-commit: 8e143196f1
Signed-off-by: Xavier Platteau (xpl) <xpl@odoo.com>
2024-06-24 08:47:03 +00:00
Donatienne (dopi) 1bad5cebaf [ADD] wesbite: responsiveness
taskid-3725615

closes odoo/documentation#8482

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-24 07:22:24 +00:00
Odoo Translation Bot 4537468fc1 [I18N] Update translation terms from Transifex 2024-06-23 00:41:19 +02:00
Adrien Widart (awt) 957adbea2c [IMP] supported_versions: end of saas-16.4
closes odoo/documentation#9891

X-original-commit: 37ca3f1917
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Adrien Widart (awt) <awt@odoo.com>
2024-06-22 08:37:09 +00:00
John Holton (hojo) 54de7881a2 [ADD] Manufacturing: Allocation reports
closes odoo/documentation#9822

Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-06-21 23:13:05 +00:00
Lara Martini (larm) 2ed1db8304 [ADD] Time off: new my time doc
closes odoo/documentation#9837

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-21 21:49:58 +00:00
Felicious d31b997900 [IMP] inventory: automatic config instructions
closes odoo/documentation#9756

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: toaa <104567387+toaa-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-06-21 17:07:24 +00:00
guillaume gallant (guga) 701b8437aa [IMP] point_of_sale: improve text and replace pictures for Vantiv
task-3005157

closes odoo/documentation#9861

X-original-commit: f07303cb7e
Signed-off-by: Loredana Perazzo (lrpz) <lrpz@odoo.com>
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-21 15:47:07 +00:00
Lara Martini (larm) 2ae0e15982 [ADD] Lunch: New products doc
closes odoo/documentation#9838

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-21 15:47:05 +00:00
John Holton (hojo) da4186c1c2 [IMP] Inventory: Reordering rules 001 update
closes odoo/documentation#9788

Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-06-21 15:47:03 +00:00
Lara Martini (larm) 7dfcac709d [ADD] Time Off: New management doc
closes odoo/documentation#9612

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-21 13:37:45 +00:00
Donatienne (dopi) e612b445b9 [IMP] website: cookies bar
taskid-3961318

closes odoo/documentation#9853

X-original-commit: eb1eb38cce
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-06-21 09:34:53 +00:00
John Holton (hojo) d25d62d1c0 [IMP] Maintenance: update add new equipment
closes odoo/documentation#9790

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-20 22:02:33 +00:00
KC (ksc) 55f2d86800 [IMP] sales: add event prods to quote templates
closes odoo/documentation#9783

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-20 22:02:32 +00:00
jero-odoo 14a91520df [IMP] Contacts: partner webpage edit
closes odoo/documentation#9821

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-20 20:39:42 +00:00
Odoo Translation Bot 3b92fc672a [I18N] Update translation terms from Transifex 2024-06-16 00:41:18 +02:00
John Holton (hojo) 4975afda0d [ADD] Manufacturing: By-Products
closes odoo/documentation#9717

Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-06-14 20:47:52 +00:00
John Holton (hojo) 62bc2eda35 [IMP] Inventory: Update dropshipping doc
closes odoo/documentation#9636

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-14 17:48:51 +00:00
Sam Lieber (sali) d506554ed0 [IMP] reference/user_interface: 17.0 odoo ui icons
closes odoo/documentation#9256

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-14 16:36:52 +00:00
jero-odoo 594f3573d9 [ADD] CRM: Resellers
closes odoo/documentation#9679

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Felicia Kuan <feku@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>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-14 16:36:50 +00:00
KC (ksc) d21e9d8c12 [FIX] sales: corrected ecommerce category field issue
closes odoo/documentation#9505

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-06-13 21:13:00 +00:00
KC (ksc) 68ecabb435 [IMP] sales: add expense category context to reinvoice
closes odoo/documentation#9509

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-06-13 21:12:59 +00:00
Felicious 886e1dc19c [ADD] inventory: bpost
closes odoo/documentation#9742

X-original-commit: f39139aea9
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-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-06-13 19:59:30 +00:00
jero-odoo 8beae0b9e5 [IMP] Contacts: memberships and partners tabs
closes odoo/documentation#9779

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-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-06-13 15:25:36 +00:00
KC (ksc) 636441b94c [IMP] events: added supplemental content to create events
closes odoo/documentation#9523

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-06-13 15:25:30 +00:00
jero-odoo 9aa160f042 [IMP] Discuss: Chatter icons
closes odoo/documentation#9781

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
2024-06-13 13:28:56 +00:00
Brandon Seltenrich (BRSE) 118e31d96a [IMP] purchase: update vendor bills copy
closes odoo/documentation#9549

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-12 22:43:47 +00:00
Tom Aarab (toaa) 5d87049d92 [IMP] Localization: Kenya
Updating and expanding the Kenyan localization.

taskid-3794719

closes odoo/documentation#9573

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-12 15:59:54 +00:00
Audrey (auva) d39beb75ae [FIX] voip: broken contact link
Changed https://www.axivox.com/contact into https://www.axivox.com/en/contact
as it didn't exist (anymore).

closes odoo/documentation#9762

X-original-commit: f9ab7b716b
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-11 14:39:50 +00:00
Felicious 6fe36eacc4 [IMP] inventory: fix landed costs note
closes odoo/documentation#9750

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-11 14:39:48 +00:00
guillaume gallant (guga) 3320f52cdd [FIX] point_of_sale: replace receipt image
task-3834714

closes odoo/documentation#9703

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-11 12:41:20 +00:00
Loredana Perazzo d9e7d86532 [IMP] pos: remove Epson TM-20 from list of compatible
task-3925551

closes odoo/documentation#9656

X-original-commit: 2e47b6a600
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-06-11 09:14:30 +00:00
Lara Martini (larm) 9feca1b4e4 [ADD] Referrals: new rewards doc
closes odoo/documentation#9615

closes odoo/documentation#9621

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-10 19:25:47 +00:00
Lara Martini (larm) d42810f05d [ADD] Recruitment: new applicant doc
closes odoo/documentation#9662

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-10 18:05:46 +00:00
Nguyen Minh Tran Manh Cuong d77c24d556 [FIX] tutorials/server_framework_101: position of form's notebook element
The notebook element should be nested in the sheet element.

closes odoo/documentation#9744

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-06-10 10:06:02 +00:00
Serge Bayet (seba) 6366c20ffa [ADD] administration: neutralized databases doc
This commit updates the documentation for neutralized databases to
include information about how search engine indexing is prevented for
these databases.

task-3895772

closes odoo/documentation#9708

X-original-commit: c770eb5618
Signed-off-by: Serge Bayet (seba) <seba@odoo.com>
2024-06-10 08:38:39 +00:00
Odoo Translation Bot 43426fa893 [I18N] Update translation terms from Transifex 2024-06-09 00:41:20 +02:00
Sam Lieber (sali) 3c9ea881a9 [ADD] accounting/l10n_us: usa accounting
closes odoo/documentation#9206

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
Co-authored-by: StraubCreative <zst@odoo.com>
Co-authored-by: tiku-odoo <tiku@odoo.com>
Co-authored-by: larm-odoo <larm@odoo.com>
Co-authored-by: samueljlieber <sali@odoo.com>
2024-06-08 02:20:13 +00:00
Felicious 928e3bb43e [MOV] inventory: shipping labels
closes odoo/documentation#9620

X-original-commit: 48d4fb5269
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-06-07 22:41:48 +00:00
jero-odoo 57212a6798 [IMP] email faqs: email limit
closes odoo/documentation#9672

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-06-07 21:14:38 +00:00
Lara Martini (larm) cd32574f88 [ADD] Recruitment: New refuse applicants doc
closes odoo/documentation#9663

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-07 17:08:41 +00:00
jero-odoo f6994a1047 [ADD] CRM: Forecast report
closes odoo/documentation#9582

Signed-off-by: Jessica Rogers (jero) <jero@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-06-07 14:54:43 +00:00
Lara Martini (larm) 55d3d59a64 [ADD] Appraisals: new reporting doc
closes odoo/documentation#9619

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-06 18:44:22 +00:00
Parish Bracha 6c74ac42f9 [IMP] sales: add discounts section to pricing doc
closes odoo/documentation#9597

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-06-06 18:44:21 +00:00
Parish Bracha 96f3a3e846 [IMP] crm: add equation explanation in leads doc
closes odoo/documentation#9631

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-06-06 17:28:51 +00:00
Lara Martini (larm) 148549b3d0 [ADD] Referrals: new rewards doc
closes odoo/documentation#9615

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-06-06 15:53:25 +00:00
John Holton (hojo) 3b1f9f6df2 [ADD] Quality: Failure locations
closes odoo/documentation#9585

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-06 14:01:41 +00:00
Enmanuel Otero Montano 83db1bdd8d [FIX] howtos/javascript_view: fix typo
A typo was found. The word "customeKanbanView" is misspelled and should be "customKanbanView", which is the constant exported correctly in the code. Therefore, the corrected line would be:

closes odoo/documentation#9661

Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2024-06-06 12:24:59 +00:00
Sam Lieber (sali) 2341f42d4a [ADD] marketing automation: double opt-in template
closes odoo/documentation#9513

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-06-05 22:39:59 +00:00
Felicious fe3281523c [IMP] inventory: carrier label and export doc
closes odoo/documentation#9588

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Jess Rogers <104637850+jero-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-06-05 01:51:22 +00:00
KC (ksc) 011ef11978 [MOV] surveys: rename time_random to questions
closes odoo/documentation#9525

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-04 21:52:55 +00:00
KC (ksc) 184dd5f93f [IMP] events: full rewrite of essentials
closes odoo/documentation#8779

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-04 21:52:54 +00:00
jero-odoo 5f566009c7 [IMP] essentials: activities updates
closes odoo/documentation#9526

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-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-06-04 16:42:19 +00:00
guillaume gallant (guga) 4983adb63f [ADD] Field service: adding itinerary planning page
Added a new page to plan itinerary maps

taskid-3959000

closes odoo/documentation#9540

Signed-off-by: Guillaume Gallant (guga) <guga@odoo.com>
2024-06-04 12:37:19 +00:00
KC (ksc) a99c1cd7e1 [FIX] crm: typo in gamification doc
closes odoo/documentation#9614

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-06-03 21:00:51 +00:00
Naman Shah 90fe2b31b1 [ADD] accounting/l10n: add section in GSTR-1 report (India)
In this commit added the flow of generate spreadsheet view of GSTR-1 report.

task-3884120

closes odoo/documentation#9453

Signed-off-by: Naman Shah (nash) <nash@odoo.com>
2024-06-03 12:45:50 +00:00
Odoo Translation Bot 69b145716c [I18N] Update translation terms from Transifex 2024-06-02 00:41:38 +02:00
KC (ksc) 4d21807379 [IMP] events: full rewrite of sell tickets
closes odoo/documentation#8928

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-05-31 21:34:47 +00:00
Alice Gaudon 15c6bb8b0e [IMP] tutorials: add example code for LazyComponent
js framework/Build a Dashboard/part 8 (LazyComponent)

There is no explicit instructions on how to use `LazyComponent`.

- add an example code snippet for minimal use of `LazyComponent`
- add the `.js` extension to the file you're supposed to create to make it a bit more intuitive
- fix `actions` registry name (missing an s)
- reword instructions in a more straightforward way

closes odoo/documentation#9521

Signed-off-by: Florent Dardenne (dafl) <dafl@odoo.com>
2024-05-31 17:12:23 +00:00
Lara Martini (larm) 9a0e87e861 [IMP] Payroll: add necessary contract modules
closes odoo/documentation#9472

X-original-commit: 27eaaf860b
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-31 17:12:19 +00:00
tiku-odoo 0745c3f180 [ADD] essentials: contacts
closes odoo/documentation#9558

X-original-commit: 3d5841894d
Signed-off-by: Samuel Lieber (sali) <sali@odoo.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>
2024-05-31 14:37:48 +00:00
Tiffany Chang (tic) f1d8cb8f16 [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#9570

X-original-commit: bd40de3
Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
2024-05-31 12:46:59 +00:00
Lara Martini (larm) aef490c600 [ADD] Attendances: moving check in section to new doc
closes odoo/documentation#9434

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-30 21:48:59 +00:00
jero-odoo ab659db849 [ADD] Purchase: procurement expenses report
closes odoo/documentation#9443

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
2024-05-30 19:57:10 +00:00
jero-odoo f46dda5e61 [IMP] Purchase: vendor costs report 17.0
closes odoo/documentation#9547

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-30 16:21:32 +00:00
Xavier-Do f1bd4ec134 [IMP] adapt documentation for new install script
closes odoo/documentation#9544

X-original-commit: 109c82776a
Related: odoo/odoo#167350
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
2024-05-30 16:21:30 +00:00
Felicious 05cd6af1ed [ADD] inventory: print delivery slip
closes odoo/documentation#9459

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: brse-odoo <brse@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-05-29 23:44:29 +00:00
Lara Martini (larm) cb644b0834 [ADD] Frontdesk: moving visitors section to new doc
closes odoo/documentation#9454

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-29 21:52:54 +00:00
Felicious 6bfa0802c7 [ADD] inventory: locations dashboard
closes odoo/documentation#9458

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-05-29 19:28:02 +00:00
jero-odoo e59188d85b [REM] crm: generate leads
closes odoo/documentation#9510

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-28 19:46:24 +00:00
KC (ksc) fb2f1d5f8b [ADD] events: event templates doc
closes odoo/documentation#9076

Signed-off-by: Kevin Scannell (ksc) <ksc@odoo.com>
2024-05-28 19:46:20 +00:00
Yaroslav Soroko (yaso) ed15f46531 [IMP] point_of_sale: Setup all Ingenico terminals
Currently we only tell how to setup Ingenico Lane/5000 terminal.
Actually, Lane/5000 and Move/5000 can be set up in almost the same way,
only the button to enter settings is different.

This PR adds a more generic configutation guide applicable  to all the
Ingenico Lane/Desk/Move terminals

Also, it replaces erroneous Worldline mention in the top by Ingenico

task-3879038

closes odoo/documentation#9495

X-original-commit: 23a1c496bf
Signed-off-by: Yaroslav Soroko (yaso) <yaso@odoo.com>
2024-05-28 12:31:24 +00:00
Donatienne (dopi) da6d3e6740 [IMP] website: multiple website
taskid- 3716945

closes odoo/documentation#9370

Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
2024-05-28 10:35:17 +00:00
Felicious fade821930 [IMP] inventory: sendcloud shipping info
closes odoo/documentation#9487

X-original-commit: 6305211a1e
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-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-05-27 00:42:41 +00:00
Odoo Translation Bot b94d534bae [I18N] Update translation terms from Transifex 2024-05-26 00:41:22 +02:00
Lara Martini (larm) 714b75ce3b [ADD] Employees: new departments doc
closes odoo/documentation#9442

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-24 19:13:00 +00:00
Lara Martini (larm) 59ba096ee2 [ADD] Time Off: Moving TO request to new doc
closes odoo/documentation#9431

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-24 19:12:59 +00:00
Lara Martini (larm) 4e929b4ebc [ADD] referrals: moving share jobs section to new doc
closes odoo/documentation#9425

X-original-commit: 7ec544281b
Signed-off-by: Lara Martini (larm) <larm@odoo.com>
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-24 19:12:58 +00:00
jero-odoo 905914c939 [ADD] crm: email and manual leads
closes odoo/documentation#9345

Signed-off-by: Jessica Rogers (jero) <jero@odoo.com>
Co-authored-by: brse-odoo <brse@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-05-24 19:12:57 +00:00
Jonathan 801a165df4 [IMP] inventory-mrp: rename the category into Supply Chain
closes odoo/documentation#9464

X-original-commit: 9f279170a5
Signed-off-by: Jonathan Castillo (jcs) <jcs@odoo.com>
2024-05-24 17:40:01 +00:00
Donatienne (dopi) 693a48f150 [IMP] website: google search console
taskid-3932743

closes odoo/documentation#9399

X-original-commit: abf62125ea
Signed-off-by: Audrey Vandromme (auva) <auva@odoo.com>
Signed-off-by: Donatienne Pirlot (dopi) <dopi@odoo.com>
2024-05-24 12:49:04 +00:00
jero-odoo 5c781afe88 [MOV] helpdesk: move getting started, reorg toctree
closes odoo/documentation#9440

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-23 16:38:24 +00:00
Ray Carnes eca1b7ffd3 [IMP] eCommerce: fix digital file location on portal
Corrected the part of the Customer Portal where digital products can be found after purchase.

closes odoo/documentation#9437

Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
2024-05-23 06:09:53 +00:00
Felicious de7fd89137 [ADD] inventory: aging report
closes odoo/documentation#9433

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Jess Rogers <104637850+jero-odoo@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-05-23 06:09:52 +00:00
Lara Martini (larm) 9fb69e4eaf [ADD] Appraisals: Moving goals to new doc
closes odoo/documentation#9429

Signed-off-by: Lara Martini (larm) <larm@odoo.com>
2024-05-23 04:39:01 +00:00
Felicious 6920015971 [ADD] inventory: moves history report
closes odoo/documentation#9343

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: brse-odoo <brse@odoo.com>
Co-authored-by: Zachary Straub <zst@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-20 16:06:22 +00:00
Odoo Translation Bot 1a405b889a [I18N] Update translation terms from Transifex 2024-05-19 00:41:20 +02:00
Felicious 6738b2cbea [IMP] mrp: assign lot/serial number to manuf products
closes odoo/documentation#9253

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com>
2024-05-17 20:00:58 +00:00
jero-odoo 430f7e2307 [IMP] CRM: lead mining 17
closes odoo/documentation#9315

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>
Co-authored-by: Zachary Straub <zst@odoo.com>
2024-05-17 20:00:58 +00:00
John Holton (hojo) 62b02031fa [ADD] Manufacturing: Dropship subcontracting lead times
closes odoo/documentation#9297

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-17 20:00:57 +00:00
John Holton (hojo) 1929185270 [ADD] Manufacturing: Resupply subcontracting lead times
closes odoo/documentation#9278

Signed-off-by: John Holton (hojo) <hojo@odoo.com>
2024-05-17 20:00:56 +00:00
Valentino 20282cdb4c [IMP] accounting/l10n_br: electronic invoicing & tax computation flow
With the addition of l10n_br_{avatax,edi,edi_sale}_services to the previous modules, now electronic invoices and tax computation for services can be created from Odoo through Avalara.

PR that includes these features: https://github.com/odoo/enterprise/pull/57868

This PR includes the necessary information to use these new modules - configuration and workflows.

closes odoo/documentation#8784

Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-17 18:01:53 +00:00
Felicious 4d211ed914 [IMP] mrp: overhaul bom basics 17.0
closes odoo/documentation#9239

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: hojo-odoo <123424465+hojo-odoo@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-05-17 16:26:41 +00:00
Sam Lieber (sali) a7ef06c1e5 [FIX] extensions: icon_role fa icons
closes odoo/documentation#9380

X-original-commit: d71c19b7be
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
2024-05-17 14:19:54 +00:00
1020 changed files with 746343 additions and 322077 deletions
@@ -21,7 +21,7 @@ turned into a testing environment.
Deactivated features
====================
Here is a non-exhaustive list of the deactivated parameters:
Here is a non-exhaustive list of the deactivated features:
- all planned actions (e.g., automatic invoicing of subscriptions, mass mailing, etc.)
- outgoing emails
@@ -29,6 +29,7 @@ Here is a non-exhaustive list of the deactivated parameters:
- payment providers
- delivery methods
- :abbr:`IAP (In-App Purchase)` tokens
- website visibility (prevent search engines from indexing your site)
.. note::
**A red banner at the top of the screen is displayed on the neutralized database so that it can
+9 -5
View File
@@ -277,18 +277,22 @@ Dependencies
.. tab:: Debian/Ubuntu
For Debian-based systems, the packages are listed in the `debian/control
<{GITHUB_PATH}/debian/control>`_ file of the Odoo sources.
On Debian/Ubuntu, the following commands should install the required packages:
.. code-block:: console
$ cd /CommunityPath
$ sed -n -e '/^Depends:/,/^Pre/ s/ python3-\(.*\),/python3-\1/p' debian/control | sudo xargs apt-get install -y
$ cd odoo #CommunityPath
$ sudo ./setup/debinstall.sh
The `setup/debinstall.sh` script will parse the `debian/control
<{GITHUB_PATH}/debian/control>`_ file and install the found packages.
.. tab:: Install with pip
.. warning::
Using pip may lead to security issues and broken dependencies; only do this if you
know what you are doing.
As some of the Python packages need a compilation step, they require system libraries to
be installed.
@@ -50,7 +50,7 @@ This matrix shows the support status of every version.
- November 2023
- October 2026 (planned)
* - Odoo saas~16.4
- |green|
- |red|
- N/A
- N/A
- August 2023
-3
View File
@@ -272,9 +272,6 @@ Upgrading the production database
Once the :ref:`tests <upgrade/test_your_db>` are completed and you are confident that the upgraded
database can be used as your main database without any issues, it is time to plan the go-live day.
It can be planned in coordination with Odoo's upgrade support analysts by `submitting a ticket for
an issue related to my future upgrade (I am testing an upgrade)
<https://odoo.com/help?stage=migration>`_.
Your production database will be unavailable during its upgrade. Therefore, we recommend planning
the upgrade at a time when the use of the database is minimal.
+1
View File
@@ -7,5 +7,6 @@ Odoo essentials
essentials/activities
essentials/reporting
essentials/search
essentials/contacts
essentials/export_import_data
essentials/in_app_purchase
+40 -44
View File
@@ -2,20 +2,22 @@
Activities
==========
.. |clock| replace:: :icon:`fa-clock-o` :guilabel:`(clock)` icon
*Activities* are follow-up tasks tied to a record in an Odoo database.
.. _activities/important:
The icon used to display activities varies depending on the :ref:`activity type <activities/types>`:
The icon used to display activities varies, depending on the :ref:`activity type
<activities/types>`:
- :guilabel:`🕘 (clock)`: the default icon, which appears if nothing is scheduled.
- :guilabel:`📞 (phone)`: this icon appears if a phone call is scheduled.
- :guilabel:`✉️ (envelope)`: this icon appears if an email is scheduled.
- :guilabel:`✔️ (checkmark)`: this icon appears if a to-do is scheduled.
- :guilabel:`(group of people)`: this icon appears if a meeting is scheduled.
- :guilabel:`(arrow pointing up above a line)`: this icon appears if a document is scheduled to be
uploaded.
- :guilabel:`(pencil in a box)`: this icon appears if a signature request is scheduled.
- :icon:`fa-clock-o` :guilabel:`(clock)` icon: the default activities icon.
- :icon:`fa-phone` :guilabel:`(phone)` icon: a phone call is scheduled.
- :icon:`fa-envelope` :guilabel:`(envelope)` icon: an email is scheduled.
- :icon:`fa-check` :guilabel:`(check)` icon: a "to-do" is scheduled.
- :icon:`fa-users` :guilabel:`(people)` icon: a meeting is scheduled.
- :icon:`fa-upload` :guilabel:`(upload)` icon: a document is scheduled to be uploaded.
- :icon:`fa-pencil-square-o` :guilabel:`(request signature)` icon: a signature request is scheduled.
Schedule activities
===================
@@ -44,13 +46,9 @@ Schedule Activity form <activities/form>`.
Kanban view
-----------
Another way that activities are created is from the Kanban view in an application.
Activities can also be created from the :icon:`oi-view-kanban` :guilabel:`(Kanban)` view.
.. image:: activities/kanban.png
:align: center
:alt: The Kanban icon in the top menu, highlighted.
To do so, click on the :guilabel:`🕘 (clock)` icon located at the bottom of an individual record.
To do so, click on the |clock| located at the bottom of an individual record.
Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Schedule Activity form
<activities/form>`.
@@ -60,28 +58,26 @@ Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Sch
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
.. note::
If a record already has a scheduled activity, the :guilabel:`🕘 (clock)` icon is replaced by the
icon that represents the existing scheduled activity. Click on the activity type's icon to
schedule another activity.
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
.. _activities/list:
List view
---------
Activities can also be created from a list view.
Activities can also be created from a :icon:`oi-view-list` :guilabel:`(list)` view.
If the :guilabel:`Activities` column is hidden, reveal it using the :guilabel:`(additional options
toggle)` icon in the far-right of the top row, represented by two horizontal lines with two dots.
If the :guilabel:`Activities` column is hidden, reveal it using the :icon:`oi-settings-adjust`
:guilabel:`(settings adjust)` icon in the far-right of the top row.
Then, click on the :guilabel:`🕘 (clock)` icon for the record the activity is being added to, then
click :guilabel:`+ Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form
<activities/form>` that appears.
Then, click on the |clock| for the record the activity is being added to, and click :guilabel:`+
Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form <activities/form>` that
appears.
.. note::
If a record already has a scheduled activity, the :guilabel:`🕘 (clock)` icon is replaced by the
icon that represents the existing scheduled activity. Click on the activity type's icon to
schedule another activity.
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
.. image:: activities/schedule-list-activity.png
:align: center
@@ -92,10 +88,10 @@ click :guilabel:`+ Schedule an activity`. Proceed to :ref:`fill out the Schedule
Activity view
-------------
Most applications in Odoo have an *Activity* view available. If available, a :guilabel:`🕘 (clock)`
activity icon is visible in the top-right of the main menu bar.
Most applications in Odoo have an *Activity* view available. If available, a |clock| is visible in
the top-right corner of the main menu bar, amongst the other view option icons.
To open the activity view, click the :guilabel:`🕘 (clock)` activity icon.
To open the activity view, click the |clock|.
.. image:: activities/activities.png
:align: center
@@ -114,12 +110,12 @@ If multiple activity types are scheduled for a record, a number appears in the b
total number of scheduled activities.
.. note::
Activity colors, and their relation to an activity's due date, is consistent throughout Odoo,
Activity colors, and their relation to an activity's due date, are consistent throughout Odoo,
regardless of the activity type, or the view.
To schedule an activity for a record, hover over the corresponding field, and a :guilabel:` (plus
sign)` appears. Click the :guilabel:` (plus sign)`, and then :ref:`fill out the Schedule Activity
form <activities/form>`.
To schedule an activity for a record, hover over the corresponding field. Click the :icon:`fa-plus`
:guilabel:`(plus)` icon that appears, and then :ref:`fill out the Schedule Activity form
<activities/form>`.
.. image:: activities/activity-view.png
:align: center
@@ -140,12 +136,6 @@ Enter the following information on the form:
- :guilabel:`Activity Type`: select the type of activity from the drop-down menu. The default
options are: :guilabel:`Email`, :guilabel:`Call`, :guilabel:`Meeting`, or :guilabel:`To-Do`.
Depending on what other applications are installed, additional options may be available.
.. note::
Individual applications have a list of dedicated :ref:`activity types <activities/types>`. For
example, installing the *Sales* application makes :guilabel:`Order Upsell` available, while
installing the *Sign* application makes :guilabel:`Request Signature` available.
- :guilabel:`Summary`: enter a short title for the activity, such as `Discuss Proposal`.
- :guilabel:`Due Date`: using the calendar popover, select the activity's deadline.
- :guilabel:`Assigned to`: by default, the current user populates this field. To assign a different
@@ -187,11 +177,11 @@ buttons:
All scheduled activities
========================
To view a consolidated list of activities, organized by application, click the :guilabel:`🕘
(clock)` icon in the header menu, located in the top-right.
To view a consolidated list of activities, organized by application, click the |clock| in the header
menu, located in the top-right corner.
If any activities are scheduled, the number of activities appear in a red bubble on the
:guilabel:`🕘 (clock)` icon.
|clock|.
All activities for each application are further divided into subsections, indicating where in the
application the activity is to be completed. Each sub-section lists the number of scheduled
@@ -252,6 +242,11 @@ To view the currently configured types of activities in the database, navigate t
Doing so reveals the :guilabel:`Activity Types` page, where the existing activity types are found.
.. tip::
Individual applications have a list of *Activity Types* dedicated to that application. For
example, to view and edit the activities available for the *CRM* application, go to
:menuselection:`CRM app --> Configuration --> Activity Types`.
.. image:: activities/activity-list.png
:align: center
:alt: The list of activity types already configured and available.
@@ -264,7 +259,7 @@ activity type form loads.
Make any desired changes to the activity type form. The form automatically saves, but it can be
saved manually at any time by clicking the :guilabel:`Save Manually` option, represented by a
:guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
:icon:`fa-cloud-upload` :guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
Create new activity types
-------------------------
@@ -347,3 +342,4 @@ It is possible to have another activity either suggested or triggered. To do so,
.. seealso::
- :doc:`../productivity/discuss`
- :doc:`../productivity/discuss/team_communication`
- :doc:`../sales/crm/optimize/utilize_activities`
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

@@ -0,0 +1,263 @@
:show-content:
========
Contacts
========
The *Contacts* application comes installed on all Odoo databases. Contacts are created for customers
the company does business with through Odoo. A contact is a repository of vital business
information, facilitating communication and business transactions.
Contact form
============
To create a new contact, navigate to the :menuselection:`Contacts app`, and click
:guilabel:`Create`. A new form appears where various contact information can be added.
Contact type
------------
Odoo allows for both :guilabel:`Individual` and :guilabel:`Company` contacts. Select either
:guilabel:`Individual` or :guilabel:`Company`, depending on the type of contact that is being added.
Name
----
First, fill in the name of the :guilabel:`Individual` or :guilabel:`Company`. This is how the name
appears throughout the database. This field is **mandatory**.
.. tip::
:guilabel:`Individual` contacts can have a :guilabel:`Company` contact linked to it. After
selecting :guilabel:`Individual`, a new :guilabel:`Company Name...` field appears below the
first name field.
Address
-------
Next, enter the :guilabel:`Address` of the :guilabel:`Company` or :guilabel:`Individual`.
.. tip::
If the :guilabel:`Individual` option is chosen, then the *type of address* can be chosen from a
drop-down menu. Options for this drop-down menu include: :guilabel:`Contact`, :guilabel:`Invoice
Address`, :guilabel:`Delivery Address`, :guilabel:`Other Address`, and :guilabel:`Private
Address`.
Additional fields
-----------------
Additional details are included on the initial form. The following fields are available:
- :guilabel:`VAT`: Value Added Tax number.
- :guilabel:`Citizen Identification`: citizen or government identification number (only available
on :guilabel:`Individual`).
- :guilabel:`Job Position`: list the job position of the :guilabel:`Individual` (only available on
:guilabel:`Individual`).
- :guilabel:`Phone`: list phone number (with country code). Make a call, send an SMS, or WhatsApp
message by hovering over the field on the saved form, and clicking the desired option.
- :guilabel:`Mobile`: list mobile phone number (with country code). Make a call, send an SMS, or
WhatsApp message by hovering over the field on the saved form, and clicking on the desired option.
- :guilabel:`Email`: enter the email address with the domain.
- :guilabel:`Website`: enter the full website address, starting with `http` or `https`.
- :guilabel:`Title`: select :guilabel:`Doctor`, :guilabel:`Madam`, :guilabel:`Miss`,
:guilabel:`Mister`, :guilabel:`Professor`, or create a new one directly from this field.
- :guilabel:`Tags`: enter preconfigured tags by typing them in the field, or clicking the drop-down
menu, and selecting one. To create a new one, type the new tag in the field, and click
:guilabel:`Create` from the resulting drop-down menu.
Contacts & Addresses tab
------------------------
At the bottom of the contact form are several tabs. On the :guilabel:`Contacts & Addresses` tab,
contacts can be added that are associated with a :guilabel:`Company` and related addresses. For
example, a specific contact person for the company can be listed here.
Multiple addresses can be added on both :guilabel:`Individual` and :guilabel:`Company` contacts. To
do so, click :guilabel:`Add` in the :guilabel:`Contacts & Addresses` tab. Doing so reveals a
:guilabel:`Create Contact` pop-up form, in which additional addresses can be configured.
.. image:: contacts/contact-form-add-address.png
:align: center
:alt: Add a contact/address to the contact form.
On the :guilabel:`Create Contact` pop-up form, start by clicking the default :guilabel:`Other
Address` field at the top to reveal a drop-down menu of address-related options.
Select any of the following options:
- :guilabel:`Contact`: adds another contact to the existing contact form.
- :guilabel:`Invoice Address`: adds a specific invoice address to the existing contact form.
- :guilabel:`Delivery Address`: adds a specific delivery address to the existing contact form.
- :guilabel:`Other Address`: adds an alternate address to the existing contact form.
- :guilabel:`Private Address`: adds a private address to the existing contact form.
.. image:: contacts/create-contact-window.png
:align: center
:alt: Create a new contact/address on a contact form.
Once an option is selected, enter the corresponding contact information that should be used for the
specified address type.
Add the :guilabel:`Contact Name`, :guilabel:`Address`, :guilabel:`Email`, along with the
:guilabel:`Phone` and/or :guilabel:`Mobile` numbers below.
Set the :guilabel:`Job Position`, which appears if the :guilabel:`Contact` address type has been
selected. This is similar to the :guilabel:`Individual` contact.
To add a note, click on the text field next to :guilabel:`Notes`, and write anything that is
applicable to the customer or contact.
Then, click :guilabel:`Save & Close` to save the address, and close the :guilabel:`Create Contact`
window. Or, click :guilabel:`Save & New` to save the address, and immediately input another one.
Sales & Purchase tab
--------------------
Next, is the :guilabel:`Sales & Purchases` tab, which only appears when the *Sales*, *Purchase*,
**or** *Point of Sale* applications are installed.
The :guilabel:`Fiscal Position` can be set on the :guilabel:`Sales & Purchases` tab. Select a
:guilabel:`Fiscal Position` from the drop-down menu.
Sales section
~~~~~~~~~~~~~
Under the :guilabel:`Sales` heading, a specific :guilabel:`Salesperson` can be assigned to a
contact. To do that, click the :guilabel:`Salesperson` drop-down field, and select one. Create a new
:guilabel:`Salesperson` by typing the user's name, and making the appropriate selection.
Certain :guilabel:`Payment Terms`, or a certain :guilabel:`Pricelist`, can also be set, if needed.
Click the drop-down menu next to :guilabel:`Payment Terms`, and change it to one of the preselected
:guilabel:`Payment Terms`, or :guilabel:`Create` a new one. Select the :guilabel:`Pricelist`
drop-down menu to choose the appropriate :guilabel:`Pricelist`.
Click into the :guilabel:`Delivery Method` field to select an option from the drop-down menu.
Point Of Sale section
~~~~~~~~~~~~~~~~~~~~~
Under the :guilabel:`Point Of Sale` heading, enter a :guilabel:`Barcode` that can be used to
identify the contact. Use the :guilabel:`Loyalty Points` field to track points the user won as part
of a *Loyalty Program*.
Purchase section
~~~~~~~~~~~~~~~~
Specify :guilabel:`Payment Terms`, :guilabel:`1099 Box` information, and a preferred
:guilabel:`Payment Method` here. A :guilabel:`Receipt Reminder` can be set here, as well.
Misc section
~~~~~~~~~~~~
Under the :guilabel:`Misc.` heading, use :guilabel:`Reference` field to add any additional
information for this contact. If this contact should only be accessible for one company in a
multi-company database, select it from the :guilabel:`Company` field drop-down list. Use the
:guilabel:`Website` drop-down menu to restrict the publishing of this contact to one website (if
working on a database with multiple websites). Select one or more :guilabel:`Website Tags` to assist
in filtering published customers on the `/customers` website page. Select an :guilabel:`Industry`
for this contact from the drop-down menu. Use the :guilabel:`SLA Policies` field to assign a
*Helpdesk* SLA policy to this contact.
Accounting tab
--------------
The :guilabel:`Accounting` tab appears when the *Accounting* application is installed. Here, a user
can add any related :guilabel:`Bank Accounts`, or set default :guilabel:`Accounting entries`.
Under the :guilabel:`Miscellaneous` heading, use the :guilabel:`LEI` field to enter a Legal Entity
Identifier, if necessary.
Internal Notes tab
------------------
Following the :guilabel:`Accounting` tab is the :guilabel:`Internal Notes` tab, where notes can be
left on this contact form, just like on the contact form noted above.
Partner Assignment tab
----------------------
Next is the :guilabel:`Partner Assignment` tab, which by default, includes a :guilabel:`Geolocation`
section, and other partner options, including :guilabel:`Partner Activation` and :guilabel:`Partner
Review` configurations. These are **only** present when the *Resellers* module is installed.
.. seealso::
Follow the :doc:`Resellers documentation <../sales/crm/track_leads/resellers>` for more
information on publishing partners on the website.
Membership tab
--------------
Finally, there is the :guilabel:`Membership` tab on contact forms, which can help users manage any
memberships that are being offered to this specific contact. It should be noted that this tab
**only** appears when the *Members* application is installed.
Activate membership
~~~~~~~~~~~~~~~~~~~
To activate a contact's membership, click :guilabel:`Buy Membership` in the :guilabel:`Membership`
tab of a contact form. On the pop-up window that appears, select a :guilabel:`Membership` from the
drop-down menu. Then, configure a :guilabel:`Member Price`. Click :guilabel:`Invoice Membership`
when both fields are filled in.
Alternatively, to offer a free membership, tick the :guilabel:`Free Member` checkbox, in the
:guilabel:`Membership` tab of a contact form.
.. seealso::
Follow the :doc:`Members documentation <../sales/members>` for more information on publishing
members on the website.
Smart buttons
=============
At the top of the contact form, there are some additional options available, known as *smart
buttons*.
Here, Odoo displays a variety of records, related to this contact, that were created on other apps.
Odoo integrates information from every single app, so there are many smart buttons.
.. example::
For example, there is an :guilabel:`Opportunities` smart button, where all the opportunities
related to this customer from the *CRM* app are accessible.
.. tip::
If the corresponding applications are installed, their related smart buttons appear
automatically on a contact form.
A user can see any :guilabel:`Meetings`, :guilabel:`Sales`, :guilabel:`POS Orders`,
:guilabel:`Subscriptions`, project :guilabel:`Tasks`, and the :guilabel:`More` smart button reveals
additional options, via a drop-down menu. A user can even quickly access :guilabel:`Purchases`,
:guilabel:`Helpdesk` tasks, :guilabel:`On-time Rate` for deliveries, :guilabel:`Invoiced`
information, :guilabel:`Vendor Bills`, and the :guilabel:`Partner Ledger` connected to this contact.
Deliveries, documents, loyalty cards, and direct debits are *also* linked to smart buttons, like
this, should there be any outstanding/on-file for this contact.
If the contact is a partner, the user can visit their partner page on the Odoo-built website by
clicking the :guilabel:`Go to Website` smart button.
Archive contacts
----------------
If a user decides they no longer want to have this contact active, the record can be archived. To do
that, go to the :icon:`fa-cog` :guilabel:`Action` menu at the top of the contact form, and click
:guilabel:`Archive`.
Then, click :guilabel:`OK` from the resulting :guilabel:`Confirmation` pop-up window.
With this contact successfully archived, as indicated by a banner at the top, they do not show up
in the main contacts page, but they can still be searched for with the :guilabel:`Archived` filter.
.. tip::
A contact can be *unarchived*, if the user decides to work with them again. To do that, just
click the :icon:`fa-cog` :guilabel:`Action` menu again at the top of the archived contact form,
and click :guilabel:`Unarchive`. Upon doing so, the :guilabel:`Archived` banner is removed, and
the contact is restored.
.. seealso::
- :doc:`Add different addresses in CRM <../sales/sales/send_quotations/different_addresses>`
- `Odoo's eLearning Contacts tutorial
<https://www.odoo.com/slides/slide/contacts-2527?fullscreen=1>`_
.. toctree::
:titlesonly:
contacts/merge
Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,78 @@
==============
Merge contacts
==============
Odoo's *Contacts* application allows user's to merge duplicate contacts, without losing any
information in the process. This keeps the database organized, and prevents contacts from being
contacted by more than one salesperson.
.. _contacts/merge-duplicate:
Merge duplicate contacts
========================
.. danger::
Merging is an irreversible action. Do **not** merge contacts unless absolutely certain they
should be combined.
Navigate to the :menuselection:`Contacts app`, and select the :icon:`oi-view-list`
:guilabel:`(list)` icon. Select two or more duplicate contacts from the list, and tick the checkbox
(on the far-left) for the contacts that should be merged. Then, click the :icon:`fa-cog`
:guilabel:`Actions` icon, and select :guilabel:`Merge` from the resulting drop-down menu.
.. image:: merge/merge-menu.png
:align: center
:alt: The merge contacts option in the Contacts application.
This opens the :guilabel:`Merge` pop-up window. From here, review the details of the contacts before
confirming they should be merged. If any contacts in the list should **not** be merged, click the
:icon:`fa-times` :guilabel:`(delete)` icon at the far right of the contact.
.. tip::
Click the individual contact to open the record for that contact, and view additional
information.
.. image:: merge/merge-window.png
:align: center
:alt: The merge pop-up window in the Contacts application.
Click the :guilabel:`Destination Contact` field, and select an option from the drop-down list. This
field defaults to the contact record that was created first in the system.
After confirming the information on the pop-up window, click :guilabel:`Merge Contacts`.
Deduplicate contacts
====================
After the merge is finished, a pop-up window appears confirming it is complete. This pop-up window
also contains a :guilabel:`Deduplicate the other Contacts` button. This feature searches for
duplicated records, based on selected criteria, and merges them automatically, or after manual
approval.
Click the :guilabel:`Deduplicate the other Contacts` button to open the :guilabel:`Deduplicate
Contacts` pop-up window.
Select one or more fields to be used in the search for duplicated records. Duplicated contacts can
be searched, based on the following criteria:
- :guilabel:`Email`
- :guilabel:`Name`
- :guilabel:`Is Company`
- :guilabel:`VAT`
- :guilabel:`Parent Company`
.. note::
If more than one field is selected, only records that have **all** fields in common are suggested
as duplicates.
If necessary, select criteria to be used to exclude potential duplicates from the search. Potential
duplicates can be excluded from the search, based on the following criteria:
- :guilabel:`A user associated to the contact`
- :guilabel:`Journal Items associated to the contact`
After confirming the search criteria, click either :guilabel:`Merge with Manual Check`,
:guilabel:`Merge Automatically`, or :guilabel:`Merge Automatically all process`.
If :guilabel:`Merge with Manual Check` is selected, complete the merge by following the :ref:`steps
above <contacts/merge-duplicate>`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

@@ -2,6 +2,9 @@
Export and import data
======================
.. |list| replace:: :icon:`oi-view-list` :guilabel:`(list)` icon
.. |actions| replace:: :icon:`fa-cog` :guilabel:`Actions`
In Odoo, it is sometimes necessary to export or import data for running reports, or for data
modification. This document covers the export and import of data into and out of Odoo.
@@ -20,9 +23,9 @@ can aid in reporting on activities, although, Odoo provides a precise and easy r
each available application.
With Odoo, the values can be exported from any field in any record. To do so, activate the list view
(:guilabel:`≣ (four horizontal lines)` icon), on the items that need to be exported, and then
select the records that should be exported. To select a record, tick the checkbox next to the
corresponding record. Finally, click on :guilabel:`⚙️ Action`, and then :guilabel:`Export`.
(|list|), on the items that need to be exported, then select the records that should be exported. To
select a record, tick the checkbox next to the corresponding record. Finally, click on |actions|,
then :guilabel:`Export`.
.. image:: export_import_data/list-view-export.png
:align: center
@@ -36,9 +39,10 @@ several options for the data to export:
:alt: Overview of options to consider when exporting data in Odoo..
#. With the :guilabel:`I want to update data (import-compatable export)` option ticked, the system
only shows the fields that can be imported. This is helpful in the case where the existing
records need to be updated. This works like a filter. Leaving the box unticked, gives many more
field options because it shows all the fields, not just the ones that can be imported.
only shows the fields that can be imported. This is helpful in the case where the :ref:`existing
records need to be updated <essentials/update-data>`. This works like a filter. Leaving the box
unticked, gives many more field options because it shows all the fields, not just the ones that
can be imported.
#. When exporting, there is the option to export in two formats: `.csv` and `.xls`. With `.csv`,
items are separated by a comma, while `.xls` holds information about all the worksheets in a
file, including both content and formatting.
@@ -70,7 +74,8 @@ Import data into Odoo
=====================
Importing data into Odoo is extremely helpful during implementation, or in times where data needs to
be updated in bulk. The following documentation covers how to import data into an Odoo database.
be :ref:`updated in bulk <essentials/update-data>`. The following documentation covers how to import
data into an Odoo database.
.. warning::
Imports are permanent and **cannot** be undone. However, it is possible to use filters (`created
@@ -158,6 +163,9 @@ Once the template is downloaded, proceed to follow these steps:
using the fields that should be imported. This way, if there is not a sample import template,
the names are accurate.
.. _essentials/external-id:
Import from another application
-------------------------------
@@ -166,7 +174,8 @@ from previous software to facilitate the transition to Odoo.
Setting an ID is not mandatory when importing, but it helps in many cases:
- Update imports: import the same file several times without creating duplicates.
- :ref:`Update imports <essentials/update-data>`: import the same file several times without
creating duplicates.
- :ref:`Import relation fields <export_import_data/relation-fields>`.
To recreate relationships between different records, the unique identifier from the original
@@ -176,10 +185,7 @@ When another record is imported that links to the first one, use **XXX/ID** (XXX
the original unique identifier. This record can also be found using its name.
.. warning::
It should be noted that there will be a conflict if two or more records have the same name.
The :guilabel:`External ID` (ID) can also be used to update the original import, if modified data
needs to be re-imported later, therefore, it is a good practice to specify it whenever possible.
It should be noted that conflicts occur if two (or more) records have the same *External ID*.
Field missing to map column
---------------------------
@@ -476,3 +482,43 @@ The two files produced are ready to be imported in Odoo without any modification
imported these two :abbr:`CSV (Comma-separated Values)` files, there are four contacts and three
companies (the first two contacts are linked to the first company). Keep in mind to first import
the companies, and then the people.
.. _essentials/update-data:
Update data in Odoo
===================
Existing data can be updated in bulk through a data import, as long as the :ref:`External ID
<essentials/external-id>` remains consistent.
Prepare data export
-------------------
To update data through an import, first navigate to the data to be updated, and select the |list| to
activate list view. On the far-left side of the list, tick the checkbox for any record to be
updated. Then, click |actions|, and select :icon:`fa-upload` :guilabel:`Export` from the drop-down
menu.
On the resulting :guilabel:`Export Data` pop-up window, tick the checkbox labeled, :guilabel:`I want
to update data (import-compatible export)`. This automatically includes the *External ID* in the
export. Additionally, it limits the :guilabel:`Fields to export` list to **only** include fields
that are able to be imported.
.. note::
The :guilabel:`External ID` field does **not** appear in the :guilabel:`Fields to export` list
unless it is manually added, but it is still included in the export. However, if the :guilabel:`I
want to update data (import-compatible export)` checkbox is ticked, it is included in the export.
Select the required fields to be included in the export using the :ref:`options <export-data>` on
the pop-up window, then click :guilabel:`Export`.
Import updated data
-------------------
After exporting, make any necessary changes to the data file. When the file is ready, it can be
:ref:`imported <import-data>` by following the same process as a normal data import.
.. danger::
When updating data, it is extremely important that the *External ID* remain consistent, as
this is how the system identifies a record. If an ID is altered, or removed, the system may add a
duplicate record, instead of updating the existing one.
@@ -181,6 +181,75 @@ It is possible to *customize groups* by using a field present on the model. To d
cluster, the next one that is added further divides the main group's categories, and so on.
Furthermore, filters and groups can be used together to refine the view even more.
.. _search/comparison:
Comparison
==========
Certain reporting dashboards include a :guilabel:`Comparison` section in the drop-down menus of
their :guilabel:`Search...` bars. This includes the :doc:`Overall Equipment Effectiveness
<../inventory_and_mrp/manufacturing/workflows/oee>` report for the *Manufacturing* app, and the
:doc:`Purchase <../inventory_and_mrp/purchase/advanced/analyze>` report for the *Purchase* app,
among others.
The options in the :icon:`fa-adjust` :guilabel:`Comparison` section are used to compare data from
two different time periods. There are two comparison options to choose from: :guilabel:`(Time
Filter): Previous Period` and :guilabel:`(Time Filter): Previous Year`.
.. important::
For some reports, the :guilabel:`Comparison` section **only** appears in the
:guilabel:`Search...` bar drop-down menu if one (or more) time periods have been selected in the
:guilabel:`Filters` column. This is because, if no time period is specified, there is nothing to
compare.
Additionally, some reports only allow use of the :guilabel:`Comparison` feature when the
:icon:`fa-pie-chart` :guilabel:`(pie chart)` graph type, or the :icon:`oi-view-pivot`
:guilabel:`(pivot)` view, is selected. A :guilabel:`Comparison` option can be selected even if
another view is enabled, but doing so does **not** change the way data is displayed on the
report.
.. image:: search/comparison-section.png
:align: center
:alt: The Search... bar for the production analysis report.
To view data using one of the two comparisons, begin by selecting a time period in the
:guilabel:`Filters` column of the :guilabel:`Search...` bar drop-down menu. Then, select either
:guilabel:`(Time Filter): Previous Period` or :guilabel:`(Time Filter): Previous Year` in the
:guilabel:`Comparison` section.
With one of the :guilabel:`Comparison` options enabled, the report compares the data for the
selected period, with the data for the same unit of time (month, quarter, year), one period or year
prior. The way the data is displayed depends on the selected view:
- The :icon:`fa-bar-chart` :guilabel:`(bar chart)` shows two bars, side-by-side, for each unit of
time for the selected time period. The left bar represents the selected time period, while the
right bar represents the previous time period.
- The :icon:`fa-line-chart` :guilabel:`(line chart)` is displayed with two lines, one representing
the selected time period, and the other representing the previous time period.
- The :icon:`fa-pie-chart` :guilabel:`(pie chart)` appears as a large circle with a smaller circle
inside. The larger circle represents the selected time period, while the smaller circle represents
the previous time period.
- The :icon:`oi-view-pivot` :guilabel:`(pivot table)` is displayed with each column split into two
smaller columns. The right column represents the selected time period, while the left column
represents the previous time period.
.. example::
In the :guilabel:`Production Analysis` report of the :menuselection:`Manufacturing` app, data for
the second quarter of 2024 is compared to data for the second quarter of 2023. :guilabel:`Q2` is
selected in the :guilabel:`End Date` filter section of the :guilabel:`Search...` bar drop-down
menu. In the :guilabel:`Comparison` section, :guilabel:`End Date: Previous Year` is selected.
The current year is 2024, so the larger circle shows data for the second quarter (Q2) of 2024.
The smaller circle shows data for the second quarter (Q2) of 2023, which is the same time period,
but one *year* prior.
If :guilabel:`End Date: Previous Period` is selected instead, the smaller circle shows data for
the first quarter (Q1) of 2024, which is the same time period, but one *period* prior.
.. image:: search/comparison.png
:align: center
:alt: The comparison view of the Production Analysis report.
.. _search/favorites:
Favorites
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

@@ -76,6 +76,8 @@ expense either when the transaction occurs (accrual basis) or when the payment i
.. seealso::
:doc:`Cash basis <accounting/taxes/cash_basis>`
.. _accounting/multi-company:
Multi-company
=============
@@ -32,7 +32,7 @@ valuation <inventory/avg_price/leaving_inventory>`.
.. seealso::
- :doc:`Using inventory valuation
<../../../inventory_and_mrp/inventory/warehouses_storage/inventory_valuation/using_inventory_valuation>`
- :ref:`Other inventory valuation methods <inventory/inventory_valuation_config/costing_methods>`
- :ref:`Other inventory valuation methods <inventory/warehouses_storage/costing_methods>`
Configuration
=============
@@ -263,7 +263,7 @@ value** increases based on the vendor price of the products that have entered th
account (called **stock input**) is credited and only reconciled once the vendor bill is received.
.. seealso::
- :ref:`Anglo-Saxon vs. Continental <inventory/inventory_valuation_config/accounting>`
- :ref:`Anglo-Saxon vs. Continental <inventory/warehouses_storage/accounting-types>`
The table below reflects journal entries and accounts. The *stock input* account stores the money
intended to pay vendors when the vendor bill has not yet been received. To balance accounts when
@@ -15,6 +15,8 @@ When browsing your chart of accounts, you can sort the accounts by :guilabel:`Co
.. image:: chart_of_accounts/chart-of-accounts-sort.png
:alt: Group the accounts by type in Odoo Accounting
.. _chart-of-account/create:
Configuration of an account
===========================
@@ -20,6 +20,8 @@ for use at a later date:
- `Odoo Tutorials: Bank Configuration
<https://www.odoo.com/slides/slide/bank-configuration-1880>`_
.. _payments/register:
Registering payment from an invoice or bill
===========================================
@@ -40,6 +40,8 @@ of your organisation as at a particular date.
.. image:: reporting/main_reports09.png
.. _accounting/reporting/balance-sheet:
Profit and Loss
---------------
@@ -49,6 +51,8 @@ report period.
.. image:: reporting/main_reports10.png
.. _accounting/reporting/executive-summary:
Executive Summary
-----------------
@@ -126,6 +130,8 @@ payment during a selected month and several months prior.
.. image:: reporting/main_reports07.png
.. _accounting/reporting/cash-flow-statement:
Cash Flow Statement
-------------------
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

+61 -157
View File
@@ -4,9 +4,9 @@
Expenses
========
Odoo **Expenses** streamlines the management of expenses. After an employee submits their expenses
in Odoo, the expenses are reviewed by management and accounting teams. Once approved, payments can
then be processed and disbursed back to the employee for reimbursement(s).
Odoo *Expenses* streamlines the management of expenses. After an employee submits their expenses in
Odoo, they are reviewed by management and accounting teams. Once approved, payments can then be
processed, and disbursed back to the employee for reimbursement.
.. seealso::
`Odoo Expenses: product page <https://www.odoo.com/app/expenses>`_
@@ -62,16 +62,16 @@ report the actual cost when submitting an expense report.
Here are some examples for when to set a specific :guilabel:`Cost` on a product vs. leaving the
:guilabel:`Cost` at `0.00`:
- **Meals**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal,
- **Meals**: set the :guilabel:`Cost` to `0.00`. When an employee logs an expense for a meal,
they enter the actual amount of the bill and will be reimbursed for that amount. An expense for
a meal costing $95.23 would equal a reimbursement for $95.23.
- **Mileage**: Set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
- **Mileage**: set the :guilabel:`Cost` to `0.30`. When an employee logs an expense for
"mileage", they enter the number of miles driven in the :guilabel:`Quantity` field, and are
reimbursed 0.30 per mile they entered. An expense for 100 miles would equal a reimbursement for
$30.00.
- **Monthly Parking**: Set the :guilabel:`Cost` to `75.00`. When an employee logs an expense for
- **Monthly Parking**: set the :guilabel:`Cost` to `75.00`. When an employee logs an expense for
"monthly parking", the reimbursement would be for $75.00.
- **Expenses**: Set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not
- **Expenses**: set the :guilabel:`Cost` to `0.00`. When an employee logs an expense that is not
a meal, mileage, or monthly parking, they use the generic :guilabel:`Expenses` product. An
expense for a laptop costing $350.00 would be logged as an :guilabel:`Expenses` product, and
the reimbursement would be for $350.00.
@@ -98,10 +98,10 @@ the default :guilabel:`My Expenses` view. This view can also be accessed from
First, click :guilabel:`New`, and then fill out the various fields on the form.
- :guilabel:`Description`: Enter a short description for the expense in the :guilabel:`Description`
- :guilabel:`Description`: enter a short description for the expense in the :guilabel:`Description`
field. This should be short and informative, such as `lunch with client` or `hotel for
conference`.
- :guilabel:`Category`: Select the expense category from the drop-down menu that most closely
- :guilabel:`Category`: select the expense category from the drop-down menu that most closely
corresponds to the expense. For example, an airplane ticket would be appropriate for an expense
:guilabel:`Category` named :guilabel:`Air Travel`.
- :guilabel:`Total`: Enter the total amount paid for the expense in one of two ways:
@@ -119,7 +119,7 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
cost *per mile*. Set the :guilabel:`Quantity` to the *number of miles* driven, and the total
is calculated.
- :guilabel:`Included Taxes`: If taxes were configured on the expense category, the tax percentage
- :guilabel:`Included Taxes`: if taxes were configured on the expense category, the tax percentage
and amount appear automatically after entering either the :guilabel:`Total` or the
:guilabel:`Quantity`.
@@ -127,20 +127,20 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
When a tax is configured on an expense category, the :guilabel:`Included Taxes` value will
update in real time as the :guilabel:`Total` or :guilabel:`Quantity` is updated.
- :guilabel:`Employee`: Using the drop-down menu, select the employee this expense is for.
- :guilabel:`Paid By`: Click the radio button to indicate who paid for the expense and should be
- :guilabel:`Employee`: using the drop-down menu, select the employee this expense is for.
- :guilabel:`Paid By`: click the radio button to indicate who paid for the expense and should be
reimbursed. If the employee paid for the expense (and should be reimbursed) select
:guilabel:`Employee (to reimburse)`. If the company paid directly instead (e.g. if the company
credit card was used to pay for the expense) select :guilabel:`Company`. Depending on the expense
category selected, this field may not appear.
- :guilabel:`Bill Reference`: If there is any reference text that should be included for the
- :guilabel:`Bill Reference`: if there is any reference text that should be included for the
expense, enter it in this field.
- :guilabel:`Expense Date`: Using the calendar module, enter the date the expense was incurred. Use
- :guilabel:`Expense Date`: using the calendar module, enter the date the expense was incurred. Use
the :guilabel:`< (left)` and :guilabel:`> (right)` arrows to navigate to the correct month, then
click on the specific day to enter the selection.
- :guilabel:`Account`: Select the expense account that this expense should be logged on from the
- :guilabel:`Account`: select the expense account that this expense should be logged on from the
drop-down menu.
- :guilabel:`Customer to Reinvoice`: If the expense is something that should be paid for by a
- :guilabel:`Customer to Reinvoice`: if the expense is something that should be paid for by a
customer, select the :abbr:`SO (Sales Order)` and customer that will be invoiced for this expense
from the drop-down menu. All sales orders in the drop-down menu list both the :abbr:`SO (Sales
Order)` as well as the company the sales order is written for, but after the expense is saved, the
@@ -152,14 +152,13 @@ First, click :guilabel:`New`, and then fill out the various fields on the form.
expenses tied to that meeting would indicate the sales order for the custom garden (which also
references the customer) as the :guilabel:`Customer to Reinvoice`.
- :guilabel:`Analytic Distribution`: Select the account(s) the expense should be written against
from the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both.
Multiple accounts can be listed for each category if needed. Adjust the percentage for each
analytic account by typing in the percentage value next to the account.
- :guilabel:`Company`: If multiple companies are set up, select the company this expense should be
filed for from the drop-down menu. The current company will automatically populate this field.
- :guilabel:`Notes...`: If any notes are needed in order to clarify the expense, enter them in the
notes field.
- :guilabel:`Analytic Distribution`: select the accounts the expense should be written against from
the drop-down menu for either :guilabel:`Projects`, :guilabel:`Departments`, or both. Multiple
accounts can be listed for each category, if needed. Adjust the percentage for each analytic
account by typing in the percentage value next to the account.
- :guilabel:`Company`: if multiple companies are set up, select the company this expense should be
filed for from the drop-down menu. The current company automatically populates this field.
- :guilabel:`Notes...`: if any notes are needed to clarify the expense, enter them in this field.
.. image:: expenses/expense-filled-in.png
:align: center
@@ -263,110 +262,6 @@ appears: :guilabel:`Use this reference as a subject prefix when submitting by em
- The :guilabel:`Internal Reference` for the expense category `Meals` is `FOOD`
- The :guilabel:`Cost` for the expense is `$25.00`
.. _expenses/report:
Create an expense report
========================
When expenses are ready to submit (such as at the end of a business trip, or once a month), an
*expense report* needs to be created. Go to the main :menuselection:`Expenses` app dashboard, which
displays a default :guilabel:`My Expenses` view, or go to :menuselection:`Expenses app --> My
Expenses --> My Expenses`.
Expenses are color coded by status. Any expense with a status of :guilabel:`To Report` (expenses
that still need to be added to an expense report) the text appears in blue. All other statuses
(:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black.
First, select each individual expense for the report by clicking the check box next to each entry,
or quickly select all the expenses in the list by clicking the check box next to :guilabel:`Expense
Date`.
Another way to quickly add all expenses that are not on an expense report is to click
:guilabel:`Create Report` without selecting any expenses, and Odoo will select all expenses with a
status of :guilabel:`To Submit` that are not already on a report.
.. image:: expenses/create-report.png
:align: center
:alt: Select the expenses to submit, then create the report.
.. note::
Any expense can be selected from the :guilabel:`My Expenses` list, regardless of status. The
:guilabel:`Create Report` button is visible as long as there is a minimum of 1 expense with a
status of :guilabel:`To Report` selected. When the :guilabel:`Create Report` button is clicked,
only expenses with a status of :guilabel:`To Submit` that are *not* currently on another expense
report will appear in the newly created expense report.
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
appears with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached
to an individual expense, a :guilabel:`📎 (paperclip)` icon appears next to the :guilabel:`Customer
to Reinvoice` and :guilabel:`Analytic Distribution` columns.
When the report is created, the date range for the expenses appears in the :guilabel:`Expense Report
Summary` field by default. It is recommended to edit this field with a short summary for each report
to help keep expenses organized. Enter a short description for the expense report (such as `Client
Trip NYC`, or `Repairs for Company Car`) in the :guilabel:`Expense Report Summary` field. Next,
select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report. If
needed, the :guilabel:`Journal` can be changed. Use the drop-down menu to select a different
:guilabel:`Journal`.
.. image:: expenses/expense-report-summary.png
:align: center
:alt: Enter a short description and select a manager for the report.
If some expenses are not on the report that should be, they can still be added. Click :guilabel:`Add
a line` at the bottom of the :guilabel:`Expense` tab. A pop up appears with all the available
expenses that can be added to the report (with a status of :guilabel:`To Submit`). Click the check
box next to each expense to add, then click :guilabel:`Select`. The items now appear on the report
that was just created. If a new expense needs to be added that does *not* appear on the list, click
:guilabel:`New` to create a new expense and add it to the report.
.. image:: expenses/add-an-expense-line.png
:align: center
:alt: Add more expenses to the report before submitting.
.. note::
Expense reports can be created in one of three places:
#. Go to the main :menuselection:`Expenses` app dashboard (also accessed by going to
:menuselection:`Expenses app --> My Expenses --> My Expenses`)
#. Go to :menuselection:`Expenses app --> My Expenses --> My Reports`
#. Go to :menuselection:`Expenses app --> Expense Reports`
In any of these views, click :guilabel:`New` to create a new expense report.
.. _expenses/submit:
Submit an expense report
------------------------
When an expense report is completed, the next step is to submit the report to a manager for
approval. Reports must be individually submitted, and cannot be submitted in batches. Open the
specific report from the list of expense reports (if the report is not already open). To view all
expense reports, go to :menuselection:`Expenses app --> My Expenses --> My Reports`.
If the list is large, grouping the results by status may be helpful since only reports that have a
:guilabel:`To Submit` status need to be submitted, reports with an :guilabel:`Approved` or
:guilabel:`Submitted` status do not.
The :guilabel:`To Submit` expenses are easily identifiable not just from the :guilabel:`To Submit`
status, but the text appears in blue, while the other expenses text appears in black.
.. image:: expenses/expense-status.png
:align: center
:alt: Submit the report to the manager.
.. note::
The status of each report is shown in the :guilabel:`Status` column on the right. If the
:guilabel:`Status` column is not visible, click the :guilabel:`Additional Options (two dots)`
icon at the end of the row, and enable :guilabel:`Status`.
Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report,
the next step is to wait for the manager to approve it.
.. important::
The :ref:`expenses/approve`, :ref:`expenses/post`, and :ref:`expenses/reimburse` sections are
**only** for users with the *necessary rights*.
.. _expenses/approve:
Approve expenses
@@ -386,10 +281,10 @@ To see who has rights to approve, go to the main :menuselection:`Settings` app a
:guilabel:`Administration` section (bottom right of the :guilabel:`Access Rights` tab) is set to
one of three options:
- :guilabel:`None (blank)`: The user cannot access the *Settings* app at all.
- :guilabel:`Access Rights`: The user can only view the :guilabel:`User's & Companies` section of
- :guilabel:`None (blank)`: the user cannot access the *Settings* app at all.
- :guilabel:`Access Rights`: the user can only view the :guilabel:`User's & Companies` section of
the *Settings* app.
- :guilabel:`Settings`: The user has access to the entire *Settings* app with no restrictions.
- :guilabel:`Settings`: the user has access to the entire *Settings* app with no restrictions.
Please refer to :doc:`this document </applications/general/users>` to learn more about managing
users and their access rights.
@@ -398,12 +293,12 @@ Click on an individual to view their card, which displays the :guilabel:`Access
default view. Scroll down to the :guilabel:`Human Resources` section. Under :guilabel:`Expenses`,
there are four options:
- :guilabel:`None (blank)`: A blank field means the user has no rights to view or approve expense
- :guilabel:`None (blank)`: a blank field means the user has no rights to view or approve expense
reports, and can only view their own.
- :guilabel:`Team Approver`: The user can only view and approve expense reports for their own
- :guilabel:`Team Approver`: the user can only view and approve expense reports for their own
specific team.
- :guilabel:`All Approver`: The user can view and approve any expense report.
- :guilabel:`Administrator`: The user can view and approve any expense report, as well as access the
- :guilabel:`All Approver`: the user can view and approve any expense report.
- :guilabel:`Administrator`: the user can view and approve any expense report, as well as access the
reporting and configuration menus in the *Expenses* app.
Users who are able to approve expense reports (typically managers) can easily view all expense
@@ -416,18 +311,18 @@ reports with a status of :guilabel:`Refused` are hidden in the default view.
:align: center
:alt: Reports to validate are found on the Reports to Approve page.
When viewing expense reports, there is a panel of filters that can be enabled or disabled on the
left side. The three categories that filters can be applied on are :guilabel:`Status`,
When viewing expense reports, there is a panel of filters that can be enabled (or disabled) on the
left side. The three categories where filters can be applied on are :guilabel:`Status`,
:guilabel:`Employee`, and :guilabel:`Company`. To view only expense reports with a particular
status, enable the specific status filter to display the expense reports with only that status.
Disable the specific status filter to hide the reports with that status. To view expense reports for
a particular employee and/or company, enable the specific employee name filter and/or company filter
in the :guilabel:`Employee` and :guilabel:`Company` sections.
Reports can be approved in two ways (individually or several at once) and refused only one way. To
Reports can be approved in two ways (individually or several at once), and refused only one way. To
approve multiple expense reports at once, remain in the list view. First, select the reports to
approve by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
to select all the reports in the list.
approve by ticking the checkbox next to each report, or tick the checkbox next to
:guilabel:`Employee` to select all the reports in the list.
.. important::
Only reports with a status of :guilabel:`Submitted` can be approved. It is recommended to only
@@ -435,7 +330,7 @@ to select all the reports in the list.
:guilabel:`Submitted` filter enabled.
If a report is selected that is unable to be approved, the :guilabel:`Approve Report` button
**will not appear**, indicating there is a problem with the selected report(s).
does **not** appear, indicating there is a problem with the selected report.
Next, click the :guilabel:`Approve Report` button.
@@ -483,9 +378,9 @@ Post expenses in accounting
===========================
Once an expense report is approved, the next step is to post the report to the accounting journal.
To view all expense reports, go to :menuselection:`Expenses app --> Expense Reports`. To view only the
expense reports that have been approved and need to be posted, adjust the filters on the left side
so that only the :guilabel:`Approved` status is enabled.
To view all expense reports, go to :menuselection:`Expenses app --> Expense Reports`. To view only
the expense reports that have been approved and need to be posted, adjust the filters on the left
side so that only the :guilabel:`Approved` status is enabled.
.. image:: expenses/post-reports.png
:align: center
@@ -493,8 +388,8 @@ so that only the :guilabel:`Approved` status is enabled.
Just like approvals, expense reports can be posted in two ways (individually or several at once). To
post multiple expense reports at once, remain in the list view. First, select the reports to post by
clicking the check box next to each report, or click the box next to :guilabel:`Employee` to select
all the reports in the list. Next, click :guilabel:`Post Entries`.
ticking the checkbox next to each report, or tick the checkbox next to :guilabel:`Employee` to
select all the reports in the list. Next, click :guilabel:`Post Entries`.
.. image:: expenses/post-entries.png
:align: center
@@ -532,8 +427,9 @@ Reports --> Reports To Pay`.
Just like approvals and posting, expense reports can be paid in two ways (individually or several at
once). To pay multiple expense reports at once, remain in the list view. First, select the reports
to pay by clicking the check box next to each report, or click the box next to :guilabel:`Employee`
to select all the reports in the list. Next, click :guilabel:`Register Payment`.
to pay by ticking the checkbox next to each report, or tick the checkbox next to
:guilabel:`Employee` to select all the reports in the list. Next, click :guilabel:`Register
Payment`.
.. image:: expenses/register-payment.png
:align: center
@@ -567,7 +463,7 @@ If expenses are tracked on customer projects, expenses can be automatically char
customer. This is done by creating an expense, referencing the :abbr:`SO (Sales Order)` the expense
should be added to, and then creating the expense report. Next, managers approve the expense report,
and the accounting department posts the journal entries. Finally, once the expense report is posted
to a journal, the expense(s) appears on the :abbr:`SO (Sales Order)` that was referenced. The sales
to a journal, the expenses appear on the :abbr:`SO (Sales Order)` that was referenced. The sales
order can then be invoiced, thus invoicing the customer for the expense.
Setup
@@ -589,11 +485,11 @@ Create an expense
-----------------
First, when :ref:`creating a new expense <expenses/new>`, the correct information needs to be
entered in order to re-invoice a customer. Select the *sales order* the expense will appear on in
the :guilabel:`Customer to Reinvoice` section, from the drop-down menu. Next, select the
:guilabel:`Analytic Account` the expense will be posted to. After the expense(s) are created, the
expense report needs to be :ref:`created <expenses/report>` and :ref:`submitted <expenses/submit>`
as usual.
entered to re-invoice a customer. Select the sales order the expense should appear on in the
:guilabel:`Customer to Reinvoice` section, from the drop-down menu. Next, select the
:guilabel:`Analytic Account` the expense should be posted to. After the expenses are created, the
expense report needs to be :doc:`created <expenses/expense_reports>`, and :ref:`submitted
<expenses/submit>`, as usual.
.. image:: expenses/reinvoice-expense.png
:align: center
@@ -609,11 +505,11 @@ as usual.
Validate and post expenses
--------------------------
Only employees with permissions (typically managers or supervisors) can :ref:`approve expenses
Only employees with permissions (typically, managers or supervisors) can :ref:`approve expenses
<expenses/approve>`. Before approving an expense report, ensure the :guilabel:`Analytic
Distribution` is set on every expense line of a report. If an :guilabel:`Analytic Distribution` is
missing, assign the correct account(s) from the drop-down menu, and then click :guilabel:`Approve`
or :guilabel:`Refuse`.
missing, assign the correct accounts from the drop-down menu, and click :guilabel:`Approve` or
:guilabel:`Refuse`.
The accounting department is typically responsible for :ref:`posting journal entries
<expenses/post>`. Once an expense report is approved, it can then be posted. The :abbr:`SO (Sales
@@ -651,3 +547,11 @@ Next, click :guilabel:`Create Invoice`, and select if the invoice is for a :guil
invoice`, a :guilabel:`Down payment (percentage)`, or a :guilabel:`Down payment (fixed amount)` by
clicking the radio button next to it. Then, click :guilabel:`Create Invoice`. The customer has now
been invoiced for the expenses.
.. seealso::
:doc:`expenses/expense_reports`
.. toctree::
:titlesonly:
expenses/expense_reports
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

@@ -0,0 +1,125 @@
===============
Expense reports
===============
When expenses are ready to submit (such as, at the end of a business trip, or once a month), an
*expense report* needs to be created. Open the main :menuselection:`Expenses app` dashboard, which
displays the :guilabel:`My Expenses` dashboard, by default. Alternatively, navigate to
:menuselection:`Expenses app --> My Expenses --> My Expenses`.
Expenses are color-coded by status. Any expense with a status of :guilabel:`To Report` (expenses
that still need to be added to an expense report) is shown in blue text. All other statuses
(:guilabel:`To Submit`, :guilabel:`Submitted`, and :guilabel:`Approved`) the text appears in black.
Create expense reports
======================
First, select each desired expense to be added to the report on the :guilabel:`My Expenses`
dashboard, by ticking the checkbox next to each entry, or quickly select all the expenses in the
list by ticking the checkbox next to the :guilabel:`Expense Date` column title, if needed.
Another way to quickly add all expenses that are not on a expense report, is to click the
:guilabel:`Create Report` button, *without* selecting any expenses, and Odoo automatically selects
all expenses with a status of :guilabel:`To Submit` that are not already on a report.
.. image:: expense_reports/create-report.png
:align: center
:alt: Select the expenses to submit, then create the report.
.. note::
Any expense can be selected from the :guilabel:`My Expenses` list, except for expenses with a
status of :guilabel:`Approved`.
The :guilabel:`Create Report` button is visible as long as there is a minimum of one expense on
the list with a status of either :guilabel:`To Report` or :guilabel:`To Submit`.
When the :guilabel:`Create Report` button is clicked, all expenses with a status of :guilabel:`To
Submit` that are *not* currently on another expense report appears in the newly-created expense
report.
If all expenses on the :guilabel:`My Expenses` report are already associated with another expense
report, an :guilabel:`Invalid Operation` pop-up window appears, stating :guilabel:`You have no
expenses to report.`
Once the expenses have been selected, click the :guilabel:`Create Report` button. The new report
appears with all the expenses listed in the :guilabel:`Expense` tab. If there is a receipt attached
to an individual expense, a :icon:`fa-paperclip` :guilabel:`(paperclip)` icon appears between the
:guilabel:`Customer to Reinvoice` and :guilabel:`Analytic Distribution` columns.
When the report is created, the date range for the expenses appears in the :guilabel:`Expense Report
Summary` field, by default. It is recommended to edit this field with a short summary for each
report to help keep expenses organized. Enter a description for the expense report, such as `Client
Trip NYC`, or `Office Supplies for Presentation`, in the :guilabel:`Expense Report Summary` field.
The :guilabel:`Employee`, :guilabel:`Paid By`, and :guilabel:`Company` fields autopoulate with the
information listed on the individual expenses.
Next, select a :guilabel:`Manager` from the drop-down menu to assign a manager to review the report.
If needed, update the :guilabel:`Journal` field, using the drop-down menu.
.. image:: expense_reports/expense-report-summary.png
:align: center
:alt: Enter a short description and select a manager for the report.
If some expenses are missing from the report, they can still be added from this report form. To do
so, click :guilabel:`Add a line` at the bottom of the :guilabel:`Expense` tab.
An :guilabel:`Add: Expense Lines` pop-up window appears, displaying all the available expenses (with
a :guilabel:`To Submit` status) that can be added to the report.
If a new expense needs to be added that does **not** appear on the list, click :guilabel:`New` to
:ref:`create a new expense <expenses/new>` and add it to the report.
Tick the checkbox next to each expense being added, then click :guilabel:`Select`.
Doing so removes the pop-up window, and the items now appear on the report.
.. image:: expense_reports/add-an-expense-line.png
:align: center
:alt: Add more expenses to the report before submitting.
.. note::
Expense reports can be created in one of three places:
#. Navigate to the main :menuselection:`Expenses app` dashboard (also accessible, via
:menuselection:`Expenses app --> My Expenses --> My Expenses`)
#. Navigate to :menuselection:`Expenses app --> My Expenses --> My Reports`
#. Navigate to :menuselection:`Expenses app --> Expense Reports`
In any of these views, click :guilabel:`New` to create a new expense report.
.. _expenses/submit:
Submit expense reports
======================
When an expense report is completed, the next step is to submit the report to a manager for
approval. To view all expense reports, navigate to :menuselection:`Expenses app --> My Expenses -->
My Reports`. Open the specific report from the list of expense reports.
.. note::
Reports must be individually submitted, and **cannot** be submitted in batches.
If the list is large, grouping the results by status may be helpful, since only reports with a
:guilabel:`To Submit` status need to be submitted; reports with an :guilabel:`Approved` or
:guilabel:`Submitted` status do not.
The :guilabel:`To Submit` expenses are identifiable by the :guilabel:`To Submit` status, and by the
blue text, while all other expense text appears in black.
.. image:: expense_reports/expense-status.png
:align: center
:alt: Submit the report to the manager.
.. note::
The status of each report is shown in the :guilabel:`Status` column. If the :guilabel:`Status`
column is not visible, click the :icon:`oi-settings-adjust` :guilabel:`(additional options)` icon
at the end of the row, and tick the checkbox beside :guilabel:`Status` from the resulting
drop-down menu.
Click on a report to open it, then click :guilabel:`Submit To Manager`. After submitting a report,
the next step is to wait for the manager to approve it.
.. important::
The :ref:`expenses/approve`, :ref:`expenses/post`, and :ref:`expenses/reimburse` sections are
**only** for users with the appropriate *access rights*.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

@@ -121,7 +121,7 @@ available on Odoo.
- :doc:`United Arab Emirates - Accounting <fiscal_localizations/united_arab_emirates>`
- :doc:`UK - Accounting <fiscal_localizations/united_kingdom>`
- Ukraine - Accounting
- United States - Accounting
- :doc:`United States - Accounting <fiscal_localizations/united_states>`
- Uruguay - Accounting
- Venezuela - Accounting
- :doc:`Vietnam - Accounting <fiscal_localizations/vietnam>`
@@ -159,3 +159,4 @@ available on Odoo.
fiscal_localizations/vietnam
fiscal_localizations/united_arab_emirates
fiscal_localizations/united_kingdom
fiscal_localizations/united_states
@@ -1018,69 +1018,37 @@ specific product.
Reports
=======
As part of the localization installation, financial reporting for Argentina was added to the
:guilabel:`Accounting` dashboard. Access these reports by navigating to :menuselection:`Accounting
--> Reporting --> Argentinean Reports`
As part of the localization installation, financial reporting for Argentina is available in the
:guilabel:`Accounting` dashboard. To access these reports, navigate to :menuselection:`Accounting
--> Reporting --> Argentinean Statements`.
.. image:: argentina/argentinian-reports.png
:align: center
:alt: Argentinean reports.
To access the VAT book report, go to :menuselection:`Accounting --> Reporting --> Tax Report`, click
the :icon:`fa-book` (:guilabel:`book`), and select :guilabel:`Argentinean VAT book (AR)`.
VAT reports
-----------
Sales VAT book
~~~~~~~~~~~~~~
This report records all the sales, which are taken as the basis for the accounting records
to determine the VAT (Tax Debit). The :guilabel:`Sales VAT` book report can be exported as a `.zip`
file using the :guilabel:`VAT BOOK (ZIP)` button at the top left, containing `.txt` files to upload
to the AFIP portal.
.. image:: argentina/sales-vat-book.png
:align: center
:alt: Sales VAT book.
Purchases VAT book
~~~~~~~~~~~~~~~~~~
The :guilabel:`Purchases VAT` book report can be exported as a `.zip` file using the
:guilabel:`VAT BOOK (ZIP)` button at the top left, which contains `.txt` files to upload to the AFIP
portal.
.. image:: argentina/purchases-vat-book.png
:align: center
:alt: Purchases VAT book.
.. note::
The VAT book report can be exported as a `.zip` file by selecting it in the dropdown menu in the
top-left corner.
VAT summary
~~~~~~~~~~~
-----------
Pivot table designed to check the monthly VAT totals. This report is for internal use and is not
sent to the AFIP.
.. image:: argentina/vat-summary.png
:align: center
:alt: VAT Summary.
IIBB - Reports
--------------
This pivot table is designed to check the monthly VAT totals. This report is for internal use and is
not sent to the AFIP.
IIBB - Sales by jurisdiction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
----------------------------
Pivot table where you can validate the gross income in each jurisdiction. Affidavit for the
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
This pivot table allows you to validate the gross income in each jurisdiction. It serves as an
affidavit for the corresponding taxes due but is not submitted to the AFIP.
.. image:: argentina/iibb-sales-jurisdiction.png
:align: center
:alt: IIBB Sales by jurisdiction.
IIBB - Purchases by jurisdiction
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--------------------------------
Pivot table where you can validate the gross purchases in each jurisdiction. Affidavit for the
corresponding taxes to pay; and therefore, it is not sent to the AFIP.
This pivot table allows you to validate the gross purchases in each jurisdiction. It serves as an
affidavit for the corresponding taxes due but is not submitted to the AFIP.
.. image:: argentina/iibb-purchases-jurisdiction.png
:align: center
:alt: IIBB Purchases by jurisdiction.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

@@ -10,12 +10,12 @@ Introduction
============
With the Brazilian localization, sales taxes can be automatically computed and electronic invoices
(NF-e) for goods can be sent using AvaTax (Avalara) through |API| calls. Moreover, taxes for
services can be configured.
for goods (NF-e) and services (NFS-e) can be sent using AvaTax (Avalara) through |API| calls.
Moreover, taxes for services can be configured.
For the goods tax computation and electronic invoicing process, you need to configure the
:ref:`contacts <brazil/contacts>`, :ref:`company <brazil/company>`, :ref:`products
<brazil/products>`, and :ref:`create an account in Avatax <brazil/avatax-account>` need to be
For the goods and services tax computation and electronic invoicing process, you need to configure
the :ref:`contacts <brazil/contacts>`, :ref:`company <brazil/company>`, :ref:`products
<brazil/products>`, and :ref:`create an account in AvaTax <brazil/avatax-account>` which needs to be
configured in the general settings.
For the services taxes, you can create and configure them from Odoo directly without computing them
@@ -27,9 +27,36 @@ needed.
Configuration
=============
Install the :guilabel:`🇧🇷 Brazil` :ref:`fiscal localization package
<fiscal_localizations/packages>` to get all the default accounting features of the Brazilian
localization, following the :abbr:`IFRS (International Financial Reporting Standards)` rules.
Modules installation
--------------------
:ref:`Install <general/install>` the following modules to get all the features of the Brazilian
localization:
.. list-table::
:header-rows: 1
:widths: 25 25 50
* - Name
- Technical name
- Description
* - :guilabel:`Brazilian - Accounting`
- `l10n_br`
- Default :ref:`fiscal localization package <fiscal_localizations/packages>`, which represents
having the Generic Brazilian chart of accounts and Taxes, together with document types and
identification types.
* - :guilabel:`Brazil - Accounting Reports`
- `l10n_br_reports`
- Accounting reports for Brazil.
* - :guilabel:`AvaTax Brazil` & :guilabel:`AvaTax Brazil for Services`
- `l10n_br_avatax` & `l10n_br_avatax_services`
- Goods and Services tax computation through Avalara.
* - :guilabel:`Brazilian Accounting EDI` & :guilabel:`Brazilian Accounting EDI for services`
- `l10n_br_edi` & `l10n_br_edi_services`
- Provides electronic invoicing for goods and services for Brazil through AvaTax.
* - :guilabel:`Brazil Pix QR codes`
- `l10n_br_pix`
- Implements Pix QR codes for Brazil.
.. _brazil/company:
@@ -42,40 +69,53 @@ given to your company.
#. Select the :guilabel:`Company` option at the top of the page. Then, configure the following
fields:
- :guilabel:`Name`.
- :guilabel:`Address` (add :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
:guilabel:`Country`).
- :guilabel:`Name`
- :guilabel:`Address`: add :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
:guilabel:`Country`
- In the :guilabel:`Street` field, enter the street name, number, and any additional address
information.
- In the :guilabel:`Street 2` field, enter the neighborhood.
- :guilabel:`Identification Number` (:guilabel:`CNPJ`, :guilabel:`CPF`).
- :guilabel:`Tax ID` (associated with the identification type).
- :guilabel:`IE` (State registration).
- :guilabel:`IM` (Municipal registration).
- :guilabel:`SUFRAMA code` (Superintendence of the Manaus Free Trade Zone - add if applicable).
- :guilabel:`Phone`.
- :guilabel:`Email`.
- :guilabel:`Identification Number`: :guilabel:`CNPJ` or :guilabel:`CPF`
- :guilabel:`Tax ID`: associated with the identification type
- :guilabel:`IE`: State registration
- :guilabel:`IM`: Municipal registration
- :guilabel:`SUFRAMA code`: Superintendence of the Manaus Free Trade Zone - add if applicable
- :guilabel:`Phone`
- :guilabel:`Email`
.. image:: brazil/contact-configuration.png
:alt: Company configuration.
#. Configure the :guilabel:`Fiscal Information` within the :guilabel:`Sales and Purchase` tab:
- Add the :guilabel:`Fiscal Position` for :ref:`Avatax Brazil <brazil/fiscal-positions>`.
- :guilabel:`Tax Regime` (Federal Tax Regime).
- :guilabel:`ICMS Taxpayer Type` (indicates ICMS regime, Exempt status, or Non-Taxpayer).
- :guilabel:`Main Activity Sector`.
- Add the :guilabel:`Fiscal Position` for :ref:`AvaTax Brazil <brazil/fiscal-positions>`.
- :guilabel:`Tax Regime`: Federal Tax Regime
- :guilabel:`ICMS Taxpayer Type`: indicates :guilabel:`ICMS regime`, :guilabel:`Exempt status`,
or :guilabel:`Non-Taxpayer`
- :guilabel:`Main Activity Sector`
.. image:: brazil/contact-fiscal-configuration.png
:alt: Company fiscal configuration.
#. Finally, upload a company logo and save the contact
#. Configure the following extra :guilabel:`Fiscal Information` if you are going to issue NFS-e:
- Add the :guilabel:`Fiscal Position` for :ref:`AvaTax Brazil <brazil/fiscal-positions>`.
- :guilabel:`COFINS Details`: :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
Suspended`
- :guilabel:`PIS Details` :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
Suspended`
- :guilabel:`CSLL Taxable` If the company is subject to CSLL or not
.. image:: brazil/contact-fiscal-configuration-nfse.png
:alt: Company fiscal configuration for NFSe.
#. Finally, upload a company logo and save the contact.
.. note::
If you are a simplified regime, you need to configure the ICMS rate under
:menuselection:`Accounting --> Configuration --> Settings --> Taxes --> Avatax Brazil`.
:menuselection:`Accounting --> Configuration --> Settings --> Taxes --> AvaTax Brazil`.
.. _brazil/avatax-account:
@@ -88,11 +128,14 @@ transaction information to retrieve the correct tax to be used and process the e
with the government.
Using this integration requires :doc:`In-App-Purchases (IAPs) <../../essentials/in_app_purchase>` to
compute the taxes and to send the electronic invoices. Whenever you compute taxes, an |API| call is
made using credits from your |IAP| credits balance.
compute the taxes and to send the electronic invoices. Whenever you compute taxes, send an
electronic document (NF-e, NFS-e, etc), or perform any electronic flow (NF-e Cancellation,
Correction letter, Invalidate invoice number range), an API call is made using credits from your
`IAP credits balance <https://iap.odoo.com/iap/in-app-services/819>`_.
.. note::
Odoo is a certified partner of Avalara Brazil.
- Odoo is a certified partner of Avalara Brazil.
- You can `buy IAP credit on odoo.com <https://iap.odoo.com/iap/in-app-services/819>`_.
Credential configuration
~~~~~~~~~~~~~~~~~~~~~~~~
@@ -100,19 +143,31 @@ Credential configuration
To activate AvaTax in Odoo, you need to create an account. To do so, go to
:menuselection:`Accounting --> Configuration --> Settings --> Taxes`, and in the :guilabel:`AvaTax
Brazil` section, add the administration email address to be used for the AvaTax portal in the
:guilabel:`Avatax Portal Email`, and then click on :guilabel:`Create account`.
:guilabel:`AvaTax Portal Email`, and then click on :guilabel:`Create account`.
.. warning::
When **testing** an :guilabel:`Avatax Portal Email` integration in a testing or sandbox database,
use an alternate email address. It is **not** possible to re-use the same email address on the
production database.
When **testing** or **creating a production** :guilabel:`AvaTax Portal Email` integration in a
sandbox or production database, use a real email address, as it is needed to log in to the
Avalara Portal and set up the certificates, whether you want to test or use it on production.
There are two different Avalara Portals, one for testing and one for production:
- Sandbox: https://portal.sandbox.avalarabrasil.com.br/
- Production: https://portal.avalarabrasil.com.br/
When you create the account from Odoo, be sure to select the right environment. Moreover, the
email used to open the account cannot be used to open another account. Save your :guilabel:`API
ID` and :guilabel:`API Key` when you create the account from Odoo.
.. image:: brazil/transfer-api-credentials.png
:alt: Transfer API Credentials.
After you create the account from Odoo, you need to go to the Avalara Portal to set up your
password:
#. Access the `Avalara portal <https://portal.avalarabrasil.com.br/Login>`_.
#. Click on :guilabel:`Meu primeiro acesso`.
#. Add the email address you used in Odoo to create the Avalara/Avatax account, and then click
#. Add the email address you used in Odoo to create the Avalara/AvaTax account, and then click
:guilabel:`Solicitar Senha`.
#. You will receive an email with a token and a link to create your password. Click on this link and
copy-paste the token to allocate your desired password.
@@ -123,7 +178,7 @@ password:
invoice service, you **must** access the AvaTax portal and upload your certificate there.
.. image:: brazil/avatax-account-configuration.png
:alt: Avatax account configuration.
:alt: AvaTax account configuration.
.. note::
You can transfer |API| credentials. Use this only when you have already created an account in
@@ -139,6 +194,13 @@ The certificate will be synchronized with Odoo, as long as the external identifi
AvaTax portal matches - without special characters - with the CNPJ number, and the identification
number (CNPJ) in Odoo matches with the CNPJ in AvaTax.
.. important::
To issue NFS-e, some cities require that you link the certificate within the City Portal system
before issuing NFS-e from Odoo.
If you receive an error message from the city that says :guilabel:`Your certificate is not linked
to the user`, that means this process needs to be done in the city portal.
Configure master data
---------------------
@@ -187,15 +249,8 @@ be manually added and configured, as the rate may differ depending on the city w
offering the service.
.. important::
Taxes attached to services are not computed by AvaTax. Only goods taxes are computed.
When configuring a tax used for a service that is included in the final price (when the tax is not
added or subtracted on top of the product price), set the :guilabel:`Tax Computation` to
:guilabel:`Percentage of Price Tax Included`, and, on the :guilabel:`Advanced Options` tab, check
the :guilabel:`Included in Price` option.
.. image:: brazil/tax-configuration.png
:alt: Tax configuration.
If you decide to do service taxes manually, you won't be able to issue an NFS-e. To
electronically send an NFS-e, you need to compute taxes using Avalara.
.. warning::
Do not delete taxes, as they are used for the AvaTax tax computation. If deleted, Odoo creates
@@ -212,14 +267,17 @@ Products
~~~~~~~~
To use the AvaTax integration on sale orders and invoices, first specify the following information
on the product:
on the product depending on its intended use:
- :guilabel:`CEST Code` (Code for products subject to ICMS tax substitution).
- :guilabel:`Mercosul NCM Code` (Mercosur Common Nomenclature Product Code).
- :guilabel:`Source of Origin` (Indicates the origin of the product, which can be foreign or
domestic, among other possible options depending on the specific use case).
- :guilabel:`SPED Fiscal Product Type` (Fiscal product type according to SPED list table).
- :guilabel:`Purpose of Use` (Specify the intended purpose of use for this product).
E-Invoice for goods (NF-e)
**************************
- :guilabel:`CEST Code`: Code for products subject to ICMS tax substitution
- :guilabel:`Mercosul NCM Code`: Mercosur Common Nomenclature Product Code
- :guilabel:`Source of Origin`: Indicates the origin of the product, which can be foreign or
domestic, among other possible options depending on the specific use case
- :guilabel:`SPED Fiscal Product Type`: Fiscal product type according to SPED list table
- :guilabel:`Purpose of Use`: Specify the intended purpose of use for this product
.. image:: brazil/product-configuration.png
:alt: Product configuration.
@@ -231,6 +289,16 @@ on the product:
:guilabel:`Product Type` `Service`, :guilabel:`Transportation Cost Type` `Insurance`, `Freight`,
or `Other Costs`).
E-Invoice for services (NFS-e)
******************************
- :guilabel:`Mercosul NCM Code`: Mercosur Common Nomenclature Product Code
- :guilabel:`Purpose of Use`: Specify the intended purpose of use for this product
- :guilabel:`Service Code Origin`: City Service Code where the provider is registered
- :guilabel:`Service Codes`: City Service Code where the service will be provided, if no
code is added, the Origin City Code will be used
- :guilabel:`Labor Assignment`: Defines if your services includes labor
.. _brazil/contacts:
Contacts
@@ -242,23 +310,23 @@ Before using the integration, specify the following information on the contact:
- Select the :guilabel:`Company` option for a contact with a tax ID (CNPJ), or check
:guilabel:`Individual` for a contact with a CPF.
- :guilabel:`Name`.
- :guilabel:`Address` (add :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
:guilabel:`Country`).
- :guilabel:`Name`
- :guilabel:`Address`: add :guilabel:`City`, :guilabel:`State`, :guilabel:`Zip Code`,
:guilabel:`Country`
- In the :guilabel:`Street` field, enter the street, number, and any extra address information.
- In the :guilabel:`Street 2` field, enter the neighborhood.
- :guilabel:`Identification Number` (:guilabel:`CNPJ`, :guilabel:`CPF`).
- :guilabel:`Tax ID` (associated with the identification type).
- :guilabel:`IE`: state tax identification number.
- :guilabel:`IM`: municipal tax identification number.
- :guilabel:`SUFRAMA code`: SUFRAMA registration number.
- :guilabel:`Phone`.
- :guilabel:`Email`.
- :guilabel:`Identification Number`: :guilabel:`CNPJ` or :guilabel:`CPF`
- :guilabel:`Tax ID`: associated with the identification type
- :guilabel:`IE`: state tax identification number
- :guilabel:`IM`: municipal tax identification number
- :guilabel:`SUFRAMA code`: SUFRAMA registration number
- :guilabel:`Phone`
- :guilabel:`Email`
.. image:: brazil/contact-configuration.png
:alt: Contact configuration.
:alt: Contact configuration.
.. note::
The :guilabel:`CPF`, :guilabel:`IE`, :guilabel:`IM`, and :guilabel:`SUFRAMA code` fields are
@@ -269,13 +337,25 @@ Before using the integration, specify the following information on the contact:
- :guilabel:`Fiscal Position`: add the AvaTax fiscal position to automatically compute taxes on
sale orders and invoices automatically
- :guilabel:`Tax Regime`: federal tax regime
- :guilabel:`ICMS Taxpayer Type`: taxpayer type determines if the contact is within the ICMS
regime, if it is exempt, or if it is a non-taxpayer
- :guilabel:`ICMS Taxpayer Type`: taxpayer type determines if the contact is within the
:guilabel:`ICMS regime`, :guilabel:`Exempt status`, or :guilabel:`Non-taxpayer`
- :guilabel:`Main Activity Sector`: list of main activity sectors of the contact
.. image:: brazil/contact-fiscal-configuration.png
:alt: Contact fiscal configuration.
#. Configure the following extra :guilabel:`Fiscal Information` if you are going to issue NFS-e:
- Add the :guilabel:`Fiscal Position` for :ref:`AvaTax Brazil <brazil/fiscal-positions>`
- :guilabel:`COFINS Details`: :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
Suspended`
- :guilabel:`PIS Details`: :guilabel:`Taxable, Not Taxable, Taxable with rate 0%, Exempt,
Suspended`
- :guilabel:`CSLL Taxable`: If the company is subject to CSLL or not
.. image:: brazil/contact-fiscal-configuration-nfse.png
:alt: Contact fiscal configuration for NFSe.
.. _brazil/fiscal-positions:
Fiscal positions
@@ -285,8 +365,8 @@ To compute taxes and send electronic invoices on sale orders and invoices, both
:guilabel:`Detect Automatically` and the :guilabel:`Use AvaTax API` options need to be enabled in
the :guilabel:`Fiscal Position`.
The :guilabel:`Fiscal Position` can be configured on the contact or selected when creating a sales
order or an invoice.
The :guilabel:`Fiscal Position` can be configured on the :ref:`contact <brazil/contacts>` or
selected when creating a sales order or an invoice.
.. image:: brazil/fiscal-position-configuration.png
:alt: Fiscal position configuration
@@ -295,8 +375,8 @@ Workflows
=========
This section provides an overview of the actions that trigger `API calls
<https://en.wikipedia.org/wiki/API>`_ for tax computation, and how to send an electronic invoice for
goods (NF-e) for government validation.
<https://en.wikipedia.org/wiki/API>`_ for tax computation, along with instructions on how to send
electronic invoices for goods (NF-e) and services (NFS-e) for government validation.
.. warning::
Please note that each |API| call incurs a cost. Be mindful of the actions that trigger these
@@ -314,7 +394,7 @@ any of the following ways:
- **Quotation confirmation**
Confirm a quotation into a sales order.
- **Manual trigger**
Click on :guilabel:`Compute Taxes Using Avatax`.
Click on :guilabel:`Compute Taxes Using AvaTax`.
- **Preview**
Click on the :guilabel:`Preview` button.
- **Email a quotation / sales order**
@@ -326,8 +406,8 @@ any of the following ways:
Tax calculations on invoices
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Trigger an |API| call to calculate taxes on a customer invoice automatically with AvaTax any of the
following ways:
Trigger an |API| call to calculate taxes on a customer invoice automatically with AvaTax in any of
the following ways:
- **Manual trigger**
Click on :guilabel:`Compute Taxes Using AvaTax`.
@@ -351,21 +431,21 @@ Electronic documents
Customer invoices
~~~~~~~~~~~~~~~~~
To process an electronic invoice for goods (NF-e), the invoice needs to be confirmed and taxes need
to be computed by Avalara. Once that step is done, click on the :guilabel:`Send \& Print` button in
the upper left corner, and a pop-up will appear. Then click on :guilabel:`Process e-invoice` and any
of the other options - :guilabel:`Download` or :guilabel:`Email`. Finally, click on :guilabel:`Send
\& Print` to process the invoice against the government.
To process an electronic invoice for goods (NF-e) or services (NFS-e), the invoice needs to be
confirmed and taxes need to be computed by Avalara. Once that step is done, click on the
:guilabel:`Send & Print` button in the upper left corner. In the pop-up that appears, click on
:guilabel:`Process e-invoice` and any of the other options - :guilabel:`Download` or
:guilabel:`Email`. Finally, click on :guilabel:`Send & Print` to process the invoice with the
government.
Before sending the electronic invoice for goods (NF-e) some fields need to be filled out on the
invoice:
Before sending the electronic invoice for goods (NF-e) or services (NFS-e), some fields need to be
filled out on the invoice:
- :guilabel:`Customer` with all the customer information
- :guilabel:`Payment Method: Brazil` (how the invoice is planned to be paid)
- :guilabel:`Customer`, with all the customer information
- :guilabel:`Payment Method: Brazil`: how the invoice is planned to be paid
- :guilabel:`Fiscal Position` set as the :guilabel:`Automatic Tax Mapping (Avalara Brazil)`
- :guilabel:`Document Type` set as :guilabel:`(55) Electronic Invoice (NF-e)`. This is the only
electronic document supported at the moment. Non-electronic invoices can be registered, and other
document types can be activated if needed
- :guilabel:`Document Type` set as :guilabel:`(55) Electronic Invoice (NF-e)` or :guilabel:`(SE)
Electronic Service Invoice (NFS-e)`
There are some other optional fields that depend on the nature of the transaction. These fields are
not required, so no errors will appear from the government if these optional fields are not
@@ -392,6 +472,9 @@ Credit notes
If a sales return needs to be registered, then a credit note can be created in Odoo to be sent to
the government for validation.
.. note::
Credit notes are only available for electronic invoices for goods (NF-e).
.. seealso::
:ref:`Issue a credit note <accounting/issue-credit-note>`
@@ -401,7 +484,9 @@ Debit Notes
If additional information needs to be included, or values need to be corrected that were not
accurately provided in the original invoice, a debit note can be issued.
.. important::
.. note::
Debit notes are only available for electronic invoices for goods (NF-e).
Only the products included in the original invoice can be part of the debit note. While changes
can be made to the product's unit price or quantity, products **cannot** be added to the debit
note. The purpose of this document is only to declare the amount that you want to add to the
@@ -415,22 +500,37 @@ Invoice cancellation
It is possible to cancel an electronic invoice that was validated by the government.
.. important::
.. note::
Check whether the electronic invoice is still within the cancellation deadline, which may vary
according to the legislation of each state.
This can be done in Odoo by clicking :guilabel:`Request Cancel` and adding a cancellation
:guilabel:`Reason` on the pop-up that appears. If you want to send this cancellation reason to the
customer via email, activate the :guilabel:`E-mail` checkbox.
E-invoices for goods (NF-e)
***************************
Cancel an e-invoice for goods (NF-e) in Odoo by clicking :guilabel:`Request Cancel` and adding a
cancellation :guilabel:`Reason` on the pop-up that appears. If you want to send this cancellation
reason to the customer via email, activate the :guilabel:`E-mail` checkbox.
.. image:: brazil/invoice-cancellation.png
:alt: Invoice cancellation reason in Odoo.
.. note::
This is an electronic cancellation, which means that Odoo will send a request to the government
to cancel the NF-e, and it will then consume one |IAP| credit, as an |API| call occurs.
E-invoices for services (NFS-e)
*******************************
Cancel an e-invoice for services (NFS-e) in Odoo by clicking :guilabel:`Request Cancel`. In this
case, there is no electronic cancellation process, as not every city has this service available. The
user needs to manually cancel this NFS-e on the city portal. Once that step is completed, they can
request the cancellation in Odoo, which will cancel the invoice.
Correction letter
~~~~~~~~~~~~~~~~~
A correction letter can be created and linked to an electronic invoice that was validated by the
government.
A correction letter can be created and linked to an electronic invoice for goods (NF-e) that was
validated by the government.
This can be done in Odoo by clicking :guilabel:`Correction Letter` and adding a correction
:guilabel:`Reason` on the pop-up that appears. To send this correction reason to a customer via
@@ -439,6 +539,9 @@ email, activate the :guilabel:`E-mail` checkbox.
.. image:: brazil/correction-letter.png
:alt: Correction letter reason in Odoo.
.. note::
Correction letters are only available for electronic invoices for goods (NF-e).
Invalidate invoice number range
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -455,6 +558,10 @@ journal, and click the :menuselection:`⚙️ (gear) icon --> Invalidate Number
.. image:: brazil/range-number-invalidation-wizard.png
:alt: Number range invalidation wizard in Odoo.
.. note::
Invalidate invoice number range documents are only available for electronic invoices for goods
(NF-e).
.. note::
The log of the canceled numbers along with the XML file are recorded in the chatter of the
journal.
@@ -468,8 +575,8 @@ is recorded on the :ref:`customer invoices <brazil/electronic-documents>`.
These Brazilian specific fields are:
- :guilabel:`Payment Method: Brazil` (how the invoice is planned to be paid).
- :guilabel:`Document Type` used by your vendor.
- :guilabel:`Document Number` (the invoice number from your supplier).
- :guilabel:`Freight Model` (how goods are planned to be transported - domestic).
- :guilabel:`Transporter Brazil` (who is doing the transportation).
- :guilabel:`Payment Method: Brazil`: how the invoice is planned to be paid
- :guilabel:`Document Type`: used by your vendor
- :guilabel:`Document Number`: the invoice number from your supplier
- :guilabel:`Freight Model`: **NF-e specific** how goods are planned to be transported - domestic
- :guilabel:`Transporter Brazil`: **NF-e specific** who is doing the transportation.
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

@@ -511,10 +511,6 @@ Once the invoice is accepted and validated by the :abbr:`SII (Servicio de Impues
the PDF is printed, it includes the fiscal elements that indicate that the document is fiscally
valid.
.. image:: chile/sii-validation-elements.png
:alt: SII Validation fiscal elements.
:align: center
.. important::
If you are hosted in Odoo SH or On-Premise, you should manually install the `pdf417gen
<https://pypi.org/project/pdf417gen/>`_ library. Use the following command to install it:
Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

@@ -33,6 +33,8 @@ Here are some terms that are essential on the Ecuadorian localization:
Configuration
=============
.. _l10n_ec/module-installation:
Modules installation
--------------------
@@ -75,7 +77,7 @@ localization:
* - :guilabel:`Ecuadorian Point of Sale`
- `l10n_ec_edi_pos`
- Includes all the technical and functional requirements to generate automatic electronic
invoices from a PoS sale.
invoices from a POS sale.
.. note::
When you install a database from scratch selecting `Ecuador` as the country, Odoo automatically
@@ -631,7 +633,7 @@ time.
eCommerce workflow
~~~~~~~~~~~~~~~~~~
Type and identification number
Identification type and number
******************************
The client who is making a purchase will have the option to indicate their identification type and
@@ -639,18 +641,74 @@ number during the checkout process. This information is required to correctly ge
electronic invoice after the checkout is completed.
.. image:: ecuador/website-checkout-form.png
:align: center
:alt: Website checkout form.
.. note::
Verification is done to ensure the *Identification Number* field is completed and has the correct
number of digits. For RUC identification, 13 digits are required. For Cédula, 9 digits are
required.
Verification is done to ensure the :guilabel:`Identification Number` field is completed and has
the correct number of digits. For RUC identification, 13 digits are required. For Cédula,
9 digits are required.
After finishing the checkout process, a confirmed invoice is generated, ready to be sent manually or
asynchronously to the SRI.
Financial Reports
Point of Sale electronic invoicing
----------------------------------
Make sure the *Ecuadorian module for Point of Sale* (`l10n_ec_edi_pos`) is :ref:`installed
<l10n_ec/module-installation>` to enable the following features and configurations:
- Choose the SRI payment method in each payment method configuration.
- Manually input the customer's identification type and identification number when creating a
new contact on *POS*.
- Automatically generate a valid electronic invoice for Ecuador at the end of the checkout process.
Payment method configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To :doc:`create a payment method for a point of sale <../../sales/point_of_sale/payment_methods>`,
go to :menuselection:`Point of Sale --> Configuration --> Payment Methods`. Then, set the
:guilabel:`SRI Payment Method` in the payment method form.
Invoicing flows
~~~~~~~~~~~~~~~
Identification type and number
******************************
The POS cashier can :ref:`create a new contact for a customer <pos/customers>` who requests an
invoice from an open POS session.
The *Ecuadorian Module for Point of Sale* adds two new fields to the contact creation form:
:guilabel:`Identification Type` and :guilabel:`Tax ID`.
.. note::
As the identification number length differs depending on the identification type, Odoo
automatically checks the :guilabel:`Tax ID` field upon saving the contact form. To manually
ensure the length is correct, know that the :guilabel:`RUC` and :guilabel:`Citizenship` types
require 13 and 10 digits, respectively.
Electronic invoice: anonymous end consumer
******************************************
When clients do not request an electronic invoice for their purchase, Odoo automatically sets the
customer as :guilabel:`Consumidor Final` and generates an electronic invoice anyway.
.. note::
If the client requests a credit note due to a return of this type of purchase, the credit note
should be made using the client's real contact information. Credit notes cannot be created to
*Consumidor Final* and can be managed :ref:`directly from the POS session <pos/refund>`.
Electronic invoice: specific customer
*************************************
If a customer requests an invoice for their purchase, it is possible to select or create a contact
with their fiscal information. This ensures the invoice is generated with accurate customer details.
.. note::
If the client requests a credit note due to a return of this type of purchase, the credit note
and return process can be managed :ref:`directly from the POS session <pos/refund>`.
Financial reports
=================
In Ecuador, there are fiscal reports that the company presents to SRI. Odoo supports two of the main
@@ -2,6 +2,11 @@
France
======
.. important::
You must :doc:`install <../../general/apps_modules>` the **France - Adding Mandatory Invoice
Mentions (Decree no. 2022-1299)** (`l10n_fr_invoice_addr`) module to comply with the `local
legislation <https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000046383394>`_.
.. _france/fec:
FEC - Fichier des Écritures Comptables
@@ -172,7 +172,7 @@ German Tax Accounting Standards: Odoo's guide to GoBD Compliance
**GoBD** stands for `Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern,
Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff
<https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Weitere_Steuerthemen/Abgabenordnung/2019-11-28-GoBD.pdf>`_.
<https://ao.bundesfinanzministerium.de/ao/2021/Anhaenge/BMF-Schreiben-und-gleichlautende-Laendererlasse/Anhang-64/anhang-64.html>`_.
In short, it is a **guideline for the proper management and storage of books, records, and documents
in electronic form, as well as for data access**, that is relevant for the German tax authority, tax
declaration, and balance sheet.
@@ -362,6 +362,16 @@ Send GSTR-1
#. The user can verify the :ref:`GSTR-1 <india/gstr-1_report>` report before uploading it to the
**GST portal** by clicking :guilabel:`GSTR-1 Report`;
#. The user can also get details to be submitted in **GSTR-1** in **Spreadsheet view** by clicking
on :guilabel:`Generate`;
.. image:: india/gst-gstr-1-generate.png
:alt: GSTR-1 generate
.. image:: india/gst-gstr-1-spreadsheet-view.png
:alt: GSTR-1 Spreadsheet View
#. If the **GSTR-1** report is correct, then click :guilabel:`Push to GSTN` to send it to the **GST
portal**. The status of the :guilabel:`GSTR-1` report changes to :guilabel:`Sending`;
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@@ -7,114 +7,369 @@ Kenya
Configuration
=============
:ref:`Install <general/install>` the following modules to get all the features of the Kenyan
localization:
Install the 🇰🇪 **Kenyan** :ref:`fiscal localization package <fiscal_localizations/packages>` to get
all the features of the Kenyan localization.
.. list-table::
:header-rows: 1
eTIMS
=====
* - Name
- Technical name
- Description
* - :guilabel:`Kenyan - Accounting`
- `l10n_ke`
- Installing this module grants you access to the list of accounts used in the local GAAP and
the list of common taxes (VAT, etc.).
* - :guilabel:`Kenyan - Accounting Reports`
- `l10n_ke_reports`
- Installing this module grants you access to improved accounting reports for Kenya, such as
Profit and Loss and Balance Sheets.
The `Kenya Revenue Authority (KRA) <https://www.kra.go.ke/>`_ has implemented the
`electronic Tax Invoice Management System (eTIMS) <https://www.kra.go.ke/online-services/etims>`_
for tax collection.
You also have to install the **Kenya Tremol Device EDI Integration** package to be able to report
your taxes to the **Kenya Revenue Authority (KRA)** using the Tremol G03 Control Unit:
.. list-table::
:header-rows: 1
* - Name
- Technical name
- Description
* - :guilabel:`Kenya Tremol Device EDI Integration`
- `l10n_ke_edi_tremol`
- Installing this module integrates with the Kenyan G03 Tremol control unit device to report
taxes to KRA through TIMS.
.. image:: kenya/modules.png
:align: center
:alt: The three modules for the Kenya Fiscal Localization Package on Odoo
Kenyan TIMS integration
=======================
The Kenya Revenue Authority (KRA) has decided to go digital for tax collection through the **Tax
Invoice Management System (TIMS)**. As of December 1st, 2022, all VAT-registered persons should
comply with TIMS. The goal is to reduce VAT fraud, increase tax revenue, and increase VAT compliance
through standardization, validation, and transmission of invoices to KRA on a real-time or near
real-time basis.
All VAT-registered taxpayers should use a **compliant tax register**. Odoo decided to develop the
integration of the **Tremol G03 Control Unit (type C)**, which can be run locally through USB. This
device validates invoices to ensure financial documents meet the new regulations and send the
validated tax invoices directly to KRA. Installing a proxy server that provides a gateway between
users and the internet is required.
Installing the proxy server on a Windows device
-----------------------------------------------
Go to `odoo.com/download <https://www.odoo.com/page/download>`_, fill out the required information
and click :guilabel:`Download`.
.. image:: kenya/download.png
:align: center
:alt: Install the Proxy Server on a Windows device
Once it is loaded on your computer, a wizard opens. You have to read and agree with the terms of the
agreement. On the next page, select the :guilabel:`type of install: Odoo IoT`. Then, click
:guilabel:`Next` and :guilabel:`Install`. Once completed, click :guilabel:`Next`. Check the
:guilabel:`Start Odoo` box to be redirected to Odoo automatically, and then click :guilabel:`Finish`.
A new page opens, confirming your :doc:`IoT Box <../../general/iot/config/connect>` is up and
running. Connect your physical device **Tremol G03 Control Unit (type C)** to your laptop via USB.
In the :guilabel:`IoT Device` section, check that your Tremol G03 Control Unit (type C) appears,
confirming the connection between the device and your computer.
.. image:: kenya/iot-box.png
:align: center
:alt: Your IoT box is up and running
To submit documents through eTIMS, you must use an :abbr:`OSCU (Online Sales Control Unit)` that
integrates with the existing **Trader Invoicing System (TIS)**, such as the one provided by Odoo.
The OSCU is used to validate, encrypt, sign, transmit, and store tax invoices.
.. note::
If the device is not detected, try to plug it in again or click on the :guilabel:`Restart` button
in the top right corner.
Make sure to :ref:`install <general/install>` the **Kenya eTIMS EDI** modules to use the OSCU
device fully.
.. _kenya/initialization:
OSCU device initialization
--------------------------
The OSCU must be initialized before use. To do so, navigate to :menuselection:`Settings --> General
Settings`, click :guilabel:`Update Info` in the :guilabel:`Companies` section, and enter your
:guilabel:`Tax ID`.
To initialize the OSCU:
#. Go to :menuselection:`Settings --> General Settings` and scroll down to the :guilabel:`Kenya
eTIMS Integration` section.
#. Set the :guilabel:`eTIMS Server Mode` to :guilabel:`Test` for the initialization.
#. Enter the :guilabel:`Serial Number` of the device and tick the two check boxes.
#. Click :guilabel:`Initialize OSCU`.
.. note::
Three server modes are available:
- :guilabel:`Demo`: Designed for demo purposes; it uses mock data and does not require an
initialized OSCU;
- :guilabel:`Test`: Used to test the connection to eTIMS;
- :guilabel:`Production`: Used for live databases that are ready to send data.
.. Important::
If your device has **already been initialized** (through another ERP, for example), enable the
:doc:`../../general/developer_mode`. Then, in the :guilabel:`Kenya eTIMS Integration` section,
enter the ID of the unit in the :guilabel:`Unit ID` field and the key obtained through a previous
initialization in the :guilabel:`CMC Key` field. Click :guilabel:`Save` when done.
Once the **OSCU module** has been :ref:`initialized <kenya/initialization>`, an OSCU serial number
is generated for each company on that database with its **country** set to :guilabel:`Kenya`. The
serial number is generated based on the VAT number of the company (regardless of its validity). It
is a unique and sequential serial number starting with the prefix `ODOO` followed by the company's
**VAT number** and a sequence of numbers.
Registering on eTIMS
--------------------
Taxpayers *must* sign up and create an account on the `KRA portal <https://etims.kra.go.ke/basic/login/indexLogin>`_.
If you do not have an account yet:
#. Sign up, enter your **PIN**, and verify that all information is correct, including your phone
number, email address, and postal address. Correct any errors on the `iTax page
<https://itax.kra.go.ke/KRA-Portal/>`_.
#. An :abbr:`OTP (One-time Password)` is sent to the phone number provided. Unblock promotional
messages if you do not receive it.
#. Upload the **business owner ID** *or* **director's ID** (as listed on iTax), along with the
filled-out and signed **commitment form** .
#. On the **eTIMS dashboard**, click :guilabel:`Service request` at the top of the page. Select
:guilabel:`OSCU` as the **eTIMS type**, enter `Odoo KE LTD` as the third-party integrator, and
enter your company's OSCU serial number retrieved earlier.
.. note::
Service request approvals are usually quick. If there's a delay, contact the eTIMS operation
or KRA office.
.. admonition:: Commitment form
- Part 1: Fill in the taxpayer's information.
- Part 2: Fill in the business owner's *or* director's information.
- Part 3: Fill in your unique serial number found in Odoo.
- Part 4: Tick **OSCU**, enter Odoo KE LTD PIN `PO52112956W`, and enter the Odoo version you're
using (17.0 or onwards).
- Part 5: Check the mandatory boxes, enter a date, and sign.
eTIMS codes
-----------
Common standard codes are **automatically** fetched from the KRA eTIMS API servers every two days.
To fetch them manually, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Fetch KRA standard codes`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
Go to :menuselection:`Accounting --> Configuration --> KE OSCU Codes` to view the complete list of
fetched OSCU codes.
.. image:: kenya/oscu-codes.png
:alt: List of fetched OSCU codes.
.. _etims/unspsc:
UNSPSC codes
------------
The KRA needs UNSPSC codes for a product to be **registered**. UNSPSC codes are **automatically**
fetched from the KRA eTIMS API servers every day. To fetch them manually, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Fetch UNSPSC codes from eTIMS`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
Go to the **product form**, and in the :guilabel:`Accounting` tab, click the :guilabel:`UNSPSC
Category` field to view the complete list of fetched UNSPSC codes.
Notices
-------
Notices are **automatically** fetched from the KRA eTIMS API servers every day. To fetch them
**manually**, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Fetch KRA notices from eTIMS`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the notices.
Go to :menuselection:`Accounting --> Configuration --> KE OSCU Notices` to view the complete list of
fetched notices.
Multi-company
-------------
.. _kenya/branch:
.. seealso::
:doc:`Connect an IoT box to your database <../../general/iot/config/connect>`
:doc:`../../general/companies`
Sending the data to KRA using the Tremol G03 Control Unit
---------------------------------------------------------
If you have :ref:`multiple companies <accounting/multi-company>`, you can centralize and manage them
all on a single Odoo database. The KRA identifies and differentiates the **main** company from
its **subsidiaries** by using IDs. Furthermore, subsidiaries are classified as **branches** of the
main company.
As a pre-requisite, check out that the :ref:`Kenyan Accounting modules
<localization/kenya/configuration>` are installed on your database. Then, go to
:menuselection:`Accounting --> Configuration --> Settings --> Kenya TIMS Integration section`, and
check that the :guilabel:`control Unit Proxy Address` matches the address of the IoT box.
To configure the company's ID, open the **Settings** app, click :guilabel:`Update Info` in the
:guilabel:`Companies` section, and search for the :guilabel:`eTIMS Branch Code` field. The **main
company** has a branch ID equal to `00` in a multi-company environment. Companies that are *not* the
main company have a branch ID other than `00` and are assigned an ID by the KRA.
To send data to KRA, create a new invoice by going to :menuselection:`Accounting Dashboard -->
Customer Invoice card` and clicking :guilabel:`New Invoice`. Upon confirmation of a new invoice, the
:guilabel:`Send invoice to Fiscal Device` button appears. Clicking on it sends the invoice details
to the device and from the device to the government. The :guilabel:`CU Invoice Number` field is now
completed in your invoice, confirming the information has been sent.
To add a branch, go to the :guilabel:`Branches` tab in the **company settings** and click
:guilabel:`Add a line`.
The :guilabel:`Tremol G03 Fiscal Device` tab contains fields that are automatically completed once
the invoice is sent to the government:
- :guilabel:`CU QR Code`: Url from the KRA portal which reflects a QR code.
- :guilabel:`CU Serial Number`: reflects the serial number of the device.
- :guilabel:`CU Signing Date and Time`: The date and time when the invoice has been sent to KRA.
If you click on :guilabel:`Send and Print`, a .pdf of the invoice is generated. The
:guilabel:`Kenyan Fiscal Device Info` is mentioned on the document.
To fetch the **branch ID** from the KRA for your non-main companies, ensure the main company has a
Kenyan :guilabel:`Tax ID` and the OSCU device has been :ref:`initialized <kenya/initialization>`.
Then, go to the :guilabel:`Branches` tab and click :guilabel:`Populate from KRA`.
.. note::
To verify KRA has received the invoice information, take the :guilabel:`CU Invoice Number` and
enter it in the :guilabel:`Invoice Number Checker` section on
`Kenya Revenue Authority website <https://itax.kra.go.ke/KRA-Portal>`_. Click
:guilabel:`Validate` and find the invoice details.
- The KRA considers each **place of supply** as a separate branch (ID).
- The **OSCU** device must be :ref:`initialized independently <kenya/initialization>` for each
branch.
Contact branch ID
-----------------
To attribute a branch ID to a contact, access the contact form, go to the :guilabel:`Accounting`
tab, and enter the branch code in the :guilabel:`eTIMS Branch Code` field.
.. note::
By default, contacts' branch IDs are set to `OO`.
KRA sequences
-------------
.. important::
Odoo invoice sequences and KRA sequences are **different**.
In Odoo, invoice sequences depend on the **main company**. Main companies can see the invoices of
branches, but branches **cannot** see the main company's invoices or those of other branches.
The KRA needs **independent** sequences per branch. Therefore, Odoo manages sequences individually
per branch.
.. example::
If you have a main company with two branches, the invoice sequence would be the following:
- Creating an invoice on **branch 1**: INV/2024/00001;
- Creating an invoice on **branch 2**: INV/2024/00002;
- Creating an invoice on the **main company**: INV/2024/00003.
This is how Odoo manages sequences to be compliant with the KRA regulations:
- Creating an invoice on **branch 1**: INV/2024/00001;
- Creating an invoice on **branch 2**: INV/2024/00001;
- Creating an invoice on the **main company**: INV/2024/00001.
Insurance
=========
For **health service providers**, you can send insurance information about the main and branch
companies and update it in eTIMS. To do so, go to :menuselection:`Accounting --> Configuration -->
Settings`, scroll to the :guilabel:`Kenya eTIMS Integration` section, and fill in the
:guilabel:`Code`, :guilabel:`Name`, and :guilabel:`Rate` fields. Click :guilabel:`Send Insurance
Details` when done.
.. _kenya/product-registration:
Product registration
====================
The KRA requires **products to be registered** first before conducting business operations (such as
stock movements, :abbr:`BOM (Bill of Materials)`, customer invoices, etc.). For a product to be
registered, the following fields must be defined on the product form:
- In the :guilabel:`General Information` tab: :guilabel:`Cost`.
- In the :guilabel:`Accounting` tab:
- :guilabel:`Packaging Unit`;
- :guilabel:`Packaging Quantity`;
- :guilabel:`Origin Country`;
- :guilabel:`eTIMS Product Type`;
- :guilabel:`Insurance Applicable`;
- :ref:`UNSPSC Category <etims/unspsc>`.
If the elements above are defined, the product is automatically registered while sending the
operation to the KRA. If not, you will be alerted by a yellow banner at the top of the screen
inviting you to check the missing elements.
.. image:: kenya/product-registration.png
:alt: Product registration template.
Stock movements
===============
All **stock movements** must be sent to the KRA. They do not require an invoice if they are
internal operations or stock adjustments; therefore, Odoo automatically sends them if at least one
of the following conditions are met:
#. No contact is set for the move;
#. The contact is your main company or a branch of the main company.
If the stock moves are **external operations** (e.g., to contacts that are not part of the main
company or its branches), the stock moves are automatically sent *after* the invoice is sent to
eTIMS.
.. note::
- The stock move must be confirmed before sending the invoice to eTIMS.
- The product(s) must be :ref:`registered <kenya/product-registration>` for the stock move to be
sent to eTIMS. If the product has not been registered yet, a yellow banner will prompt the
products' registration.
Purchases
=========
Odoo automatically fetches new vendor bills from eTIMS every day. You need to confirm the fetched
vendor bills and send the confirmation to the KRA. To confirm a vendor bill, it must be linked to
one or several confirmed purchase order line(s).
.. _kenya/purchases:
In the case of purchases (not customs imports), the steps to link purchase order lines with bills
are the following:
#. Go to :menuselection:`Accounting --> Vendors --> Bills`.
The vendor bill is fetched from the KRA servers. The JSON file is available in the chatter of the
vendor bill if needed.
#. Odoo looks at the :guilabel:`Tax ID` (PIN) of the vendor (partner);
- If it is unknown, a new contact (partner) is created.
- If it is known and the branch ID is the same, Odoo uses the known contact.
#. In the fetched bill from the KRA, select the :guilabel:`Product`. Each vendor bill *must* contain
a product to be confirmed and sent to eTIMS later on.
#. Odoo checks existing purchase order lines matching the product(s) entered at the previous step
and the partner (if any). Click the :guilabel:`Purchase Order Line` field, and select the correct
related purchase order line(s) matching the product(s). The quantities on the bill *must* be the
same as the received quantities indicated on the purchase order.
If no existing purchase order line matches the lines of the fetched bill, click
:guilabel:`Create Purchase Order` and create a purchase order based on the unmatched line(s).
:guilabel:`Validate` the resulting stock move and :guilabel:`Confirm` the bill.
#. Set a method in the :guilabel:`eTIMS Payment Method` field..
#. Once all steps are completed, click :guilabel:`Send to eTIMS` to send the vendor bill. When the
vendor bill has been confirmed on eTIMS, the **KRA invoice number** can be found in the
:guilabel:`eTIMS Details` tab.
.. image:: kenya/purchase-order-lines.png
:alt: Bill registration steps.
Invoicing
=========
.. note::
The KRA does *not* accept sales if the product is not in stock.
This is the **advised sales flow** in Odoo when selling:
#. Create a **sales order**.
#. :guilabel:`Validate` the delivery.
#. :guilabel:`Confirm` the invoice.
#. Click :guilabel:`Send and print`, and then enable :guilabel:`Send to eTIMS`.
#. Click :guilabel:`Send & print` to send the invoice.
Once the invoice has been sent and signed by the KRA, the following information can be found on
it:
- **KRA invoice number**;
- Mandatory KRA invoice fields, such as **SCU information**, **date**, **SCU ID**, **receipt
number**, **item count**, **internal date**, and **receipt signature**;
- The **KRA tax table**;
- A unique **KRA QR code** for the signed invoice.
Imports
=======
Customs import codes are **automatically** fetched from the KRA eTIMS API servers every day. To
fetch them manually, proceed as follows:
#. Enable the :doc:`../../general/developer_mode`.
#. Go to :menuselection:`Settings --> Technical --> Automation: Scheduled Actions` and search for
:guilabel:`KE eTIMS: Receive Customs Imports from the OSCU`.
#. Click the action in the list, then click :guilabel:`Run Manually` to fetch the codes.
Go to :menuselection:`Accounting --> Vendors --> Customs Imports` to view the imported codes.
The following steps are required to send and have **customs imports** signed by the KRA:
#. Go to :menuselection:`Accounting --> Vendors --> Customs Imports`; The customs import is fetched
automatically from the KRA.
#. Match the imported item with an existing registered product in the :guilabel:`Product` field (or
create a product if no related product exists).
#. Set a vendor in the :guilabel:`Partner` field.
#. Based on the partner, match the imported item with its related purchase order (see
:ref:`purchase steps <kenya/purchases>`). The stock must be correctly adjusted when the customs
import is approved.
If no related purchase order exists, create one and :guilabel:`Confirm` it. Then, confirm the
delivery by clicking :guilabel:`Receive Products`, then :guilabel:`Validate` on the purchase
order.
#. Click :guilabel:`Match and Approve` or :guilabel:`Match and Reject`, depending on the
situation of the goods.
.. note::
The JSON file received from the KRA is attached to the chatter of the customs import.
BOM
===
The KRA requires all BOMs to be sent to them. To send BOMs to eTIMS, the product and its components
*must* be :ref:`registered <kenya/product-registration>`. To access a product's BOM, click on the
product and then click the :guilabel:`Bill of Materials` smart button.
Make sure the :ref:`KRA's required fields <kenya/product-registration>` are filled in the
:guilabel:`KRA eTIMS details` section of the :guilabel:`Accounting` tab in the product form, and
click :guilabel:`Send to eTIMS`. The successful sending of the BOM is confirmed in the chatter,
where you can also find the sent information in an attached JSON file.
Credit notes
============
The KRA does not accept credit notes with quantities or prices higher than the initial invoice. When
creating a credit note, a KRA reason must be indicated: In the credit note form, go to the
:guilabel:`eTIMS Details` tab, select the :guilabel:`eTIMS Credit Note Reason`, and then select the
invoice number in the :guilabel:`Reversal of` field.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

@@ -370,9 +370,8 @@ Payment complements
Payment policy
**************
One addition of the Mexican localization is the :guilabel:`Payment Policy` field . `According to
the SAT documentation <https://www.sat.gob.mx/consultas/92764/comprobante-de-recepcion-de-pagos>`_,
there may be 2 types of payments:
One addition of the Mexican localization is the :guilabel:`Payment Policy` field. According to
the SAT documentation, there are two types of payments:
- `PUE` (Pago en una Sola Exhibición/Payment in a Single Exhibition)
- `PPD` (Pago en Parcialidades o Diferido/Payment in Installements or Deferred)
@@ -0,0 +1,748 @@
=============
United States
=============
.. |GAAP| replace:: :abbr:`GAAP (Generally Acceptable Accounting Practices)`
.. |FASB| replace:: :abbr:`FASB (Financial Accounting Standards Board)`
.. |SEC| replace:: :abbr:`SEC (Securities and Exchange Commission)`
.. |COA| replace:: :abbr:`CoA (Chart of Accounts)`
.. |AR| replace:: :abbr:`AR (Accounts Receivable)`
.. |AP| replace:: :abbr:`AP (Accounts Payable)`
.. |CFS| replace:: :abbr:`CFS (Cash Flow Statement)`
.. |NACHA| replace:: :abbr:`NACHA (National Automated Clearing House Association)`
.. |ACH| replace:: :abbr:`ACH (Automated Clearing House)`
The Odoo fiscal localization package for the United States follows the Generally Acceptable
Accounting Principles (GAAP) accounting standards and rules used to prepare financial statements,
as outlined by the Financial Accounting Standards Board (FASB) and adopted by the Securities and
Exchange Commission (SEC).
.. seealso::
- `Financial Accounting Standards Board (FASB) <https://asc.fasb.org/Home>`_
- `Securities and Exchange Commission (SEC) <https://www.sec.gov/>`_
In addition, a series of videos on the subject of Accounting are available through Odoo's eLearning
platform. These videos cover how to start from scratch, set up configurations, complete common
workflows, and provide in-depth looks at some specific use cases, as well.
.. seealso::
- `Odoo Tutorials: Accounting & Invoicing
<https://www.odoo.com/slides/accounting-and-invoicing-19>`_
- `Odoo SmartClass: Accounting <https://www.odoo.com/slides/smartclass-accounting-121>`_
Configuration
=============
Below are the available modules in Odoo for accounting use in the United States.
.. note::
The modules listed below are either for reference only or are optional, as the core requirements
to operate under the US fiscal localization in Odoo are already included under the default
package that came installed during database initialization.
Verify the default package is in use by navigating to :menuselection:`Accounting App -->
Settings` and under the :guilabel:`Fiscal Localization` section at the top, look for the `Generic
Chart Template` selection to be listed next to the :guilabel:`Package` field label. This chart
template includes the necessary settings for the US localization for the Odoo *Accounting* app.
.. image:: united_states/us-l10n-generic-chart-template.png
:align: center
:alt: The Generic Chart Template comes pre-configured for the US localization.
Modules installation
--------------------
:ref:`Install <general/install>` the following modules to get all the features of the United States
localization:
.. list-table::
:header-rows: 1
:widths: 25 25 50
* - Name
- Technical name
- Description
* - :guilabel:`United States - Accounting`
- `l10n_us`
- Base accounting module for United States localization.
* - :ref:`US - Accounting Reports <l10n_us/reports>`
- `l10n_us_reports`
- Adds United States accounting reports.
* - :guilabel:`US Checks Layout`
- `l10n_us_check_printing`
- Enables the printing of payments on pre-printed check paper. Supports the three most common
check formats and will work out of the box with the linked checks from `checkdepot.net
<https://checkdepot.net/collections/computer-checks/Odoo>`_.
- `Check on top: Quicken / QuickBooks standard
<https://checkdepot.net/collections/computer-checks/odoo+top-check>`_
- `Check on middle: Peachtree standard
<https://checkdepot.net/collections/computer-checks/odoo+middle-check>`_
- `Check on bottom: ADP standard
<https://checkdepot.net/collections/computer-checks/odoo+Bottom-Check>`_
* - :ref:`NACHA Payments <l10n_us/nacha>`
- `l10n_us_payment_nacha`
- Export payments as NACHA files for use in the United States.
* - :ref:`1099 Reporting <l10n_us/1099-report>`
- `l10n_us_1099`
- Export 1099 data for e-filing with a 3rd party.
* - :ref:`Avatax <l10n_us/taxes-avatax>`
- `account_avatax`
- Module for the :doc:`AvaTax integration <../accounting/taxes/avatax>` with Odoo.
* - :ref:`United States - Payroll <l10n_us/payroll>`
- `l10n_us_hr_payroll`
- Includes the necessary rules for United States payroll, including:
- Employee Details
- Employee Contracts
- Passport-based Contracts
- Allowances/Deductions
- Allow Configurations for Basic/Gross/Net Salary
- Employee Payslip
- Integration with Leaves Management
* - :ref:`United States - Payroll with Accounting <l10n_us/payroll>`
- `l10n_us_hr_payroll_account`
- Contains the necessary accounting data for the United States payroll rules.
* - :ref:`United States - Payroll - Export to ADP <l10n_us/adp>`
- `l10n_us_hr_payroll_adp`
- Export Work Entries to the ADP payroll software.
.. _l10n_us/coa:
Chart of accounts
=================
The :doc:`chart of accounts (COA) <../accounting/get_started/chart_of_accounts>` for the United
States localization, in Odoo, follows the standard |GAAP| structure, with accounts grouped into
seven main categories, with corresponding numeric values that prefix individual journal entries:
- **Receivable**: the balance of money (or credit) due to the business for goods or services
delivered or used, but not yet paid for by customers. |AR| is indicated by the journal code
labeled (or beginning) with :guilabel:`1`.
- **Payable**: the business's short-term obligations owed to its creditors or suppliers, which have
not yet been paid. |AP| is indicated by the journal code labeled (or beginning) with
:guilabel:`2`.
- **Equity**: the amount of money that would be returned to a company's shareholders if all of the
assets were liquidated and all of the company's debt was paid off in the case of liquidation.
Equity is indicated by the journal code labeled (or beginning) with :guilabel:`3` or
:guilabel:`9`.
- **Assets**: items listed on the balance sheet that contains economic value or have the ability to
generate cash flows in the future, such as a piece of machinery, a financial security, or a
patent. Assets are indicated by the journal code labeled (or beginning) with :guilabel:`1`.
- **Liability**: refers to a company's financial debts or obligations that arise during the course
of business operations. Liabilities are indicated by the journal code labeled (or beginning) with
:guilabel:`2`.
- **Income**: synonymous with *net income*, this is the profit a company retains after paying off
all relevant expenses from sales revenue earned. Income is indicated by the journal code labeled
(or beginning) with :guilabel:`4` or :guilabel:`6`.
- **Expenses**: the cost of operations that a company incurs to generate revenue. Expenses are
indicated by the journal code labeled (or beginning) with a :guilabel:`6`.
.. tip::
Predefined accounts are included in Odoo, as part of the |CoA| that's installed with the US
localization package. The accounts listed below are preconfigured to perform certain operations
within Odoo. It is recommended to **not** delete these accounts; however, if changes are needed,
rename the accounts instead.
.. list-table::
:header-rows: 1
:stub-columns: 1
* - :guilabel:`Type`
- :guilabel:`Account Name`
* - :guilabel:`Current Assets`
- | :guilabel:`Bank Suspense Account`
| :guilabel:`Outstanding Receipts`
| :guilabel:`Outstanding Payments`
| :guilabel:`Liquidity Transfer`
| :guilabel:`Stock Valuation`
| :guilabel:`Stock Interim (Received)`
| :guilabel:`Stock Interim (Delivered)`
| :guilabel:`Cost of Production`
* - :guilabel:`Income`
- | :guilabel:`Foreign Exchange Gain`
| :guilabel:`Cash Difference Gain`
| :guilabel:`Cash Discount Gain`
* - :guilabel:`Expenses`
- | :guilabel:`Cash Discount Loss`
| :guilabel:`Foreign Exchange Loss`
| :guilabel:`Cash Difference Loss`
* - :guilabel:`Current Year Earnings`
- :guilabel:`Undistributed Profits/Losses`
* - :guilabel:`Receivable`
- :guilabel:`Account Receivable`
* - :guilabel:`Payable`
- :guilabel:`Account Payable`
.. seealso::
- :doc:`../accounting/get_started/chart_of_accounts`
- :doc:`../accounting/get_started/cheat_sheet`
View, edit, and sort accounts
-----------------------------
Access the *Chart of Accounts* dashboard in Odoo by navigating to :menuselection:`Accounting app
--> Configuration --> Accounting: Chart of Accounts`.
From the :guilabel:`Chart of Accounts` dashboard, create new accounts by clicking the purple
:guilabel:`New` button in the top-left corner of the dashboard and :ref:`filling in the
corresponding form <chart-of-account/create>`. Search and sort through existing accounts by using
specific :guilabel:`Filters` and :guilabel:`Group By` criteria, which are available in the mega menu
under the :guilabel:`Search...` bar.
To filter accounts by category, click the :icon:`fa-caret-down` :guilabel:`(caret down)` icon to
access the mega menu and look under the :guilabel:`Filters` column for individual selections.
Clicking on a specific category will only show accounts that match that particular filter.
To view all the available account types, remove all of the filters in the :guilabel:`Search...` bar,
and then click the :icon:`fa-caret-down` :guilabel:`(caret down)` icon to access the mega menu. From
there, select :guilabel:`Account Type` under the :guilabel:`Group By` column heading to list all of
the account types in the table.
.. image:: united_states/us-l10n-coa-account-types.png
:align: center
:alt: Chart of Accounts grouped by Account Type.
Besides structure, there are other key differences in the chart of accounts in the United States,
compared to other countries:
- **Specificity**: US |GAAP| often requires more detailed accounts compared to some other countries.
This can include separate accounts for various types of revenue, expenses, and assets, providing
more granular information in financial reports.
- **Regulatory Requirements**: In the United States, there are specific regulatory requirements set
by bodies such as the |SEC| for publicly traded companies. These requirements may influence the
structure and content of the |COA| to ensure compliance with reporting standards.
- **Industry Practices**: Certain industries in the United States may have unique accounting
requirements or specialized |COA| structures. For example, financial institutions often have
specific accounts related to loans, investments, and interest income.
- **Tax Considerations**: The |COA| may also reflect tax considerations, such as accounts for
deductible expenses, deferred tax assets, and liabilities, to ensure compliance with tax laws and
facilitate tax reporting.
These differences, ultimately, should be reflected in the |COA| structure itself, with the addition
of new accounts, as needed, in order to meet the demands of US accounting reporting requirements.
.. seealso::
- :ref:`Create a new account <chart-of-account/create>`
- :doc:`../../essentials/search`
.. _l10n_us/taxes:
Taxes
=====
In the United States, tax rates and what is considered taxable vary by jurisdiction. Default *Sales*
and *Purchase* taxes are created automatically when the Odoo *Accounting* application is installed.
To manage existing or configure additional taxes, navigate to :menuselection:`Accounting -->
Configuration --> Taxes`.
.. _l10n_us/taxes-avatax:
AvaTax
------
**Avalara AvaTax** is a cloud-based tax calculation and compliance software that integrates with
Odoo for the United States and Canadian accounting localizations. Integrating AvaTax with Odoo
provides real-time and region-specific tax calculations when items are sold, purchased, and invoiced
in the database.
.. important::
AvaTax is only available for integration with databases/companies that have locations in the
United States and Canada. This means the fiscal position/country of a database can only be set to
the United States or Canada. Reference this documentation for more information:
:ref:`avatax/fiscal_country`.
.. seealso::
Refer to the documentation articles below to integrate and configure an AvaTax account with an
Odoo database:
- :doc:`AvaTax integration <../accounting/taxes/avatax>`
- :doc:`Avalara management portal <../accounting/taxes/avatax/avalara_portal>`
- :doc:`Calculate taxes with AvaTax <../accounting/taxes/avatax/avatax_use>`
- `US Tax Compliance: AvaTax elearning video
<https://www.odoo.com/slides/slide/us-tax-compliance-avatax-2858?fullscreen=1>`_
- Avalara's support documents: `About AvaTax
<https://community.avalara.com/support/s/document-item?language=en_US&bundleId=dqa1657870670369_dqa1657870670369&topicId=About_AvaTax.html&_LANG=enus>`_
.. _l10n_us/reports:
Reports
=======
A number of :doc:`report selections <../accounting/reporting>` are readily available for the US
localization, under the :menuselection:`Accounting app --> Reporting` drop-down menu:
- :ref:`Balance Sheet <reporting/balance-sheet>`: a "snapshot" of a company's financial position at
a specific point in time, which contains an overview of a company's assets, liabilities, and
equity.
- :ref:`Profit & Loss <accounting/reporting/balance-sheet>`: otherwise known as a *P&L statement* or
*income statement*, provides a summary of a company's revenues, expenses, and profits/losses over
a given period of time.
- :ref:`Cash Flow Statement <l10n_us/cash-flow-statement>`: shows how much cash and cash equivalents
a company has received and spent in a given period.
- :ref:`Executive Summary <accounting/reporting/executive-summary>`: an overview report that covers
the key performance indicators of a company's financial position, such as revenue, profit, and
debt.
- :ref:`Tax Report <reporting/tax-report>`: an official form filed for a tax authority that reports
income, expenses, and other pertinent tax information. Tax reports allow taxpayers to calculate
their tax liability, schedule tax payments, or request refunds for the overpayment of taxes. In
Odoo, the tax report can be made monthly, every two months, quarterly, every 4 months,
semi-annually, and annually.
- :guilabel:`Check Register`: a report that displays cash transactions (regardless of the journal)
with their running balance after the transaction. Only visible with the *US - Accounting Reports*
(`l10n_us_reports`) module installed.
- :ref:`1099 Report <l10n_us/1099-report>`: a CSV download of payments made to non-employees in a
period to file electronically in a third-party service. Only visible with the *1099 Reporting*
(`l10n_us_1099`) module installed.
.. _l10n_us/report-filters:
Depending on the type of report, certain filters are available at the top of the dashboard:
- a *date* filter, indicated by a :icon:`fa-calendar` :guilabel:`(calendar)` icon that precedes a
date in *MM/DD/YYYY* format. Use this to select a specific date or date range for the report.
- a :icon:`fa-bar-chart` :guilabel:`Comparison` filter, to compare reporting periods against each
other
- a *journal* filter, as indicated by a :icon:`fa-book` :guilabel:`(book)` icon and the default
setting of :guilabel:`All Journals`. Use this filter to specify which journals should be included
in the report.
- an *entries type* filter, as indicated by a :icon:`fa-filter` :guilabel:`(filter)` icon, with the
default setting of :guilabel:`Posted Entries Only, Accrual Basis`. Use this filter to determine
which type of journal entries should be included in the report (e.g. posted or draft), along with
the type of accounting method (e.g. accrual or cash basis).
- There are view options in this filter, as well, one that will :guilabel:`Hide lines at 0` for
more relevant viewing, along with a :guilabel:`Split Horizontally` option to keep the report
above the screen's fold, removing the need to scroll.
.. image:: united_states/us-l1on-accounting-method-reporting-menu.png
:align: center
:alt: Accounting method filter menu for reports, covering accrual vs. cash basis methods.
- a *decimal* filter, that by default, includes figures with cents, as indicated by the
:guilabel:`In .$` setting. Use the other options in the drop-down menu to change figures in the
report to whole numbers (:guilabel:`In $`), thousands (:guilabel:`In K$`), or millions
(:guilabel:`In M$`) formats.
- a report *customization* filter, indicated by the :icon:`fa-cogs` :guilabel:`(gears)` icon. Use
this filter to customize the current report's sections and line items, or build new reports, as
desired.
.. seealso::
- :doc:`Accounting reporting <../accounting/reporting>`
- :doc:`../../essentials/search`
.. _l10n_us/1099-report:
1099 report
-----------
The 1099 report, available by :ref:`installing <general/install>` the *1099 Reporting*
(`l10n_us_1099`) module, includes payments that are made to non-employees across a given reporting
period. Use the available CSV download from the report in Odoo to file 1099 payments electronically
via a third-party service.
To generate a 1099 report, navigate to :menuselection:`Accounting app --> Reporting --> Management:
1099 Report` to open a :guilabel:`1099 Report` wizard.
First, enter the date range of the transactions to report in the :guilabel:`Start Date` and
:guilabel:`End Date` fields.
Then, edit the journal items that appear on the wizard. Click :guilabel:`Add a line` to add any
items that are missing. Be sure to remove any items that should not be included in the report by
clicking :icon:`fa-times` :guilabel:`(delete)` on the row.
Finally, once all necessary items are included in the 1099 report, click on the :guilabel:`Generate`
button. Doing so, downloads a CSV file that groups transactions by the partner that received the
payments.
.. _l10n_us/cash-flow-statement:
Cash flow statement
-------------------
Navigate to the *Cash Flow Statement* (CFS) dashboard by going to :menuselection:`Accounting app -->
Reporting --> Statement Reports: Cash Flow Statement`. From here, |CFS| reports can be generated
using the various :ref:`filters <l10n_us/report-filters>` that are available at the top of the
dashboard.
Odoo uses the *direct* cash flow method to compile cash flow statements, which measures actual cash
inflows and outflows from the company's operations, such as when cash is received from customers or
when cash payments are made to suppliers.
By default, an account labeled with any of the three default :guilabel:`Tags` on the
:guilabel:`Chart of Accounts` dashboard will be included in the report, which includes:
:guilabel:`Operating Activities`, :guilabel:`Financing Activities`, and :guilabel:`Investing &
Extraordinary Activities`.
.. image:: united_states/us-l10n-cash-flow-statement-tags.png
:align: center
:alt: Examples of tagged accounts that are included in the Cash Flow Statement in Odoo.
Additionally, the cash flow statement in Odoo:
- is limited to the *Bank* and *Cash* journals to reflect money coming in or out; and
- also contains *Expenses* accounts, to show the counterpart transactions versus *Bank* or *Cash*
journal entries, while excluding |AR| and |AP| activity.
.. example::
Create a vendor bill for $100, as an operating expense (not |AP|). Doing so will **not** reflect
a transaction on the cash flow statement. However, register a corresponding payment for $100,
and the transaction **will** reflect on the cash flow statement as :guilabel:`Cash paid for
operating activities`.
.. image:: united_states/us-l10n-operating-expenses-example.png
:align: center
:alt: Example of a bill registered as an operating expense as part of a cash flow statement.
.. _l10n_us/cash-discount:
Cash discount
=============
Cash discounts can be configured from :menuselection:`Accounting app --> Payment Terms`. Each
payment term can be set up with a cash discount and reduced tax.
.. seealso::
:doc:`../accounting/customer_invoices/cash_discounts`
.. _l10n_us/writing-checks:
Writing checks
==============
Using checks is still a common payment practice in the US. Be sure the *US Checks Layout*
(`l10n_us_check_printing`) module for the US localization is :ref:`installed <general/install>`.
To enable check printing from Odoo, navigate to :menuselection:`Accounting --> Configuration -->
Settings` and find the :guilabel:`Vendor Payments` section. From here, tick the :guilabel:`Checks`
checkbox to reveal several fields for check configuration.
Select a :guilabel:`Check Layout` from the drop-down menu:
- :guilabel:`Print Check (Top) - US`
- :guilabel:`Print Check (Middle) - US`
- :guilabel:`Print Check (Bottom) - US`
Next, choose whether or not to enable the :guilabel:`Multi-Pages Check Stub` checkbox.
Optionally set a :guilabel:`Check Top Margin` and :guilabel:`Check Left Margin`, if required.
Once all check configurations are complete, :guilabel:`Save` the settings.
.. tip::
Some of the check formats may require pre-printed paper from a third party vendor,
https://checkdepot.net/collections/odoo-checks is recommended.
.. seealso::
:doc:`../accounting/payments/pay_checks`
.. _l10n_us/payroll:
Payroll
=======
The *Payroll* application is responsible for calculating an employee's pay, taking into account all
work, vacation, and sick time, benefits, and deductions. The *Payroll* app pulls information from
the *Attendances*, *Timesheets*, *Time Off*, *Employees* and *Expenses* applications, to calculate
the worked hours and compensation for each employee.
When using an external payroll provider, such as *ADP*, it is necessary to export the various
payroll-related data, such as work entries, repayment of expenses, taxes, commissions, and any other
relevant data, so the data can be uploaded into the payroll provider, who then issues the actual
paychecks or directly deposits the funds into an employee's bank account.
In order to export the payroll data, the work entries must first be validated and correct. Refer to
the :doc:`work entries <../../hr/payroll/work_entries>` documentation for more information
regarding validating work entries.
Once work entries are validated, the information can be :ref:`exported to ADP <l10n_us/adp>`.
After payments have been issued to employees, payslips can be processed into batches, validated, and
posted to the corresponding accounting journals to keep all financial records in Odoo current.
Required information
--------------------
It is important to have the *Employees* application installed, and all employee information
populated. Several fields in both the :ref:`employee records <l10n_us/payroll-employee-records>`, as
well as in an :ref:`employee contracts <l10n_us/payroll-employee-contracts>`, are necessary to
properly process the employee's pay. Ensure the following fields are filled out in their respective
places.
.. _l10n_us/payroll-employee-records:
Employee records
~~~~~~~~~~~~~~~~
In each employee record, there is various information the *Payroll* application requires to properly
process payslips, including various banking, tax, and work information.
Navigate to the :menuselection:`Employees app` and select an employee record to view the sections of
the employee form that directly affect *Payroll*:
- :guilabel:`Work Information` tab:
- :guilabel:`Work Address`: indicates where the employee is located, including the state, which
affects the tax calculations.
- :guilabel:`Working Hours`: determines how pay is calculated, and determines if an employee earns
overtime.
- :guilabel:`Private Information` tab:
- :guilabel:`SSN No`: the last four digits of the employee's Social Security Number (SSN) appears
on payslips.
- :guilabel:`Bank Account Number`: the bank account associated with the NACHA payment file.
- :guilabel:`HR Settings` tab:
- :guilabel:`Federal Tax Filing Status`: the tax status an employee uses for Payroll tax
calculations, which can be different from their state status.
- :guilabel:`State Tax Filing Status`: the tax status an employee uses for their state portion of
the Payroll tax calculation.
- :guilabel:`W-2 Form`: a US tax form indicating the summary of wages, taxes, and benefits paid to
an employee during a tax period (typically one year).
- :guilabel:`W-4 Form`: an IRS form that helps outline the amount of federal taxes to withhold for
an employee, which is paid to the IRS by the company.
.. _l10n_us/payroll-employee-contracts:
Employee contracts
~~~~~~~~~~~~~~~~~~
Additionally, there is information that is found in an employee contract that also affects the
*Payroll* application.
Navigate to the :menuselection:`Employees app --> Employees --> Contracts` and select a contract
record to view the sections of a contract that directly affect *Payroll*:
- :guilabel:`General Information`:
- :guilabel:`Salary Structure Type: United States: Employee`: defines when the employee is paid,
their working schedule, and the work entry type.
- :guilabel:`Work Entry source`: determines how work entries are calculated.
- :guilabel:`Salary Information` tab:
- :guilabel:`SSN No`: the last four digits of the employee's Social Security Number (SSN) appears
on payslips.
- :guilabel:`Wage type`: determines how the employee is paid, wether a Fixed wage (salary) or
Hourly wage.
- :guilabel:`Schedule Pay`: defines how often the employee is paid, either :guilabel:`Annually`,
:guilabel:`Semi-annually`, :guilabel:`Quarterly`, :guilabel:`Bi-monthly`, :guilabel:`Monthly`,
:guilabel:`Semi-monthly`, :guilabel:`Bi-weekly`, :guilabel:`Weekly`, or :guilabel:`Daily`. In
the US, Semi-monthly (24 payments a year) or bi-weekly (26 payments a year) are the most common.
- :guilabel:`Wage, Yearly, and Monthly cost`: used to show the total cost of an employee. It is
recommended to populate the :guilabel:`Yearly` wage first, as it auto-populates the other
fields.
- :guilabel:`Pre-tax benefits`: populate this section according to the employee's selections.
Pre-tax benefits decrease the gross wage, which lowers the base amount that is taxed. These are
displayed at the beginning of the payslip.
- :guilabel:`Post-tax benefits`: these benefits are deductions made *after* taxes are calculated.
These appear towards the end of the payslip before the net amount is displayed.
.. seealso::
:doc:`Employees documentation <../../hr/employees/new_employee>`
.. _l10n_us/adp:
Export work entries to ADP
--------------------------
Requirements
~~~~~~~~~~~~
In order to create a report that can be uploaded to ADP, there are some initial configuration steps
that must be completed first.
First, ensure the *United States - Payroll - Export to ADP* (`l10n_us_hr_payroll_adp`) module is
:ref:`installed <general/install>`.
Then, the company **must** have an *ADP Code* entered in the company settings. To do so, navigate
to :menuselection:`Payroll app --> Configuration --> Settings`. Enter the :guilabel:`ADP Code` in
the :guilabel:`US Localization` section.
Next, work entry types **must** have the correct ADP code listed in the *External Code* field for
each work entry type that is being referenced.
Lastly, every employee **must** have an *ADP Code* entered on their employee form. To do so,
navigate to :menuselection:`Employees app`, select an employee record, and open the :guilabel:`HR
Settings` tab. Enter the :guilabel:`ADP Code` in the :guilabel:`ADP Information` section.
The :guilabel:`ADP Code` code is how ADP identifies that particular employee, and is typically a
six-digit number.
.. seealso::
- :ref:`payroll/new-work-entry`
- :doc:`../../hr/employees/new_employee`
Export data
~~~~~~~~~~~
Once :doc:`work entries <../../hr/payroll/work_entries>` have been verified, the information can be
exported to a CSV file, which can then be uploaded into ADP.
To export the data, navigate to :menuselection:`Payroll app --> Reporting --> United States: ADP
Export`, then click :guilabel:`New`. Next, enter the :guilabel:`Start Date` and :guilabel:`End Date`
for the work entries using the calendar pop-over.
Then, enter a :guilabel:`Batch ID` in the corresponding field. The recommendation for this field is
to enter the date in a `YY-MM-DD` format, followed by any other characters to distinguish that
specific batch, such as a department name, or any other defining characteristics for the batch.
Enter a :guilabel:`Batch Description` in the corresponding field. This should be short and
descriptive, but distinct from the :guilabel:`Batch Name`.
Ensure the correct company populates the :guilabel:`Company` field. Change the selected company with
the drop-down menu, if needed.
Lastly, add the employee's work entry information to the list. Click :guilabel:`Add a line` and an
:guilabel:`Add: Employee` pop-up window loads. The list can be :doc:`filtered
<../../essentials/search>` to more easily find the employees to add to the list.
.. tip::
Process the data export in multiple groups instead of in one large group that contains all
employees. This helps to meaningfully differentiate the batches and makes processing more
tenable, overall. The most common ways to group employees is by department, or by wage type
(hourly or salaried).
Select the employees to add to the list by ticking the box to the left of their name. Once all
desired employees have been selected, click the :guilabel:`Select` button in the lower-left corner,
and the employees appear in the list.
To create the CSV file, click the :guilabel:`Generate` button in the top-left corner.
.. _l10n_us/ach-electronic-transfers:
ACH - electronic transfers
==========================
Automated Clearing House (ACH) payments are a modern way to transfer funds electronically between
bank accounts, replacing traditional paper-based methods. |ACH| payments are commonly used for
direct deposits, bill payments, and business transactions.
Receive ACH payments: payment provider integration
--------------------------------------------------
|ACH| payments are supported by *Authorize.net* and *Stripe* payment integrations in Odoo.
.. seealso::
- :ref:`Setting up Authorize.net for ACH payments (Odoo) <authorize/ach_payments>`
- `Authorize.net's ACH payment processing for small businesses documentation
<https://www.authorize.net/resources/blog/2021/ach-payments-for-small-businesses.html>`_
- :doc:`Setting up Stripe for ACH payments (Odoo) <../payment_providers/stripe>`
- `Stripe's ACH Direct Debit documentation <https://docs.stripe.com/payments/ach-debit>`_
.. _l10n_us/nacha:
Send payments: NACHA files
--------------------------
Odoo can generate a National Automated Clearing House Association (NACHA) compatible |ACH| file to
send to a company's bank. For each individual *Bank* journal that the company wishes to pay vendors
with, a |NACHA| configuration section needs to be filled out on the Odoo database.
Configuration
~~~~~~~~~~~~~
First, navigate to the :menuselection:`Accounting app --> Configuration --> Journals`. Open the
bank journal and click into the :guilabel:`Outgoing Payments` tab.
.. image:: united_states/us-l10n-nacha-settings.png
:align: center
:alt: NACHA (National Automated Clearing House Association) configuration settings on Odoo.
.. note::
The following |NACHA| configuration information is normally provided by the company's financial
institution once they have been approved to send payments via their account.
Under the section labeled, :guilabel:`NACHA configuration` are the fields required to generate a
|NACHA| compatible |ACH| file to send to a company's bank. First, enter the routing number of the
financial institution in the field labeled, :guilabel:`Immediate Destination`. This information is
widely available on the Internet and generally varies by bank location. This number is usually
provided during the initial account setup.
Next, enter the registered name of the financial institution in the field called,
:guilabel:`Destination`. This information will be provided by the bank or credit union.
Following the :guilabel:`Destination` field is the :guilabel:`Immediate Origin` field. Enter the
9-digit company ID or Employer Identification Number (EIN) into this field. This information is
provided by the financial institution.
Next, enter the :guilabel:`Company Identification` number, which is a 10-digit number made from
combining the 9-digit company ID or Employer Identification Number (EIN), along with an additional
number at the start of the sequence. This number is often a `1`. Check with the financial
institution should this first number differ to verify that it is correct, as this number is provided
for |ACH| approved accounts.
Enter the :guilabel:`Originating DFI Identification` number next, which should contain an assigned
8-digit number from the financial institution.
.. important::
Enter the numerical values in this section *exactly* as the company's financial institution
(e.g. bank or credit union) has provided them, otherwise risk failing a successful |NACHA|
configuration in Odoo.
.. image:: united_states/us-l10n-nacha-dropdown.png
:align: center
:alt: NACHA settings with the standard entry class code drop-down menu highlighted.
There are two options for the next field: :guilabel:`Standard Entry Class Code`. Select the
drop-down menu to the right of the field and pick either :guilabel:`Corporate Credit or Debit (CCD)`
or :guilabel:`Prearranged Payment and Deposit (PPD)`. Again, this information will be provided by
the financial institution. By default :guilabel:`Corporate Credit or Debit (CCD)` is selected.
Finally, the last option is for :guilabel:`Generated Balanced Files`. Tick the checkbox to the right
of the field to enable :guilabel:`Generated Balanced Files`. Consult the company's accountant or
financial advisor to make an informed decision for this field.
Manually save the configuration by clicking the :icon:`fa-cloud-upload` :guilabel:`(cloud upload)`
icon, or navigate away from this screen to auto-save. The configuration is now complete.
.. _l10n_us/batch-payment:
Create batch payment
~~~~~~~~~~~~~~~~~~~~
Now, record each payment in Odoo using the |NACHA| payment method.
.. seealso::
:ref:`Register Payments in Odoo <payments/register>`
.. important::
Be aware of the cut-off time for same-day payments. Either the file needs to have a future date
associated with each payment or the file needs to be sent prior to the cut-off, if the dates
included in it match today's date. Consult the financial institution for the exact cut-off time
for their processing of same-day payments.
Once all the payments to be included in the |NACHA| |ACH| file have been made, a batch payment needs
to be made from the :icon:`fa-cog` :guilabel:`Action` menu.
To create the batch payments, access the payments page, by navigating to :menuselection:`Accounting
--> Vendors --> Payments`. Select all the payments that should be included in the |NACHA| |ACH|
file, by ticking the checkboxes to the far-left of the rows.
.. image:: united_states/us-l10n-create-batch-payments.png
:align: center
:alt: On the payments screen, the action menu is highlighted with create a batch payment
selected.
.. warning::
All payments in the batch must share the same payment method.
Next, navigate to the batched payment (:menuselection:`Accounting --> Vendors --> Batch Payments`).
Click into the payment just created and then click into the :guilabel:`Exported File` tab. The
generated file is listed with the :guilabel:`Generation Date`. Click the :icon:`fa-download`
:guilabel:`(download)` button to download the file.
.. image:: united_states/us-l10n-batch-file.png
:align: center
:alt: The exported file tab highlighted in the batch payment with the download circled.
If any adjustments need to be made, click the :guilabel:`Re-generate Export File` button to recreate
a new |NACHA| |ACH| file.
.. seealso::
- :doc:`../accounting/payments/batch`
- :doc:`Europe's direct debiting <../accounting/payments/batch_sdd>`
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@@ -50,6 +50,8 @@ customer's card, but not charged yet.
.. seealso::
- :doc:`../payment_providers`
.. _authorize/ach_payments:
ACH payments (USA only)
=======================
+1
View File
@@ -7,6 +7,7 @@ General settings
general/apps_modules
general/users
general/companies
general/multi_company
general/iot
general/email_communication
general/integrations
@@ -133,6 +133,8 @@ appears.
For more information on pricing, see `Odoo's pricing <https://www.odoo.com/pricing-plan>`_ page.
.. _general/employee-access:
Employee access
===============
@@ -189,6 +191,8 @@ Document Layout` and edit the information as needed.
populated from the company information listed, when navigating here: :menuselection:`Settings app
--> Companies section --> Manage Companies`, and select a company from the list.
.. _general/inter-company:
Inter-company transactions
==========================
@@ -34,14 +34,14 @@ registration`. On the :guilabel:`Register an application` screen, rename the :gu
and personal Microsoft accounts (e.g. Skype, Xbox)`.
Under the :guilabel:`Redirect URL` section, select :guilabel:`Web` as the platform, and then input
`https://<odoo base url>/microsoft_outlook/confirm` in the :guilabel:`URL` field. The Odoo base URL
is the canonical domain at which your Odoo instance can be reached in the URL field.
`https://<web base url>/microsoft_outlook/confirm` in the :guilabel:`URL` field. The `web.base.url`
is subject to change depending on the URL used to log in to the database.
.. example::
*mydatabase.odoo.com*, where *mydatabase* is the actual prefix of the database's subdomain,
assuming it's hosted on Odoo.com
.. note::
The documentation about the :ref:`web.base.url <domain-name/web-base-url>` explains how to freeze
a unique URL. It is also possible to add different redirect URLs on the Microsoft app.
After the URL has been added to the field, :guilabel:`Register` the application so it is created.
After the URL has been added to the field, :guilabel:`Register` the application, so it is created.
API permissions
---------------
@@ -12,8 +12,9 @@ Outgoing emails
Email is not sent
-----------------
The first indicator showing that an email has not been sent is the presence of a red :guilabel:`✉️
(envelope)` icon, next to the date and time of the message, located in the chatter.
The first indicator showing that an email has not been sent is the presence of a red
:icon:`fa-envelope` :guilabel:`(envelope)` icon, next to the date and time of the message, located
in the chatter.
.. image:: faq/red-envelop.png
:align: center
@@ -42,13 +43,18 @@ Odoo's email servers from being blacklisted.
Here are the default limits for new databases:
- **200 emails per day** for Odoo Online and Odoo.sh databases with an active subscription.
- **20 emails per day** for one-app free databases.
- **50 emails per day** for trial databases.
- In the case of migration, the daily limit might be reset to 50 emails per day.
- **50 emails per day** for one-app free and trial databases.
.. important::
In a one-app free database, if the *Email Marketing* app is installed, the email limit is **20
emails per day**.
.. note::
In the case of migration, the daily limit might be reset to 50 emails per day.
If the daily limit is reached:
- Contact the Odoo support team, who may increase the daily limit depending on the following
- Contact the Odoo support team, who may increase the daily limit, depending on the following
factors:
#. How many users are in the database?
@@ -72,7 +78,7 @@ If the daily limit is reached:
SMTP error
**********
Simple Mail Transport Protocol (SMTP) error messages explain why an email wasn't transmitted
*Simple Mail Transport Protocol (SMTP)* error messages explain why an email was not transmitted
successfully. :abbr:`SMTP (Simple Mail Transport Protocol)` is a protocol to describe the email
structure, and transmits data from messages over the Internet. The error messages generated by email
services are helpful tools to diagnose and troubleshoot email problems.
@@ -83,9 +89,9 @@ services are helpful tools to diagnose and troubleshoot email problems.
mta4471.mail.bf1.yahoo.com --- Below this line is a copy of the message.`
The debug menu can be used to investigate SMTP sending issues from a database. To access the menu,
:ref:`developer mode <developer-mode>` must be activated. Once activated, navigate to the
:menuselection:`Debug Menu` in the top right of the menu bar (the :guilabel:`🐞 (bug)` icon),
:menuselection:`Debug Menu --> Manage Messages`
:ref:`developer mode <developer-mode>` **must** be activated. Once activated, navigate to the
:menuselection:`Debug Menu` in the top-right of the menu bar (the :icon:`fa-bug` :guilabel:`(bug)`
icon), and select :menuselection:`Debug Menu --> Manage Messages` from the resulting drop-down menu.
The :guilabel:`Manage Messages` menu opens a list of all the messages sent in a particular record.
Within each message there is information on sending, including the type, and subtype, of the
@@ -128,11 +134,10 @@ Email is sent late
Email campaigns send at a scheduled time, using a delay pre-programed in the database. Odoo uses a
delayed task to send emails that are considered "not urgent" (newsletter formats, such as: mass
mailing, marketing automation, and events). The system utility **cron** can be used to schedule
programs to run automatically at predetermined intervals. Odoo uses that policy in order to avoid
cluttering the mail servers and, instead, prioritizes individual communication. This **cron** is
called :guilabel:`Mail: Email Queue Manager`, and can be accessed in :ref:`developer mode
<developer-mode>` by going to :menuselection:`Settings app --> Technical menu --> Automation -->
Scheduled Actions`.
programs to run automatically at predetermined intervals. Odoo uses that policy to avoid cluttering
the mail servers and, instead, prioritizes individual communication. This **cron** is called
:guilabel:`Mail: Email Queue Manager`, and can be accessed in :ref:`developer mode <developer-mode>`
by going to :menuselection:`Settings app --> Technical menu --> Automation: Scheduled Actions`.
.. image:: faq/email-scheduled-later.png
:align: center
@@ -154,9 +159,9 @@ invoices, purchase orders, etc.) are sent immediately.
Incoming emails
===============
When there is an issue with incoming emails, there might not be an indication, per se, in Odoo. It
is the sending email client, who tries to contact a database, that will get a bounce-back message
(most of the time a :guilabel:`550: mailbox unavailable` error message).
When there is an issue with incoming emails, there might not be an indication in Odoo. It is the
sending email client, who tries to contact a database, that gets a bounce-back message (most of the
time it is a :guilabel:`550: mailbox unavailable` error message).
Email is not received
---------------------
@@ -229,5 +234,5 @@ of what can be helpful when reaching out to the Odoo Support team about an issue
.. note::
The bounce system parameter needs to be set in the technical settings in order for the database
to correctly receive bounce messages. To access this setting, go to :menuselection:`Settings app
--> Technical menu --> Parameters --> System Parameters`. Then select the parameter name
:guilabel:`mail.bounce.alias` and set the value to `bounce` if it isn't already set.
--> Technical menu --> Parameters: System Parameters`. Then, select the parameter name
:guilabel:`mail.bounce.alias` and set the value to `bounce` if it is not already set.
@@ -120,4 +120,4 @@ the right of the chatter. Then, select :guilabel:`Translate`. The content transl
:alt: Google Translate present in an Odoo database's chatter.
.. seealso::
:ref:`language/change-user-language`
:ref:`language/install`
@@ -14,3 +14,4 @@ Configuration
config/updating_iot
config/troubleshooting
config/windows_iot
config/ssh_connect
@@ -0,0 +1,46 @@
==========================
Connect an IoT box via SSH
==========================
.. |iot| replace:: :abbr:`IoT (Internet of Things)`
.. |SSH| replace:: :abbr:`SSH (secure shell protocol)`
To provide an |SSH| connection to an Internet of Things (IoT) box, a password needs to be generated.
.. warning::
This feature should **only** be utilized with trusted parties, as it provides administrative
access to the |iot| box, which can create security issues.
Managing an |SSH| connection is **not** covered under the standard scope of Odoo support. Visit
the `Odoo Support <https://www.odoo.com/help>`_ page for additional information about what is
covered.
First, navigate to the :menuselection:`IoT app --> IoT Boxes`. Click on the IP address of the
appropriate |iot| box.
.. note::
If the desired |iot| box does not appear, see :doc:`troubleshooting` for additional steps.
At the bottom of the |iot| box pop-up window, click :guilabel:`Remote Debug`. This opens the
:guilabel:`Remote Debugging` pop-up window.
.. image:: ssh_connect/ssh-generate-password.png
:align: center
:alt: The Remote Debugging password generation window.
Click :guilabel:`Generate password`.
.. warning::
After the password has been generated from the :guilabel:`Remote Debugging` pop-up window, the
information **must** be recorded immediately. Once this window is closed, there is no current
method for looking up this information.
Enter the :guilabel:`Authentication Token` provided by the user attempting to connect to the |iot|
box.
Click :guilabel:`Enable Remote Debugging`.
.. seealso::
- :doc:`connect`
- :doc:`troubleshooting`
- :doc:`updating_iot`
Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

@@ -2,6 +2,9 @@
Connect a printer
=================
.. |iot| replace:: :abbr:`IoT (Internet of Things)`
.. |usb| replace:: :abbr:`USB (Universal Serial Bus)`
Printer installation can be done in a few easy steps. The printer can be used to print receipts,
labels, orders, or even reports from the different Odoo apps. In addition, printer actions can be
assigned as an *action on a trigger* during the manufacturing process, or added onto a quality
@@ -10,17 +13,16 @@ control point or a quality check.
Connection
==========
The :abbr:`IoT (Internet of Things)` box supports printers connected through :abbr:`USB (Universal
Serial Bus)`, network connection, or Bluetooth. `Supported printers
<https://www.odoo.com/page/iot-hardware>`__ are detected automatically, and appear in the
:guilabel:`Devices` list of the *IoT app*.
The |iot| box supports printers connected through |usb|, network connection, or Bluetooth.
`Supported printers <https://www.odoo.com/page/iot-hardware>`__ are detected automatically, and
appear in the :guilabel:`Devices` list of the *IoT* app.
.. image:: printer/printer-detected.png
:align: center
:alt: The printer as it would appear in the IoT app devices list.
.. note::
The printer can take up to two minutes to appear in the *IoT app* devices list.
Printers can take up to two minutes to appear in the *IoT* app :guilabel:`Devices` list.
Link printer
============
@@ -63,15 +65,16 @@ specific product.
.. note::
On a quality check detail form, the :guilabel:`Type` of check can also be specified to
:guilabel:`Print Label`. To create new quality checks, navigate to :menuselection:`Quality app
--> Quality Control --> Quality Checks --> New`.
:guilabel:`Print Label`. To create :doc:`new quality checks
<../../../inventory_and_mrp/quality/quality_management/quality_checks>`, navigate to
:menuselection:`Quality app --> Quality Control --> Quality Checks --> New`.
.. seealso::
- :doc:`/applications/inventory_and_mrp/quality/quality_management/quality_control_points`
- :doc:`/applications/inventory_and_mrp/quality/quality_management/quality_alerts`
- :doc:`../../../inventory_and_mrp/quality/quality_management/quality_control_points`
- :doc:`../../../inventory_and_mrp/quality/quality_management/quality_alerts`
Link a printer to a work center in the Manufacturing app
--------------------------------------------------------
Link a printer to a work center
-------------------------------
To link a printer to an action, it first needs to be configured on a work center. To do that,
navigate to :menuselection:`Manufacturing app --> Configuration --> Work Centers`. From here, select
@@ -94,29 +97,52 @@ Slip`. A key can also be added to trigger the action.
.. seealso::
:ref:`workcenter_iot`
.. _iot/link-printer:
Link printer to reports
-----------------------
It's also possible to link a type of report to a certain printer. In the *IoT app*, go to the
:guilabel:`Devices` menu, and select the desired printer that needs to be configured.
It is possible to link report types to a specific printer. In the *IoT* app, go to the
:guilabel:`Devices` menu, and select the desired printer to be configured.
From here, click :guilabel:`Edit`, go to the :guilabel:`Printer Reports` tab, and select
:guilabel:`Add a line`. In the window that appears, check all the types of :guilabel:`Reports` that
should be linked to this printer.
From here, go to the :guilabel:`Printer Reports` tab, and click :guilabel:`Add a line`. In the
window that appears, check all the types of :guilabel:`Reports` that should be linked to this
printer.
.. image:: printer/printers-listed.png
.. image:: printer/printer-reports.png
:align: center
:alt: The printer devices listed in the IoT Devices menu.
:alt: The list of reports assigned to a printer in the IoT app.
Now, each time :guilabel:`Print` is selected in the control panel, instead of downloading a PDF, a
pop-up appears which displays all the printer(s) linked to the report. Then Odoo sends the report to
the selected printer(s), and automatically prints it.
.. tip::
Reports can also be configured in the *Technical* menu of the *Settings* app, while in
:ref:`debug mode <developer-mode>`. To do that, navigate to :menuselection:`Settings App -->
Technical --> Actions: Reports`. From here, select the desired report from the list. Then, an
:guilabel:`IoT Device` can be set on the report.
The first time a linked report is selected to print, a :guilabel:`Select Printers` pop-up window
appears. Tick the checkbox next to the correct printer for the report, and click :guilabel:`Print`.
At that point, the report is linked to the printer.
Clear device printer cache
~~~~~~~~~~~~~~~~~~~~~~~~~~
After a printer is linked to print a report, the setting is saved in a browser's cache. This means
a user can have different devices saved in their cache for different reports, based on the device
they use to access Odoo. It also means different users can have a report automatically printed from
different printers, based on their preferences.
To unlink a report from a printer, navigate to :menuselection:`IoT app --> Clear Selected Devices`.
This generates a list of reports that are linked to a printer on the current device. Click the
:guilabel:`Unlink` button next to each report to remove the link.
.. important::
This step **only** prevents the report from automatically printing to the listed printer from
the current browser. The report is still :ref:`linked <iot/link-printer>` on the device, under
the :guilabel:`Printer Reports` tab.
.. image:: printer/clear-reports.png
:align: center
:alt: A list of reports currently linked to a printer in the IoT app.
.. seealso::
:doc:`POS Order Printing <../../../sales/point_of_sale/restaurant/kitchen_printing>`
.. tip::
Reports can also be configured in the :guilabel:`Technical Menu` while in :ref:`debug mode
<developer-mode>`. To do that, navigate to :menuselection:`Settings App --> Technical Menu -->
Actions --> Reports`. From here, the individual report can be found in this list, where the
:guilabel:`IoT Device` can be set on the report.
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

@@ -0,0 +1,140 @@
=============
Multi-company
=============
.. |mcd| replace:: multi-company database
In Odoo, multiple companies can exist within a single database. This allows for some data to be
shared among companies, while still maintaining some level of separation between entities.
Before deciding to use the multi-company feature, there are several factors to consider.
.. important::
Multi-company is **only** available in *One App Free* databases, or with `Custom
<https://www.odoo.com/pricing-plan>`_ plans.
Accessing multiple companies
============================
The list of :ref:`companies an employee has access to <general/employee-access>` in a |mcd| can be
found at the top-right of the main Odoo menu bar, where the active company is listed. Click on the
company name to reveal a list of all allowed companies. To switch to a different company, click on
the company name in the drop-down menu. To enable multiple companies at once, tick the checkbox next
to each desired company name.
.. figure:: multi_company/company-access.png
:align: center
:alt: An example of the list of companies a user has access to when logged into a database.
An example of a user with access to multiple companies. The current company is My Company (San
Francisco), while My Company (Chicago) is also active.
.. note::
The database may refresh after each checkbox is ticked.
.. _general/active-companies:
Multiple active companies
-------------------------
If more than one company is active at a time, one company is highlighted in purple, and is listed on
the menu bar. This is the considered the *current* company.
When creating a new record, the current company is added to the record in the *Company* field,
except under the following circumstances:
- The *Company* field for a new product, or a new contact, is left blank.
- If there is a related document already in the system, the *Company* field on the new record
defaults to the same company.
.. example::
Mitchell Admin has multiple companies enabled, but the current company is `My Company (Chicago)`.
When he creates a new product record, the :guilabel:`Company` field is left blank by default.
When a new sales team is created, the :guilabel:`Company` field automatically defaults to `My
Company (Chicago)`.
.. _general/sharing-data:
Share data
==========
In a |mcd|, certain records are able to be utilized by all of the companies (or several, based on
permissions).
Products
--------
In an |mcd|, new products are created with the :ref:`Company field <general/active-companies>`
blank, by default. If the *Company* field remains blank, the product is shared across all companies.
Contacts
--------
Similar to products, contact records are shared across companies, by default. To limit access to a
single company, click the :ref:`Company field <general/active-companies>` on a contact form, and
select a company to assign the contact to.
Inter-company transactions
==========================
The :ref:`Inter-Company Transactions <general/inter-company>` feature allows for one company in the
database to sell or purchase goods and services from another company within the same database.
Counterpart documents for orders and invoices can be automatically generated and synchronized,
depending on the configuration settings.
.. warning::
To ensure inter-company transactions are handled appropriately, certain configurations, such as
fiscal positions and localizations, need to be accurately assigned. See :ref:`Inter-Company
Transactions <general/inter-company>` for additional information.
Use cases
=========
Multinational companies
-----------------------
A multinational retail chain, which operates in the United States and Canada, needs to manage
transactions in both USD and CAD currencies.
Additionally, because both countries have different tax laws and regulations, it is in the best
interest of the customer to utilize the multi-company feature.
This allows for inter-company transactions they need to manage inventory moves across international
borders, while making it simple to sell to customers in both countries in their own currency.
Separate processes
------------------
A small furniture company is developing a new line of products that require a separate procurement,
inventory, and manufacturing process. The new products are drastically different from the existing
catalog. The company is considering utilizing the multi-company feature to treat this new line as a
different entity.
To keep their database from becoming overly complex, the furniture company does not need to add an
entirely new company. Instead, they can take advantage of existing features, such as :doc:`analytic
accounting <../finance/accounting/reporting/analytic_accounting>`, and multiple warehouses, to
manage the new product line, without having to overly complicate transactions.
Limitations
===========
In some instances, a |mcd| may *not* be the best option, due to potential limitations.
Access rights
-------------
A user's access rights are configured on a database level. If a user has access to more than one
company in a |mcd|, their access rights are the same across every company.
Shared records
--------------
Individual records are either :ref:`shared <general/sharing-data>` between all companies, or belong
to a single company.
PDF Reports
-----------
Some customizations, specifically for PDF reports, apply to all companies. It is not always possible
to separate reports for individual companies.
Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

+1
View File
@@ -254,6 +254,7 @@ company.
users/2fa
users/access_rights
users/portal
users/facebook
users/google
users/azure
users/ldap
+88 -90
View File
@@ -1,127 +1,125 @@
=========================
Two-factor Authentication
Two-factor authentication
=========================
Two-factor authentication ("2FA") is a good way to improve the
security of an account, to make it less likely that an other person
will manage to log in instead of you.
.. |2fa| replace:: :abbr:`2FA (two-factor authentication)`
.. |QR| replace:: :abbr:`QR (Quick Response)` code
Practically, it means storing a secret inside an *authenticator*
(usually your cell phone) and exchanging a code from the authenticator
when you try to log in.
*Two-factor authentication (2FA)* is a way to improve security, and prevent unauthorized persons
from accessing user accounts.
This means an attacker needs *both* to have guessed (or found) your
password and to access (or steal) your authenticator, a more difficult
proposition than either one or the other.
Practically, |2fa| means storing a secret inside an *authenticator*, usually on a mobile phone, and
exchanging a code from the authenticator when trying to log in.
This means an unauthorized user would need to guess the account password *and* have access to the
authenticator, which is a more difficult proposition.
Requirements
============
.. note:: These lists are just examples, they are not endorsements of
any specific software.
.. important::
These lists are just examples. They are **not** endorsements of any specific software.
If you don't already have one, you will need to choose an
authenticator.
Phone-based authenticators are the easiest and most commonly used. Examples include:
Phone-based authenticators are the easiest and most common so we will
assume you'll pick and install one on your phone, examples include
`Authy <https://authy.com/>`_, `FreeOTP
<https://freeotp.github.io/>`_, `Google Authenticator
<https://support.google.com/accounts/answer/1066447?hl=en>`_,
`LastPass Authenticator <https://lastpass.com/auth/>`_, `Microsoft
Authenticator
<https://www.microsoft.com/en-gb/account/authenticator?cmp=h66ftb_42hbak>`_,
...; password managers also commonly include :abbr:`2FA (two-factor
authentication)` support e.g. `1Password
<https://support.1password.com/one-time-passwords/>`_, `Bitwarden
<https://bitwarden.com/help/article/authenticator-keys/>`_, ...
- `Authy <https://authy.com/>`_
- `FreeOTP <https://freeotp.github.io/>`_
- `Google Authenticator <https://support.google.com/accounts/answer/1066447?hl=en>`_
- `LastPass Authenticator <https://lastpass.com/auth/>`_
- `Microsoft Authenticator
<https://www.microsoft.com/en-gb/account/authenticator?cmp=h66ftb_42hbak>`_
For the sake of demonstration we will be using Google Authenticator
(not because it is any good but because it is quite common).
Password managers are another option. Common examples include:
Setting up two-factor authentication
====================================
Once you have your authenticator of choice, go to the Odoo instance
you want to setup :abbr:`2FA (two-factor authentication)`, then open
:guilabel:`Preferences` (or :guilabel:`My Profile`):
.. figure:: 2fa/preferences.png
:align: center
Open the :guilabel:`Account Security` tab, then click the
:guilabel:`Enable two-factor authentication` button:
.. figure:: 2fa/sec_tab.png
:align: center
Because this is a security-sensitive action, you will need to input
your password:
.. figure:: 2fa/sec_enhanced.png
:align: center
After which you will see this screen with a barcode:
.. figure:: 2fa/totp_scan.png
:align: center
In most applications, you can simply *scan the barcode* via the
authenticator of your choice, the authenticator will then take care of
all the setup:
.. figure:: 2fa/scan_barcode.jpg
:align: center
- `1Password <https://support.1password.com/one-time-passwords/>`_
- `Bitwarden <https://bitwarden.com/help/article/authenticator-keys/>`_,
.. note::
The remainder of this document uses Google Authenticator as an example, as it is one of the most
commonly used. This is **not** an endorsement of the product.
If you can not scan the screen (e.g. because you are doing this
set-up on the same phone as the authenticator application), you can
click the provided link, or copy the secret to manually set-up your
authenticator:
Two-factor authentication setup
===============================
.. figure:: 2fa/secret_visible.png
After selecting an authenticator, log in to Odoo, then click the profile avatar in the upper-right
corner, and select :guilabel:`My Profile` from the resulting drop-down menu.
Click the :guilabel:`Account Security` tab, then slide the :guilabel:`Two-Factor Authentication`
toggle to *active*.
.. figure:: 2fa/account-security.png
:align: center
This generates a :guilabel:`Security Control` pop-up window that requires password confirmation to
continue. Enter the appropriate password, then click :guilabel:`Confirm Password`. Next, a
:guilabel:`Two-Factor Authentication Activation` pop-up window appears, with a |QR|.
.. figure:: 2fa/qr-code.png
:align: center
Using the desired authenticator application, scan the |QR| when prompted.
.. tip::
If scanning the screen is not possible (e.g. the setup is being completed on the *same* device as
the authenticator application), clicking the provided :guilabel:`Cannot scan it?` link, or
copying the secret to manually set up the authenticator, is an alternative.
.. figure:: 2fa/secret-visible.png
:align: center
.. figure:: 2fa/input_secret.png
.. figure:: 2fa/input-secret.png
:align: center
Once this is done, the authenticator should display a *verification
code* with some useful identifying information (e.g. the domain and
login for which the code is):
Afterwards, the authenticator should display a *verification code*.
.. figure:: 2fa/authenticator.png
:align: center
You can now input the code into the :guilabel:`Verification Code`
field, then click the :guilabel:`Enable two-factor authentication`
button.
Enter the code into the :guilabel:`Verification Code` field, then click :guilabel:`Activate`.
Congratulation, your account is now protected by two-factor
authentication!
.. figure:: 2fa/totp_enabled.png
.. figure:: 2fa/2fa-enabled.png
:align: center
Logging in
==========
You should now :guilabel:`Log out` to follow along.
To confirm |2fa| setup is complete, log out of Odoo.
On the login page, input the username and password of the account for
which you set up :abbr:`2FA (two-factor authentication)`, rather than
immediately enter Odoo you will now get a second log-in screen:
On the login page, input the username and password, then click :guilabel:`Log in`. On the
:guilabel:`Two-factor Authentication` page, input the code provided by the chosen authenticator in
the :guilabel:`Authentication Code` field, then click :guilabel:`Log in`.
.. figure:: 2fa/2fa_input.png
.. image:: 2fa/2fa-login.png
:align: center
:alt: The login page with 2fa enabled.
Get your authenticator, input the code it provides for the domain and
account, validate, and you're now in.
.. danger::
If a user loses access to their authenticator, an administrator **must** deactivate |2fa| on the
account before the user can log in.
And that's it. From now on, unless you disable :abbr:`2FA (two-factor
authentication)` you will have a two-step log-in process rather than
the old one-step process.
Enforce two-factor authentication
=================================
.. danger:: Don't lose your authenticator, if you do, you will need an
*Odoo Administrator* to disable :abbr:`2FA (two-factor
authentication)` on the account.
To enforce the use of |2fa| for all users, first navigate to :menuselection:`Main Odoo Dashboard -->
Apps`. Remove the :guilabel:`Apps` filter from the :guilabel:`Search...` bar, then search for `2FA
by mail`.
Click :guilabel:`Install` on the Kanban card for the :guilabel:`2FA by mail` module.
.. image:: 2fa/2FA-by-mail.png
:align: center
:alt: The 2FA by mail module in the Apps directory.
After installation is complete, go to :guilabel:`Settings app: Permissions`. Tick the checkbox
labeled, :guilabel:`Enforce two-factor authentication`. Then, use the radio buttons to choose
whether to apply this setting to :guilabel:`Employees only`, or :guilabel:`All users`.
.. note::
Selecting :guilabel:`All users` applies the setting to portal users, in addition to employees.
.. image:: 2fa/enforce-settings.png
:align: center
:alt: The enforce two factor setting in the Settings application.
Click :guilabel:`Save` to commit any unsaved changes.
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

@@ -0,0 +1,132 @@
===============================
Facebook sign-in authentication
===============================
The *Facebook* OAuth sign-in function allows Odoo users to sign in to their database with their
Facebook account.
.. danger::
Databases housed on Odoo.com should **not** use OAuth login for the owner or administrator of the
database, as it would unlink the database from their Odoo.com account. If OAuth is setup for
that user, the database can no longer be duplicated, renamed, or otherwise managed from the
Odoo.com portal.
Meta for Developers setup
=========================
Go to `Meta for Developers <https://developers.facebook.com/>`_ and log in. Click :guilabel:`My
Apps`. On the :guilabel:`Apps` page, click :guilabel:`Create App`.
On the :guilabel:`Use cases` page, select :guilabel:`Authenticate and request data from users with
Facebook Login`, then click :guilabel:`Next`.
In the :guilabel:`Add an app name` field, enter `Odoo Login OAuth`, or a similar title.
.. note::
The :guilabel:`App contact email` automatically defaults to the email address associated with the
Meta account. If this email address is not regularly monitored, it may be wise to use another
email address.
Click :guilabel:`Next`. Review the :guilabel:`Publishing requirements`, the :guilabel:`Meta
Platform Terms`, and :guilabel:`Developer Policies`. Then, click :guilabel:`Create app`.
.. important::
Clicking :guilabel:`Create app` may require password re-entry.
Customize app
-------------
After the new app is created, the :guilabel:`Dashboard` page appears, with a list of steps to be
completed before the app can be published. From here, click :guilabel:`Customize adding a Facebook
Login button`.
.. image:: facebook/app-requirements.png
:align: center
:alt: The App Dashboard in the Meta for developers platform.
On the :guilabel:`Customize` page, click :guilabel:`Settings`.
In the :guilabel:`Valid OAuth Redirect URIs` field, enter `https://<odoo base
url>/auth_oauth/signin`, replacing `<odoo base url>` with the URL of the applicable database.
.. example::
If a database has the URL `https://example.odoo.com`, the URL
`https://example.odoo.com/auth_oauth/signin` would be entered in the :guilabel:`Valid OAuth
Redirect URIs` field.
Click :guilabel:`Save changes` when finished.
Configure settings
------------------
At the far left of the page, click :menuselection:`App settings --> Basic`. This page contains
additional settings that are required before the app can be submitted for approval.
In the :guilabel:`Privacy Policy URL` field, enter `https://www.odoo.com/privacy`.
.. note::
`<https://www.odoo.com/privacy>`_ is the default privacy policy for databases hosted on Odoo.com.
Click the :guilabel:`App Icon` field to open a file upload window. From here, select and upload an
app icon.
In the :guilabel:`User data deletion` field, enter
`https://www.odoo.com/documentation/17.0/administration/odoo_accounts.html`.
.. note::
This document provides instructions on how a user can delete their Odoo account.
Lastly, click the :guilabel:`Category` field, and select :guilabel:`Business and pages` from the
drop-down menu.
Click :guilabel:`Save changes`.
.. image:: facebook/app-id.png
:align: center
:alt: An exampled of the Basic Settings page in the Meta for developers platform.
.. _users/app-id:
Capture app ID
--------------
After the app is created, and approved, select and copy the :guilabel:`App ID`. Paste this
information on a clipboard or notepad file, as it is needed in a later step to complete the setup.
Publish
-------
On the left side of the page, click :guilabel:`Publish`. Depending on the status of the connected
Facebook account, additional verification and testing steps may be required, and are listed on this
page.
After reviewing the information, click :guilabel:`Publish`.
.. seealso::
Additional information regarding Meta App Development, including further details on building,
testing, and use cases, can be found in the `Meta for developers documentation
<https://developers.facebook.com/docs/development>`_.
Odoo setup
==========
First, activate :ref:`Developer mode <developer-mode/activation>`.
Navigate to the :menuselection:`Settings app`, and scroll down to the :guilabel:`Integrations`
section. There, tick the checkbox labeled, :guilabel:`OAuth Authentication`. Click :guilabel:`Save`.
.. image:: facebook/enable-oauth.png
:align: center
:alt: The enable OAuth setting in the Settings app.
Then, sign in to the database once the login screen loads.
After successfully logging in, navigate to :menuselection:`Settings app --> Users & Companies -->
OAuth Providers`. Click :guilabel:`Facebook Graph`.
In the :guilabel:`Client ID` field, enter the :ref:`App ID <users/app-id>` from the previous
section, then tick the :guilabel:`Allowed` checkbox.
.. image:: facebook/facebook-graph.png
:align: center
:alt: The Facebook Graph record in Odoo.

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