Compare commits
625 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f51f6eed93 | |||
| 06be0ccce2 | |||
| 0112e871b7 | |||
| 43ddd1dd96 | |||
| 3af1e3deb2 | |||
| a29e0e668e | |||
| 45831e7f79 | |||
| 5b3323bdde | |||
| e73e11a5a5 | |||
| 585ba57017 | |||
| de4a765fa7 | |||
| 1719db645f | |||
| 30ae66dd30 | |||
| 013c2cec1f | |||
| f7cb1310f6 | |||
| 2b4ab4e8a6 | |||
| 442f346738 | |||
| 295f5cdae2 | |||
| dca75719cd | |||
| f8ab477b35 | |||
| e4a2864cf5 | |||
| 125574a3ca | |||
| eaa8e292b8 | |||
| f60c72b741 | |||
| f8b3cebad4 | |||
| 0f8ead563b | |||
| dca6372984 | |||
| bb362aad90 | |||
| 2d65a41753 | |||
| e90fc0fdc4 | |||
| dbbdd12bd3 | |||
| b219096563 | |||
| 291239fcf8 | |||
| cf76cdd9e6 | |||
| 6595d6e4b7 | |||
| 8f24a04242 | |||
| 196e249ecc | |||
| f1dad26394 | |||
| c4cb3866df | |||
| 3279c3efb7 | |||
| 829f6d9d58 | |||
| 1e5509387d | |||
| 77fbceec34 | |||
| 3917094efd | |||
| bc48779b6f | |||
| afba61feed | |||
| 4cf9631c50 | |||
| 5d440b0396 | |||
| ff1adb0f44 | |||
| 47aa4e1215 | |||
| 96f7d481b5 | |||
| 9c328f195a | |||
| 3a022b3efb | |||
| e302f71a2f | |||
| 78ce3838b3 | |||
| 3d34572596 | |||
| 5d6eb6ed5f | |||
| ed1d22646f | |||
| 123ec75acb | |||
| 06ab07467c | |||
| 52c652c728 | |||
| 8d3776c5f6 | |||
| 34ea72315f | |||
| 5644f37974 | |||
| 88358b1991 | |||
| ea0a0a1a96 | |||
| 8a4c5a72a0 | |||
| a8f34007a0 | |||
| 887c30d92b | |||
| 3de901b004 | |||
| ce3ea661d3 | |||
| c1346162c5 | |||
| 3d0c88ab02 | |||
| 80ea9064d9 | |||
| a01020754c | |||
| 2267fe954e | |||
| 280756f9da | |||
| 98377d18df | |||
| 0302ba1720 | |||
| e3535acd65 | |||
| 2125d8ce83 | |||
| 7e43714206 | |||
| a326104476 | |||
| 2d4fb6f390 | |||
| 9bd0998096 | |||
| 0917741401 | |||
| 94bb1a2a89 | |||
| 9253a8eefc | |||
| 28be81c956 | |||
| 5c04f31246 | |||
| 10d743a498 | |||
| c3f9422e59 | |||
| 8aa00ce3be | |||
| 4f38c4a5e3 | |||
| 4de604c7c2 | |||
| a99d971b6d | |||
| e241df3b48 | |||
| a88b04bdd6 | |||
| cfdf0961e3 | |||
| 921da7af23 | |||
| ef42b752de | |||
| d62d1586bb | |||
| 7fc3439ade | |||
| 5a7d7ac66d | |||
| 9a8549ce23 | |||
| 2873298b61 | |||
| ddb4b62222 | |||
| e55fe1e5bf | |||
| 9aafe58f7a | |||
| 6071b535fb | |||
| 3c04969ab5 | |||
| 5a813f9985 | |||
| cb9133bcc9 | |||
| c445a580c1 | |||
| eee32a7a9a | |||
| 1d32245945 | |||
| f9c186af21 | |||
| b937f99707 | |||
| 8e0c0a98dd | |||
| f1f26e5c49 | |||
| c59a4ba33e | |||
| c419fb2246 | |||
| 0ea02fb3aa | |||
| 401ca0f2f8 | |||
| a525ffea78 | |||
| 2e605c9ec8 | |||
| 75c324dd7b | |||
| 25cf47a6de | |||
| 97f41b61e0 | |||
| c463d7802f | |||
| 7f7ecd5c58 | |||
| cb8e4c4eff | |||
| f7eb9a9f5f | |||
| d87c106ac0 | |||
| acf5b72219 | |||
| 2e2d2a38fc | |||
| 1e884c19e7 | |||
| c21922398f | |||
| b6890e2ea3 | |||
| f7ee3b3297 | |||
| a536090a5a | |||
| 64dcb08876 | |||
| 94f4996784 | |||
| 4a72f331d8 | |||
| f5d62dc98d | |||
| 173132d58d | |||
| cf198d4304 | |||
| 1597ec0a78 | |||
| a1f49050a0 | |||
| 5689f7cf22 | |||
| 2b1dfa0ecc | |||
| 0647569efb | |||
| 9c0982371a | |||
| ac3cb4cc15 | |||
| 9553ec69d4 | |||
| acfe013996 | |||
| 78594f586c | |||
| d5a6a8001b | |||
| b2b20d8eaa | |||
| 2bad1daf55 | |||
| 5f022b6439 | |||
| e65d5b13f4 | |||
| 5928f01260 | |||
| 83d8da3cca | |||
| 3dc06d809e | |||
| a1e7445ae3 | |||
| 5f08fd1b5f | |||
| d38b3613c4 | |||
| d85f8a092f | |||
| b1ca867326 | |||
| ec5120d72c | |||
| 7cf191b02a | |||
| 73c901d518 | |||
| cef26a97b3 | |||
| 17db349152 | |||
| 14495eb115 | |||
| e40a98f9a0 | |||
| 774964ffb5 | |||
| 5008a03588 | |||
| d9aeff90d3 | |||
| bb4210cdbd | |||
| 6e78e1ffa9 | |||
| 4b9e94e1bd | |||
| 54ad9dbcb1 | |||
| 1156c49b39 | |||
| 3a9f14ee6c | |||
| d7d5623ca0 | |||
| 5fa943ba29 | |||
| 6c8ee4c86a | |||
| 68033fe538 | |||
| 4056586fdc | |||
| 1e4cea6737 | |||
| 70d371d75e | |||
| e51570eab5 | |||
| 38f455cdb8 | |||
| 8e4c9a1814 | |||
| 2b68cb367f | |||
| be6864e53f | |||
| 5a25364169 | |||
| a2bbd060ed | |||
| 27440d37cb | |||
| 9a249c17ba | |||
| 68cb95ee91 | |||
| 6d4fcf78a9 | |||
| e12b6ace6a | |||
| 90960a9c3f | |||
| efbf84fdb6 | |||
| 4ef77016cc | |||
| 308ea13db2 | |||
| 0d7e6cb0b8 | |||
| 0404cce0ba | |||
| 2955009bfc | |||
| b658102241 | |||
| 1806178f16 | |||
| 3f6b23c977 | |||
| 580793fcd9 | |||
| 337c5508fe | |||
| 944d7a4dcd | |||
| 4cca1f33d1 | |||
| 51265eba64 | |||
| 26608b4caf | |||
| 1b0969443c | |||
| 37b434b323 | |||
| fb6f8c626c | |||
| 48ab073cf8 | |||
| fe8b601985 | |||
| 3901c75eaf | |||
| 5916f16f76 | |||
| 896c251123 | |||
| 1ac9df84f2 | |||
| b6be8ef8d9 | |||
| e3c520245a | |||
| 247b3dcf69 | |||
| 70e046e845 | |||
| 953cc46a94 | |||
| 23f3b19c9a | |||
| 711c4af36e | |||
| fb521c8d5a | |||
| 37e9734089 | |||
| 02419d2eae | |||
| f0c9e5e53d | |||
| 15d681703f | |||
| c487dee6a4 | |||
| 6a7e04e22b | |||
| a05f07d4af | |||
| f4c091ba96 | |||
| 040e5ac760 | |||
| c32ec9eadb | |||
| b05c1b770d | |||
| f49978b435 | |||
| 12d7d051eb | |||
| 3a5500ea6e | |||
| 7af346edd9 | |||
| e89f6b7e58 | |||
| 98f91e0c55 | |||
| b69a72a926 | |||
| 754d77b883 | |||
| 2018336e35 | |||
| e81965a131 | |||
| 3a4e9ce526 | |||
| 8d8587238d | |||
| 6c41f90978 | |||
| 7da1a48184 | |||
| b27ca9b36a | |||
| abf7b11e1c | |||
| f53bc9c78a | |||
| 18a53568f6 | |||
| 99387cee4e | |||
| 95c1fb3f08 | |||
| f03534b714 | |||
| dfa9234eed | |||
| 05c74e86ac | |||
| 698fc6318c | |||
| 05b350ca3f | |||
| 5a77659d5d | |||
| 180f4f99e4 | |||
| 471e893bdf | |||
| 316db8b627 | |||
| bbf082522b | |||
| ae13ad9640 | |||
| 380ba0c92c | |||
| dc4a2c967f | |||
| 59a270eb62 | |||
| 50ec6412d3 | |||
| 3d2c4346b9 | |||
| 8b69a56991 | |||
| 8240da4d61 | |||
| 585bc13aac | |||
| 3822f7328c | |||
| f0200686e1 | |||
| dc867e5291 | |||
| 9d341e041e | |||
| e2dee27698 | |||
| a91d423673 | |||
| b462627dba | |||
| e76f3c1015 | |||
| 17b66406e2 | |||
| 013da823cc | |||
| 66c0b32954 | |||
| ca37c744bf | |||
| 5c6ded7d49 | |||
| b9c804f3ea | |||
| eab4bb492b | |||
| d07250afb9 | |||
| 7a28ebf3cc | |||
| 41c6bf4a31 | |||
| 94dd30c277 | |||
| f6692d076f | |||
| 83aaa84f4c | |||
| 12cefdf6b9 | |||
| ae7428caf2 | |||
| a67a69beae | |||
| ca2cf223ff | |||
| b4c6c86b6b | |||
| 3c0cade93e | |||
| 562cb7ff2b | |||
| dc6bd77af3 | |||
| 921b483e2e | |||
| 2bb135a92b | |||
| 4451e79f80 | |||
| 8c48d0477d | |||
| 83a09df06a | |||
| 6d21b089a5 | |||
| 03eca8171b | |||
| 24af0dd7f0 | |||
| 76cc8867de | |||
| a9d698bc41 | |||
| bb737a7470 | |||
| 6e0dc1c87f | |||
| e1d19fdbd7 | |||
| aed3e4b9c2 | |||
| 6bf27114b2 | |||
| ba84e3ed38 | |||
| d6594cd73a | |||
| f89e7e1b49 | |||
| 6757a85145 | |||
| df6833878d | |||
| 309617e288 | |||
| 62d8f8bff5 | |||
| e206c27411 | |||
| 32e90d6828 | |||
| 03a3aa8b58 | |||
| 6b7de03570 | |||
| f54e2b25ca | |||
| d083f4b533 | |||
| 9583800c49 | |||
| 3290d215d5 | |||
| dfc8b5a3b2 | |||
| de4f4944d8 | |||
| 4409cfe4d0 | |||
| 07480525a0 | |||
| 99b361f667 | |||
| d7286f230d | |||
| 0dd3b81769 | |||
| 89c38011ee | |||
| 5eaf854e7f | |||
| 33441dd3a9 | |||
| ad7b636275 | |||
| 4aee7b604d | |||
| 7f8bc62beb | |||
| 8fcfdb7479 | |||
| 68544e359a | |||
| 6232ae7fe1 | |||
| 89188e54b7 | |||
| 71aebd8b17 | |||
| db8aa35403 | |||
| 17a9731b5f | |||
| 5e2ed9fda6 | |||
| d89636d5f5 | |||
| 6d58094a36 | |||
| 8be667cae3 | |||
| 04a2fcbf64 | |||
| 96121cee3d | |||
| 3b74df87da | |||
| 36807a7722 | |||
| e4dbf7b4af | |||
| 6e75158ea9 | |||
| 1cb5aece50 | |||
| 4ea3071197 | |||
| c2fbfc4c7b | |||
| cedd35f653 | |||
| 37f5af4f9c | |||
| d365db01cf | |||
| 0954183db3 | |||
| 543bb2bab0 | |||
| 25cd0ad09c | |||
| 28250a27ed | |||
| c48640b3cb | |||
| 553350dd43 | |||
| 12e095a6d3 | |||
| 748fa168dd | |||
| 7fbd316fb1 | |||
| 68625eceb0 | |||
| 004d361b11 | |||
| 7004b6b887 | |||
| ba222cad55 | |||
| 0e34d5f5d6 | |||
| e886d9eb1e | |||
| 410949120b | |||
| 75555a6eee | |||
| 6676f2854e | |||
| 600de7bc03 | |||
| bf29ce16d2 | |||
| 1fb2659c08 | |||
| a4bb72990c | |||
| a304bc590b | |||
| 761f27ef97 | |||
| e2bcea692f | |||
| 16b845c0ef | |||
| 22a8e3ca4c | |||
| df788fc485 | |||
| 542fdceca9 | |||
| 81433b2dc2 | |||
| 79939e786b | |||
| 8691376515 | |||
| d326e4e597 | |||
| 59edb8c74d | |||
| dc43100b35 | |||
| 189b18fa2d | |||
| 3fbe44b49d | |||
| 13509a1b05 | |||
| 007d44731b | |||
| 9e70b0732e | |||
| 8e9de1c077 | |||
| 0f4ea3f182 | |||
| ac90f3ff99 | |||
| cd6c656aa0 | |||
| 020aa9f3ac | |||
| 0bdb46a964 | |||
| f868d98593 | |||
| fd881b4533 | |||
| 99049dc9fb | |||
| b6962c8349 | |||
| f0f495c564 | |||
| e1bda39e8c | |||
| b6084a8692 | |||
| 4c46e6e0d8 | |||
| 34c5e6d3e1 | |||
| 152613f6d6 | |||
| 931acb9f38 | |||
| a3b3d254f7 | |||
| d4e00dc593 | |||
| 62a075f7d3 | |||
| b5795f5a9d | |||
| 6398a0248c | |||
| 77250d66ca | |||
| 6deba15188 | |||
| 9850c5d6ea | |||
| 8b259be596 | |||
| f5850af1a1 | |||
| f400844cc2 | |||
| d53ba8c7e2 | |||
| 81792fce93 | |||
| cf5e5cb771 | |||
| 04a538494b | |||
| 768d48ce15 | |||
| dce318e2f1 | |||
| 1b6b941207 | |||
| 3fab029f13 | |||
| 1685449f61 | |||
| 180963cd89 | |||
| a8e52cd9bb | |||
| 251f69a5f6 | |||
| 8536b7ba52 | |||
| 820cf0ba01 | |||
| f4038784f9 | |||
| 041eed270e | |||
| a252436d86 | |||
| fb59c7a777 | |||
| 83724e6cb4 | |||
| 67629dcb3f | |||
| 06d7fa4fa1 | |||
| 9ff25755bd | |||
| 562f4bc381 | |||
| 555565d9d3 | |||
| edcee47fc7 | |||
| def1f89786 | |||
| 04fff2b41f | |||
| 79af1733d8 | |||
| 5df2d0d186 | |||
| d1baaf9c8b | |||
| 9309d86122 | |||
| d73f64c368 | |||
| 1cbb26a8b0 | |||
| 269ac1e7e0 | |||
| 88eb9f78cf | |||
| b458cf91d1 | |||
| 3ed37fd462 | |||
| 34ef8086af | |||
| c154b1b3e8 | |||
| bca4a70075 | |||
| 828f48ee47 | |||
| 9bcfa6f8c4 | |||
| f3bb0a0431 | |||
| 8da868e6f6 | |||
| e37362ba79 | |||
| 71ca3ebb2f | |||
| c9f53c5b88 | |||
| d56ee83834 | |||
| ade04c6543 | |||
| 8cd4b5c592 | |||
| 7773c8a71b | |||
| 20e2369065 | |||
| 9529ec2b10 | |||
| e18fadac39 | |||
| e4b6db4917 | |||
| e0bcb11554 | |||
| 70ab16d22c | |||
| 24624d3de9 | |||
| 6332b4ee53 | |||
| b51f05b616 | |||
| f8e8be285d | |||
| f34360e9da | |||
| 115d6dd528 | |||
| 0749590437 | |||
| bdb95c02b1 | |||
| 07a6723135 | |||
| 496d081a1c | |||
| 40ff399049 | |||
| f13a635c33 | |||
| 56e099fc19 | |||
| c023adc807 | |||
| 9ad539f040 | |||
| 6a9e5617fe | |||
| dcfbc7bd4e | |||
| 77502f7ca0 | |||
| d813afd26c | |||
| 74cfb9ebf6 | |||
| 1d7eee57fc | |||
| a6cfd6357c | |||
| 738f3a08f6 | |||
| 25506f395d | |||
| f235ea12f8 | |||
| e8ec7afaa4 | |||
| d8076441b7 | |||
| 749fe02b50 | |||
| e659aabc3a | |||
| 4d1d8802b1 | |||
| 8c0dbd57db | |||
| 07d64e30c8 | |||
| eb9daa4e54 | |||
| a47330a732 | |||
| c344a5df1c | |||
| a6cb76f2ad | |||
| 7ae53723af | |||
| cb473f6848 | |||
| eef59aa120 | |||
| 8c32e86971 | |||
| 05d870b7b7 | |||
| 7248a22796 | |||
| 72856d10ac | |||
| 279ce8acdd | |||
| 8aa734e7c2 | |||
| d21774e4f4 | |||
| 953ae02e49 | |||
| a7797bcb55 | |||
| 46aa0dff79 | |||
| 9a5a94061b | |||
| fa53d573f8 | |||
| 605cc79b50 | |||
| 8b00f969cd | |||
| 318eb5b04f | |||
| d6dbc4ba18 | |||
| 1ff3ad946e | |||
| 5f7815c7ae | |||
| 49a73e2c51 | |||
| 0bf005c84a | |||
| cdf397c9bc | |||
| 9a1c00b54b | |||
| 49c1a61815 | |||
| 9414d77276 | |||
| 7ae76bad42 | |||
| 23dacbb122 | |||
| 9f7fdf047c | |||
| dd501a45e6 | |||
| 4a220d61fe | |||
| a7fd40ab56 | |||
| 0384610df1 | |||
| 30a5ee74b8 | |||
| 24c0441e10 | |||
| ae454c2c58 | |||
| 3370e5dcbc | |||
| a497405fec | |||
| 5f939fb57d | |||
| ef90822f76 | |||
| ef0d3887da | |||
| 4c51026bbd | |||
| 36e161f82b | |||
| 1239eb767a | |||
| 22473247df | |||
| 2991627e1c | |||
| c2d98f96f0 | |||
| 3713f5ac77 | |||
| e42ffeb13a | |||
| ad51f95828 | |||
| afa647f419 | |||
| d1e5eaae3a | |||
| 8109f5ff85 | |||
| a369664013 | |||
| a285160693 | |||
| 678dbcec54 | |||
| 9d3e30c847 | |||
| c748109d70 | |||
| 45620744fd | |||
| 71754851a3 | |||
| 28302a1073 | |||
| 1f5a37a764 | |||
| 4017b44180 | |||
| 78ae5d6185 | |||
| f2d8b2796d | |||
| 2cf6eeb953 | |||
| fbf63527c8 | |||
| c1da9bbf11 | |||
| 1a4a9cc5d6 | |||
| 246905ab12 | |||
| 7ce506c2b2 | |||
| 5a39a14721 | |||
| de2e27f62e | |||
| 06f105215c | |||
| 906ec0988d | |||
| 9cc91f99e9 | |||
| 8fb3e7dc52 | |||
| 1cf2d7d30c | |||
| 7e1eabfddb | |||
| 50908eb7f3 |
@@ -1,122 +1,63 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:administration]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/administration.po
|
||||
source_file = locale/sources/administration.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = administration
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-16-doc:r:administration]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/administration.po
|
||||
source_file = locale/sources/administration.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:applications]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/applications.po
|
||||
source_file = locale/sources/applications.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = applications
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-16-doc:r:applications]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/applications.po
|
||||
source_file = locale/sources/applications.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:finance]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/finance.po
|
||||
source_file = locale/sources/finance.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = finance
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-16-doc:r:finance]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/finance.po
|
||||
source_file = locale/sources/finance.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:general]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/general.po
|
||||
source_file = locale/sources/general.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = general
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-16-doc:r:general]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/general.po
|
||||
source_file = locale/sources/general.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:index]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/index.po
|
||||
source_file = locale/sources/index.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = index
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-16-doc:r:index]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/index.po
|
||||
source_file = locale/sources/index.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:inventory_and_mrp]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
|
||||
source_file = locale/sources/inventory_and_mrp.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = inventory_and_mrp
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-16-doc:r:inventory_and_mrp]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
|
||||
source_file = locale/sources/inventory_and_mrp.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:marketing]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
|
||||
source_file = locale/sources/marketing.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = marketing
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-16-doc:r:marketing]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
|
||||
source_file = locale/sources/marketing.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:productivity]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
|
||||
source_file = locale/sources/productivity.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = productivity
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-16-doc:r:productivity]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
|
||||
source_file = locale/sources/productivity.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:sales]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/sales.po
|
||||
source_file = locale/sources/sales.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = sales
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-16-doc:r:sales]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/sales.po
|
||||
source_file = locale/sources/sales.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:services]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/services.po
|
||||
source_file = locale/sources/services.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = services
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-16-doc:r:services]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/services.po
|
||||
source_file = locale/sources/services.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:user_settings]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/settings.po
|
||||
source_file = locale/sources/settings.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = settings
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-16-doc:r:user_settings]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/settings.po
|
||||
source_file = locale/sources/settings.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:websites]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/websites.po
|
||||
source_file = locale/sources/websites.pot
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-17-doc:r:websites]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/websites.po
|
||||
source_file = locale/sources/websites.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = websites
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
@@ -26,7 +26,7 @@ SOURCE_DIR = content
|
||||
|
||||
HTML_BUILD_DIR = $(BUILD_DIR)/html
|
||||
ifdef VERSIONS
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/saas-16.1
|
||||
endif
|
||||
ifneq ($(CURRENT_LANG),en)
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
|
||||
|
||||
@@ -22,7 +22,7 @@ copyright = 'Odoo S.A.'
|
||||
# `version` is the version info for the project being documented, acts as replacement for |version|,
|
||||
# also used in various other places throughout the built documents.
|
||||
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
|
||||
version = release = 'master'
|
||||
version = release = 'saas-16.1'
|
||||
|
||||
# `current_branch` is the technical name of the current branch.
|
||||
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).
|
||||
@@ -213,6 +213,7 @@ sphinx.transforms.i18n.docname_to_domain = (
|
||||
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
||||
versions_names = {
|
||||
'master': "Master",
|
||||
'saas-17.1': "Odoo Online",
|
||||
'17.0': "Odoo 17",
|
||||
'saas-16.4': "Odoo Online",
|
||||
'saas-16.3': "Odoo Online",
|
||||
@@ -478,8 +479,24 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
|
||||
_version = _version or app.config.version
|
||||
_lang = _lang or app.config.language or 'en'
|
||||
_canonical_page = f'{pagename}.html'
|
||||
|
||||
# legal translations have different URLs schemes as they are not managed on transifex
|
||||
# e.g. FR translation of /terms/enterprise => /fr/terms/enterprise_fr
|
||||
if pagename.startswith('legal/terms/'):
|
||||
if _lang in legal_translations and not pagename.endswith(f"_{_lang}"):
|
||||
# remove language code for current translation, set target one
|
||||
_page = re.sub("_[a-z]{2}$", "", pagename)
|
||||
if 'terms/i18n' not in _page:
|
||||
_page = _page.replace("/terms/", "/terms/i18n/")
|
||||
_canonical_page = f'{_page}_{_lang}.html'
|
||||
elif _lang == 'en' and pagename.endswith(tuple(f"_{l}" for l in legal_translations)):
|
||||
# remove language code for current translation, link to original EN one
|
||||
_page = re.sub("_[a-z]{2}$", "", pagename)
|
||||
_canonical_page = f'{_page.replace("/i18n/", "/")}.html'
|
||||
|
||||
if app.config.is_remote_build:
|
||||
_canonical_page = _canonical_page.replace('index.html', '')
|
||||
|
||||
return f'{_root}' \
|
||||
f'{f"/{_version}" if app.config.versions else ""}' \
|
||||
f'{f"/{_lang}" if _lang != "en" else ""}' \
|
||||
|
||||
@@ -47,3 +47,4 @@ functionalities, including functional support, upgrades, and hosting. `Pricing
|
||||
install/deploy
|
||||
install/cdn
|
||||
install/email_gateway
|
||||
install/geo_ip
|
||||
|
||||
@@ -334,6 +334,9 @@ in ``/etc/nginx/sites-enabled/odoo.conf`` set:
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
|
||||
proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8
|
||||
}
|
||||
|
||||
# Redirect requests to odoo backend server
|
||||
@@ -346,10 +349,8 @@ in ``/etc/nginx/sites-enabled/odoo.conf`` set:
|
||||
proxy_redirect off;
|
||||
proxy_pass http://odoo;
|
||||
|
||||
# Enable HSTS
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
|
||||
# requires nginx 1.19.8
|
||||
proxy_cookie_flags session_id samesite=lax secure;
|
||||
proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8
|
||||
}
|
||||
|
||||
# common gzip
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
==========================================
|
||||
Geo IP Installation (On-Premises Database)
|
||||
==========================================
|
||||
======
|
||||
Geo IP
|
||||
======
|
||||
|
||||
.. note::
|
||||
This documentation only applies to On-premise databases.
|
||||
|
||||
Installation
|
||||
============
|
||||
@@ -32,8 +35,8 @@ Installation
|
||||
.. seealso::
|
||||
- :doc:`CLI documentation </developer/reference/cli>`.
|
||||
|
||||
Test GeoIP Geolocation In Odoo Website
|
||||
======================================
|
||||
Test GeoIP geolocation in your Odoo website
|
||||
===========================================
|
||||
|
||||
Edit a web page to include some geo-ip information such as the country name of the current
|
||||
request IP address. To do so:
|
||||
@@ -16,8 +16,8 @@ Official **Community** and **Enterprise** packages can be downloaded from the `O
|
||||
<https://www.odoo.com/page/download>`_.
|
||||
|
||||
.. note::
|
||||
It is required to be logged in as a paying customer or partner to download the Enterprise
|
||||
packages.
|
||||
It is required to be logged in as a paying on-premise customer or partner to download the
|
||||
Enterprise packages.
|
||||
|
||||
.. _install/packages/linux:
|
||||
|
||||
|
||||
@@ -118,11 +118,7 @@ Prepare
|
||||
Python
|
||||
~~~~~~
|
||||
|
||||
Odoo requires **Python 3.10** or later to run.
|
||||
|
||||
.. versionchanged:: 17
|
||||
Minimum requirement updated from Python 3.7 to Python 3.10.
|
||||
|
||||
Odoo requires **Python 3.7** or later to run.
|
||||
|
||||
.. tabs::
|
||||
|
||||
|
||||
@@ -15,4 +15,5 @@ Maintain
|
||||
maintain/hosting_changes
|
||||
maintain/odoo_online
|
||||
maintain/on_premise
|
||||
maintain/neutralized_database
|
||||
maintain/supported_versions
|
||||
|
||||
@@ -52,7 +52,7 @@ able to read (IMAP) and send (SMTP) emails in the Microsoft 365 setup. First, cl
|
||||
Add a Permission` button and select :guilabel:`Microsoft Graph` under :guilabel:`Commonly Used
|
||||
Microsoft APIs`. After, select the :guilabel:`Delegated Permissions` option.
|
||||
|
||||
In the search bar, search for the following :guilabel:`Deregulated permissions` and click
|
||||
In the search bar, search for the following :guilabel:`Delegated permissions` and click
|
||||
:guilabel:`Add permissions` for each one:
|
||||
|
||||
- :guilabel:`SMTP.Send`
|
||||
|
||||
@@ -2,293 +2,255 @@
|
||||
Domain names
|
||||
============
|
||||
|
||||
A **domain name** works as an address for your website. It makes the Internet much more accessible
|
||||
as it allows users to type a meaningful web address, such as ``www.odoo.com``, rather than its
|
||||
server's IP address with a series of numbers.
|
||||
Domain names are text-based addresses identifying online locations, such as websites. They provide a
|
||||
more memorable and recognizable way for people to navigate the internet than numerical IP addresses.
|
||||
|
||||
You can use a custom domain name to access your Odoo database and websites:
|
||||
**Odoo Online** and **Odoo.sh** databases use a **subdomain** of the `odoo.com` **domain** by
|
||||
default (e.g., `mycompany.odoo.com`).
|
||||
|
||||
- By :ref:`registering a free domain name with Odoo <domain-name/odoo-register>` (for Odoo Online
|
||||
databases)
|
||||
- By :ref:`configuring a custom domain that you already own <domain-name/existing>`.
|
||||
|
||||
.. note::
|
||||
Odoo Online and Odoo.sh databases, including their websites, use by default a subdomain of
|
||||
``odoo.com`` for both the URL and the emails (e.g., ``https://example.odoo.com``).
|
||||
|
||||
.. important::
|
||||
Odoo offers a :ref:`free custom domain name <domain-name/odoo-register>` to all Odoo Online
|
||||
databases for one year. Visitors can then access your website with an address such as
|
||||
``www.example.com`` rather than the default ``example.odoo.com``.
|
||||
However, you can use a custom domain name instead by :ref:`registering a free domain name
|
||||
<domain-name/register>` (only available for Odoo Online databases) or by :ref:`configuring a
|
||||
domain name you already own <domain-name/existing>`.
|
||||
|
||||
.. seealso::
|
||||
- `Odoo Tutorials: Register a Free Domain Name
|
||||
<https://www.odoo.com/slides/slide/register-a-free-domain-name-1663>`_
|
||||
- `Odoo Quick Tips: Get a free domain name! <https://www.youtube.com/watch?v=eAfgeNOHLP4>`_
|
||||
`Odoo Tutorials: Register a free domain name [video]
|
||||
<https://www.odoo.com/slides/slide/register-a-free-domain-name-1663>`_
|
||||
|
||||
.. _domain-name/about:
|
||||
|
||||
About domain names
|
||||
==================
|
||||
|
||||
Having a **good domain name** is as important to your branding as the name of your business or
|
||||
organization as it is the first thing your visitors will notice. We recommend you keep them *simple,
|
||||
short, easy to remember and spell*.
|
||||
|
||||
A **subdomain** is a domain that is a part of another domain. It often refers to the additional part
|
||||
that comes before the main domain name. Traditionally, most websites use the ``www.`` subdomain,
|
||||
but any string of letters can be used as well. You can use subdomains to direct your visitors to
|
||||
other websites than your main website or to specific pages (e.g., ``experience.odoo.com`` points to
|
||||
a specific page.)
|
||||
|
||||
All domain names are referenced in the **Domain Name System**, or **DNS**, which works as a giant
|
||||
directory for the Internet. There are many DNS servers, so any modification to the DNS can take up
|
||||
to 72 hours to propagate worldwide on all servers.
|
||||
|
||||
.. _domain-name/indexing:
|
||||
|
||||
Indexing of domain names by search engines
|
||||
------------------------------------------
|
||||
|
||||
Search engines, such as Google and Bing, rely on web crawlers (:dfn:`robots that explore and analyze
|
||||
the web`) to index all websites and their related domain names. These crawlers discover new URLs
|
||||
thanks to links on known web pages. As a result, search engines should index domain names
|
||||
automatically after a while, as long as their URLs are mentioned elsewhere on the Internet.
|
||||
|
||||
Improving the appearance and positioning of web pages on search engines is a practice named "Search
|
||||
Engine Optimization" (SEO).
|
||||
|
||||
.. tip::
|
||||
Adding relevant content, optimizing metadata, and building high-quality backlinks can all help
|
||||
improve a website's search engine visibility.
|
||||
|
||||
Some search engines provide tools for web admins, such as
|
||||
`Google Search Console <https://search.google.com/search-console>`_ and
|
||||
`Bing Webmaster Tools <https://www.bing.com/webmasters>`_, to help you analyze and improve your
|
||||
page ranking. To use these services, you must prove that you are the owner of your domain name. One
|
||||
way to verify the ownership of your domain name is by adding a DNS record. You can do this for
|
||||
:ref:`domain names registered with Odoo <domain-name/odoo-manage>` and for domain names managed by
|
||||
other providers.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/websites/website/pages/seo`
|
||||
- `Google Search Console Help - Verify your site ownership <https://support.google.com/webmasters/answer/9008080>`_
|
||||
- `Bing Webmaster Tools - Add and Verify site <https://www.bing.com/webmasters/help/add-and-verify-site-12184f8b>`_
|
||||
|
||||
.. _domain-name/odoo-register:
|
||||
.. _domain-name/register:
|
||||
|
||||
Register a free domain name with Odoo
|
||||
=====================================
|
||||
|
||||
You can register a domain name for your Odoo Online database directly from Odoo Website or your
|
||||
database manager.
|
||||
To register a one-year free domain name for your Odoo Online database, sign in to your account and
|
||||
go to the `database manager <https://www.odoo.com/my/databases>`_. Click the gear icon
|
||||
(:guilabel:`⚙️`) next to the database name and select :guilabel:`Domain Names`.
|
||||
|
||||
.. image:: domain_names/domain-names.png
|
||||
:alt: Accessing a database's domain names configuration
|
||||
|
||||
Search for the desired domain name and check its availability.
|
||||
|
||||
.. image:: domain_names/domain-search.png
|
||||
:alt: Searching for an available domain name
|
||||
|
||||
.. tip::
|
||||
Ensure the Website app is installed if the domain name registration option does not appear.
|
||||
|
||||
Select the desired domain name, fill in the :guilabel:`Domain Owner` form, and click
|
||||
:guilabel:`Register`. The chosen domain name is directly linked to the database, but you still need
|
||||
to :ref:`map your domain name to your Odoo website <domain-name/db-map>`.
|
||||
|
||||
.. image:: domain_names/domain-owner.png
|
||||
:alt: Filling in the domain owner information
|
||||
|
||||
.. important::
|
||||
- Your domain name is **free for one year** if you register it with Odoo!
|
||||
- The domain name is registered with `Gandi <https://www.gandi.net/>`_, the domain name
|
||||
registrar.
|
||||
- You are the owner of the domain name and can use it for other purposes.
|
||||
- Odoo manages payment and technical support for you.
|
||||
- This offer doesn't include any mailbox. However, you can :ref:`configure your MX records
|
||||
<domain-name/odoo-manage>` to use your own email server or solution such as Google Workspace.
|
||||
A verification email from `noreply@domainnameverification.net` will be sent to the email address
|
||||
provided in the :guilabel:`Domain Owner` form. It is essential to verify your email address to
|
||||
keep the domain active and receive the renewal quote before expiration.
|
||||
|
||||
To do so, go to :menuselection:`Website --> Domain Name`. Alternatively, open your `database manager
|
||||
<https://www.odoo.com/my/databases>`_, click on the :guilabel:`settings` button next to your
|
||||
database, then on :guilabel:`Domain names`.
|
||||
|
||||
.. image:: domain_names/register-menu.png
|
||||
:align: center
|
||||
:alt: Clicking on Domain Names from an Odoo website
|
||||
|
||||
Search for the domain name of your choice to check its availability, then select the one you want to
|
||||
register for your website.
|
||||
|
||||
.. image:: domain_names/register-search.png
|
||||
:align: center
|
||||
:alt: The search of the domain name example.com shows which associated domains are available.
|
||||
|
||||
Next, fill in the form with your information to become the domain name owner.
|
||||
|
||||
Your domain name is directly linked to your database, but you still have to :ref:`map your domain
|
||||
name with your website <domain-name/website-map>`.
|
||||
The domain name registration is free for the first year. After this period, Odoo will continue to
|
||||
manage the domain in partnership with **Gandi.net**, the domain name registrar, and you will be
|
||||
charged `Gandi.net's renewal rate <https://www.gandi.net/en/domain>`_. Odoo sends a renewal
|
||||
quotation every year to the email address mentioned in the :guilabel:`Domain Owner` form several
|
||||
weeks before the expiration date of the domain. The domain is renewed automatically when the
|
||||
quotation is confirmed.
|
||||
|
||||
.. note::
|
||||
- Free domain names are also available for free Odoo Online databases (if you installed one app
|
||||
only, for example). In this case, Odoo reviews your request and your website to avoid abuse.
|
||||
This process can take several days due to the success of the offer.
|
||||
- This is not available for Odoo.sh databases yet.
|
||||
- The offer is only available for **Odoo Online** databases.
|
||||
- The offer is limited to **one** domain name per client.
|
||||
- The offer is limited to the registration of a **new** domain name.
|
||||
- The offer is available to *One App Free* plans. Ensure that your website contains enough
|
||||
original content for Odoo to verify that your request is legitimate and respects `Odoo's
|
||||
Acceptable Use Policy <https://www.odoo.com/acceptable-use>`_. Given the high number of
|
||||
requests, it can take Odoo several days to review them.
|
||||
|
||||
.. _domain-name/odoo-manage:
|
||||
.. _domain-name/register-dns:
|
||||
|
||||
Manage your domain name registered with Odoo
|
||||
--------------------------------------------
|
||||
DNS records
|
||||
-----------
|
||||
|
||||
To manage the DNS records of your domain name registered with Odoo or to visualize the contacts
|
||||
associated with it, open your `database manager <https://www.odoo.com/my/databases>`_, click on the
|
||||
:guilabel:`settings` button next to your database, on :guilabel:`Domain names`, and then on
|
||||
:guilabel:`Contacts` or :guilabel:`DNS`.
|
||||
To manage your free domain name :abbr:`DNS (domain name system)` records, open the `database manager
|
||||
<https://www.odoo.com/my/databases>`_, click the gear icon (:guilabel:`⚙️`) next to the database
|
||||
name, select :guilabel:`Domain Names`, and click :guilabel:`DNS`.
|
||||
|
||||
.. image:: domain_names/manage.png
|
||||
:align: center
|
||||
:alt: Management of the domain names linked to an Odoo database
|
||||
- :guilabel:`A`: the A record holds the IP address of the domain. It is automatically created and
|
||||
**cannot** be edited or deleted.
|
||||
- :guilabel:`CNAME`: CNAME records forward one domain or subdomain to another domain. One is
|
||||
automatically created to map the `www.` subdomain to the database. If the database is renamed, the
|
||||
CNAME record **must** also be renamed.
|
||||
- :guilabel:`MX`: MX records instruct servers on where to deliver emails.
|
||||
- :guilabel:`TXT`: TXT records can be used for different purposes (e.g., to verify domain name
|
||||
ownership).
|
||||
|
||||
Any modification to the DNS records can take up to **72 hours** to propagate worldwide on all
|
||||
servers.
|
||||
|
||||
.. note::
|
||||
Please `submit a support ticket <https://www.odoo.com/help>`_ if you need further assistance to
|
||||
manage your domain name.
|
||||
`Submit a support ticket <https://www.odoo.com/help>`_ if you need assistance to manage your
|
||||
domain name.
|
||||
|
||||
Mailbox
|
||||
-------
|
||||
|
||||
The one-year free domain name offer does **not** include a mailbox. There are two options to link
|
||||
your domain name with a mailbox.
|
||||
|
||||
Use a subdomain
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
You can create a subdomain (e.g., `subdomain.yourdomain.com`) to use as an alias domain for the
|
||||
database. It allows users to create records in the database from emails received on their
|
||||
`email@subdomain.yourdomain.com` alias.
|
||||
|
||||
To do so, open the `database manager <https://www.odoo.com/my/databases>`_, click the gear icon
|
||||
(:guilabel:`⚙️`) next to the database name, and go to :menuselection:`Domain Names --> DNS --> Add
|
||||
DNS record --> CNAME`. Next, enter the desired subdomain in the :guilabel:`Name` field (e.g.,
|
||||
`subdomain`), the original database domain with a period at the end (e.g., `mycompany.odoo.com.`) in
|
||||
the :guilabel:`Content` field, and click :guilabel:`Add record`.
|
||||
|
||||
Then, add the alias domain as your *own domain* by clicking :guilabel:`Use my own domain`, entering
|
||||
the alias domain (e.g., `subdomain.yourdomain.com`), clicking :guilabel:`Verify`, and then
|
||||
:guilabel:`I confirm, it's done`.
|
||||
|
||||
Finally, go to your database and open the :guilabel:`Settings`. Enable :guilabel:`Custom Email
|
||||
Servers` field, enter the :guilabel:`Alias Domain` (e.g., `subdomain.yourdomain.com`) and click
|
||||
:guilabel:`Save`.
|
||||
|
||||
Use an external email provider
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To use an external email provider, you should configure an MX record. To do so, open the `database
|
||||
manager <https://www.odoo.com/my/databases>`_, click the gear icon (:guilabel:`⚙️`) next to the
|
||||
database name, click :menuselection:`Domain Names --> DNS --> Add DNS record --> MX`. The values you
|
||||
should enter for the :guilabel:`Name`, :guilabel:`Content`, and :guilabel:`Priority` fields depend
|
||||
on the external email provider.
|
||||
|
||||
.. seealso::
|
||||
- `Google Workspace: MX record values <https://support.google.com/a/answer/174125?hl=en>`_
|
||||
- `Outlook and Exchange Online: Add an MX record for email <https://learn.microsoft.com/en-us/microsoft-365/admin/get-help-with-domains/create-dns-records-at-any-dns-hosting-provider?view=o365-worldwide#add-an-mx-record-for-email-outlook-exchange-online>`_
|
||||
|
||||
.. _domain-name/existing:
|
||||
|
||||
Configure your existing domain name
|
||||
===================================
|
||||
Configure an existing domain name
|
||||
=================================
|
||||
|
||||
If you already own a domain name, you can use it to point to your website.
|
||||
If you already have a domain name, you can use it for your Odoo website.
|
||||
|
||||
To avoid any issue with the :ref:`SSL certificate validation <domain-name/ssl>`, we highly recommend
|
||||
that you proceed with the following actions in this order:
|
||||
.. warning::
|
||||
It is strongly recommended to follow **in order** these three steps to avoid any :ref:`SSL
|
||||
certificate validation <domain-name/ssl>` issues:
|
||||
|
||||
#. :ref:`Add a CNAME record <domain-name/cname>` on your domain name's DNS zone.
|
||||
#. :ref:`Map your domain name with your Odoo database <domain-name/db-map>`.
|
||||
#. :ref:`Map your domain name with your Odoo website <domain-name/website-map>`.
|
||||
#. :ref:`Add a CNAME record <domain-name/cname>`
|
||||
#. :ref:`Map your domain name to your Odoo database <domain-name/db-map>`
|
||||
#. :ref:`Map your domain name to your Odoo website <domain-name/website-map>`
|
||||
|
||||
.. _domain-name/cname:
|
||||
|
||||
Add a CNAME record
|
||||
------------------
|
||||
|
||||
A **CNAME record** is a type of DNS record that points to the domain of another website rather than
|
||||
directly to an IP address.
|
||||
|
||||
You need a CNAME record that points to your Odoo database. The requirements are detailed in your
|
||||
database manager.
|
||||
Creating a CNAME record to forward your domain name to the address of your Odoo database is
|
||||
required.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Odoo Online
|
||||
|
||||
The target address is the current address of your database, as defined at its creation (e.g.,
|
||||
``example.odoo.com``)
|
||||
The CNAME record's target address should be your database's address as defined at its creation
|
||||
(e.g., `mycompany.odoo.com`).
|
||||
|
||||
.. group-tab:: Odoo.sh
|
||||
|
||||
Your project's main address is defined in :menuselection:`Settings --> Project Name`.
|
||||
The CNAME record's target address can be the project's main address, which can be found on
|
||||
Odoo.sh by going to :menuselection:`Settings --> Project Name`, or a specific branch
|
||||
(production, staging or development) by going to :menuselection:`Branches --> select the
|
||||
branch --> Settings --> Custom domains`, and clicking :guilabel:`How to set up my domain?`. A
|
||||
message indicates which address your CNAME record should target.
|
||||
|
||||
If you want to target a specific branch (production, staging or development), go to
|
||||
:menuselection:`Branches --> select your branch --> Settings --> Custom domains`, and click on
|
||||
:guilabel:`How to set up my domain?`. A message indicates which address your CNAME record
|
||||
should target.
|
||||
The specific instructions depend on your DNS hosting service.
|
||||
|
||||
#. Open your domain name's manager dashboard.
|
||||
#. Open the **DNS zone** management page for the domain name you want to configure.
|
||||
#. Create a **CNAME record** pointing to the address of your database.
|
||||
.. seealso::
|
||||
- `GoDaddy: Add a CNAME record <https://www.godaddy.com/help/add-a-cname-record-19236>`_
|
||||
- `Namecheap: How to create a CNAME record for your domain <https://www.namecheap.com/support/knowledgebase/article.aspx/9646/2237/how-to-create-a-cname-record-for-your-domain>`_
|
||||
- `OVHcloud: Add a new DNS record <https://docs.ovh.com/us/en/domains/web_hosting_how_to_edit_my_dns_zone/#add-a-new-dns-record>`_
|
||||
- `Cloudflare: Manage DNS records
|
||||
<https://support.cloudflare.com/hc/en-us/articles/360019093151>`_
|
||||
|
||||
While Odoo suggests creating a CNAME record for your ``www.`` subdomain (``www.example.com``), you
|
||||
can of course use any domain name of your choice, with any subdomain (e.g.,
|
||||
``anything.example.com``).
|
||||
Creating a CNAME record to map the `www` subdomain (`www.yourdomain.com`) as some visitors are used
|
||||
to typing `www.` before entering a domain name.
|
||||
|
||||
.. example::
|
||||
You own the domain name ``example.com``, and you have an Odoo Online database at the address
|
||||
``example.odoo.com``. You want to access your Odoo database primarily with the domain
|
||||
``www.example.com`` but also with the :ref:`naked domain <domain-name/naked-domain>`
|
||||
``example.com``.
|
||||
You own the domain name `yourdomain.com`, and your Odoo Online database's address is
|
||||
`mycompany.odoo.com`. You want to access your Odoo database primarily with the domain
|
||||
`www.yourdomain.com` but also with the naked domain :dfn:`(a domain name without any subdomains
|
||||
or prefixes)` `yourdomain.com`.
|
||||
|
||||
To do so, you create a CNAME record for the ``www`` subdomain, with ``example.odoo.com`` as the
|
||||
target. The DNS zone manager generates the following rule and adds it to your DNS zone: ``www IN
|
||||
CNAME example.odoo.com.``
|
||||
|
||||
You also create a redirection from ``example.com`` to ``wwww.example.com``.
|
||||
|
||||
Your new DNS records are propagated to all DNS servers.
|
||||
|
||||
.. note::
|
||||
Here are some specific guidelines to create a CNAME record:
|
||||
|
||||
- `GoDaddy <https://www.godaddy.com/help/add-a-cname-record-19236>`_
|
||||
- `Namecheap <https://www.namecheap.com/support/knowledgebase/article.aspx/9646/2237/how-to-create-a-cname-record-for-your-domain>`_
|
||||
- `OVH <https://docs.ovh.com/us/en/domains/web_hosting_how_to_edit_my_dns_zone/#add-a-new-dns-record>`_
|
||||
- `CloudFlare <https://support.cloudflare.com/hc/en-us/articles/360019093151>`_
|
||||
- `Google Domains <https://support.google.com/domains/answer/3290350?hl=en>`_
|
||||
|
||||
.. _domain-name/naked-domain:
|
||||
|
||||
Naked domain
|
||||
~~~~~~~~~~~~
|
||||
|
||||
A **naked domain** is a domain name that doesn't have any subdomain at the beginning of the address
|
||||
(e.g., ``odoo.com`` instead of ``www.odoo.com``).
|
||||
|
||||
You may want your naked domain to redirect to your website as some visitors may not type the full
|
||||
domain name to access your website.
|
||||
|
||||
#. Open your domain name's manager dashboard.
|
||||
#. Create a **redirection** from the naked domain (``example.com``) to your main domain name
|
||||
(``www.example.com``).
|
||||
|
||||
.. note::
|
||||
Depending on your domain name registrar, this redirection may be already pre-configured.
|
||||
To do so, create a CNAME record for the `www` subdomain, with `mycompany.odoo.com` as the
|
||||
target. Next, create a redirect (301 permanent or visible redirect) to redirect visitors from
|
||||
`yourdomain.com` to `wwww.yourdomain.com`.
|
||||
|
||||
.. _domain-name/db-map:
|
||||
|
||||
Map your domain name with your Odoo database
|
||||
--------------------------------------------
|
||||
Map a domain name to an Odoo database
|
||||
-------------------------------------
|
||||
|
||||
.. warning::
|
||||
Ensure you have :ref:`added a CNAME record <domain-name/cname>` to your domain name's DNS
|
||||
**before** mapping your domain name to your Odoo database.
|
||||
|
||||
Failing to do so may prevent the validation of the :ref:`SSL certificate <domain-name/ssl>` and
|
||||
could result in a *certificate name mismatch* error. Web browsers often display this as a
|
||||
warning, such as *"Your connection is not private"*.
|
||||
|
||||
If you encounter this error after mapping the domain name to your database, wait up to five
|
||||
days, as the validation may still happen. If not, you can `submit a support ticket
|
||||
<https://www.odoo.com/help>`_, including screenshots of your CNAME records.
|
||||
|
||||
.. tabs::
|
||||
|
||||
.. group-tab:: Odoo Online
|
||||
|
||||
Open your `database manager <https://www.odoo.com/my/databases>`_, click on the
|
||||
:guilabel:`settings` button next to your database, on :guilabel:`Domain names`, and then on
|
||||
:guilabel:`Use my own domain` at the bottom of the right column.
|
||||
Open the `database manager <https://www.odoo.com/my/databases>`_, click the gear icon
|
||||
(:guilabel:`⚙️`) next to the database name, and go to :menuselection:`Domain Names --> Use my
|
||||
own domain`. Then, enter the domain name (e.g., `yourdomain.com`), click :guilabel:`Verify`
|
||||
and :guilabel:`I confirm, it's done`.
|
||||
|
||||
Type the domain name you want to add to this database, then click on :guilabel:`Verify` to
|
||||
check if the CNAME record is correctly configured. Once done, click on :guilabel:`I confirm,
|
||||
it's done`.
|
||||
|
||||
.. image:: domain_names/online-map.png
|
||||
:align: center
|
||||
:alt: Verification of the CNAME records of a domain name before mapping it with a database
|
||||
.. image:: domain_names/map-database-online.png
|
||||
:alt: Mapping a domain name to an Odoo Online database
|
||||
|
||||
.. group-tab:: Odoo.sh
|
||||
|
||||
Go to :menuselection:`Branches --> select your branch --> Settings --> Custom domains`, type
|
||||
the domain name you want to add to this database, then click on :guilabel:`Add domain`.
|
||||
On Odoo.sh, go to :menuselection:`Branches --> select your branch --> Settings --> Custom
|
||||
domains`, type the domain name to add, then click :guilabel:`Add domain`.
|
||||
|
||||
.. image:: domain_names/odoo-sh-map.png
|
||||
:align: center
|
||||
:alt: Mapping a domain name with an Odoo.sh branch
|
||||
.. image:: domain_names/map-database-sh.png
|
||||
:alt: Mapping a domain name to an Odoo.sh branch
|
||||
|
||||
.. seealso::
|
||||
- :ref:`Odoo.sh branches: settings tab <odoosh-gettingstarted-branches-tabs-settings>`
|
||||
|
||||
.. warning::
|
||||
Make sure to :ref:`add a CNAME record <domain-name/cname>` to your domain name's DNS **before**
|
||||
mapping your domain name with your Odoo database.
|
||||
|
||||
Failing to do so may impede the validation of the :ref:`SSL certificate <domain-name/ssl>` and
|
||||
would result in a *certificate name mismatch* error. This is often displayed by web browsers as a
|
||||
warning such as *"Your connection is not private"*.
|
||||
|
||||
If this is the case and you have added the domain name to your database's settings less than five
|
||||
days ago, wait 24 hours as the validation may still happen. Otherwise, please `submit a support
|
||||
ticket <https://www.odoo.com/help>`_ including screenshots of your CNAME records.
|
||||
:ref:`Odoo.sh branches: settings tab <odoosh-gettingstarted-branches-tabs-settings>`
|
||||
|
||||
.. _domain-name/ssl:
|
||||
|
||||
SSL encryption (HTTPS protocol)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
**SSL encryption** is an encryption-based Internet security protocol. It allows your visitors to
|
||||
navigate your website through a secure connection, which appears as an ``https://`` protocol at the
|
||||
beginning of your web address, rather than a non-secure ``http://`` protocol.
|
||||
**SSL encryption** allows visitors to navigate a website through a secure connection, which appears
|
||||
as the *https://* protocol at the beginning of a web address rather than the non-secure *http://*
|
||||
protocol.
|
||||
|
||||
Odoo generates a separate SSL certificate for each domain :ref:`mapped in the database manager
|
||||
<domain-name/db-map>`, using integration with `Let's Encrypt Certificate Authority and ACME protocol
|
||||
Odoo generates a separate SSL certificate for each domain :ref:`mapped to a database
|
||||
<domain-name/db-map>` using `Let's Encrypt's certificate authority and ACME protocol
|
||||
<https://letsencrypt.org/how-it-works/>`_.
|
||||
|
||||
.. note::
|
||||
- The certificate generation may take up to 24h.
|
||||
- Several attempts to validate your certificate are made during the five days following the
|
||||
moment you add your domain name in your database's settings.
|
||||
- If you already use another service, you can keep using it or simply change for Odoo.
|
||||
- Certificate generation may take up to 24 hours.
|
||||
- Several attempts to validate your certificate are made for five days after you map your domain
|
||||
name to your database.
|
||||
- If you use another service, you can keep using it or change to Odoo's.
|
||||
|
||||
.. important::
|
||||
No SSL certificate is generated for naked domains :dfn:`(domain names without any subdomains
|
||||
or prefixes)`.
|
||||
|
||||
.. _domain-name/web-base-url:
|
||||
|
||||
@@ -296,71 +258,57 @@ Web base URL of a database
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. note::
|
||||
If you have Odoo Website, you can disregard this part and directly :ref:`map your domain name
|
||||
with your website <domain-name/website-map>`.
|
||||
If the Website app is installed on your database, skip this section and continue from the
|
||||
:ref:`Map a domain name to a website <domain-name/website-map>` section.
|
||||
|
||||
The **web base URL** of a database, or **root URL** affects your main website address and all the
|
||||
The *web base URL* or root URL of a database affects your main website address and all the
|
||||
links sent to your customers (e.g., quotations, portal links, etc.).
|
||||
|
||||
To configure it, access your Odoo database with your custom address, then log in as an administrator
|
||||
of your database (any user in the *Settings* group) from the login screen.
|
||||
To make your custom domain name the *web base URL* of your database, access your database using your
|
||||
custom domain name and log in as an administrator :dfn:`(a user part of the Settings access right
|
||||
group under Administration)`.
|
||||
|
||||
.. warning::
|
||||
Connecting to your database with the original Odoo subdomain address (e.g., ``example.odoo.com``
|
||||
also updates the web base URL of your database. See below to prevent these automatic updates.
|
||||
|
||||
Alternatively, you can do it manually. To do so, activate the :ref:`developer mode
|
||||
<developer-mode>`, then go to :menuselection:`Settings --> Technical --> System Parameters`.
|
||||
|
||||
Find the key called ``web.base.url`` (or create it if it does not exist) and enter the full address
|
||||
of your website as value, such as ``https://www.example.com``.
|
||||
If you access your database with the original Odoo address (e.g., `mycompany.odoo.com`), the *web
|
||||
base URL* of your database will be updated accordingly. To prevent the automatic update of the
|
||||
*web base URL* when an administrator logs in to the database, activate the :ref:`developer mode
|
||||
<developer-mode>`, go to :menuselection:`Settings --> Technical --> System Parameters --> New`,
|
||||
and enter `web.base.url.freeze` as the :guilabel:`Key` and `True` as the :guilabel:`Value`.
|
||||
|
||||
.. note::
|
||||
The URL must include the protocol ``https://`` (or ``http://``) and must not end with a slash
|
||||
(``/``).
|
||||
|
||||
To prevent the automatic update of the web base URL when an administrator logs in the database, you
|
||||
can create the following System Parameter:
|
||||
|
||||
- key: ``web.base.url.freeze``
|
||||
- value: ``True``
|
||||
You can also set the web base URL manually. To do so, activate the :ref:`developer mode
|
||||
<developer-mode>`, go to :menuselection:`Settings --> Technical --> System Parameters`, and
|
||||
search for the `web.base.url` key (create it if necessary) and enter the full address of your
|
||||
website as the value (e.g., `https://www.yourdomain.com`). The URL must include the protocol
|
||||
`https://` (or `http://`) and *not* end with a slash (`/`).
|
||||
|
||||
.. _domain-name/website-map:
|
||||
|
||||
Map your domain name with your website
|
||||
======================================
|
||||
Map a domain name to an Odoo website
|
||||
------------------------------------
|
||||
|
||||
Mapping your domain name to your website isn't the same as mapping it with your database:
|
||||
Mapping your domain name to your website is different than mapping it to your database:
|
||||
|
||||
- It defines your domain name as the main one for your website, helping search engines to index your
|
||||
website properly.
|
||||
- It defines your domain name as the base URL for your database, including the portal links sent by
|
||||
website correctly.
|
||||
- It defines your domain name as the base URL for your database, including portal links sent by
|
||||
email to your customers.
|
||||
- If you have multiple websites, it maps your domain name with the appropriate website.
|
||||
- If you have multiple websites, it maps your domain name to the appropriate website.
|
||||
|
||||
Go to :menuselection:`Website --> Configuration --> Settings --> Website Info`. If you have multiple
|
||||
websites, select the one you want to configure.
|
||||
|
||||
In the :guilabel:`Domain` field, fill in the web address of your website (e.g.,
|
||||
``https://www.example.com``) and click on :guilabel:`Save`.
|
||||
|
||||
.. image:: domain_names/website-settings.png
|
||||
:align: center
|
||||
:alt: Configuring https://www.example.com as the Domain of the website
|
||||
Go to :menuselection:`Website --> Configuration --> Settings`. If you have multiple websites, select
|
||||
the one you want to configure. In the :guilabel:`Domain` field, enter the address of your website
|
||||
(e.g., `https://www.yourdomain.com`) and :guilabel:`Save`.
|
||||
|
||||
.. warning::
|
||||
Mapping your domain name with your Odoo website prevents Google from indexing both your custom
|
||||
domain name ``www.example.com`` and your original odoo database address ``example.odoo.com``.
|
||||
Mapping your domain name to your Odoo website prevents Google Search from indexing your original
|
||||
database address (e.g., `mycompany.odoo.com`).
|
||||
|
||||
If both addresses are already indexed, it may take some time before Google removes the indexation
|
||||
of the second address. You may also try using the `Google Search Console
|
||||
<https://search.google.com/search-console>`_ to fix this.
|
||||
If both addresses are already indexed, it may take some time before the indexation of the second
|
||||
address is removed from Google Search. You can use the `Google Search Console
|
||||
<https://search.google.com/search-console/welcome>`_ to fix the issue.
|
||||
|
||||
.. note::
|
||||
If you have multiple websites and companies on your database, make sure that you select the
|
||||
right :guilabel:`Company` in the website settings, next to the :guilabel:`Domain` settings. Doing
|
||||
so indicates Odoo which URL to use as the :ref:`base URL <domain-name/web-base-url>` according to
|
||||
If you have multiple websites and companies on your database, make sure to select the right
|
||||
:guilabel:`Company` under :menuselection:`Website --> Configuration --> Settings`. Doing so
|
||||
indicates Odoo which URL to use as the :ref:`base URL <domain-name/web-base-url>` according to
|
||||
the company in use.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/general/email_communication/email_servers`
|
||||
|
||||
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 8.9 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 7.2 KiB |
@@ -0,0 +1,35 @@
|
||||
====================
|
||||
Neutralized database
|
||||
====================
|
||||
|
||||
A neutralized database is a non-production database on which several parameters are deactivated.
|
||||
This enables one to carry out tests without the risk of launching specific automated processes that
|
||||
could impact production data (e.g., sending emails to customers). Live access is removed and
|
||||
turned into a testing environment.
|
||||
|
||||
.. note::
|
||||
**Any testing database created is a neutralized database:**
|
||||
|
||||
- testing backup databases
|
||||
- duplicate databases
|
||||
- for Odoo.sh: staging and development databases
|
||||
|
||||
.. important::
|
||||
A database can also be neutralized when upgrading, as it is vital to do some tests before
|
||||
switching to a new version.
|
||||
|
||||
Deactivated features
|
||||
====================
|
||||
|
||||
Here is a non-exhaustive list of the deactivated parameters:
|
||||
|
||||
- all planned actions (e.g., automatic invoicing of subscriptions, mass mailing, etc.)
|
||||
- outgoing emails
|
||||
- bank synchronization
|
||||
- payment providers
|
||||
- delivery methods
|
||||
- :abbr:`IAP (In-App Purchase)` tokens
|
||||
|
||||
.. note::
|
||||
**A red banner at the top of the screen is displayed on the neutralized database so that it can
|
||||
be seen immediately.**
|
||||
@@ -72,7 +72,7 @@ Domain names
|
||||
Use a custom :doc:`domain name <domain_names>` to access the database via another URL.
|
||||
|
||||
.. tip::
|
||||
You can :ref:`register a domain name for free <domain-name/odoo-register>`.
|
||||
You can :ref:`register a domain name for free <domain-name/register>`.
|
||||
|
||||
.. _odoo_online/tags:
|
||||
|
||||
|
||||
@@ -31,12 +31,18 @@ This matrix shows the support status of every version.
|
||||
- On-Premise
|
||||
- Release date
|
||||
- End of support
|
||||
* - Odoo saas~17.1
|
||||
- |green|
|
||||
- N/A
|
||||
- N/A
|
||||
- January 2024
|
||||
-
|
||||
* - **Odoo 17.0**
|
||||
- |green|
|
||||
- |green|
|
||||
- |green|
|
||||
- November 2023
|
||||
- November 2026 (planned)
|
||||
- October 2026 (planned)
|
||||
* - Odoo saas~16.4
|
||||
- |green|
|
||||
- N/A
|
||||
|
||||
@@ -96,12 +96,6 @@ gains and losses after reconciling the journal items.
|
||||
.. seealso::
|
||||
:doc:`Manage a bank in a foreign currency <accounting/bank/foreign_currency>`
|
||||
|
||||
Branch management
|
||||
=================
|
||||
|
||||
Multiple branches can be managed thanks to multi-company hierarchies. This allows to post journal
|
||||
entries on each branch as well as setting up a common lock date managed by the main company.
|
||||
|
||||
International standards
|
||||
=======================
|
||||
|
||||
@@ -221,8 +215,6 @@ and loss balance is automatically reported on the balance sheet report.
|
||||
.. seealso::
|
||||
:doc:`Accounting Cheat Sheet <accounting/get_started/cheat_sheet>`
|
||||
|
||||
.. _fiduciaries:
|
||||
|
||||
Fiduciaries
|
||||
===========
|
||||
|
||||
|
||||
@@ -51,20 +51,19 @@ Now you can search for your bank institution. Select it and follow the steps to
|
||||
web browser doesn't block pop-ups and that your ad-blocker is disabled.
|
||||
|
||||
.. important::
|
||||
When setting up the bank statement synchronization, Odoo automatically starts recording the
|
||||
accounting transactions from the last transaction’s date +1 day (if the last transaction day is
|
||||
31/12/2022, the recording starts on 01/01/2023). If the journal contains no transaction, Odoo
|
||||
retrieves transactions as far back as possible. You can limit how far back Odoo retrieves
|
||||
transactions by opening the Accounting app, going to :menuselection:`Accounting --> Lock Dates`,
|
||||
and setting a date in the :guilabel:`Journal Entries Lock Date` field.
|
||||
When choosing the date for the first bank statement synchronization, pick the date when you
|
||||
start recording accounting transaction on your Odoo accounting database. For example, if you
|
||||
import your closing balance in Odoo on the 31/12/2022 and you start recording accounting
|
||||
transactions on the 01/01/2023, your synchronization date should be 01/01/2023.
|
||||
|
||||
You must provide a phone number during your first synchronization to secure your account. We ask for
|
||||
such information because we don't want your data falling into the wrong hands. Therefore, if we
|
||||
detect suspicious activities on your account, we block all requests coming from your account, and
|
||||
you need to reactivate it using that phone number.
|
||||
|
||||
The third-party provider may request more information in order to connect with your bank
|
||||
institution. This information is not stored on Odoo's servers.
|
||||
The third-party provider may request more information in order to connect with your
|
||||
bank institution.
|
||||
This information is not stored on Odoo's servers.
|
||||
|
||||
By default, transactions fetched from an online source are grouped inside the same statement, and
|
||||
one bank statement is created per month. You can change the bank statement creation periodicity
|
||||
@@ -107,7 +106,7 @@ If your connection with the proxy is disconnected, you can reconnect with the pr
|
||||
:guilabel:`Fetch Account` button.
|
||||
|
||||
.. note::
|
||||
If you are unable to reconnect using the :guilabel:`Reconnect` button, please contact the
|
||||
If you are unable to reconnect using the :guilabel:`Fetch Account` button, please contact the
|
||||
`support <https://www.odoo.com/help>`_ directly with your client id or the reference of the error
|
||||
listed in the chatter.
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ Resulting entry
|
||||
The resulting entry section on the top right displays the selected bank transaction matched with
|
||||
the counterpart entries and includes any remaining debits or credits. In this section, you can
|
||||
validate the reconciliation or mark it as :guilabel:`To Check`. Any :ref:`reconciliation model
|
||||
buttons <reconciliation_models_button>` are also available in the resulting entry section.
|
||||
buttons <reconciliation/button>` are also available in the resulting entry section.
|
||||
|
||||
Reconcile transactions
|
||||
======================
|
||||
@@ -62,20 +62,20 @@ Transactions can be matched automatically with the use of :doc:`reconciliation m
|
||||
<reconciliation_models>`, or they can be matched with :ref:`existing entries
|
||||
<reconciliation/existing-entries>`, :ref:`batch payments <reconciliation/batch-payments>`,
|
||||
:ref:`manual operations <reconciliation/manual-operations>`, and :ref:`reconciliation model buttons
|
||||
<reconciliation_models_button>`.
|
||||
<reconciliation/button>`.
|
||||
|
||||
#. Select a transaction among unmatched bank transactions.
|
||||
#. Define the counterpart. There are several options for defining a counterpart, including
|
||||
:ref:`matching existing entries <reconciliation/existing-entries>`, :ref:`manual operations
|
||||
<reconciliation/manual-operations>`, :ref:`batch payments <reconciliation/batch-payments>`, and
|
||||
:ref:`reconciliation model buttons <reconciliation_models_button>`.
|
||||
#. If the resulting entry is not fully balanced, balance it by adding another existing counterpart
|
||||
:ref:`reconciliation model buttons <reconciliation/button>`.
|
||||
#. If the resulting entry isn't fully balanced, balance it by adding another existing counterpart
|
||||
entry or writing it off with a :ref:`manual operation <reconciliation/manual-operations>`.
|
||||
#. Click the :guilabel:`Validate` button to confirm the reconciliation and move to the next
|
||||
transaction.
|
||||
|
||||
.. tip::
|
||||
If you are not sure how to reconcile a particular transaction and would like to deal with it
|
||||
If you aren't sure how to reconcile a particular transaction and would like to deal with it
|
||||
later, use the :guilabel:`To Check` button instead. All transactions marked as :guilabel:`To
|
||||
Check` can be displayed using the :guilabel:`To Check` filter.
|
||||
|
||||
@@ -90,8 +90,8 @@ Match existing entries
|
||||
----------------------
|
||||
|
||||
This tab contains matching entries Odoo automatically pre-selects according to the reconciliation
|
||||
models. The entry order is based on :ref:`reconciliation models <reconciliation_models_suggestion>`,
|
||||
with suggested entries appearing first.
|
||||
models. The entry order is based on :doc:`reconciliation models <reconciliation_models>`, with
|
||||
suggested entries appearing first.
|
||||
|
||||
.. tip::
|
||||
The search bar within the :guilabel:`Match Existing Entries` tab allows you to search for
|
||||
@@ -112,7 +112,7 @@ has a search bar that allows you to search for specific batch payments.
|
||||
Manual operations
|
||||
-----------------
|
||||
|
||||
If there is not an existing entry to match the selected transaction, you may instead wish to
|
||||
If there isn't an existing entry to match the selected transaction, you may instead wish to
|
||||
reconcile the transaction manually by choosing the correct account and amount. Then, complete any
|
||||
of the relevant optional fields.
|
||||
|
||||
@@ -123,17 +123,14 @@ of the relevant optional fields.
|
||||
account by clicking on the new line in the resulting entry section and selecting the
|
||||
:guilabel:`Account` to record the open balance.
|
||||
|
||||
.. note::
|
||||
Lines are silently reconciled unless a write-off entry is required, which launches a
|
||||
reconciliation wizard.
|
||||
|
||||
.. image:: reconciliation/fully-paid.png
|
||||
:alt: Click on fully paid to manually set an invoice as entirely paid.
|
||||
|
||||
.. _reconciliation/button:
|
||||
|
||||
Reconciliation model buttons
|
||||
----------------------------
|
||||
|
||||
Use a :ref:`reconciliation model button <reconciliation_models_button>` for manual operations that
|
||||
are frequently used. These custom buttons allow you to quickly reconcile bank transactions manually
|
||||
and can also be used in combination with existing entries.
|
||||
Use a :doc:`reconciliation model <reconciliation_models>` button for manual operations that are
|
||||
frequently used. These custom buttons allow you to quickly reconcile bank transactions manually and
|
||||
can also be used in combination with existing entries.
|
||||
|
||||
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 51 KiB |
@@ -1,129 +1,123 @@
|
||||
=====================
|
||||
Reconciliation Models
|
||||
Reconciliation models
|
||||
=====================
|
||||
|
||||
Once the bank statements are correctly imported, it is essential to *reconcile* the records properly
|
||||
and ensure all *Journal Entries* are balanced and in agreement. To ease and speed up the
|
||||
reconciliation process, you can configure **Reconciliation Models**, which are particularly useful
|
||||
with recurrent entries such as bank fees.
|
||||
Reconciliation models are used to automate the :doc:`bank reconciliation <reconciliation>` process,
|
||||
which is especially handy when dealing with recurring entries like bank fees. Reconciliation models
|
||||
can also be helpful in handling :doc:`cash discounts <../customer_invoices/cash_discounts>`.
|
||||
|
||||
.. todo:: Add a link to the Reconciliation process in the paragraph above, once the doc will have
|
||||
been updated.
|
||||
|
||||
.. note::
|
||||
Reconciliation Models are also useful to handle *Cash Discounts*. Please refer to
|
||||
:doc:`this documentation <../customer_invoices/cash_discounts>` for more
|
||||
information.
|
||||
|
||||
.. _reconciliation_models_types:
|
||||
|
||||
Types of Reconciliation Models
|
||||
==============================
|
||||
|
||||
There are three types of Reconciliation Models:
|
||||
|
||||
#. :ref:`Write-off Button <reconciliation_models_button>`
|
||||
#. :ref:`Suggestion of counterpart values <reconciliation_models_suggestion>`
|
||||
#. :ref:`Match existing invoices/bills <reconciliation_models_match>`
|
||||
|
||||
.. _reconciliation_models_button:
|
||||
|
||||
Manually create a write-off on clicked button
|
||||
---------------------------------------------
|
||||
|
||||
When you are reconciling an entry with an *Open Balance*, you can use the buttons available under
|
||||
the *Manual Operations* tab to pre-fill all the values automatically, before validating the
|
||||
reconciliation. Each button is a different Reconciliation Model.
|
||||
|
||||
.. image:: reconciliation_models/reconciliation_models_button.png
|
||||
:align: center
|
||||
:alt: Example of a Reconciliation Model with a write-off button in Odoo Accounting
|
||||
|
||||
.. _reconciliation_models_suggestion:
|
||||
|
||||
Suggest counterpart values
|
||||
--------------------------
|
||||
|
||||
This type of Reconciliation Model suggests immediately counterpart values that only need to be
|
||||
validated. This automation is based on a set of rules defined in the reconciliation model.
|
||||
|
||||
.. image:: reconciliation_models/reconciliation_models_suggestion.png
|
||||
:align: center
|
||||
:alt: Example of a Reconciliation Model that suggests counterpart values in Odoo Accounting
|
||||
|
||||
.. _reconciliation_models_match:
|
||||
|
||||
Match existing invoices/bills
|
||||
-----------------------------
|
||||
|
||||
This type of Reconciliation Model automatically selects the right Customer Invoice or Vendor Bill
|
||||
that matches the payment. All that is left to do is to validate the entry. This automation is based
|
||||
on a set of rules defined in the reconciliation model.
|
||||
|
||||
.. image:: reconciliation_models/reconciliation_models_match.png
|
||||
:align: center
|
||||
:alt: Example of a Reconciliation Model that matches existing invoices and bills automatically
|
||||
in Odoo Accounting
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To manage or create new **Reconciliation Models**, go to :menuselection:`Accounting -->
|
||||
Reconciliation --> Reconciliation Models`. Alternatively, you can also open this menu from the
|
||||
Accounting Overview, by going to your Bank Journal card, clicking on the three little dots, and then
|
||||
on *Reconciliation Models*.
|
||||
|
||||
.. image:: reconciliation_models/reconciliation_models_overview.png
|
||||
:align: center
|
||||
:alt: Open the Reconciliation Model menu from the overview dashboard in Odoo Accounting
|
||||
|
||||
.. important::
|
||||
The first entry, named *Invoices Matching Rule*, is the one responsible for the current matching
|
||||
of invoices and bills. Therefore, it is advised to leave it at the top of the list and not to
|
||||
delete it.
|
||||
|
||||
Open the model you want to modify, or click on *Create* to create a new one, then fill out the form.
|
||||
|
||||
Type
|
||||
----
|
||||
|
||||
See :ref:`above <reconciliation_models_types>` for an explanation about the different types of
|
||||
Reconciliation Models.
|
||||
|
||||
.. note::
|
||||
If the *Documents* application is installed on your database, an additional **Activity type**
|
||||
field appears when *To check* is ticked. Selecting the value *Reconciliation request* implies
|
||||
that, whenever you use this model, a *Request Document* window pops up to request a document from
|
||||
a user.
|
||||
|
||||
Conditions on Bank Statement Line
|
||||
---------------------------------
|
||||
|
||||
Define here all the conditions that are required for a Reconciliation Model to be applied.
|
||||
|
||||
.. important::
|
||||
If a record matches with several Reconciliation Models, the first one in the *sequence* of models
|
||||
will be applied. The sequence is simply the order of the models in the *list view*. They can be
|
||||
rearranged by dragging-and-dropping the handle next to the name.
|
||||
|
||||
.. image:: reconciliation_models/reconciliation_models_conditions.png
|
||||
:align: center
|
||||
:alt: Conditions for the Reconciliation Model to be applied in Odoo Accounting
|
||||
|
||||
Counterpart Values
|
||||
------------------
|
||||
|
||||
This section comprises the values that are applied by the Reconciliation Model.
|
||||
|
||||
If the value to reconcile needs to be written-off in two separate accounts, click on *Add a second
|
||||
line*.
|
||||
|
||||
.. image:: reconciliation_models/reconciliation_models_counterparts.png
|
||||
:align: center
|
||||
:alt: Counterparts values of a Reconciliation Model in Odoo Accounting
|
||||
Each model is created based on a :ref:`model type <models/type>` and :guilabel:`bank transaction
|
||||
conditions`.
|
||||
|
||||
.. seealso::
|
||||
|
||||
- :doc:`reconciliation`
|
||||
- :doc:`bank_synchronization`
|
||||
- :doc:`../customer_invoices/cash_discounts`
|
||||
- `Odoo Tutorials: Reconciliation models <https://www.odoo.com/slides/slide/reconciliation-models-1841?fullscreen=1>`_
|
||||
|
||||
.. _models/type:
|
||||
|
||||
Reconciliation model types
|
||||
==========================
|
||||
|
||||
The reconciliation models are available by going to :menuselection:`Accounting --> Configuration
|
||||
--> Banks: Reconciliation Models`. For each reconciliation model, a :guilabel:`Type` must be set.
|
||||
Three types of models exist:
|
||||
|
||||
- :guilabel:`Button to generate counterpart entry`: a button is created in the resulting entry
|
||||
section of the bank reconciliation view. If clicked, this button generates a counterpart entry to
|
||||
reconcile with the active transaction based on the rules set in the model. The rules specified in
|
||||
the model determine the counterpart entry's account(s), amount(s), label(s), and analytic
|
||||
distribution;
|
||||
- :guilabel:`Rule to suggest counterpart entry`: used for recurring transactions to match the
|
||||
transaction to a new entry based on conditions that must match the information on the transaction;
|
||||
- :guilabel:`Rule to match invoices/bills`: used for recurring transactions to match the transaction
|
||||
to existing invoices, bills, or payments based on conditions that must match the information on
|
||||
the transaction.
|
||||
|
||||
Default reconciliation models
|
||||
=============================
|
||||
|
||||
In Odoo, different models are available by default depending on the company's fiscal localization.
|
||||
These can be updated if needed. Users can also create their own reconciliation models by clicking
|
||||
:guilabel:`New`.
|
||||
|
||||
.. important::
|
||||
If a record matches with several reconciliation models, the first one in the *sequence* of models
|
||||
is applied. You can rearrange the order by dragging and dropping the handle next to the name.
|
||||
|
||||
.. image:: reconciliation_models/list-view.png
|
||||
:alt: Rearrange the sequence of models in the list view.
|
||||
|
||||
Invoices/Bills perfect match
|
||||
----------------------------
|
||||
|
||||
This model should be at the top of the *sequence* of models, as it enables Odoo to suggest matching
|
||||
existing invoices or bills with a bank transaction based on set conditions.
|
||||
|
||||
.. image:: reconciliation_models/invoices-bills-perfect-match.png
|
||||
:alt: Set rules to trigger the reconciliation.
|
||||
|
||||
Odoo automatically reconciles the payment when the :guilabel:`Auto-validate` option is selected, and
|
||||
the model conditions are perfectly met. In this case, it expects to find on the bank statement's
|
||||
line the invoice/payment's reference (as :guilabel:`Label` is selected) and the partner's name
|
||||
(as :guilabel:`Partner is set` is selected) to suggest the correct counterpart entry and reconcile
|
||||
the payment automatically.
|
||||
|
||||
Invoices/Bills partial match if underpaid
|
||||
-----------------------------------------
|
||||
|
||||
This model suggests a customer invoice or vendor bill that partially matches the payment when the
|
||||
amount received is slightly lower than the invoice amount, for example in the case of
|
||||
**cash discounts**. The difference is reconciled with the account indicated in the
|
||||
:guilabel:`counterpart entries` tab.
|
||||
|
||||
The reconciliation model :guilabel:`Type` is :guilabel:`Rule to match invoices/bills`, and the
|
||||
:guilabel:`Payment tolerance` should be set.
|
||||
|
||||
.. image:: reconciliation_models/partial-match.png
|
||||
:alt: Set rules to trigger the reconciliation.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Payment tolerance` is only applicable to lower payments. It is disregarded when an
|
||||
overpayment is received.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../customer_invoices/cash_discounts`
|
||||
|
||||
Line with bank fees
|
||||
-------------------
|
||||
|
||||
This model suggests a counterpart entry according to the rules set in the model. In this case, the
|
||||
reconciliation model :guilabel:`Type` is :guilabel:`Rule to suggest counterpart entry`, and the
|
||||
:guilabel:`Label` can be used for example, to identify the information referring to the
|
||||
:guilabel:`Bank fees` in the label of the transaction.
|
||||
|
||||
.. image:: reconciliation_models/bank-fees.png
|
||||
:alt: Set rules to trigger the reconciliation.
|
||||
|
||||
.. note::
|
||||
`Regular expressions <https://regexone.com/>`_, often abbreviated as **Regex**, can be used in
|
||||
Odoo in various ways to search, validate, and manipulate data within the system. Regex can be
|
||||
powerful but also complex, so it's essential to use it judiciously and with a good understanding
|
||||
of the patterns you're working with.
|
||||
|
||||
To use regular expressions in your reconciliation models, set the :guilabel:`Transaction Type`
|
||||
to :guilabel:`Match Regex` and add your expression. Odoo automatically retrieves the
|
||||
transactions that match your Regex expression and the conditions specified in your model.
|
||||
|
||||
.. image:: reconciliation_models/regex.png
|
||||
:alt: Using Regex in Odoo
|
||||
|
||||
Partner mapping
|
||||
===============
|
||||
|
||||
Partner mapping allows you to establish rules for automatically matching transactions to the correct
|
||||
partner account, saving time and reducing the risk of errors that can occur during manual
|
||||
reconciliation. For example, you can create a partner mapping rule for incoming payments with
|
||||
specific reference numbers or keywords in the transaction description. When an incoming payment
|
||||
meets these criteria, Odoo automatically maps it to the corresponding customer's account.
|
||||
|
||||
To create a partner mapping rule, go to the :guilabel:`Partner Mapping` tab and enter the
|
||||
:guilabel:`Find Text in Label`, :guilabel:`Find Text in Notes`, and :guilabel:`Partner`.
|
||||
|
||||
.. image:: reconciliation_models/partner-mapping.png
|
||||
:alt: defining partner mapping
|
||||
|
||||
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 9.7 KiB |
|
Before Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
@@ -5,7 +5,7 @@ Cash discounts and tax reduction
|
||||
**Cash discounts** are reductions in the amount a customer must pay for goods or services offered as
|
||||
an incentive for paying their invoice promptly. These discounts are typically a percentage of the
|
||||
total invoice amount and are applied if the customer pays within a specified time. Cash discounts
|
||||
can help a company maintain a steady cash flow.
|
||||
can help the company maintain a steady cash flow.
|
||||
|
||||
.. example::
|
||||
You issue a €100 invoice on the 1st of January. The full payment is due within 30 days, and you
|
||||
@@ -17,46 +17,15 @@ can help a company maintain a steady cash flow.
|
||||
A :ref:`tax reduction <cash-discounts/tax-reductions>` can also be applied depending on the country
|
||||
or region.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`payment_terms`
|
||||
- :doc:`../payments`
|
||||
|
||||
.. _cash-discounts/configuration:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
To grant cash discounts to customers, you must first verify the :ref:`gain and loss accounts
|
||||
<cash-discounts/gain-loss-accounts>`. Then, configure :ref:`payment terms
|
||||
<cash-discounts/payment-terms>` and add a cash discount by checking the :guilabel:`Early Discount`
|
||||
checkbox and filling in the discount percentage, discount days, and :ref:`tax
|
||||
reduction <cash-discounts/tax-reductions>` fields.
|
||||
|
||||
.. _cash-discounts/gain-loss-accounts:
|
||||
|
||||
Cash discount gain/loss accounts
|
||||
--------------------------------
|
||||
|
||||
With a cash discount, the amount you earn depends on whether the customer benefits from the cash
|
||||
discount or not. This inevitably leads to gains and losses, which are recorded on default accounts.
|
||||
|
||||
To modify these accounts, go to :menuselection:`Accounting --> Configuration --> Settings`, and, in
|
||||
the :guilabel:`Default Accounts` section, select the accounts you want to use for the
|
||||
:guilabel:`Cash Discount Gain account` and :guilabel:`Cash Discount Loss account`.
|
||||
|
||||
.. _cash-discounts/payment-terms:
|
||||
|
||||
Payment terms
|
||||
-------------
|
||||
|
||||
Cash discounts are defined on :doc:`payment terms <payment_terms>`. Configure them to your liking by
|
||||
going to :menuselection:`Accounting --> Configuration --> Payment Terms`, and make sure to fill out
|
||||
the discount percentage, discount days, and :ref:`tax reduction <cash-discounts/tax-reductions>`
|
||||
fields.
|
||||
|
||||
.. image:: cash_discounts/payment-terms.png
|
||||
:alt: Configuration of payment terms named "2/7 Net 30". The field "Description on Invoices"
|
||||
reads: "Payment terms: 30 Days, 2% Early Payment Discount under 7 days".
|
||||
To grant cash discounts to customers, you must first set up the :ref:`type of tax reduction
|
||||
<cash-discounts/tax-reductions>`, verify the :ref:`gain and loss accounts
|
||||
<cash-discounts/gain-loss-accounts>`, and configure new :ref:`payment terms
|
||||
<cash-discounts/payment-terms>`.
|
||||
|
||||
.. _cash-discounts/tax-reductions:
|
||||
|
||||
@@ -64,24 +33,24 @@ Tax reductions
|
||||
--------------
|
||||
|
||||
Depending on the country or region, the base amount used to compute the tax can vary, which can lead
|
||||
to a **tax reduction**. Since tax reductions are set on individual payment terms, each term can use
|
||||
a specific tax reduction.
|
||||
to a **tax reduction**.
|
||||
|
||||
To configure how the tax reduction is applied, go to a payment term with the :guilabel:`Early
|
||||
Discount` checkbox enabled, and select one of the three following options:
|
||||
To configure how the tax reduction is applied, go to :menuselection:`Accounting --> Configuration
|
||||
--> Settings`, and in the :guilabel:`Taxes` section, in the :guilabel:`Cash Discount Tax Reduction`
|
||||
feature, select one of the three following options:
|
||||
|
||||
- Always (upon invoice)
|
||||
The tax is always reduced. The base amount used to compute the tax is the discounted amount,
|
||||
whether the customer benefits from the discount or not.
|
||||
Always (upon invoice)
|
||||
The tax is always reduced. The base amount used to compute the tax is the discounted amount,
|
||||
whether the customer benefits from the discount or not.
|
||||
|
||||
- On early payment
|
||||
The tax is reduced only if the customer pays early. The base amount used to compute the tax is the
|
||||
same as the sale: if the customer benefits from the reduction, then the tax is reduced. This means
|
||||
that, depending on the customer, the tax amount can vary after the invoice is issued.
|
||||
On early payment
|
||||
The tax is reduced only if the customer pays early. The base amount used to compute the tax is the
|
||||
same as the sale: if the customer benefits from the reduction, then the tax is reduced. This means
|
||||
that, depending on the customer, the tax amount can vary after the invoice is issued.
|
||||
|
||||
- Never
|
||||
The tax is never reduced. The base amount used to compute the tax is the full amount, whether the
|
||||
customer benefits from the discount or not.
|
||||
Never
|
||||
The tax is never reduced. The base amount used to compute the tax is the full amount, whether the
|
||||
customer benefits from the discount or not.
|
||||
|
||||
.. example::
|
||||
|
||||
@@ -101,10 +70,10 @@ Discount` checkbox enabled, and select one of the three following options:
|
||||
- Computation
|
||||
* - 8th of January
|
||||
- €118.58
|
||||
- €98 + (21% of €98)
|
||||
- (€98 + (21% of €98))
|
||||
* - 31st of January
|
||||
- €120.58
|
||||
- €100 + (21% of €98)
|
||||
- (€100 + (21% of €98))
|
||||
|
||||
.. tab:: On early payment
|
||||
|
||||
@@ -116,10 +85,10 @@ Discount` checkbox enabled, and select one of the three following options:
|
||||
- Computation
|
||||
* - 8th of January
|
||||
- €118.58
|
||||
- €98 + (21% of €98)
|
||||
- (€98 + (21% of €98))
|
||||
* - 31st of January
|
||||
- €121.00
|
||||
- €100 + (21% of €100)
|
||||
- (€100 + (21% of €100))
|
||||
|
||||
.. tab:: Never
|
||||
|
||||
@@ -131,10 +100,10 @@ Discount` checkbox enabled, and select one of the three following options:
|
||||
- Computation
|
||||
* - 8th of January
|
||||
- €119.00
|
||||
- €98 + (21% of €100)
|
||||
- (€98 + (21% of €100))
|
||||
* - 31st of January
|
||||
- €121.00
|
||||
- €100 + (21% of €100)
|
||||
- (€100 + (21% of €100))
|
||||
|
||||
.. note::
|
||||
- :ref:`Tax grids <tax-returns/tax-grids>`, which are used for the tax report, are correctly
|
||||
@@ -143,12 +112,41 @@ Discount` checkbox enabled, and select one of the three following options:
|
||||
- The **type of cash discount tax reduction** may be correctly pre-configured, depending on your
|
||||
:ref:`fiscal localization package <fiscal_localizations/packages>`.
|
||||
|
||||
.. _cash-discounts/gain-loss-accounts:
|
||||
|
||||
Cash discount gain/loss accounts
|
||||
--------------------------------
|
||||
|
||||
With a cash discount, the amount you earn depends on whether the customer benefits from the cash
|
||||
discount or not. This inevitably leads to gains and losses, which are recorded on default accounts.
|
||||
|
||||
To modify these accounts, go to :menuselection:`Accounting --> Configuration --> Settings`, and in
|
||||
the :guilabel:`Default Accounts` section, select the accounts you want to use for the
|
||||
:guilabel:`Cash Discount Gain account` and :guilabel:`Cash Discount Loss account`.
|
||||
|
||||
.. _cash-discounts/payment-terms:
|
||||
|
||||
Payment terms
|
||||
-------------
|
||||
|
||||
Cash discounts are defined on :doc:`payment terms <payment_terms>`. Configure them to your liking by
|
||||
going to :menuselection:`Accounting --> Configuration --> Payment Terms`, and make sure to fill out
|
||||
the fields :guilabel:`Discount %` and :guilabel:`Discount Days`.
|
||||
|
||||
.. image:: cash_discounts/payment-terms.png
|
||||
:align: center
|
||||
:alt: Configuration of payment terms named "2/7 Net 30". The field "Description on Invoices"
|
||||
reads: "Payment terms: 30 Days, 2% Early Payment Discount under 7 days".
|
||||
|
||||
.. seealso::
|
||||
:doc:`payment_terms`
|
||||
|
||||
.. _cash-discounts/customer-invoice:
|
||||
|
||||
Apply a cash discount to a customer invoice
|
||||
===========================================
|
||||
|
||||
On a customer invoice, apply a cash discount by selecting the :ref:`payment terms you created
|
||||
Apply a cash discount to a customer invoice by selecting the :ref:`payment terms you created
|
||||
<cash-discounts/payment-terms>`. Odoo automatically computes the correct amounts, tax amounts, due
|
||||
dates, and accounting records.
|
||||
|
||||
@@ -156,23 +154,26 @@ Under the :guilabel:`Journal Items` tab, you can display the discount details by
|
||||
"toggle" button and adding the :guilabel:`Discount Date` and :guilabel:`Discount Amount` columns.
|
||||
|
||||
.. image:: cash_discounts/invoice-journal-entry.png
|
||||
:align: center
|
||||
:alt: An invoice of €100.00 with "2/7 Net 30" selected as payment terms. The "Journal Items" tab
|
||||
is open, and the "Discount Date" and "Discount Amount" columns are displayed.
|
||||
|
||||
The discount amount and due date are also displayed on the generated invoice report sent to the
|
||||
customer if the :guilabel:`Show installment dates` option is checked on the payment terms.
|
||||
The discount amount and due date are also displayed on the generated invoice sent to the customer.
|
||||
|
||||
.. image:: cash_discounts/invoice-print.png
|
||||
:alt: An invoice of €100.00 with the following text added to the terms and conditions: "30
|
||||
Days, 2% Early Payment Discount under 7 days. 118.58 € due if paid before 01/08/2023."
|
||||
:align: center
|
||||
:alt: An invoice of €100.00 with the following text added to the terms and conditions: "30 Days,
|
||||
2% Early Payment Discount under 7 days. 118.58 € due if paid before 01/08/2023."
|
||||
|
||||
Payment reconciliation
|
||||
----------------------
|
||||
|
||||
When you record a :doc:`payment <../payments>` or :doc:`reconcile your bank transactions
|
||||
<../bank/reconciliation>`, Odoo takes the customer payment's date into account to determine if the
|
||||
customer can benefit from the cash discount or not.
|
||||
When you record a payment or reconcile your bank statements, Odoo takes the customer payment's date
|
||||
into account to define if they can benefit from the cash discount or not.
|
||||
|
||||
.. note::
|
||||
If your customer pays the discount amount *after* the discount date, you can always decide to
|
||||
mark the invoice as fully paid with a write-off or as partially paid.
|
||||
If your customer pays the discount amount *after* the discount date, you can always decide
|
||||
whether to mark the invoice as fully paid with a write-off or as partially paid.
|
||||
|
||||
.. seealso::
|
||||
:doc:`../payments`
|
||||
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 13 KiB |
@@ -21,8 +21,6 @@ vendors because of modifications to confirmed customer invoices or vendor bills.
|
||||
:doc:`return </applications/sales/sales/products_prices/returns>` if a storable product is
|
||||
returned.
|
||||
|
||||
.. _accounting/issue-credit-note:
|
||||
|
||||
Issue a credit note
|
||||
===================
|
||||
|
||||
@@ -32,7 +30,7 @@ way as an invoice form.
|
||||
|
||||
However, most of the time, credit notes are generated directly from the related invoices. To do so,
|
||||
go to :menuselection:`Accounting --> Customers --> Invoices`, open the related **customer invoice**,
|
||||
and click on :guilabel:`Credit Note`.
|
||||
and click on :guilabel:`Add Credit Note`.
|
||||
|
||||
You can choose between three options:
|
||||
|
||||
@@ -74,15 +72,12 @@ prefilled with the same details from the original invoice.
|
||||
|
||||
This is the option to **modify** the content of a *validated* invoice.
|
||||
|
||||
.. _accounting/issue-debit-note:
|
||||
|
||||
Issue a debit note
|
||||
==================
|
||||
|
||||
You can create a debit note from scratch by going to :menuselection:`Accounting --> Customers -->
|
||||
Invoices` or by clicking on the related invoice you wish to issue a debit note for. On the invoice
|
||||
form view, click :guilabel:`Cog icon (⚙) --> Debit Note`, fill in the information, and click
|
||||
:guilabel:`Create Debit Note`.
|
||||
form view, click :guilabel:`Add debit note`, fill in the information, and click :guilabel:`Create`.
|
||||
|
||||
Record a vendor refund
|
||||
======================
|
||||
@@ -91,7 +86,7 @@ Record a vendor refund
|
||||
|
||||
You can either create a credit note from scratch by going to :menuselection:`Accounting --> Vendors
|
||||
--> Refund`, and by clicking on :guilabel:`Create`; or by opening the related **vendor bill**, and
|
||||
clicking on :guilabel:`Credit Note`.
|
||||
clicking on :guilabel:`Add Credit Note`.
|
||||
|
||||
Record a debit note
|
||||
===================
|
||||
@@ -99,8 +94,8 @@ Record a debit note
|
||||
**Debit notes** from vendors are recorded in a similar way to how they are issued to customers:
|
||||
|
||||
Go to :menuselection:`Accounting --> Vendors --> Bills`, open the related bill you wish to record a
|
||||
debit note for, and click :guilabel:`Cog icon (⚙) --> Debit Note`. Fill in the information, and click
|
||||
:guilabel:`Create Debit Note`.
|
||||
debit note for, and click :guilabel:`Add debit note`. Fill in the information, and click
|
||||
:guilabel:`Create debit note`.
|
||||
|
||||
Journal entries
|
||||
===============
|
||||
|
||||
@@ -2,175 +2,194 @@
|
||||
Deferred revenues
|
||||
=================
|
||||
|
||||
**Deferred revenues**, or **unearned revenues**, are invoices addressed to customers
|
||||
for goods yet to be delivered or services yet to be rendered.
|
||||
**Deferred revenues**, or **unearned revenue**, are payments made in advance by customers for
|
||||
products yet to deliver or services yet to render.
|
||||
|
||||
The company cannot report them on the current **profit and loss statement**, or *income statement*,
|
||||
since the goods and services will be effectively delivered/rendered in the future.
|
||||
Such payments are a **liability** for the company that receives them since it still owes its
|
||||
customers these products or services. The company cannot report them on the current **Profit and
|
||||
Loss statement**, or *Income Statement*, since the payments will be effectively earned in the future.
|
||||
|
||||
These future revenues must be deferred on the company's balance sheet among the current liabilities
|
||||
until they can be **recognized**, at once or over a defined period, on the profit and loss
|
||||
statement.
|
||||
These future revenues must be deferred on the company's balance sheet until the moment in time they
|
||||
can be **recognized**, at once or over a defined period, on the Profit and Loss statement.
|
||||
|
||||
For example, let's say a business sells a software license of $1200 for 1 year. They immediately
|
||||
invoice it to the customer but can't consider it earned yet, as the future months of licensing have
|
||||
not yet been delivered. Therefore, they post this new revenue in a deferred revenue account and
|
||||
recognize it on a monthly basis. Each month, for the next 12 months, $100 will be recognized as
|
||||
revenue.
|
||||
For example, let's say we sell a five-year extended warranty for $ 350. We already receive the money
|
||||
now but haven't earned it yet. Therefore, we post this new income in a deferred revenue account and
|
||||
decide to recognize it on a yearly basis. Each year, for the next 5 years, $ 70 will be recognized
|
||||
as revenue.
|
||||
|
||||
Odoo Accounting handles deferred revenues by spreading them in multiple entries that are posted
|
||||
periodically.
|
||||
Odoo Accounting handles deferred revenues by spreading them in multiple entries that are
|
||||
automatically created in *draft mode* and then posted periodically.
|
||||
|
||||
.. note::
|
||||
The server checks once a day if an entry must be posted. It might then take up to 24 hours before
|
||||
you see a change from :guilabel:`Draft` to :guilabel:`Posted`.
|
||||
you see a change from *draft* to *posted*.
|
||||
|
||||
Configuration
|
||||
Prerequisites
|
||||
=============
|
||||
|
||||
Make sure the default settings are correctly configured for your business. To do so, go to
|
||||
:menuselection:`Accounting --> Configuration --> Settings`. The following options are available:
|
||||
Such transactions must be posted on a **Deferred Revenue Account** rather than on the default income
|
||||
account.
|
||||
|
||||
Journal
|
||||
The deferral entries are posted in this journal.
|
||||
Deferred Expense Account
|
||||
Expenses are deferred on this Current Asset account until they are recognized.
|
||||
Deferred Revenue Account
|
||||
Revenues are deferred on this Current Liability account until they are recognized.
|
||||
Generate Entries
|
||||
By default, Odoo :ref:`automatically generates <customer_invoices/deferred/generate_on_validation>`
|
||||
the deferral entries when you post a customer invoice. However, you can also choose to
|
||||
:ref:`generate them manually <customer_invoices/deferred/generate_manually>` by selecting the
|
||||
:guilabel:`Manually & Grouped` option instead.
|
||||
Amount Computation
|
||||
Suppose an invoice of $1200 must be deferred over 12 months. The :guilabel:`Equal per month`
|
||||
computation accounts for $100 each month, while the :guilabel:`Based on days` computation
|
||||
accounts for different amounts depending on the number of days in each month.
|
||||
Configure a Deferred Revenue Account
|
||||
------------------------------------
|
||||
|
||||
.. _customer_invoices/deferred/generate_on_validation:
|
||||
To configure your account in the **Chart of Accounts**, go to :menuselection:`Accounting -->
|
||||
Configuration --> Chart of Accounts`, click on *Create*, and fill out the form.
|
||||
|
||||
Generate deferral entries on validation
|
||||
=======================================
|
||||
|
||||
.. tip::
|
||||
Make sure the :guilabel:`Start Date` and :guilabel:`End Date` fields are visible in the
|
||||
:guilabel:`Invoice Lines` tab. In most cases, the :guilabel:`Start Date` should be in the same
|
||||
month as the :guilabel:`Invoice Date`.
|
||||
|
||||
For each line of the invoice that should be deferred, specify the start and end dates of the
|
||||
deferral period.
|
||||
|
||||
If the :guilabel:`Generate Entries` field in the **Settings** is set to :guilabel:`On invoice/bill
|
||||
validation`, Odoo automatically generates the deferral entries when the invoice is validated. Click
|
||||
the :guilabel:`Deferred Entries` smart button to see them.
|
||||
|
||||
One entry, dated on the same day as the invoice, moves the invoice amounts from the income account
|
||||
to the deferred account. The other entries are deferral entries which, month after month, move
|
||||
the invoice amounts from the deferred account to the income account to recognize the revenue.
|
||||
|
||||
.. example::
|
||||
You can defer a January invoice of $1200 over 12 months by specifying a start date of 01/01/2023
|
||||
and an end date of 12/31/2023. At the end of August, $800 is recognized as an income,
|
||||
whereas $400 remains on the deferred account.
|
||||
|
||||
Reporting
|
||||
=========
|
||||
|
||||
The deferred revenue report computes an overview of the necessary deferral entries for each account.
|
||||
To access it, go to :menuselection:`Accounting --> Reporting --> Deferred Revenue`.
|
||||
|
||||
To view the journal items of each account, click on the account name and then :guilabel:`Journal
|
||||
Items`.
|
||||
|
||||
.. image:: deferred_revenues/deferred_revenue_report.png
|
||||
:alt: Deferred revenue report
|
||||
.. image:: deferred_revenues/deferred_revenues01.png
|
||||
:align: center
|
||||
:alt: Configuration of a Deferred Revenue Account in Odoo Accounting
|
||||
|
||||
.. note::
|
||||
Only invoices whose accounting date is before the end of the period of the report
|
||||
are taken into account.
|
||||
This account's type must be either *Current Liabilities* or *Non-current Liabilities*
|
||||
|
||||
.. _customer_invoices/deferred/generate_manually:
|
||||
Post an income to the right account
|
||||
-----------------------------------
|
||||
|
||||
Generate grouped deferral entries manually
|
||||
==========================================
|
||||
Select the account on a draft invoice
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If you have a lot of deferred revenues and wish to reduce the number of journal entries created, you
|
||||
can generate deferral entries manually. To do so, set the :guilabel:`Generate Entries` field in the
|
||||
**Settings** to :guilabel:`Manually & Grouped`. Odoo then aggregates the deferred amounts in a
|
||||
single entry.
|
||||
On a draft invoice, select the right account for all the products of which the incomes must be
|
||||
deferred.
|
||||
|
||||
At the end of each month, go to :menuselection:`Accounting --> Reporting --> Deferred Revenue` and
|
||||
click the :guilabel:`Generate Entries` button. This generates two deferral entries:
|
||||
.. image:: deferred_revenues/deferred_revenues02.png
|
||||
:align: center
|
||||
:alt: Selection of a Deferred Revenue Account on a draft invoice in Odoo Accounting
|
||||
|
||||
- One dated at the end of the month which aggregates, for each account, all the deferred amounts
|
||||
of that month. This means that a part of the deferred revenue is recognized at the end of that
|
||||
period.
|
||||
- The reversal of this created entry, dated on the following day (i.e., the first day of the
|
||||
next month) to cancel the previous entry.
|
||||
Choose a different Income Account for specific products
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. example::
|
||||
There are two invoices:
|
||||
Start editing the product, go to the *Accounting* tab, select the right **Income Account**, and
|
||||
save.
|
||||
|
||||
- Invoice A: $1200 to be deferred from 01/01/2023 to 12/31/2023
|
||||
- Invoice B: $600 to be deferred from 01/01/2023 to 12/31/2023
|
||||
.. image:: deferred_revenues/deferred_revenues03.png
|
||||
:align: center
|
||||
:alt: Change of the Income Account for a product in Odoo
|
||||
|
||||
In January
|
||||
At the end of January, after clicking the :guilabel:`Generate Entries` button, there are the
|
||||
following entries:
|
||||
.. tip::
|
||||
It is possible to automate the creation of revenue entries for these products (see:
|
||||
`Automate the Deferred Revenues`_).
|
||||
|
||||
- Entry 1 dated on the 31st January:
|
||||
Change the account of a posted journal item
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both invoices)
|
||||
- Line 2: Expense account 100 + 50 = **150** (recognizing 1/12 of invoice A and invoice B)
|
||||
- Line 3: Deferred account 1800 - 150 = **1650** (amount that has yet to be deferred later
|
||||
on)
|
||||
To do so, open your Sales Journal by going to
|
||||
:menuselection:`Accounting --> Accounting --> Sales`, select the journal item you
|
||||
want to modify, click on the account, and select the right one.
|
||||
|
||||
- Entry 2 dated on the 1st February, the reversal of the previous entry:
|
||||
.. image:: deferred_revenues/deferred_revenues04.png
|
||||
:align: center
|
||||
:alt: Modification of a posted journal item's account in Odoo Accounting
|
||||
|
||||
- Line 1: Expense account **1800**
|
||||
- Line 2: Deferred account **-150**
|
||||
- Line 3: Expense account **-1650**
|
||||
Deferred Revenues entries
|
||||
=========================
|
||||
|
||||
In February
|
||||
At the end of February, after clicking the :guilabel:`Generate Entries` button, there are the
|
||||
following entries:
|
||||
Create a new entry
|
||||
------------------
|
||||
|
||||
- Entry 1 dated on the 28th February:
|
||||
A **Deferred Revenues entry** automatically generates all journal entries in *draft mode*. They are
|
||||
then posted one by one at the right time until the full amount of the income is recognized.
|
||||
|
||||
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both invoices)
|
||||
- Line 2: Expense account 200 + 100 = **300** (recognizing 2/12 of invoice A and invoice B)
|
||||
- Line 3: Deferred account 1800 - 300 = **1500** (amount that has yet to be deferred later
|
||||
on)
|
||||
To create a new entry, go to :menuselection:`Accounting --> Accounting --> Deferred Revenues`, click
|
||||
on *Create*, and fill out the form.
|
||||
|
||||
- Entry 2 dated on the 1st March, the reversal of the previous entry.
|
||||
Click on **select related purchases** to link an existing journal item to this new entry. Some
|
||||
fields are then automatically filled out, and the journal item is now listed under the **Related
|
||||
Sales** tab.
|
||||
|
||||
From March to October
|
||||
The same computation is done for each month until October.
|
||||
.. image:: deferred_revenues/deferred_revenues05.png
|
||||
:align: center
|
||||
:alt: Deferred Revenue entry in Odoo Accounting
|
||||
|
||||
In November
|
||||
At the end of November, after clicking the :guilabel:`Generate Entries` button, there are the
|
||||
following entries:
|
||||
Once done, you can click on *Compute Revenue* (next to the *Confirm* button) to generate all the
|
||||
values of the **Revenue Board**. This board shows you all the entries that Odoo will post to
|
||||
recognize your revenue, and at which date.
|
||||
|
||||
- Entry 1 dated on the 30th November:
|
||||
.. image:: deferred_revenues/deferred_revenues06.png
|
||||
:align: center
|
||||
:alt: Revenue Board in Odoo Accounting
|
||||
|
||||
- Line 1: Expense account -1200 -600 = **-1800** (cancelling the total of both invoices)
|
||||
- Line 2: Expense account 1100 + 550 = **1650** (recognizing 11/12 of invoice A and invoice
|
||||
B)
|
||||
- Line 3: Deferred account 1800 - 1650 = **150** (amount that has yet to be deferred later
|
||||
on)
|
||||
What does "Prorata Temporis" mean?
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Entry 2 dated on the 1st December, the reversal of the previous entry.
|
||||
The **Prorata Temporis** feature is useful to recognize your revenue the most accurately possible.
|
||||
|
||||
In December
|
||||
There is no need to generate entries in December. Indeed, if we do the computation for
|
||||
December, we have an amount of 0 to be deferred.
|
||||
With this feature, the first entry on the Revenue Board is computed based on the time left between
|
||||
the *Prorata Date* and the *First Recognition Date* rather than the default amount of time between
|
||||
recognitions.
|
||||
|
||||
In total
|
||||
If we aggregate everything, we would have:
|
||||
For example, the Revenue Board above has its first revenue with an amount of $ 4.22 rather than
|
||||
$ 70.00. Consequently, the last entry is also lower and has an amount of $ 65.78.
|
||||
|
||||
- invoice A and invoice B
|
||||
- two entries (one for the deferral and one for the reversal) for each month from January to
|
||||
November
|
||||
Deferred Entry from the Sales Journal
|
||||
-------------------------------------
|
||||
|
||||
Therefore, at the end of December, invoices A and B are fully recognized as income
|
||||
only once in spite of all the created entries thanks to the reversal mechanism.
|
||||
You can create a deferred entry from a specific journal item in your **Sales Journal**.
|
||||
|
||||
To do so, open your Sales Journal by going to
|
||||
:menuselection:`Accounting --> Accounting --> Sales`, and select the journal item you want to defer.
|
||||
Make sure that it is posted in the right account (see:
|
||||
`Change the account of a posted journal item`_).
|
||||
|
||||
Then, click on *Action*, select **Create Deferred Entry**, and fill out the form the same way you
|
||||
would do to `create a new entry`_.
|
||||
|
||||
.. image:: deferred_revenues/deferred_revenues07.png
|
||||
:align: center
|
||||
:alt: Create Deferred Entry from a journal item in Odoo Accounting
|
||||
|
||||
Deferred Revenue Models
|
||||
=======================
|
||||
|
||||
You can create **Deferred Revenue Models** to create your Deferred Revenue entries faster.
|
||||
|
||||
To create a model, go to :menuselection:`Accounting --> Configuration --> Deferred Revenue Models`,
|
||||
click on *Create*, and fill out the form the same way you would do to create a new entry.
|
||||
|
||||
.. tip::
|
||||
You can also convert a *confirmed Deferred Revenue entry* into a model by
|
||||
opening it from :menuselection:`Accounting --> Accounting --> Deferred
|
||||
Revenues` and then, by clicking on the button *Save Model*.
|
||||
|
||||
Apply a Deferred Revenue Model to a new entry
|
||||
---------------------------------------------
|
||||
|
||||
When you create a new Deferred Revenue entry, fill out the **Deferred Revenue Account** with the
|
||||
right recognition account.
|
||||
|
||||
New buttons with all the models linked to that account appear at the top of the form. Clicking on a
|
||||
model button fills out the form according to that model.
|
||||
|
||||
.. image:: deferred_revenues/deferred_revenues08.png
|
||||
:align: center
|
||||
:alt: Deferred Revenue model button in Odoo Accounting
|
||||
|
||||
.. _deferred-revenues-automation:
|
||||
|
||||
Automate the Deferred Revenues
|
||||
==============================
|
||||
|
||||
When you create or edit an account of which the type is either *Current Liabilities* or *Non-current
|
||||
Liabilities*, you can configure it to defer the revenues that are credited on it automatically.
|
||||
|
||||
You have three choices for the **Automate Deferred Revenue** field:
|
||||
|
||||
#. **No:** this is the default value. Nothing happens.
|
||||
#. **Create in draft:** whenever a transaction is posted on the account, a draft *Deferred Revenues
|
||||
entry* is created, but not validated. You must first fill out the form in
|
||||
:menuselection:`Accounting --> Accounting --> Deferred Revenues`.
|
||||
#. **Create and validate:** you must also select a Deferred Revenue Model (see:
|
||||
`Deferred Revenue Models`_). Whenever a transaction is posted on the account, a *Deferred
|
||||
Revenues entry* is created and immediately validated.
|
||||
|
||||
.. image:: deferred_revenues/deferred_revenues09.png
|
||||
:align: center
|
||||
:alt: Automate Deferred Revenue on an account in Odoo Accounting
|
||||
|
||||
.. tip::
|
||||
You can, for example, select this account as the default **Income Account** of a product to fully
|
||||
automate its sale. (see: `Choose a different Income Account for specific products`_).
|
||||
|
||||
.. seealso::
|
||||
* :doc:`../get_started/chart_of_accounts`
|
||||
* `Odoo Academy: Deferred Revenues (Recognition) <https://www.odoo.com/r/EWO>`_
|
||||
|
||||
|
Before Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
@@ -20,220 +20,64 @@ Odoo supports, among others, the following formats.
|
||||
|
||||
* - Format Name
|
||||
- Applicability
|
||||
* - Factur-X (CII)
|
||||
- All customers
|
||||
* - Peppol BIS Billing 3.0
|
||||
- All customers
|
||||
* - Factur-X (PDF/A-3)
|
||||
- For French and German companies
|
||||
* - Peppol BIS Billing 3.0 (UBL)
|
||||
- For companies whose countries are part of the `EAS list
|
||||
<https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/>`_
|
||||
* - E-FFF
|
||||
- For Belgian companies
|
||||
* - XRechnung (UBL)
|
||||
- All customers
|
||||
- For German companies
|
||||
* - Fattura PA (IT)
|
||||
- Italian companies
|
||||
- For Italian companies
|
||||
* - CFDI (4.0)
|
||||
- Mexican companies
|
||||
- For Mexican companies
|
||||
* - Peru UBL 2.1
|
||||
- Peruvian companies
|
||||
- For Peruvian companies
|
||||
* - SII IVA Llevanza de libros registro (ES)
|
||||
- Spanish companies
|
||||
- For Spanish companies
|
||||
* - UBL 2.1 (Columbia)
|
||||
- Colombian companies
|
||||
- For Colombian companies
|
||||
* - Egyptian Tax Authority
|
||||
- Egyptian companies
|
||||
- For Egyptian companies
|
||||
* - E-Invoice (IN)
|
||||
- Indian companies
|
||||
- For Indian companies
|
||||
* - NLCIUS (Netherlands)
|
||||
- Dutch companies
|
||||
- For Dutch companies
|
||||
* - EHF 3.0
|
||||
- Norwegian companies
|
||||
- For Norwegian companies
|
||||
* - SG BIS Billing 3.0
|
||||
- Singaporean companies
|
||||
- For Singaporean companies
|
||||
* - A-NZ BIS Billing 3.0
|
||||
- All customers
|
||||
|
||||
.. note::
|
||||
- The **Factur-X (CII)** format enables validation checks on the invoice and generates PDF/A-3
|
||||
compliant files.
|
||||
- Every PDF generated by Odoo includes an integrated **Factur-X** XML file.
|
||||
- For Australian/New Zealand companies
|
||||
|
||||
.. seealso::
|
||||
:doc:`../../fiscal_localizations`
|
||||
:ref:`fiscal_localizations/packages`
|
||||
|
||||
.. _e-invoicing/configuration:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
By default, the format available in the :ref:`send window <e-invoicing/generation>` depends on your
|
||||
customer's country.
|
||||
Go to :menuselection:`Accounting --> Configuration --> Journals --> Customer Invoices --> Advanced
|
||||
Settings --> Electronic Invoicing` and enable the formats you need for this journal.
|
||||
|
||||
You can define a specific e-invoicing format for each customer. To do so, go to
|
||||
:menuselection:`Accounting --> Customers --> Customers`, open the customer form, go to the
|
||||
:guilabel:`Accounting` tab and select the appropriate format.
|
||||
.. image:: electronic_invoicing/formats.png
|
||||
:align: center
|
||||
:alt: Select the EDI format you need
|
||||
|
||||
.. image:: electronic_invoicing/customer-form.png
|
||||
:alt: Select an EDI format for a specific customer
|
||||
|
||||
National electronic invoicing
|
||||
-----------------------------
|
||||
|
||||
Depending on your company's country (e.g., :doc:`Italy <../../fiscal_localizations/italy>`,
|
||||
:doc:`Spain <../../fiscal_localizations/spain>`, :doc:`Mexico
|
||||
<../../fiscal_localizations/mexico>`, etc.), you may be required to issue e-invoicing documents in
|
||||
a specific format for all your invoices. In this case, you can define a default e-invoicing format
|
||||
for your sales journal.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Journals`, open your sales journal,
|
||||
go to the :guilabel:`Advanced Settings` tab, and enable the formats you need for this journal.
|
||||
|
||||
.. _e-invoicing/generation:
|
||||
|
||||
E-invoices generation
|
||||
=====================
|
||||
|
||||
From a confirmed invoice, click :guilabel:`Send & Print` to open the send window. Check the
|
||||
e-invoicing option to generate and attach the e-invoice file.
|
||||
|
||||
.. image:: electronic_invoicing/send-window.png
|
||||
:alt: The Peppol option is checked and an e-invoicing XML file is attached to the email.
|
||||
|
||||
Peppol
|
||||
======
|
||||
|
||||
The `Peppol <https://peppol.org/about/>`_ network ensures the exchange of documents and information
|
||||
between enterprises and governmental authorities. It is primarily used for electronic invoicing, and
|
||||
its access points (connectors to the Peppol network) allow enterprises to exchange electronic
|
||||
documents.
|
||||
|
||||
Odoo is an **access point** and an :abbr:`SMP (Service Metadata Publisher)`, enabling electronic
|
||||
invoicing transactions without the need to send invoices and bills by email or post.
|
||||
|
||||
If not done yet, :ref:`install <general/install>` the :guilabel:`Peppol` module (`account_peppol`).
|
||||
|
||||
.. important::
|
||||
- Peppol registration is **free** and available in Odoo Community
|
||||
- You can send **Customer Invoices** and **Credit Notes** and receive **Vendor Bills** and
|
||||
**Refunds** via Peppol.
|
||||
- You can send in one of the following supported document formats: **BIS Billing 3.0, XRechnung
|
||||
CIUS, NLCIUS**.
|
||||
- | The following **countries** are eligible for **Peppol registration in Odoo**:
|
||||
| Andorra, Albania, Austria, Bosnia and Herzegovina, Belgium, Bulgaria, Switzerland, Cyprus,
|
||||
Czech Republic, Germany, Denmark, Estonia, Spain, Finland, France, United Kingdom, Greece,
|
||||
Croatia, Hungary, Ireland, Iceland, Italy, Liechtenstein, Lithuania, Luxembourg, Latvia,
|
||||
Monaco, Montenegro, North Macedonia, Malta, Netherlands, Norway, Poland, Portugal, Romania,
|
||||
Serbia, Sweden, Slovenia, Slovakia, San Marino, Turkey, Holy See (Vatican City State)
|
||||
|
||||
Registration
|
||||
------------
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Settings`, tick the :guilabel:`Use PEPPOL
|
||||
Invoicing` checkbox, and fill in the following information:
|
||||
|
||||
- :guilabel:`Peppol EAS`. This is the Peppol Electronic Address Scheme and usually depends on your
|
||||
company's country. Odoo often prefills this with the most commonly used EAS code in your country.
|
||||
For example, the preferred EAS code for most companies in Belgium is 0208.
|
||||
- :guilabel:`Peppol Endpoint`. This is usually a Company Registry number or a VAT number.
|
||||
- :guilabel:`Phone Number`, including the country code (e.g., `+32` in Belgium)
|
||||
- :guilabel:`Primary contact email`
|
||||
|
||||
.. seealso::
|
||||
- `Peppol EAS - European Commision <https://ec.europa.eu/digital-building-blocks/wikis/display/DIGITAL/Code+lists/>`_
|
||||
- `Peppol Endpoint - OpenPeppol eDEC Code Lists <https://docs.peppol.eu/edelivery/codelists/>`_
|
||||
(open the "Participant Identifier Schemes" as HTML page)
|
||||
|
||||
If you are migrating from another access point, insert the :guilabel:`Migration key` from the
|
||||
previous provider.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-settings.png
|
||||
:alt: Configuration for peppol
|
||||
|
||||
Finally, click on :guilabel:`Validate registration`.
|
||||
Once an electronic invoicing format is enabled, XML documents are generated when clicking on
|
||||
:guilabel:`Confirm` in documents such as invoices, credit notes, etc. These documents are either
|
||||
visible in the attachment section, or embedded in the PDF.
|
||||
|
||||
.. note::
|
||||
When testing Peppol, the system parameter `account_peppol.edi.mode` can be changed to `test`.
|
||||
Then, the registration occurs on the test server.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-system-parameter.png
|
||||
:alt: Peppol test mode
|
||||
|
||||
Now, you can request a verification code to be sent to you by clicking :guilabel:`Verify phone
|
||||
number`.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-registration-verify.png
|
||||
:alt: phone validation request verification
|
||||
|
||||
A text message containing a code is sent to the phone number provided to finalize the verification
|
||||
process.
|
||||
|
||||
.. image:: electronic_invoicing/phone-registration.png
|
||||
:alt: phone validation
|
||||
|
||||
Once you enter the code and click :guilabel:`Confirm`, you can see that your registration is pending
|
||||
activation. From this point onwards, the default journal for receiving Vendor Bills can be set.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-registration-pending.png
|
||||
:alt: pending application
|
||||
|
||||
It should be automatically activated within a day.
|
||||
|
||||
.. tip::
|
||||
It is also possible to manually trigger the cron that checks the registration status by going to
|
||||
:menuselection:`Settings --> Technical --> Scheduled Actions --> PEPPOL\: update participant
|
||||
status`.
|
||||
|
||||
Your application status should be updated soon after you are registered on the Peppol network.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-registration-active.png
|
||||
:alt: active application
|
||||
|
||||
All invoices and vendor bills can now be sent directly using the Peppol network.
|
||||
|
||||
Contact verification
|
||||
--------------------
|
||||
|
||||
Before sending an invoice to a contact using the Peppol network, it is necessary to verify that they
|
||||
are also registered as a Peppol participant.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Customers --> Customers` and open the customer's
|
||||
form. Then go to :menuselection:`Accounting tab --> Electronic Invoicing`, select the correct
|
||||
format, and make sure their :guilabel:`Peppol EAS code` and the :guilabel:`Endpoint` are filled in.
|
||||
Then, click :guilabel:`Verify`. If the contact exists on the network, their Peppol endpoint validity
|
||||
is set to Valid.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-contact-verify.png
|
||||
:alt: verify contact registration
|
||||
|
||||
.. important::
|
||||
While Odoo prefills both the EAS code and the Endpoint number based on the information available
|
||||
for a contact, it is better to confirm these details directly with the contact.
|
||||
|
||||
Send invoices
|
||||
-------------
|
||||
|
||||
Once ready to send an invoice via the Peppol network, simply click :guilabel:`Send & Print` on the
|
||||
invoice form. To queue multiple invoices, select them in the list view and click
|
||||
:menuselection:`Actions --> Send & Print`; they will be sent in a batch later on. Both
|
||||
:guilabel:`BIS Billing 3.0` and :guilabel:`Send via PEPPOL` checkboxes need to be ticked.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-send-print.png
|
||||
:alt: Send peppol invoice
|
||||
|
||||
Once the invoices are sent via Peppol, the status is changed to :guilabel:`Processing`. The
|
||||
status is changed to `Done` after they have been successfully delivered to the contact's Access
|
||||
Point.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-message-processing.png
|
||||
:alt: Peppol message status
|
||||
|
||||
.. tip::
|
||||
By default, the Peppol status column is hidden on the Invoices list view. You can choose to have
|
||||
it displayed by selecting it from the optional columns, accessible from the top right corner of
|
||||
the Invoices list view.
|
||||
|
||||
Receive vendor bills
|
||||
--------------------
|
||||
|
||||
Once a day, a cron checks whether any new documents have been sent to you via the Peppol network.
|
||||
These documents are imported, and the corresponding vendor bills are created automatically as
|
||||
drafts.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-receive-bills.png
|
||||
:alt: peppol receive bills
|
||||
- For E-FFF, the xml file only appears after having generated the PDF (:guilabel:`Print` or
|
||||
:guilabel:`Send & Print` button), since the PDF needs to be embedded inside the xml.
|
||||
- Every PDF generated from Odoo contains a :guilabel:`Factur-X` XML file (for interoperability purpose).
|
||||
For German and French companies, the option :guilabel:`Factur-X (PDF/A-3)` in addition enables
|
||||
validation checks on the invoice and generates a PDF/A-3 compliant file, required by plaftorms like Chorus Pro.
|
||||
- The formats available depend on the country registered in your company's :guilabel:`General
|
||||
Information`.
|
||||
- Odoo supports the **Peppol BIS Billing 3.0** format that can be used via existing access
|
||||
points.
|
||||
|
||||
|
Before Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 16 KiB |
@@ -25,9 +25,7 @@ transportation, insurance, customs clearance, and other relevant aspects of the
|
||||
- **DDP**: Delivered duty paid
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../reporting/intrastat`
|
||||
- :doc:`../customer_invoices`
|
||||
- :doc:`../vendor_bills`
|
||||
:doc:`../reporting/intrastat`
|
||||
|
||||
.. _incoterms/invoices:
|
||||
|
||||
@@ -37,16 +35,6 @@ Define an Incoterm
|
||||
To define an Incoterm manually, create an invoice or bill, click the :guilabel:`Other Info` tab, and
|
||||
select the :guilabel:`Incoterm`.
|
||||
|
||||
Incoterm location
|
||||
-----------------
|
||||
|
||||
A location relevant to the chosen Incoterm can be added to the invoice or bill under
|
||||
:guilabel:`Other Info` in the :guilabel:`Incoterm Location` field.
|
||||
|
||||
.. example::
|
||||
If the chosen Incoterm code is `CIF` (Cost, Insurance, Freight), the associated location might be
|
||||
the destination port where the goods will be delivered.
|
||||
|
||||
.. _incoterms/default:
|
||||
|
||||
Default Incoterm configuration
|
||||
|
||||
@@ -49,41 +49,43 @@ To create new payment terms, follow these steps:
|
||||
|
||||
#. Go to :menuselection:`Accounting --> Configuration --> Payment Terms` and click on
|
||||
:guilabel:`New`.
|
||||
#. Enter a name in the :guilabel:`Payment Terms` field. This field is the name displayed both
|
||||
internally and on sales orders.
|
||||
#. Tick the :guilabel:`Early Discount` checkbox and fill out the discount percentage, discount days,
|
||||
and :ref:`tax reduction <cash-discounts/tax-reductions>` fields to add a :doc:`cash discount
|
||||
<cash_discounts>`, if desired.
|
||||
#. In the :guilabel:`Due Terms` section, add a set of rules (terms) to define what needs to be paid
|
||||
and by which due date(s). Defining terms automatically calculates the payments' due date(s). This
|
||||
is particularly helpful for managing **installment plans** (:dfn:`payment terms with multiple
|
||||
#. Enter a name in the :guilabel:`Payment Terms` field. This field is the name displayed in the
|
||||
database and is not customer-facing.
|
||||
#. Enter the text to be displayed on the document (sales order, invoice, etc.) in the
|
||||
:guilabel:`Description on the Invoice` field.
|
||||
#. Tick the :guilabel:`Display terms on invoice` checkbox to display a breakdown of each payment and
|
||||
its due date on the invoice report, if desired.
|
||||
#. In the :guilabel:`Terms` section, add a set of rules (terms) to define what needs to be paid and
|
||||
by which due date(s). Defining terms automatically calculates the payments' due date(s). This is
|
||||
particularly helpful for managing **installment plans** (:dfn:`payment terms with multiple
|
||||
terms`).
|
||||
|
||||
To add a term, click on :guilabel:`Add a line`, define the discount's value and type in the
|
||||
:guilabel:`Due` fields, then fill out the :guilabel:`After` fields to determine the due date.
|
||||
#. Enter the text to be displayed on the document (sales order, invoice, etc.) in the gray textbox
|
||||
in the :guilabel:`Preview` column.
|
||||
#. Tick the :guilabel:`Show installment dates` checkbox to display a breakdown of each payment and
|
||||
its due date on the invoice report, if desired.
|
||||
To add a term, click on :guilabel:`Add a line`, define its :guilabel:`Due Type` and
|
||||
:guilabel:`Value`, and fill out the appropriate fields to define when the term is due, including
|
||||
any :doc:`discounts <cash_discounts>`. Due dates are calculated by taking the invoice/bill date,
|
||||
first adding the :guilabel:`Months`, and then adding the :guilabel:`Days`. If the :guilabel:`End
|
||||
of month` toggle is enabled, the due date will then be the end of that month, plus any
|
||||
:guilabel:`Days after End of month`.
|
||||
|
||||
.. tip::
|
||||
To instead specify a number of days *before the end of the month*, use a negative value in the
|
||||
:guilabel:`After` field.
|
||||
:guilabel:`Days after End of month` field.
|
||||
|
||||
To test that your payment terms are configured correctly, enter an invoice date on the
|
||||
:guilabel:`Example` line to generate the payments that would be due and their due dates
|
||||
To test that your payment terms are configured correctly, enter an invoice amount and invoice date
|
||||
in the :guilabel:`Example` section to generate the payments that would be due and their due dates
|
||||
using these payment terms.
|
||||
|
||||
.. important::
|
||||
Terms are computed in the order of their due dates.
|
||||
- Terms are computed in the order of their due dates.
|
||||
- The **balance** should always be used for the last line.
|
||||
|
||||
.. example::
|
||||
In the following example, 30% is due on the day of issuance, and the remaining 70% is due at the
|
||||
end of the following month.
|
||||
In the following example, 30% is due on the day of issuance, and the balance is due at the end of
|
||||
the following month.
|
||||
|
||||
.. image:: payment_terms/configuration.png
|
||||
:alt: Example of Payment Terms. The first line is the 30% due immediately. The second line is
|
||||
the remaining 70% due at the end of the following month.
|
||||
:alt: Example of Payment Terms. The last line is the balance due on the 31st of the following
|
||||
month.
|
||||
|
||||
Using payment terms
|
||||
===================
|
||||
@@ -124,7 +126,7 @@ due date into account, rather than just the balance due date. It also helps to g
|
||||
distinct due dates
|
||||
|
||||
In this example, an invoice of $1000 has been issued with the following payment terms: *30% is
|
||||
due on the day of issuance, and the remaining 70% is due at the end of the following month.*
|
||||
due on the day of issuance, and the balance is due at the end of the following month.*
|
||||
|
||||
+----------------------+-------------+---------+---------+
|
||||
| Account | Due date | Debit | Credit |
|
||||
|
||||
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 8.2 KiB |
@@ -4,13 +4,11 @@ Chart of accounts
|
||||
|
||||
The **chart of accounts (COA)** is the list of all the accounts used to record financial
|
||||
transactions in the general ledger of an organization. The chart of accounts can be found under
|
||||
:menuselection:`Accounting --> Configuration --> Chart of Accounts`.
|
||||
:menuselection:`Accounting-->Configuration-->Chart of Accounts`.
|
||||
|
||||
When browsing your chart of accounts, you can sort the accounts by :guilabel:`Code`,
|
||||
:guilabel:`Account Name`, or :guilabel:`Type`, but other options are available in the drop-down menu
|
||||
|
||||
.. image:: chart_of_accounts/drop-down.png
|
||||
:alt: Drop-down toggle button
|
||||
:guilabel:`(⋮)`.
|
||||
|
||||
.. image:: chart_of_accounts/chart-of-accounts-sort.png
|
||||
:alt: Group the accounts by type in Odoo Accounting
|
||||
@@ -23,7 +21,7 @@ determines which :doc:`fiscal localization package <../../fiscal_localizations>`
|
||||
default. This package includes a standard chart of accounts already configured according to the
|
||||
country's regulations. You can use it directly or set it according to your company's needs.
|
||||
|
||||
To create a new account, go to :menuselection:`Accounting --> Configuration --> Chart of Accounts`,
|
||||
To create a new account, go to :menuselection:`Accounting-->Configuration-->Chart of Accounts`,
|
||||
click :guilabel:`Create`, and fill in (at the minimum) the required fields
|
||||
(:guilabel:`Code, Account Name, Type`).
|
||||
|
||||
@@ -92,12 +90,13 @@ corresponding type from the following list:
|
||||
|Other | Other | Off-Balance Sheet |
|
||||
+---------------+--------------+-------------------------+
|
||||
|
||||
Assets
|
||||
~~~~~~
|
||||
Assets, deferred expenses, and deferred revenues automation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Some **account types** can **automate** the creation of :ref:`asset <assets-automation>` entries.
|
||||
To **automate** entries, click :guilabel:`View` on an account line and go to the
|
||||
:guilabel:`Automation` tab.
|
||||
Some **account types** can **automate** the creation of :ref:`assets <assets-automation>` entries,
|
||||
:ref:`deferred expenses <deferred-expenses-automation>` entries, and
|
||||
:ref:`deferred revenues <deferred-revenues-automation>` entries. To **automate** entries, click
|
||||
:guilabel:`Setup` on an account line and go to the :guilabel:`Automation` tab.
|
||||
|
||||
You have three choices for the :guilabel:`Automation` tab:
|
||||
|
||||
@@ -110,14 +109,14 @@ You have three choices for the :guilabel:`Automation` tab:
|
||||
Default taxes
|
||||
-------------
|
||||
|
||||
In the :guilabel:`View` menu of an account, select a **default tax** to be applied when this
|
||||
In the :guilabel:`Setup` menu of an account, select a **default tax** to be applied when this
|
||||
account is chosen for a product sale or purchase.
|
||||
|
||||
Tags
|
||||
----
|
||||
|
||||
Some accounting reports require **tags** to be set on the relevant accounts. To add a tag, under
|
||||
:guilabel:`View`, click the :guilabel:`Tags` field and select an existing tag or :guilabel:`Create`
|
||||
:guilabel:`Setup`, click the :guilabel:`Tags` field and select an existing tag or :guilabel:`Create`
|
||||
a new one.
|
||||
|
||||
Account groups
|
||||
@@ -127,7 +126,7 @@ Account groups
|
||||
thus consolidate reports such as the **Trial Balance**. By default, groups are handled automatically
|
||||
based on the code of the group. For example, a new account `131200` is going to be part of the group
|
||||
`131000`. You can attribute a specific group to an account in the :guilabel:`Group` field under
|
||||
:guilabel:`View`.
|
||||
:guilabel:`Setup`.
|
||||
|
||||
Create account groups manually
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -137,7 +136,7 @@ Create account groups manually
|
||||
intended for rare and advanced use cases.
|
||||
|
||||
To create a new account group, activate :ref:`developer mode <developer-mode>` and head to
|
||||
:menuselection:`Accounting --> Configuration --> Account Groups`. Here, create a new group and enter
|
||||
:menuselection:`Accounting app-->Configuration-->Account Groups`. Here, create a new group and enter
|
||||
the :guilabel:`name, code prefix, and company` to which that group account should be available. Note
|
||||
that you must enter the same code prefix in both :guilabel:`From` and :guilabel:`to` fields.
|
||||
|
||||
@@ -145,8 +144,8 @@ that you must enter the same code prefix in both :guilabel:`From` and :guilabel:
|
||||
:alt: Account groups creation.
|
||||
|
||||
To display your **Trial Balance** report with your account groups, go to
|
||||
:menuselection:`Accounting --> Reporting --> Trial Balance`, then open the :guilabel:`Options` menu
|
||||
and select :guilabel:`Hierarchy and Subtotals`.
|
||||
:menuselection:`Accounting-->Reporting-->Trial Balance`, then open the :guilabel:`Options` menu and
|
||||
select :guilabel:`Hierarchy and Subtotals`.
|
||||
|
||||
.. image:: chart_of_accounts/chart-of-accounts-groups.png
|
||||
:alt: Account Groups in the Trial Balance in Odoo Accounting
|
||||
|
||||
|
Before Width: | Height: | Size: 461 B |
@@ -110,14 +110,14 @@ click the drop-down menu button (:guilabel:`⋮`), and select :guilabel:`Payment
|
||||
Batch payments matching
|
||||
-----------------------
|
||||
|
||||
You can use the **batch reconciliation feature** to reconcile several outstanding payments or
|
||||
invoices simultaneously for a specific customer or vendor. Go to your **Accounting Dashboard** and
|
||||
open your **bank journal**. In the **bank reconciliation** view, select a **transaction**, and click
|
||||
the :guilabel:`Batch Payments` tab. From here, you can reconcile your
|
||||
:doc:`batch payments <payments/batch>` with your outstanding payments or invoices.
|
||||
You can use the batch reconciliation feature to reconcile several outstanding payments or invoices
|
||||
simultaneously for a specific customer or vendor. Go to :menuselection:`Accounting --> Reporting -->
|
||||
Aged Receivable / Aged Payable`. You can see all transactions that have not been reconciled yet for
|
||||
that partner, and when you select a customer or vendor, the :guilabel:`Reconcile` option is
|
||||
displayed.
|
||||
|
||||
.. image:: payments/reconcile-option.png
|
||||
:alt: The batch payment reconcile option.
|
||||
:alt: See the reconcile option.
|
||||
|
||||
Registering a partial payment
|
||||
=============================
|
||||
@@ -151,4 +151,3 @@ have the transaction finalized and the invoice or bill marked as :guilabel:`Paid
|
||||
payments/pay_sepa
|
||||
payments/pay_checks
|
||||
payments/forecast
|
||||
payments/trusted_accounts
|
||||
|
||||
@@ -25,6 +25,7 @@ window, select the :guilabel:`Journal` linked to your bank account and :guilabel
|
||||
the :guilabel:`Payment Method`, and click :guilabel:`Create Payment`.
|
||||
|
||||
.. image:: batch/batch-payments.png
|
||||
:align: center
|
||||
:alt: Registering a customer payment as part of a batch deposit
|
||||
|
||||
Add payments to a batch deposit
|
||||
@@ -35,12 +36,14 @@ Payments`, and click :guilabel:`New`. Next, select the :guilabel:`Bank` and choo
|
||||
Deposit` as the :guilabel:`Payment Method`.
|
||||
|
||||
.. image:: batch/batch-customer-payment.png
|
||||
:align: center
|
||||
:alt: Filling out a new inbound batch payment form
|
||||
|
||||
Click :guilabel:`Add a line`. In the pop-up window, tick all payments to include in the batch
|
||||
deposit, then click :guilabel:`Select`.
|
||||
|
||||
.. image:: batch/batch-lines-selection.png
|
||||
:align: center
|
||||
:alt: Selecting all payments to include in the batch deposit
|
||||
|
||||
Once done, click :guilabel:`Validate` to finalize the batch deposit.
|
||||
@@ -57,6 +60,7 @@ Items` on the related bank account. Go to the :guilabel:`Batch Payments` tab to
|
||||
batch and click :guilabel:`Validate` to finalize the process.
|
||||
|
||||
.. image:: batch/batch-reconciliation.png
|
||||
:align: center
|
||||
:alt: Reconciling the batch payment with all its transactions
|
||||
|
||||
.. note::
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 17 KiB |
@@ -50,16 +50,17 @@ SEPA Direct Debit as a payment method
|
||||
-------------------------------------
|
||||
|
||||
SDD can be used as a payment method both on your **eCommerce** or on the **Customer Portal** by
|
||||
activating SDD as a **Payment Provider**. With this method, your customers can create their mandates.
|
||||
To ensure the validity of the information given by the customer, they will have to confirm each
|
||||
mandate with one successful bank transfer of the expected amount.
|
||||
activating SDD as a **Payment Provider**. With this method, your customers can create and sign their
|
||||
mandates themselves.
|
||||
|
||||
To do so, go to :menuselection:`Accounting app --> Configuration --> Payment Providers`, click on
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Payment Providers`, click on *SEPA
|
||||
Direct Debit*, and set it up according to your needs.
|
||||
To do so, go to :menuselection:`Accounting app --> Configuration --> Payment Acquirers`, click on
|
||||
:guilabel:`SEPA Direct Debit`.
|
||||
|
||||
.. important::
|
||||
Make sure to change the :guilabel:`State` field to :guilabel:`Enabled` and set the provider as
|
||||
"Published" so that it is available for your customers.
|
||||
Make sure to change the :guilabel:`State` field to :guilabel:`Enabled`, and to check
|
||||
:guilabel:`Online Signature`, as this is necessary to let your customers sign their mandates.
|
||||
|
||||
Customers using SDD as payment method get prompted to add their IBAN, email address, and to sign
|
||||
their SEPA Direct Debit mandate.
|
||||
|
||||
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 13 KiB |
@@ -20,11 +20,11 @@ method, making the payment process much easier.
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Make sure your :ref:`Payment Providers are correctly configured <payment_providers/configuration>`.
|
||||
Make sure your :doc:`payment providers are correctly configured <../../payment_providers>`.
|
||||
|
||||
.. note::
|
||||
By default, ":doc:`Wire Transfer </applications/finance/payment_providers/wire_transfer>`" is the only
|
||||
Payment Provider activated, but you still have to fill out the payment details.
|
||||
By default, ":doc:`Wire Transfer </applications/finance/payment_providers/wire_transfer>`" is the
|
||||
only payment provider activated, but you still have to fill out the payment details.
|
||||
|
||||
To activate the Invoice Online Payment, go to :menuselection:`Accounting --> Configuration -->
|
||||
Settings --> Customer Payments`, enable **Invoice Online Payment**, and click on *Save*.
|
||||
|
||||
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 6.7 KiB |
@@ -1,61 +0,0 @@
|
||||
=============================
|
||||
Trusted accounts (send money)
|
||||
=============================
|
||||
|
||||
To protect users from sending money to scammers, vendor bank account numbers must be marked as
|
||||
trusted before you can use them to make an outgoing payment.
|
||||
|
||||
To do so, open the vendor bank account and click on the :guilabel:`Send Money` toggle switch button.
|
||||
|
||||
.. image:: trusted_accounts/send-money-toggle.png
|
||||
:align: center
|
||||
:alt: Example of a vendor bank account with the "Send Money" toggle button switched to "trusted."
|
||||
|
||||
.. note::
|
||||
All accounts are initially marked as untrusted.
|
||||
|
||||
Phishing attacks
|
||||
================
|
||||
|
||||
A **phishing attack** is an online scam designed to trick individuals or companies into giving away
|
||||
sensitive information or money by sending out fraudulent communication. Fraudsters pretend to be
|
||||
legitimate companies and may use partial information to give credibility to their requests.
|
||||
|
||||
There are several types of phishing attacks, including **invoice fraud**. In this case, the
|
||||
fraudster pretends to be a genuine supplier following up on unpaid bills or sending a new invoice,
|
||||
but with different payment information than usual and with fake contact details.
|
||||
|
||||
To protect yourself from these types of phishing attacks, remain vigilant when you receive
|
||||
unexpected invoices or payment requests.
|
||||
|
||||
.. important::
|
||||
In case of doubt, **we recommend contacting the vendor by phone**. Make sure to call an official
|
||||
phone number by searching yourself, as the URLs, email addresses, and phone numbers written in
|
||||
the communication you received may be fake.
|
||||
|
||||
Elements to check
|
||||
-----------------
|
||||
|
||||
There are several elements you can check by yourself when you receive an outgoing payment request to
|
||||
a new account:
|
||||
|
||||
Communication style
|
||||
Fraudulent emails and invoices often use a different communication style, such as **different
|
||||
wording**, and may include **spelling and grammatical mistakes**. Examine and **compare** them
|
||||
with previous ones that you know to be authentic (e.g., payment instructions, language, company
|
||||
logo, etc.).*
|
||||
|
||||
Urgency
|
||||
Invoice frauds often use **urgent or threatening language** and change the **payment deadline**.
|
||||
Check if you really received a late payment reminder previously.
|
||||
|
||||
Type of account
|
||||
A company is unlikely to replace a bank account with a **money transfer service**.
|
||||
|
||||
Email and links domain names
|
||||
Double-check the **email address domain** (`example@domain.com`). However, be wary that fraudsters
|
||||
can make their email addresses look genuine or even hack email addresses from your vendor's
|
||||
employees or even someone within your own organization.
|
||||
|
||||
Hover over the links in your email and check that the URLs they redirect to are genuine. Your
|
||||
internet browser usually displays the link's target at the bottom left of the window.
|
||||
|
Before Width: | Height: | Size: 4.8 KiB |
@@ -7,9 +7,8 @@ Reporting
|
||||
Main reports available
|
||||
======================
|
||||
|
||||
Besides the reports created specifically in each localisation module, a
|
||||
few very useful **generic** and **dynamic reports** are available for all
|
||||
countries :
|
||||
Odoo includes **generic** and **dynamic** reports available for all countries, regardless of the
|
||||
:doc:`localization package <../../finance/fiscal_localizations>` installed:
|
||||
|
||||
- **Balance Sheet**
|
||||
- **Profit and Loss**
|
||||
@@ -19,136 +18,136 @@ countries :
|
||||
- **Aged Receivable**
|
||||
- **Cash Flow Statement**
|
||||
- **Tax Report**
|
||||
- **Bank Reconciliation**
|
||||
|
||||
You can annotate every reports to print them and report to your adviser.
|
||||
Export to xls to manage extra analysis. Drill down in the reports to see
|
||||
more details (payments, invoices, journal items, etc.).
|
||||
Reports can be **annotated, printed, and drilled down** to see details (payments, invoices,
|
||||
journal items, etc.) by clicking the **down** arrow. Reports can also be exported to **PDF** or
|
||||
**XLSX** format by clicking :guilabel:`PDF` or :guilabel:`XLSX` at the top of the page.
|
||||
|
||||
You can also compare values with another period. Choose how many periods
|
||||
you want to compare the chosen time period with. You can choose up to 12
|
||||
periods back from the date of the report if you don't want to use the
|
||||
default **Previous 1 Period** option.
|
||||
.. image:: reporting/reporting-annotate.png
|
||||
:alt: Annotate reports.
|
||||
|
||||
You can compare values across periods by using the :guilabel:`Comparison` menu and selecting the
|
||||
periods you want to compare.
|
||||
|
||||
.. image:: reporting/reporting-comparison.png
|
||||
:alt: Comparison menu to compare time periods.
|
||||
|
||||
.. _reporting/balance-sheet:
|
||||
|
||||
Balance Sheet
|
||||
-------------
|
||||
|
||||
The **Balance Sheet** shows a snapshot of the assets, liabilities and equity
|
||||
of your organisation as at a particular date.
|
||||
The **Balance Sheet** shows a snapshot of your organization's assets, liabilities, and equity at a
|
||||
particular date.
|
||||
|
||||
.. image:: reporting/main_reports09.png
|
||||
.. image:: reporting/reporting-balance-sheet.png
|
||||
:alt: Balance sheet report of Odoo.
|
||||
|
||||
.. _reporting/profit-and-loss:
|
||||
|
||||
Profit and Loss
|
||||
---------------
|
||||
|
||||
The **Profit and Loss** report (or **Income Statement**) shows your
|
||||
organisation's net income, by deducting expenses from revenue for the
|
||||
report period.
|
||||
The **Profit and Loss** report (or **Income Statement**) shows your company's net income by
|
||||
deducting expenses from revenue for the reporting period.
|
||||
|
||||
.. image:: reporting/main_reports10.png
|
||||
.. image:: reporting/reporting-profit-and-loss.png
|
||||
:alt: Profit and Loss report of Odoo
|
||||
|
||||
.. _reporting/executive-summary:
|
||||
|
||||
Executive Summary
|
||||
-----------------
|
||||
|
||||
The **Executive Summary** allows for a quick look at all the important
|
||||
figures you need to run your company.
|
||||
The **Executive Summary** allows a quick look at all the important figures to run your company.
|
||||
|
||||
In very basic terms, this is what each of the items in this section is
|
||||
reporting :
|
||||
In basic terms, this is what each item in the following section reports:
|
||||
|
||||
- **Performance:**
|
||||
- **Gross profit margin:**
|
||||
The contribution each individual sale made
|
||||
by your business less any direct costs needed to make those sales
|
||||
(things like labour, materials, etc).
|
||||
The contribution of all sales made by your business **minus** any direct costs needed to
|
||||
make those sales (labor, materials, etc.).
|
||||
- **Net profit margin:**
|
||||
The contribution each individual sale made by
|
||||
your business less any direct costs needed to make those sales,
|
||||
as well as any fixed overheads your company has (things like
|
||||
rent, electricity, taxes you need to pay as a result of those
|
||||
sales).
|
||||
- **Return on investment (p.a.):**
|
||||
The ratio of net profit made, to the
|
||||
amount of assets the company used to make those profits.
|
||||
The contribution of all sales made by your business **minus** any direct costs needed to
|
||||
make those sales *and* fixed overheads your company has (electricity, rent, taxes
|
||||
to be paid as a result of those sales, etc.).
|
||||
- **Return on investment (per annum):**
|
||||
The ratio of net profit made to the amount of assets the company used to make those profits.
|
||||
- **Position:**
|
||||
- **Average debtor days:**
|
||||
The average number of days it takes your
|
||||
customers to pay you (fully), across all your customer invoices.
|
||||
- **Average creditor days:**
|
||||
The average number of days it takes you to
|
||||
pay your suppliers (fully) across all your bills.
|
||||
- **Short term cash forecast:**
|
||||
How much cash is expected in or out of
|
||||
your organisation in the next month i.e. balance of your **Sales
|
||||
account** for the month less the balance of your **Purchases account**
|
||||
for the month.
|
||||
- **Average debtors days:**
|
||||
The average number of days it takes your customers to (fully) pay you across all your
|
||||
customer invoices.
|
||||
- **Average creditors days:**
|
||||
The average number of days it takes you to (fully) pay your suppliers across all your bills.
|
||||
- **Short-term cash forecast:**
|
||||
How much cash is expected in or out of your business in the next month, i.e., the balance of
|
||||
your **Sales account** for the month **minus** the balance of your **Purchases account** for
|
||||
the month.
|
||||
- **Current assets to liabilities:**
|
||||
Also referred to as **current ratio**, this is the ratio
|
||||
of current assets (assets that could be
|
||||
turned into cash within a year) to the current liabilities
|
||||
(liabilities which will be due in the next year). This is
|
||||
typically used as as a measure of a company's ability to service
|
||||
its debt.
|
||||
Also referred to as **current ratio**, this is the ratio of current assets (:dfn:`assets
|
||||
that could be turned into cash within a year`) to the current liabilities (:dfn:`liabilities
|
||||
that will be due in the next year`). It is typically used to measure a company's ability to
|
||||
service its debt.
|
||||
|
||||
.. image:: reporting/main_reports01.png
|
||||
.. image:: reporting/reporting-executive-summary.png
|
||||
:alt: Executive summary report in Odoo.
|
||||
|
||||
.. _reporting/general-ledger:
|
||||
|
||||
General Ledger
|
||||
--------------
|
||||
|
||||
The **General Ledger Report** shows all transactions from all accounts for a
|
||||
chosen date range. The initial summary report shows the totals for each
|
||||
account and from there you can view a detailed transaction report or any
|
||||
exceptions. This report is useful for checking every transaction that
|
||||
occurred during a certain period of time.
|
||||
The **General Ledger Report** shows all transactions from all accounts for a chosen date range. The
|
||||
initial summary report shows each account's totals; from here, you can view a detailed transaction
|
||||
report or any exceptions. This report helps check every transaction that occurred during a specific
|
||||
period.
|
||||
|
||||
.. image:: reporting/main_reports05.png
|
||||
.. image:: reporting/reporting-general-ledger.png
|
||||
:alt: General Ledger report in Odoo.
|
||||
|
||||
.. _reporting/aged-payable:
|
||||
|
||||
Aged Payable
|
||||
------------
|
||||
|
||||
Run the **Aged Payable Details** report to display information on individual
|
||||
bills, credit notes and overpayments owed by you, and how long these
|
||||
have gone unpaid.
|
||||
Run the **Aged Payable Details** report to display information on individual bills, credit notes,
|
||||
and overpayments you owe and how long these have gone unpaid.
|
||||
|
||||
.. image:: reporting/main_reports02.png
|
||||
.. image:: reporting/reporting-aged-payable.png
|
||||
:alt: Aged Payable report in Odoo.
|
||||
|
||||
.. _reporting/aged-receivable:
|
||||
|
||||
Aged Receivable
|
||||
---------------
|
||||
|
||||
The **Aged Receivables** report shows the sales invoices that were awaiting
|
||||
payment during a selected month and several months prior.
|
||||
The **Aged Receivables** report shows the sales invoices awaiting payment during a selected month
|
||||
and several months prior.
|
||||
|
||||
.. image:: reporting/main_reports07.png
|
||||
.. image:: reporting/reporting-aged-receivable.png
|
||||
:alt: Aged Receivable report in Odoo.
|
||||
|
||||
.. _reporting/cash-flow-statement:
|
||||
|
||||
Cash Flow Statement
|
||||
-------------------
|
||||
|
||||
The **Cash Flow Statement** shows how changes in balance sheet accounts and
|
||||
income affect cash and cash equivalents, and breaks the analysis down to
|
||||
operating, investing and financing activities.
|
||||
The **Cash Flow Statement** shows how changes in balance sheet accounts and income affect cash and
|
||||
cash equivalents and breaks the analysis down to operating, investing, and financing activities.
|
||||
|
||||
.. image:: reporting/main_reports03.png
|
||||
.. image:: reporting/reporting-cash-flow-statement.png
|
||||
:alt: Cash Flow Statement report in Odoo.
|
||||
|
||||
.. _reporting/tax-report:
|
||||
|
||||
Tax Report
|
||||
----------
|
||||
|
||||
This report allows you to see the **net** and **tax amounts** for all the taxes
|
||||
grouped by type (sale/purchase).
|
||||
This report allows you to see the **net** and **tax amounts** for all the taxes grouped by type
|
||||
(sale/purchase).
|
||||
|
||||
.. image:: reporting/main_reports04.png
|
||||
|
||||
Bank Reconciliation
|
||||
-------------------
|
||||
|
||||
.. image:: reporting/main_reports06.png
|
||||
.. image:: reporting/reporting-tax-report.png
|
||||
:alt: Tax report in Odoo.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 12 KiB |