Compare commits
1772 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 22daa15a25 | |||
| 8c685239b4 | |||
| 224e1f5982 | |||
| 606b56ccda | |||
| c1154c0c5d | |||
| cd3086cea4 | |||
| cc4e3a87f6 | |||
| d15c4205be | |||
| 30619559c6 | |||
| 689fdc428b | |||
| e48614edb5 | |||
| 1d7bb7f261 | |||
| 2311d07abe | |||
| 10c0c4b5bf | |||
| 85cd521464 | |||
| 194ed8085a | |||
| 9b8723e544 | |||
| ace11b6980 | |||
| 30e6d651bf | |||
| cde28f2792 | |||
| 7f3591a3c1 | |||
| 6bc849d0c2 | |||
| 3e3aa95d4f | |||
| c95440234b | |||
| d985407217 | |||
| 629e769654 | |||
| c599d94588 | |||
| f3c3c31787 | |||
| 57977d2a10 | |||
| e8bd3a105c | |||
| d4edd280b8 | |||
| f415b7b9b2 | |||
| 7e58fc5a38 | |||
| 398b2660df | |||
| 7d90b85f4f | |||
| d3664e0596 | |||
| 7e1e118ab0 | |||
| 203bbe60a8 | |||
| 4b9939c579 | |||
| ee5a13730d | |||
| d6a11685b9 | |||
| 787230c156 | |||
| a5a176b431 | |||
| 851d7156e0 | |||
| 70cf846931 | |||
| c53be14fc2 | |||
| 2fcafbfca9 | |||
| c5bf2164f9 | |||
| 2958013fa3 | |||
| e7779f1542 | |||
| 11d8fa4593 | |||
| 8c0d1245e2 | |||
| 8c1ef584f8 | |||
| 4bb36464cb | |||
| f2c49f10ea | |||
| 95bb52afa3 | |||
| 8d42564a46 | |||
| 6b54d22e2d | |||
| 0a3d4842b8 | |||
| 0a9340f66b | |||
| 2d871e7c32 | |||
| 862525f8c2 | |||
| 9be262eaef | |||
| 24eeecb9e1 | |||
| 8800de73af | |||
| 41f15664e2 | |||
| 4f24ab92bf | |||
| 8094aecf2e | |||
| e8b8305ba1 | |||
| c9b4545e8f | |||
| e8da6e1fe4 | |||
| f4f731d7f7 | |||
| 3a2974584e | |||
| 8b49ad8add | |||
| 986a2a0483 | |||
| ed859771c1 | |||
| de07d3af6f | |||
| 15282c9900 | |||
| 30dda24ac5 | |||
| 7d4d42f2a5 | |||
| c3a308f4b9 | |||
| 8d22fea849 | |||
| e190e03e93 | |||
| a8d555494f | |||
| f1007895b6 | |||
| 106ac4d505 | |||
| 6c027c9f4d | |||
| 6e4ab30214 | |||
| ebca1144b6 | |||
| 4d08ff7294 | |||
| 241fd01063 | |||
| 1f842b5f2b | |||
| af34c2c473 | |||
| 23f80369ff | |||
| 830c311f68 | |||
| 0ee2ff365d | |||
| 336c77042a | |||
| cc896e052f | |||
| 3d5d0681e9 | |||
| b2677946fd | |||
| 512919de84 | |||
| 461b4565c5 | |||
| 8273efda22 | |||
| 851a828fd4 | |||
| 84451d1bf7 | |||
| 4a069b9681 | |||
| 9319cc3b71 | |||
| a7264a1687 | |||
| 749a8365c7 | |||
| 38cd791272 | |||
| 88620fad79 | |||
| 53c3d6442f | |||
| 0d794c2cc2 | |||
| 183fa4245d | |||
| fb55e8287c | |||
| 7e583a27d0 | |||
| 77acc85e6a | |||
| bdbff4fc9a | |||
| 57348bb017 | |||
| 8bc1f02a12 | |||
| b2f190d628 | |||
| a27b8f0494 | |||
| 9f82f2d321 | |||
| ece8a91059 | |||
| 03a68c7be3 | |||
| eb204b9d21 | |||
| 87b489d36e | |||
| a88d46164b | |||
| bdd4f9d91f | |||
| 48a6b86231 | |||
| 3bdfb21aee | |||
| 5970988577 | |||
| 68f7c1df12 | |||
| 6995abec3c | |||
| e9c2290cba | |||
| 617a1d0c82 | |||
| b21777ddae | |||
| f51520413e | |||
| 6a4ed0530f | |||
| 0f03a9db35 | |||
| 366f1d4735 | |||
| 989d5b1110 | |||
| d18e03f3a1 | |||
| f621677aa8 | |||
| a912cf32c7 | |||
| 82289fe0fa | |||
| 58aee61dcd | |||
| d60310c25e | |||
| 921bf0d82e | |||
| 7b64c95fe3 | |||
| d7ecf97869 | |||
| 7405eb2f9e | |||
| 2f0c08242e | |||
| faa204e0a0 | |||
| d53fbfc995 | |||
| 096d17c474 | |||
| 112551a0f7 | |||
| 1e90d132a6 | |||
| ac71b91edc | |||
| e3e39a0177 | |||
| f1a3515f83 | |||
| ccc9337f2c | |||
| 7f7ff980ec | |||
| bd285ab701 | |||
| 483cb357d4 | |||
| 57712dfb99 | |||
| 44388a8645 | |||
| b639c62201 | |||
| a3a1be4fb7 | |||
| 07122aa8a8 | |||
| 9490048209 | |||
| c31d61cb5b | |||
| 085613f63e | |||
| 0292755fe1 | |||
| 6d7d9aacb7 | |||
| 71b426177a | |||
| b29eae5102 | |||
| 3218baee71 | |||
| 08a3f15732 | |||
| d458c753b5 | |||
| 740cf75f94 | |||
| 6395455f0b | |||
| 381ae7793b | |||
| 7d8368e553 | |||
| 07ef80ec47 | |||
| 973c9a1f5a | |||
| d7b4114728 | |||
| 2e661006e5 | |||
| 7c2a16b28d | |||
| 44b4138a45 | |||
| 7b6f0d9226 | |||
| 24bf905cd9 | |||
| f3d2381bf4 | |||
| 117aae0771 | |||
| 9c4d9b35dc | |||
| bd5fdcfbb4 | |||
| 8b7c7f4b6e | |||
| eed7e42a14 | |||
| 11cc952979 | |||
| 9049311711 | |||
| 51369b1001 | |||
| 1e551ebb73 | |||
| 9dfef5e151 | |||
| 4a927f0d46 | |||
| 9b3e9a3c8e | |||
| 987a40cb29 | |||
| e6ffeb0da4 | |||
| cfd0fbe6b0 | |||
| dfa899e959 | |||
| 76d6a9a84e | |||
| 343d8cafb4 | |||
| 72ccbd43d7 | |||
| 4caa891ad8 | |||
| dcb48c3dc4 | |||
| 8b7be69be6 | |||
| 81f28e0793 | |||
| f1a607a9c7 | |||
| 9368181d04 | |||
| d87271002b | |||
| 783ab8f2c0 | |||
| da0360cdd5 | |||
| e17d6d7689 | |||
| e174fa9e3e | |||
| 3d2422b3bd | |||
| d7eb8f014b | |||
| 9a2921ba52 | |||
| c42963cda9 | |||
| 38ce2431e5 | |||
| 5c43477540 | |||
| e56cfe5e48 | |||
| 5627bea8aa | |||
| 3f048e7997 | |||
| a13bf9b24f | |||
| 615d282910 | |||
| f820f189a2 | |||
| 1d17ceda3c | |||
| 4b5b008063 | |||
| ba3ba3c93b | |||
| 5765edca11 | |||
| 78225635f4 | |||
| c2e60da73d | |||
| 5144c006ef | |||
| 4df1b8ec7a | |||
| 840a739396 | |||
| 3692e684c4 | |||
| 7e60e64125 | |||
| d35306daca | |||
| 8e23bc4ccb | |||
| ff86bf4e67 | |||
| 8c80d01693 | |||
| 0d4ae20ed8 | |||
| b46e7c8ef0 | |||
| 8c895b05e4 | |||
| 884c0b0c57 | |||
| 279527cb73 | |||
| c6208a51ef | |||
| 16c6c0f492 | |||
| ca39c79dfe | |||
| 196361f8ae | |||
| a5cfacc973 | |||
| cab5ad8532 | |||
| e7b777bebd | |||
| 707b5842cb | |||
| abdb31b852 | |||
| 769793b56c | |||
| f8a114b334 | |||
| ea7fd9b847 | |||
| 33c6784f68 | |||
| 2948da8318 | |||
| a3a667baa9 | |||
| 06135f66b7 | |||
| 985373622a | |||
| ea54d7f4b6 | |||
| 3efe78c40f | |||
| e2a99be2fa | |||
| 28cd889ecb | |||
| d8ee860d02 | |||
| 3ac8cb59e8 | |||
| ec743decbf | |||
| 0118039e60 | |||
| 203a15e556 | |||
| 669a62c625 | |||
| c30312137c | |||
| f7b4153e69 | |||
| 30e1b1f450 | |||
| 78743fa901 | |||
| 717a22e828 | |||
| 7aed0550bc | |||
| cd9889b304 | |||
| fdf51021b9 | |||
| 87c4b394e5 | |||
| 8c2cd0737a | |||
| 1ae6cc202d | |||
| a89ea48c8f | |||
| 38fe8febfb | |||
| d7cf79723e | |||
| f6594f91cf | |||
| 08d1ef2a45 | |||
| 7916a08773 | |||
| 8155a72901 | |||
| 5651bfda49 | |||
| 8cf0318a83 | |||
| 66d0209956 | |||
| 1df78f08cd | |||
| a8820ba3bb | |||
| f47d0c503a | |||
| 4e782b9e9a | |||
| 56b7b4f83a | |||
| 26b906340a | |||
| d94ac4b904 | |||
| a9005ec623 | |||
| 447d131247 | |||
| 6f74ae28ba | |||
| 50ff7a625a | |||
| e661c7f66e | |||
| 123e0fffb3 | |||
| 851f53f469 | |||
| 431c7eb685 | |||
| 7480a11576 | |||
| 019f94ed25 | |||
| 189d942f06 | |||
| 46e66e0d8b | |||
| fa6b8382e7 | |||
| 9d02b5207c | |||
| f91ab96191 | |||
| 21a13dfc1a | |||
| 6b5398eda1 | |||
| 758499d987 | |||
| f381273038 | |||
| 1b26e3f90e | |||
| e72758f68b | |||
| 7428de7be4 | |||
| d3872493b3 | |||
| 6bbd3186e9 | |||
| 1e14a5b6f8 | |||
| 125bef72b0 | |||
| e092ca7e41 | |||
| f0c877fb45 | |||
| daf41d8a5d | |||
| bc9355564d | |||
| 47a8a8b1e3 | |||
| 64f4e8d46c | |||
| a395e108ac | |||
| 0cae14e43b | |||
| 5dfa8128aa | |||
| 2626f81d23 | |||
| e1230a82d7 | |||
| 7369a1e4e9 | |||
| 788f624d49 | |||
| 54e7676d5a | |||
| 0816e187a5 | |||
| 4e0c53b4a2 | |||
| 9e7418ea8e | |||
| d758c9d995 | |||
| 2ab76700cb | |||
| 3cbc88c467 | |||
| ccfe1af307 | |||
| 99b06db261 | |||
| ed64d6fb4c | |||
| a2ac238691 | |||
| 172f0eb226 | |||
| 330b7ef64a | |||
| 1df7b0e6c5 | |||
| db73dd629e | |||
| 1bddb2f2c9 | |||
| 0e4978b783 | |||
| 56e9c3d343 | |||
| c7c9e3d6f0 | |||
| d9fc72e1dd | |||
| 632f7c65ce | |||
| a4b8a53aab | |||
| 976968cd3a | |||
| 183f981184 | |||
| aa65246560 | |||
| 8956e39eea | |||
| b693187c7c | |||
| e1df7a714b | |||
| 9f25d5e345 | |||
| f5a5b57be3 | |||
| b9cdeb304a | |||
| 18be17dada | |||
| 682a290793 | |||
| 649b6bcd5c | |||
| 9d4fc6cd55 | |||
| fb1f81f735 | |||
| 50d0d32bf6 | |||
| f84c00cb0d | |||
| 70701aa589 | |||
| 85cb4170af | |||
| a8292df22f | |||
| 8ab0935d74 | |||
| 9486fece94 | |||
| cd31079f69 | |||
| 2935c3b2df | |||
| b00ae1f3b0 | |||
| 0f87ffef1a | |||
| 23e773f31e | |||
| a1371aee87 | |||
| f2f9b32a1d | |||
| ad06489c98 | |||
| 86fa534deb | |||
| 3667e71c92 | |||
| 599e50159e | |||
| cc7857b363 | |||
| 4b3fecf2cb | |||
| 1f788bf750 | |||
| 0edc606b42 | |||
| 8377f9f068 | |||
| b81c06ecef | |||
| 36de103e3a | |||
| 3d920ded85 | |||
| 2b6fa74e40 | |||
| 7674dbdbbc | |||
| a76635c09c | |||
| d4565c6c20 | |||
| 81b1a9fd8e | |||
| d91cead9e7 | |||
| 4827f3fe20 | |||
| 4a24238376 | |||
| e6d68071fc | |||
| bce2a875c5 | |||
| b738a4e002 | |||
| 3da71625f1 | |||
| 833109636a | |||
| 044670f15e | |||
| 1bb11f0654 | |||
| 63789b0aa7 | |||
| 04aacf8863 | |||
| e180e1066f | |||
| 7f09bae364 | |||
| ce069df416 | |||
| d55739b2c5 | |||
| 32c7993e1c | |||
| c1ea6d7a38 | |||
| abb2e04f10 | |||
| 479ab2028e | |||
| e8c6f3421c | |||
| 54a9fedea2 | |||
| 3806da48e7 | |||
| f836a2c5ad | |||
| f7fd7b09df | |||
| 01f78636f8 | |||
| 54064a06ef | |||
| 7d92fb64f3 | |||
| 6435abfbad | |||
| 1ed9dd99d8 | |||
| a04bb90354 | |||
| 22c18c0165 | |||
| b8e1f50ea6 | |||
| 89a11e2e96 | |||
| 5df8a40c6e | |||
| 07ac9eda1f | |||
| 27a3014633 | |||
| c94ab5301c | |||
| b593192db4 | |||
| 4f198849bb | |||
| 7a388707bc | |||
| 813dba5b92 | |||
| 96f521a160 | |||
| edffa80d3c | |||
| 7d608d8a0e | |||
| d9441dcf1c | |||
| 8ad9f28f24 | |||
| 80dbfbdd15 | |||
| a6e04372a8 | |||
| dd93828247 | |||
| baf256fc40 | |||
| fbadb8cca0 | |||
| 9f94e19837 | |||
| 11f3f830a8 | |||
| 19058c1876 | |||
| 33d781c5a5 | |||
| 467e2f2550 | |||
| 0dadc8e580 | |||
| 90bab61e66 | |||
| 862d07ba5b | |||
| 757c4ec23e | |||
| 47a9da91ac | |||
| b846ff3a57 | |||
| a0e0e994a6 | |||
| 03d435ea31 | |||
| 201c82d9c9 | |||
| a164b8ab65 | |||
| 05500b1416 | |||
| ce5a8d554d | |||
| 0d624f6c3e | |||
| 93b07b8a25 | |||
| b93a4f78dd | |||
| b774e6f99b | |||
| 6cf5d44380 | |||
| 14a5b77169 | |||
| fff0e0f2a7 | |||
| e04e586ef4 | |||
| 16d2e1582f | |||
| cbd8f2e8d9 | |||
| 410ee3fe39 | |||
| cd19ebd5ac | |||
| 047cf49add | |||
| c8f509746d | |||
| c74b788b8f | |||
| 9b93e7788e | |||
| b306f91ed4 | |||
| ce5973e335 | |||
| e68deaf9d6 | |||
| a18a378a87 | |||
| 64db022a95 | |||
| 48bc8793a3 | |||
| 1695ad998b | |||
| 0557514788 | |||
| 2e7f7b0dc5 | |||
| 2b98d9c304 | |||
| b10d17af6a | |||
| 11b77ac549 | |||
| f9f855cd2e | |||
| 4734ddb7be | |||
| 3606b35230 | |||
| 33244724b0 | |||
| 6535c1d587 | |||
| 99e8ebf5de | |||
| f83fce2125 | |||
| 93e76fe08b | |||
| 4ee7077ac8 | |||
| e9b1f18822 | |||
| f6107b4858 | |||
| dbf69f4019 | |||
| b0627464e5 | |||
| 3bfd593757 | |||
| 35931b493d | |||
| 2c38a625e1 | |||
| 9dac99024f | |||
| d11dcd33d1 | |||
| 59afd5062d | |||
| 88880b8915 | |||
| add4cb8a04 | |||
| 34c303ecea | |||
| fd9e326ca6 | |||
| 42b16e1347 | |||
| 2df60cb372 | |||
| 08fbc57c22 | |||
| af310bfeff | |||
| 6c9e6b94e8 | |||
| 0cd769549c | |||
| 6ac164fdf7 | |||
| a208a077dd | |||
| ddf5d2ca5a | |||
| fa6bc19ecb | |||
| 64b2295cd4 | |||
| 4b67e08dcb | |||
| 8b69948613 | |||
| 9d6c7600d4 | |||
| ac5f9cd28e | |||
| 5b82c8cb00 | |||
| 2adc169aec | |||
| 7fe5675144 | |||
| 3941c8191e | |||
| 9ae8bee50f | |||
| 6120d187ed | |||
| c7f385fee3 | |||
| 431f88f955 | |||
| e8e9f86b8f | |||
| a28a65a373 | |||
| f0b25461c7 | |||
| 04b8762b51 | |||
| 652bead830 | |||
| fab3e9f352 | |||
| 74884ff81c | |||
| c3e4d920d3 | |||
| a2d4bc6956 | |||
| ff0a767f79 | |||
| 9264fe40be | |||
| c636893e32 | |||
| fbfb81d80c | |||
| a9620242af | |||
| 3ca0a69957 | |||
| 085320a86d | |||
| 2c5c43c474 | |||
| 26edc3c56b | |||
| 8bbfebea55 | |||
| 85fda3e9e1 | |||
| 98f9fa803e | |||
| 6a0bb6ba9f | |||
| 50bd2e0d42 | |||
| c743f44177 | |||
| f5aaeb524e | |||
| 7524eccaef | |||
| 5c645508d4 | |||
| b6fef3dec0 | |||
| 7e04e250b0 | |||
| 6f4f511b34 | |||
| fb5fc7915c | |||
| 89d3907b4f | |||
| 2a3117dfee | |||
| c9f1bf7df8 | |||
| f7769365bc | |||
| 364d997cae | |||
| 692b932eed | |||
| 508c7aeccc | |||
| f603ac5624 | |||
| 6332d389f9 | |||
| 59e8cb1c3a | |||
| e0e2200a60 | |||
| 8e5c99f42a | |||
| c529500e6a | |||
| 95739dc0fc | |||
| 0180929780 | |||
| da8e2dfe6a | |||
| 980d9f67c5 | |||
| 44e3bd028b | |||
| fae4de26f2 | |||
| 0865e62d5f | |||
| d4da0c2425 | |||
| 4dfb271bde | |||
| 79878321d6 | |||
| e7c634b31b | |||
| 28596bd782 | |||
| 5fd963a36f | |||
| 570313b1cd | |||
| 8e3142bc37 | |||
| ba056f4f36 | |||
| 14dddabc4d | |||
| e89dc21e44 | |||
| 7eb1324d1c | |||
| 1287839683 | |||
| b4a8e166a6 | |||
| a936e3cb5d | |||
| 48a20b1596 | |||
| 3d10ecf770 | |||
| d09028357e | |||
| 790b9c7fd9 | |||
| 8e25d81ce5 | |||
| abf2ea81dd | |||
| 40f4077669 | |||
| 28476a2894 | |||
| 57314bb63f | |||
| 50efd5d4ce | |||
| 545e124d02 | |||
| 564f2640c7 | |||
| 348da6ec78 | |||
| 54e6c5d6d4 | |||
| 601e6fe30c | |||
| 5db7eabaaf | |||
| d7beff11c0 | |||
| cd6f706e7c | |||
| bf0a7d3160 | |||
| c56819763f | |||
| 5bc5448bbe | |||
| 4b030b0b83 | |||
| 96deed63ad | |||
| 3c082c8f0b | |||
| 378eff8585 | |||
| 417867026e | |||
| e14b809722 | |||
| f741898d3e | |||
| ead609a337 | |||
| a712aeabea | |||
| 0c25dbe3e7 | |||
| 15bdaa7bdb | |||
| c932d24162 | |||
| 3bba491f57 | |||
| 16fd9dc828 | |||
| 4a0624c897 | |||
| 8d4ad5f6fb | |||
| 5c7ab478d9 | |||
| b301ee896a | |||
| 124edfd676 | |||
| 7adaac544f | |||
| a4f06b2130 | |||
| 5fa5126572 | |||
| 6402602d1e | |||
| fe5e284c4d | |||
| bab0ae401c | |||
| c2caa3cc34 | |||
| 03873b6b34 | |||
| 8fed1cf0a8 | |||
| a25e800a76 | |||
| e0a499bb39 | |||
| 44e9dfb329 | |||
| 013a121b6a | |||
| 64203a815f | |||
| 40fa45c252 | |||
| 57b7ca69d9 | |||
| b8dae6e6b2 | |||
| f83b27d07a | |||
| 257b86abb1 | |||
| 5911d0be1b | |||
| a59a882dd0 | |||
| e3f5824313 | |||
| e4f81db89e | |||
| d0135e4d3e | |||
| 6f4a3b61db | |||
| 6b13865e4d | |||
| 210effcd22 | |||
| 9c7ce86077 | |||
| b91b663c82 | |||
| 734dc4ff93 | |||
| c7daca2df6 | |||
| 67aefbacd4 | |||
| 8bee34d230 | |||
| 7c0598e164 | |||
| a8f0df1fde | |||
| ac5f799d02 | |||
| 28b5989abf | |||
| 7b3824fa23 | |||
| 92e313396f | |||
| 3793e8cc37 | |||
| 3730e134cc | |||
| 8cacfab918 | |||
| 644cbd052f | |||
| 2ab5bb32c8 | |||
| 2277114c8e | |||
| 0227f484f2 | |||
| d805a742ab | |||
| aaaf688d13 | |||
| d78b540718 | |||
| 07d762cb29 | |||
| f51df981f2 | |||
| b0d390c1bf | |||
| 34db98ad59 | |||
| 81a73ce00e | |||
| 141399ec33 | |||
| 258fa17a76 | |||
| e2503fdc29 | |||
| acb491fba2 | |||
| 06d25495e6 | |||
| b298744499 | |||
| 45efd8c90d | |||
| e84a7d1f28 | |||
| 1dd818e0c7 | |||
| 8c8679c856 | |||
| d0e0332651 | |||
| d14daf3e82 | |||
| 0a93b57cb3 | |||
| 5f3e56454a | |||
| b3f96a6168 | |||
| 76ca1e1eef | |||
| 28accc3dd2 | |||
| c08c69ce79 | |||
| 9078dec21d | |||
| 27bf8784c0 | |||
| 2c71281056 | |||
| 2cd4a12dd4 | |||
| d27481635c | |||
| 5420b360ff | |||
| 498670abc1 | |||
| 21cd532bb2 | |||
| 7c40b31212 | |||
| 6d28b69fda | |||
| c46e9eb7ea | |||
| 88f51eff5e | |||
| adf649f6e4 | |||
| 6766c70169 | |||
| e39ccf8de0 | |||
| 48640eff5a | |||
| 4813419d4e | |||
| 5f2a5d318e | |||
| c2c47456c7 | |||
| 6a6077b306 | |||
| 53763fd099 | |||
| c9ba286471 | |||
| a7b8901bdd | |||
| 8e5ee9ec2c | |||
| 6a8158c657 | |||
| 632be997c8 | |||
| b32aab35a0 | |||
| c2add27bd5 | |||
| 4234a68d25 | |||
| 47edb88436 | |||
| bb8e72fb60 | |||
| ac92c70b91 | |||
| 765b61eff3 | |||
| 2058488eaa | |||
| 3e4b026979 | |||
| d6cd27bc9d | |||
| 0001bbaec4 | |||
| cbe068e3ab | |||
| c411a9f924 | |||
| df1f1dd6b6 | |||
| 379798b35c | |||
| b3d06500ef | |||
| 5bb97c3fcb | |||
| fbbce69f56 | |||
| bec530e580 | |||
| de49e8f05a | |||
| 124f9743c6 | |||
| f2ceb28cb5 | |||
| 027fca4bbd | |||
| 8125ae7fc6 | |||
| 075b0e1036 | |||
| ff36e1f7aa | |||
| 7032c2e008 | |||
| f459ba48ef | |||
| b09b8847bf | |||
| cb948c7f05 | |||
| 858089caf7 | |||
| 65b28ce72e | |||
| 9e2d8fb343 | |||
| dde0fcaba7 | |||
| edb806cd7a | |||
| bf79132249 | |||
| 9faae76bd3 | |||
| 4699d17669 | |||
| e7d621c492 | |||
| 035c9b95f7 | |||
| 0249d9d0a6 | |||
| dbe0300b84 | |||
| 809f29dc71 | |||
| 041929d7b0 | |||
| d90d6d990e | |||
| 9e21fdea23 | |||
| e2fec985a6 | |||
| f4cfa38ac0 | |||
| a5c3441bda | |||
| cc427a0fea | |||
| 156980164a | |||
| 0fab281c12 | |||
| e23005c5cc | |||
| 1d0d45d928 | |||
| 0a0991bbca | |||
| 5824b76579 | |||
| 10cc7aa831 | |||
| 2ad21589d7 | |||
| 4b4d568624 | |||
| 5bb59f4083 | |||
| bd6eb29718 | |||
| 9bbf59a5c0 | |||
| e0f0b3dbc6 | |||
| e944826961 | |||
| 2c4e558804 | |||
| 5129d832f5 | |||
| 4250fd8475 | |||
| 4ee2fdd8f8 | |||
| 1829ea1dce | |||
| 797c47bfdd | |||
| a4246ae24a | |||
| 7816b13536 | |||
| e4def45a33 | |||
| 25b787e8bc | |||
| 98cb1ebac3 | |||
| de33f53535 | |||
| 82a1564ab8 | |||
| 564ac8fd7d | |||
| 98b21d0c02 | |||
| 1ea67923d6 | |||
| f06fbeff06 | |||
| 13cf7f74fa | |||
| 5c3bb77fae | |||
| a9ba3516d6 | |||
| 33cfa48bc7 | |||
| 85750cdef1 | |||
| 32ba97eeec | |||
| 669669d275 | |||
| f9ca4efa04 | |||
| 8505bd7bb6 | |||
| a09a1e3f97 | |||
| 54c328611c | |||
| 81225fe2d6 | |||
| 032e4ebb17 | |||
| 39c408d30a | |||
| ac3d25aa65 | |||
| c5eef612ab | |||
| 65935fdd3a | |||
| 262ecf4ed3 | |||
| 279ae26b85 | |||
| 670084cbcf | |||
| 2d5e29fd90 | |||
| 35711446e8 | |||
| 12b8b20ad4 | |||
| e4aac1214b | |||
| 6427517626 | |||
| 99751542c7 | |||
| ad749706ec | |||
| 3d55908b4c | |||
| 676c234151 | |||
| 35d79a866a | |||
| f9c0be63ee | |||
| 209864139d | |||
| 6482fb8440 | |||
| 973d5800d2 | |||
| 412f844589 | |||
| 4299eed3cd | |||
| ee71f1eb9a | |||
| b87b0b335a | |||
| 6a69730316 | |||
| 603518a6c5 | |||
| 7519600559 | |||
| 5a512bbdcf | |||
| 9e75bca747 | |||
| 7c3abb5af5 | |||
| 89cfd364dc | |||
| 8d9d0c90ed | |||
| cce9456f93 | |||
| 1febb15453 | |||
| 832628a8c7 | |||
| b84e81d3a1 | |||
| 4f098945d7 | |||
| 86fac322d3 | |||
| 958fa599e1 | |||
| 0604fb56f9 | |||
| 3fe09dd653 | |||
| 06eaf3a0c7 | |||
| 14c0438764 | |||
| db3db3c727 | |||
| 1be6f341dd | |||
| 39541bb745 | |||
| 157c1e18ea | |||
| ab5c9feb40 | |||
| 6c3385cf90 | |||
| b53427ddde | |||
| e6dbd3d9e4 | |||
| 646bfe2e2c | |||
| e620f27378 | |||
| f10c8d4ad2 | |||
| b4cab2a3db | |||
| 999c8db465 | |||
| 6ec9eb1fcc | |||
| baab56946f | |||
| 73499c595e | |||
| 2c1277d0f7 | |||
| fc98af5814 | |||
| d0b7363de5 | |||
| 65f1e3ce0a | |||
| a48ebe55bf | |||
| 3d28850a40 | |||
| 83a68e4b9b | |||
| be60243eff | |||
| d07052aa57 | |||
| b89d3e56c2 | |||
| 8d87bfe462 | |||
| b72d340b3c | |||
| a197b6c57d | |||
| f0cf3c68ac | |||
| 1f31ba3f06 | |||
| 2f0d98c9f7 | |||
| 4210a31408 | |||
| 080dc64e54 | |||
| 95f8067ed5 | |||
| f453b2266f | |||
| d88b185c27 | |||
| 62a4db0c7d | |||
| de2999c01d | |||
| 494ae5a555 | |||
| 283c843eeb | |||
| b0cc13d4fe | |||
| 6016ed4e93 | |||
| 6c561112a8 | |||
| 7a8f551d67 | |||
| 67adf2fc3b | |||
| 6f3ca9f4a3 | |||
| d1836f349f | |||
| e765370016 | |||
| 15beccfd50 | |||
| cec2e1f322 | |||
| 9cb186f87b | |||
| 075eea9326 | |||
| b5507c4940 | |||
| 64fabeb801 | |||
| 6667e3ec35 | |||
| 7b917cd1c3 | |||
| 884c1b3126 | |||
| b339573354 | |||
| 668420655f | |||
| abb3589471 | |||
| 588801185a | |||
| 78d1f23686 | |||
| e72b21d734 | |||
| 5ff951e927 | |||
| 78b3ca7521 | |||
| 9e3cb9eeaf | |||
| 9115d5d7a4 | |||
| c5b4336b52 | |||
| 78d289c677 | |||
| 14a9073ac9 | |||
| 4eb1baa5c5 | |||
| a2fbef0bc9 | |||
| 0f8e20e0aa | |||
| dfc42d4b62 | |||
| 5bd89e30b9 | |||
| 35602b9f50 | |||
| 79fa32eb3d | |||
| 3905b642fa | |||
| 5b581c31a5 | |||
| 90fffd3039 | |||
| 6fb216f70d | |||
| d4eece9b5f | |||
| 52e107681a | |||
| be6f7e1662 | |||
| 28f9d0c02c | |||
| 643ec40050 | |||
| 629a2852b6 | |||
| 77c1f6ff95 | |||
| 045fb847e8 | |||
| b963e4c7f9 | |||
| 3a3a224b17 | |||
| 86bd9fd91b | |||
| 6935a84404 | |||
| 31387885d6 | |||
| f8dce88995 | |||
| 78d998f5fc | |||
| 3ef14b8254 | |||
| 6d219133e0 | |||
| 2a52e0979b | |||
| f72e7a25e0 | |||
| c21233db05 | |||
| 5d7abe69ac | |||
| f18c11cb41 | |||
| 8c4cb060f0 | |||
| 07e7787668 | |||
| d4b8665fe2 | |||
| 3e7c00af02 | |||
| eff6545537 | |||
| 41cdeab0fa | |||
| 630d4385f4 | |||
| 30b173ff25 | |||
| 620b50f9e2 | |||
| 7612732f7f | |||
| f08db8544a | |||
| de4795724b | |||
| 556b5c4bc3 | |||
| 0c162ecf18 | |||
| 922f540fa6 | |||
| 1defbf7383 | |||
| fd3f3ca5cf | |||
| f10dcbdaf6 | |||
| 883442e483 | |||
| 41442270a3 | |||
| 58d246b8f4 | |||
| eb0c42803d | |||
| 2b8a578c9b | |||
| c27c6f8928 | |||
| 0a2b5e76e1 | |||
| 37af135d31 | |||
| b093bdc871 | |||
| 392d99c2fb | |||
| 38f66dd0f9 | |||
| 688285086b | |||
| 5264899901 | |||
| 70a99d8f87 | |||
| d5f2bf3b8c | |||
| 9be26ea17a | |||
| 48321d0e6b | |||
| 8e548bf770 | |||
| 6fd7446ad9 | |||
| 0dd8974ca1 | |||
| 4cad0e2f82 | |||
| 1a412b334a | |||
| e96721a308 | |||
| 829eb7b851 | |||
| d0af3f6bd1 | |||
| b2a37a0129 | |||
| a7e8e9724a | |||
| a70258c823 | |||
| 16e10c53db | |||
| 4219829976 | |||
| c2190a438c | |||
| 5b44376e52 | |||
| 7067cf372a | |||
| ebbd736540 | |||
| 4fe046b9d0 | |||
| 07c50eae7a | |||
| 671cca36a6 | |||
| 246450c957 | |||
| cc37e41de0 | |||
| 6cff316d86 | |||
| 03c9226547 | |||
| d87112ddef | |||
| 6605ec1988 | |||
| d105f614af | |||
| 10f936247a | |||
| 6a198ad1ce | |||
| 7dc0dc37d2 | |||
| 09e0b8affc | |||
| f3a6cc6779 | |||
| 36b20ff16c | |||
| 068020901c | |||
| 6da7dcccea | |||
| 48679b52e9 | |||
| f85a667236 | |||
| 44f202cff9 | |||
| 4b1b3db6f2 | |||
| db2ee387a9 | |||
| f7cb830798 | |||
| 86bd83705d | |||
| b4eaf1c223 | |||
| 5ec7aff3c5 | |||
| 49ad6221a8 | |||
| 32441c88fc | |||
| 89539f7379 | |||
| 4d88c4ec20 | |||
| 66b08cd4fd | |||
| 4e6983c135 | |||
| f53aca7b32 | |||
| cdc510295c | |||
| 86207443b1 | |||
| d25eecbe13 | |||
| dd6bf8b6c7 | |||
| d53c676288 | |||
| dbb82d83e2 | |||
| a8ef31f215 | |||
| a3e1378919 | |||
| 38532cb046 | |||
| ff23483846 | |||
| ae05fe478d | |||
| 93dc1e87bd | |||
| f56b59d952 | |||
| 35ed4e9f7b | |||
| d0fada27d6 | |||
| 664fc9db53 | |||
| 99503b59ba | |||
| 9d4333e29f | |||
| 13fe8cb8cc | |||
| 9f04099859 | |||
| cbcfb4b36f | |||
| c0abb05561 | |||
| 3c6ee6de79 | |||
| 23d4f4b901 | |||
| 82fdeb62b5 | |||
| 5e3df90dcb | |||
| d3f393c229 | |||
| 11dc95e4a2 | |||
| c01a53557c | |||
| 046c7726a0 | |||
| 1e9f3ce240 | |||
| 7435b5ec7b | |||
| 4f531cf1f1 | |||
| 5e1fa0c599 | |||
| 32aeb4ae18 | |||
| be0eb00c4b | |||
| 4fb64b841c | |||
| 6a49983170 | |||
| 4dbdb44235 | |||
| f74a99bdf1 | |||
| b5c77e129c | |||
| bb82dd3ce8 | |||
| e8febc9656 | |||
| 928d3e44c6 | |||
| 33de4dc808 | |||
| 85abcb2624 | |||
| 51a1623f69 | |||
| 175a138eac | |||
| c086cf7ca8 | |||
| cbc4fea84c | |||
| d3e4c9f68b | |||
| 90c86e6462 | |||
| 9b94ffd27a | |||
| b20fe31b45 | |||
| 8339c00773 | |||
| 1a26e5ae52 | |||
| 13feb8018d | |||
| 78a4b3015c | |||
| 36ffe3ba82 | |||
| 1ac84b73b1 | |||
| 975ef6511b | |||
| e0e356dbb6 | |||
| 2d8fc74e64 | |||
| 5d9f8c5a7d | |||
| b1ece27040 | |||
| babd571b8b | |||
| 68102b5ddf | |||
| bde909aa17 | |||
| 2c0c08cd3e | |||
| f18162fe2a | |||
| 2e595b52b4 | |||
| 38b50bb081 | |||
| 6a777942cc | |||
| c677de3666 | |||
| ecb7b9257d | |||
| 85c6389e08 | |||
| 21d6283682 | |||
| dde981c685 | |||
| d6e2f157f7 | |||
| d3625e5c84 | |||
| d04cba1952 | |||
| 1c072f0ac2 | |||
| f14f829caf | |||
| 5ce59fd84b | |||
| 2f9645c1a6 | |||
| ac834e3919 | |||
| be064dff98 | |||
| a57cabaa9f | |||
| f3c364225c | |||
| 727d749f0c | |||
| 16092f080b | |||
| 2495478757 | |||
| 867f6afd9d | |||
| 4e394b77fb | |||
| 05349c6a0b | |||
| d978b07184 | |||
| d2d1da3312 | |||
| 0c882df05f | |||
| 21d9fcbdca | |||
| 3446234270 | |||
| 0642f0601f | |||
| 692fe78bd1 | |||
| a5d10930d6 | |||
| ea53f06197 | |||
| 3953d827a3 | |||
| 83c2012f95 | |||
| 58b82b93d5 | |||
| 0e97376921 | |||
| ccc9bc4bc5 | |||
| d2f8292f44 | |||
| f4e72f3254 | |||
| 93fa7d70e1 | |||
| 327b7ce0cb | |||
| f4e7830a92 | |||
| eb63fd7629 | |||
| 532f9d1af5 | |||
| 7fbc4a2928 | |||
| b9c7cd2ee8 | |||
| 744b1cdfd2 | |||
| c24f32c770 | |||
| 9b9587b882 | |||
| 58b538c2b1 | |||
| 6731fb0320 | |||
| 35b7b811bd | |||
| 89868401ac | |||
| e70cec1c05 | |||
| 7aa3301314 | |||
| d0b913de03 | |||
| c9ab125c7a | |||
| fa4cfcd042 | |||
| 1a6b8a4132 | |||
| 0f3024cc69 | |||
| 133b350a30 | |||
| 88f7a66f4d | |||
| 60a7381f84 | |||
| af572a01c3 | |||
| 7f62e44002 | |||
| 1021f85a3f | |||
| 18db702655 | |||
| 775e80ed92 | |||
| dad4a47c9a | |||
| 7e29da60b9 | |||
| 8edb63948c | |||
| 76c781226d | |||
| fd4065b3c6 | |||
| b755d0330e | |||
| b5dbf4779a | |||
| db05d69be6 | |||
| c795231f1c | |||
| 5114140efe | |||
| dd7ab18b9e | |||
| 32cb0d8244 | |||
| 80b4cd05d3 | |||
| 421e760581 | |||
| 3bd570ae64 | |||
| 3e199d9825 | |||
| ca475f8ad5 | |||
| ae0c4d809d | |||
| 3758cd5899 | |||
| 9514d7df55 | |||
| f704ee9cc1 | |||
| 0031e37c63 | |||
| 89b550252a | |||
| 27d8dc2acd | |||
| 4367502c08 | |||
| 9988d0b214 | |||
| 665bf423ec | |||
| 8bf5772a97 | |||
| 6462ed0112 | |||
| 1c2ce72416 | |||
| fb681d1305 | |||
| e005fa9896 | |||
| 7d70725925 | |||
| 4590a4c25a | |||
| 057a1c11d2 | |||
| 7d01392c9a | |||
| 35aae86dbd | |||
| a9c82ebb94 | |||
| 453284ba8e | |||
| 42115759bc | |||
| 94a6a0b204 | |||
| f51b991fd4 | |||
| c76f97777a | |||
| e80d7ae220 | |||
| f27df8f077 | |||
| 06d5e0b096 | |||
| 137e58719b | |||
| 9cac3b3d1a | |||
| 7dfd6421db | |||
| b0a042b928 | |||
| facb3f184e | |||
| 13544bca17 | |||
| 9e54525d61 | |||
| 1ed317ebd7 | |||
| 0df9068892 | |||
| 2161dd5acf | |||
| 9989131931 | |||
| f1d048fdff | |||
| 5cfd1623ae | |||
| 432d9bb10b | |||
| 1be31fda81 | |||
| 4d61833e46 | |||
| 46d85d4f00 | |||
| 5720cd2802 | |||
| 9fc59e3237 | |||
| 5b04581623 | |||
| 5c82ba7762 | |||
| b7316e2e2e | |||
| 4e61b3585e | |||
| 11401af3dd | |||
| 3d0a19f329 | |||
| 89bccb44ff | |||
| 899ee1c4c1 | |||
| ab4cfb431f | |||
| 9f65cba6dc | |||
| 3b50c7a565 | |||
| 4af52da507 | |||
| a7bb89ce47 | |||
| 532b6be429 | |||
| 80e8576263 | |||
| 75fd5255eb | |||
| 070ffa86c0 | |||
| 7b5ce24bba | |||
| 05a09da86a | |||
| d0ca9fbafe | |||
| c7713b218f | |||
| 978bebf93c | |||
| 388003e6f1 | |||
| 7a41103958 | |||
| 63a9962742 | |||
| 414bae03ec | |||
| bbd5b4da50 | |||
| 2954463d6e | |||
| 18280ab5da | |||
| 1fb6059a90 | |||
| ae506cb484 | |||
| 10683c03c7 | |||
| 898b0280db | |||
| 369aa4a662 | |||
| 8459cf4db8 | |||
| 885bf17e4c | |||
| 844c2ef62e | |||
| f2ce4374aa | |||
| 670f8bb76c | |||
| a4461a7ee4 | |||
| c30ecfb20d | |||
| 1eb2037c30 | |||
| e3a28d6cf1 | |||
| e99891c7b7 | |||
| ac0e703863 | |||
| 21b604e0db | |||
| 4566a8ec30 | |||
| 57e2f90924 | |||
| d7324b6950 | |||
| c2cfc63466 | |||
| 3894c41631 | |||
| 99c1636974 | |||
| 2a11aa8a82 | |||
| 76b013bbe3 | |||
| 9783721529 | |||
| e7dad58064 | |||
| 93b9d802e7 | |||
| a01bd25041 | |||
| 9fcd175e58 | |||
| 863a04708c | |||
| 8553f68bb8 | |||
| 36d1e577fe | |||
| 70b69857e9 | |||
| b4ebef7d20 | |||
| 1491cce9d6 | |||
| 16224865de | |||
| 38b1d8c153 | |||
| 129a8f33ed | |||
| f8bcfcb83a | |||
| f71915e945 | |||
| 9556b85133 | |||
| 26f00581c4 | |||
| 8460cbc372 | |||
| fd933208d3 | |||
| bf294f37cc | |||
| b29ced49c5 | |||
| 76904fe8fa | |||
| 60133f01dd | |||
| 5736d332d2 | |||
| d30c04ba6a | |||
| 2472f29e32 | |||
| 64ca4e915c | |||
| 92110f5948 | |||
| e10b927f08 | |||
| 2d87962b37 | |||
| da79ee1c06 | |||
| 5683287892 | |||
| 09ce44f314 | |||
| 819864f0c2 | |||
| 8c29d1fd6a | |||
| b1a76aec63 | |||
| 08f472ef28 | |||
| d90e09c8b7 | |||
| 446ecbfc39 | |||
| 1f50e937d5 | |||
| 918766abe1 | |||
| 3a124f000c | |||
| adb845eb17 | |||
| fe2111ccbf | |||
| 27647fcb38 | |||
| 6d25f69513 | |||
| ef4c3555bc | |||
| 56cf4288c7 | |||
| 1fddd2cd67 | |||
| 584e44396b | |||
| f4bc10e4b0 | |||
| 67ddab9fbc | |||
| 53aa00c871 | |||
| d69383d7ae | |||
| f9e15dffd5 | |||
| 4b15e67358 | |||
| f9f2785d9c | |||
| 0f0144abf8 | |||
| 3117592e26 | |||
| e4ab323e9e | |||
| 62a362f30a | |||
| 9fb8c5c354 | |||
| 1e39949363 | |||
| afe0282420 | |||
| 74f4204857 | |||
| 81d1f2d21b | |||
| 9dc32cdd4e | |||
| febf7c4188 | |||
| 71f3ea88bd | |||
| ad4e8e649a | |||
| 5cfec84463 | |||
| 59066fed29 | |||
| eabb865415 | |||
| e4624b9fdb | |||
| b5140e2d22 | |||
| 4314b73e2c | |||
| 46881ee8fb | |||
| e445c1117b | |||
| 6b4bc0b680 | |||
| cd55555d79 | |||
| c44801c718 | |||
| 2eafd205de | |||
| 2c819a05c2 | |||
| 6a597e2e94 | |||
| 03dc488290 | |||
| 5c2e78c8a5 | |||
| ab1563e7c7 | |||
| e18b24a176 | |||
| 56a5b0480e | |||
| 931920bc31 | |||
| 2b784e9ec1 | |||
| 5e248b7017 | |||
| ff846cc48d | |||
| 41e1bda1cc | |||
| ae399fc411 | |||
| d70bd0b773 | |||
| ddb34dd21c | |||
| 39d5455110 | |||
| 59bf54b668 | |||
| d097e51578 | |||
| 4f3531f81b | |||
| 679504a05c | |||
| 5f8faeac1d | |||
| f581e7a1d7 | |||
| 283fa65ac2 | |||
| 3ab7232f8e | |||
| 71d75c9d76 | |||
| b5de4f8bb5 | |||
| c26a1dafeb | |||
| 7e37798280 | |||
| 6273085492 | |||
| 4600151605 | |||
| 46a6b90110 | |||
| ad3ef5bfba | |||
| bce9e4b57b | |||
| 8bdca172c4 | |||
| b02e24397f | |||
| aa1771b34b | |||
| f4d032ecbc | |||
| e6e609be76 | |||
| 04c732f89e | |||
| 5114d766e4 | |||
| 33f99d03dc | |||
| b3aa636f5b | |||
| f6ce2b9904 | |||
| 2c45872c57 | |||
| d5fc577b0b | |||
| 716699782a | |||
| d044ac2b59 | |||
| 3c338ea041 | |||
| 74d5d52874 | |||
| 7b9abb3bef | |||
| 5f60c80baa | |||
| 830ec0c321 | |||
| 66024b841e | |||
| d56d5a5af2 | |||
| c0b0457de5 | |||
| 40d3785ddf | |||
| 75a102323b | |||
| 497f7660f3 | |||
| 5c89f63fb9 | |||
| 24f6c4c55e | |||
| 64fa68e188 | |||
| 0da8718bf7 | |||
| 097c247449 | |||
| 8a07f95e43 | |||
| d85715a176 | |||
| a6fb221a75 | |||
| de72e6cdfa | |||
| 22c5ae8905 | |||
| eb72280e1d | |||
| 18b6872d88 | |||
| 9ce0d967b2 | |||
| 4efaa8ccff | |||
| 707bc15352 | |||
| f5326fa593 | |||
| 3327711e25 | |||
| 009ae8ffde | |||
| 0fb94a128e | |||
| 987aef16ec | |||
| 8260880d6f | |||
| 657e6a0cce | |||
| 2b40e9103e | |||
| f0814df058 | |||
| ed4b8c1320 | |||
| 6d50ac96de | |||
| 518db8b02a | |||
| cc3ca497f3 | |||
| b75a798ae6 | |||
| ba7a47e03e | |||
| d783dd375a | |||
| c2d7f03b8b | |||
| 1292abc9e7 | |||
| 899960a66d | |||
| c3a66c28a0 | |||
| 018d708b44 | |||
| 286ae4a7b7 | |||
| 5cd64c158f | |||
| 1b8da9b0a9 | |||
| 26b45abb9e | |||
| ffa10a9b0a | |||
| cb122ad068 | |||
| edaa9773f9 | |||
| 82a778ef23 | |||
| a49d1b7c9c | |||
| 655f923d11 | |||
| cd81a97399 | |||
| e297b6254e | |||
| 8c6175f77d | |||
| ea6b25aba8 | |||
| f90bc13ade | |||
| 60095ca6e4 | |||
| 65d71dd7be | |||
| f4c8a0f929 | |||
| aafa593c6a | |||
| 7b7e87c33e | |||
| 528a9c26a1 | |||
| a844c0aa12 | |||
| ae33eaad60 | |||
| 5f45c6aff8 | |||
| a39f2d4421 | |||
| aaac56f2f4 | |||
| 080835be2b | |||
| fd25400847 | |||
| 772a56a693 | |||
| 5d0b31a508 | |||
| 2e92bea4da | |||
| a1b17b9f31 | |||
| f7d9f58b25 | |||
| 478fdc07b1 | |||
| 128bc1786c | |||
| 67dff9aa43 | |||
| 4aba55b1fe | |||
| aec7a8aaed | |||
| 4eab939d67 | |||
| 4ccae58e6f | |||
| a51a8ad9fc | |||
| 5fb8de203d | |||
| c61c65da47 | |||
| a74be8db2f | |||
| 55ccf597ef | |||
| 7cec0db05f | |||
| 847f47bcc3 | |||
| 2d1d9d773a | |||
| f2b39b8e64 | |||
| c450c8f5c4 | |||
| e08338a4f4 | |||
| 2cd2b864a7 | |||
| 92851b1bb4 | |||
| 1141780b6c | |||
| afcf02cb30 | |||
| b5efab7201 | |||
| aef4f46c59 | |||
| 1d6c78a006 | |||
| 2ceaa3ef1d | |||
| ff7c86c91c | |||
| 73be78f25e | |||
| ecf2e4f94a | |||
| b8ffda3c07 | |||
| e9f6ddb7c3 | |||
| b37ca22bb0 | |||
| 86dd91f009 | |||
| f842fc850f | |||
| ab1cb5d515 | |||
| d5f642d3c6 | |||
| 0f1be083b5 | |||
| 3690bba092 | |||
| 37146744a0 | |||
| 5457a07a4e | |||
| f02080d755 | |||
| 10c7b5cbae | |||
| 71f055f27d | |||
| 9571a32131 | |||
| 8a30786495 | |||
| cc13f28fd2 | |||
| ee5a4d74c9 | |||
| f8e1df2c8f | |||
| ad08d78593 | |||
| d8c9f6afa4 | |||
| b909a21d1f | |||
| ad6cde3181 | |||
| bca9ac151f | |||
| 5045aecce2 | |||
| 9966e8771a | |||
| 9af7a4ca01 | |||
| 0ef10a1606 | |||
| 076534b1f0 | |||
| 49eb51b5d8 | |||
| da9c9aa1ab | |||
| d4f4e8684e | |||
| 68a35753c6 | |||
| e74a893812 | |||
| 35230f0fc5 | |||
| 11aa498ed5 | |||
| fef7820521 | |||
| 6d09d506b9 | |||
| d52966b147 | |||
| 530774b60b | |||
| ba0c7f42ba | |||
| b65f74055f | |||
| 93e7ee9673 | |||
| 8d6d1a7b3c | |||
| 21b1bf81b9 | |||
| f2c8501d8f | |||
| 699fdc0ceb | |||
| 61e5bf08b5 | |||
| 6dbff460fb | |||
| 60ad2bdb7d | |||
| 35aaad62c9 | |||
| 9cd2ec28f7 | |||
| bed5b9edb7 | |||
| 5c931f7ec8 | |||
| b85a92be63 | |||
| e4afa7c177 | |||
| a9d1450111 | |||
| 001fe6bd1e | |||
| 33cccf063f | |||
| 4eab217696 | |||
| a85cb3bc92 | |||
| 1e0b95df13 | |||
| 778fbc37a6 | |||
| 2ef1219109 | |||
| 1a95d1cd6f | |||
| 14be609d38 | |||
| a63621dc7a | |||
| 5c8abb54b9 | |||
| 4d51aecd95 | |||
| 872bee0033 | |||
| f778ba89af | |||
| ca445c86c8 | |||
| 26364227a6 | |||
| 49e02a9097 | |||
| 03573426e1 | |||
| 520cd5fb9e | |||
| a88ce0cb9e | |||
| 88a6ef872a | |||
| 90d76fabf7 | |||
| f1e601a3a2 | |||
| e045da51b3 | |||
| c619a6fca8 | |||
| 992223a284 | |||
| 90313bc380 | |||
| cafdb815e3 | |||
| b0ad5ac69e | |||
| eb8184542b | |||
| 2ce56e4fb1 | |||
| b3a1f27461 | |||
| 8a0df31fc5 | |||
| 124021800d | |||
| 2035a0b878 | |||
| 52d7d84edb | |||
| 10bf041900 | |||
| 882123671b | |||
| 7aef470156 | |||
| 2aa3b2d89a | |||
| b4a1a4a0d0 | |||
| d0ae1cbce0 | |||
| 339b5dbfb6 | |||
| 914e339b37 | |||
| c58a06bede | |||
| b3b20ef355 | |||
| 9b57df9a8d | |||
| 90bc7cba78 | |||
| 77a70dc8bf | |||
| 0e22a3c582 | |||
| fc663c9a8c | |||
| 2110671090 | |||
| 3289d1a1c7 | |||
| 7062012490 | |||
| 9491605213 | |||
| 6be97f3219 | |||
| 6f9ee7b414 | |||
| bfadc58fbc | |||
| 2d1361c026 | |||
| 2b75fb4bbb | |||
| aef7d05dc5 | |||
| 6c7ee83bc4 | |||
| 963de80d3e | |||
| c2959cefce | |||
| dc6c4986d6 | |||
| efe7cbcd26 | |||
| 7b7f79073a | |||
| f6ac437b68 | |||
| 17fa2e0333 | |||
| 197dbea3d2 | |||
| c2f8d4bd44 | |||
| c60bc5f919 | |||
| 31aacc1791 | |||
| b208529745 | |||
| 5e3d4d0414 | |||
| 73730b3cf5 | |||
| cab1a56722 | |||
| aced62f4b3 | |||
| 68b2aa6df4 | |||
| ce9072f27a | |||
| 35e09b26c1 | |||
| c69596bebc | |||
| 87facd654d | |||
| 6725754169 | |||
| cabd6e7f85 | |||
| d4923d6350 | |||
| 8db94fe7fe | |||
| 5d7209d635 | |||
| a154e01cee | |||
| ece2d4c081 | |||
| 57f447e302 | |||
| 7858ac6c68 | |||
| e56bc8a5b9 | |||
| 18c2c74848 | |||
| e63b92a718 | |||
| ac813f2b5b | |||
| 6419980663 | |||
| 894e1be9c6 | |||
| 59db0ca18c | |||
| ab1a7d0a69 | |||
| 06d0ff6ca8 | |||
| 219a7cc82f | |||
| b9217c292a | |||
| 814917793a | |||
| 7423cfa8f8 | |||
| 9d9548da4a | |||
| c1bc6ddf6e | |||
| f42bf525e9 | |||
| ade054b752 | |||
| 9a5b5b0614 | |||
| 4fe6fbee12 | |||
| cd549cb386 | |||
| d41a66758f | |||
| 3a7be7730d | |||
| c8ab0c1535 | |||
| 0e567a08de | |||
| 9baab389c9 | |||
| 46a80f60c5 | |||
| aab2d6615a | |||
| 991b8142fe | |||
| f4bbbcb6c1 | |||
| 768ab1b586 | |||
| 7424e4176c | |||
| 8287c88bd4 | |||
| 53e7277b6a | |||
| 2c7d61f938 |
@@ -1,80 +1,152 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[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-18-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:applications]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/applications.po
|
||||
source_file = locale/sources/applications.pot
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-18-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:essentials]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
|
||||
source_file = locale/sources/essentials.pot
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-18-doc:r:essentials]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
|
||||
source_file = locale/sources/essentials.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = essentials
|
||||
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-18-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:general]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/general.po
|
||||
source_file = locale/sources/general.pot
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-18-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:hr]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/hr.po
|
||||
source_file = locale/sources/hr.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = hr
|
||||
[o:odoo:p:odoo-18-doc:r:hr]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/hr.po
|
||||
source_file = locale/sources/hr.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = hr
|
||||
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-18-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: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-18-doc:r:inventory_and_mrp]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
|
||||
source_file = locale/sources/inventory_and_mrp.pot
|
||||
type = POT
|
||||
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:marketing]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
|
||||
source_file = locale/sources/marketing.pot
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-18-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:productivity]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
|
||||
source_file = locale/sources/productivity.pot
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-18-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:sales]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/sales.po
|
||||
source_file = locale/sources/sales.pot
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-18-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:services]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/services.po
|
||||
source_file = locale/sources/services.pot
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-18-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:user_settings]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/settings.po
|
||||
source_file = locale/sources/settings.pot
|
||||
source_lang = en
|
||||
[o:odoo:p:odoo-18-doc:r:user_settings]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/settings.po
|
||||
source_file = locale/sources/settings.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = settings
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-16-doc:r:studio]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/studio.po
|
||||
source_file = locale/sources/studio.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-18-doc:r:studio]
|
||||
file_filter = locale/<lang>/LC_MESSAGES/studio.po
|
||||
source_file = locale/sources/studio.pot
|
||||
type = POT
|
||||
minimum_perc = 0
|
||||
resource_name = studio
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
source_lang = en
|
||||
|
||||
[o:odoo:p:odoo-18-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
|
||||
|
||||
@@ -27,7 +27,7 @@ SOURCE_DIR = content
|
||||
|
||||
HTML_BUILD_DIR = $(BUILD_DIR)/html
|
||||
ifdef VERSIONS
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/16.0
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
|
||||
endif
|
||||
ifneq ($(CURRENT_LANG),en)
|
||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
|
||||
|
||||
@@ -21,8 +21,8 @@ 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 = '16.0'
|
||||
# `release` is the full version, including a/b/rc tags. Acts as replacement for |release|.
|
||||
version = release = 'master'
|
||||
|
||||
# `current_branch` is the technical name of the current branch.
|
||||
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).
|
||||
@@ -116,7 +116,7 @@ else:
|
||||
odoo.addons.__path__.append(str(odoo_dir) + '/addons')
|
||||
from odoo import release as odoo_release # Don't collide with Sphinx's 'release' config option
|
||||
odoo_version = '.'.join(str(s) for s in odoo_release.version_info[:2]).replace('~', '-') # Change saas~XX.Y to saas-XX.Y
|
||||
odoo_version = 'master' if 'alpha' in odoo_release.version else odoo_version
|
||||
odoo_version = 'master' if odoo_release.ALPHA in odoo_release.version_info else odoo_version
|
||||
if release != odoo_version:
|
||||
_logger.warning(
|
||||
"Found Odoo sources in %(directory)s but with version '%(odoo_version)s' incompatible "
|
||||
@@ -248,13 +248,17 @@ languages_names = {
|
||||
'es': 'ES',
|
||||
'es_419': 'ES (LATAM)',
|
||||
'fr': 'FR',
|
||||
'id': 'ID',
|
||||
'it': 'IT',
|
||||
'ja': 'JA',
|
||||
'ko': 'KR',
|
||||
'nl': 'NL',
|
||||
'pt_BR': 'PT',
|
||||
'ro': 'RO',
|
||||
'sv': 'SV',
|
||||
'th': 'TH',
|
||||
'uk': 'UA',
|
||||
'vi': 'VI',
|
||||
'zh_CN': 'ZH (CN)',
|
||||
'zh_TW': 'ZH (TW)'
|
||||
}
|
||||
@@ -388,6 +392,9 @@ def setup(app):
|
||||
app.add_config_value('is_remote_build', None, 'env') # Whether the build is remotely deployed
|
||||
app.add_config_value('source_read_replace_vals', {}, 'env')
|
||||
app.connect('source-read', source_read_replace)
|
||||
# TODO uncomment after moving to >= v7.2.5 to also substitute placeholders in included files.
|
||||
# See https://github.com/sphinx-doc/sphinx/commit/ff1831
|
||||
# app.connect('include-read', source_read_replace)
|
||||
|
||||
app.add_lexer('json', JsonLexer)
|
||||
app.add_lexer('xml', XmlLexer)
|
||||
|
||||
@@ -64,4 +64,4 @@ The Odoo mobile apps are available for download on the `Google Play Store
|
||||
.. important::
|
||||
The iOS app cannot be updated and will be deprecated at some point in the future.
|
||||
|
||||
While the store apps support multi-accounts, they are not compatible with SS0 authentication.
|
||||
While the store apps support multi-accounts, they are not compatible with SSO authentication.
|
||||
|
||||
@@ -402,9 +402,9 @@ we are considering the feature if there is enough demand.
|
||||
|
||||
In case the domain of your users email addresses use SPF (Sender Policy Framework) or DKIM
|
||||
(DomainKeys Identified Mail), don't forget to authorize Odoo as a sending host in your domain name
|
||||
settings to increase the deliverability of your outgoing emails.
|
||||
The configuration steps are explained in the documentation about :ref:`SPF
|
||||
<email_communication/spf_compliant>` and :ref:`DKIM <email_communication/dkim_compliant>`.
|
||||
settings to increase the deliverability of your outgoing emails. The configuration steps are
|
||||
explained in the documentation about :ref:`SPF <email-domain-spf>` and :ref:`DKIM
|
||||
<email-domain-dkim>`.
|
||||
|
||||
.. Warning::
|
||||
Forgetting to configure your SPF or DKIM to authorize Odoo as a sending host can lead to the
|
||||
|
||||
@@ -146,7 +146,7 @@ Manually
|
||||
--------
|
||||
|
||||
If you want to create your module structure manually,
|
||||
you can follow the :doc:`/developer/tutorials/getting_started` tutorial to understand
|
||||
you can follow the :doc:`/developer/tutorials/server_framework_101` tutorial to understand
|
||||
the structure of a module and the content of each file.
|
||||
|
||||
Push the development branch
|
||||
|
||||
@@ -9,7 +9,7 @@ internet.
|
||||
|
||||
.. warning:: If you are setting up a public server, be sure to check our :ref:`security` recommendations!
|
||||
|
||||
.. _db_filter:
|
||||
.. _dbfilter:
|
||||
|
||||
dbfilter
|
||||
========
|
||||
@@ -573,12 +573,12 @@ security-related topics:
|
||||
|
||||
- Use appropriate database filters ( :option:`--db-filter <odoo-bin --db-filter>`)
|
||||
to restrict the visibility of your databases according to the hostname.
|
||||
See :ref:`db_filter`.
|
||||
See :ref:`dbfilter`.
|
||||
You may also use :option:`-d <odoo-bin -d>` to provide your own (comma-separated)
|
||||
list of available databases to filter from, instead of letting the system fetch
|
||||
them all from the database backend.
|
||||
|
||||
- Once your ``db_name`` and ``db_filter`` are configured and only match a single database
|
||||
- Once your ``db_name`` and ``dbfilter`` are configured and only match a single database
|
||||
per hostname, you should set ``list_db`` configuration option to ``False``, to prevent
|
||||
listing databases entirely, and to block access to the database management screens
|
||||
(this is also exposed as the :option:`--no-database-list <odoo-bin --no-database-list>`
|
||||
@@ -722,7 +722,7 @@ management screens.
|
||||
the system administrator, including provisioning of new databases and automated backups.
|
||||
|
||||
Be sure to setup an appropriate ``db_name`` parameter
|
||||
(and optionally, ``db_filter`` too) so that the system can determine the target database
|
||||
(and optionally, ``dbfilter`` too) so that the system can determine the target database
|
||||
for each request, otherwise users will be blocked as they won't be allowed to choose the
|
||||
database themselves.
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ In you alias config (:file:`/etc/aliases`):
|
||||
- `Postfix aliases <http://www.postfix.org/aliases.5.html>`_
|
||||
- `Postfix virtual <http://www.postfix.org/virtual.8.html>`_
|
||||
|
||||
|
||||
For Exim
|
||||
--------
|
||||
|
||||
@@ -47,5 +46,5 @@ For Exim
|
||||
- `Exim <https://www.exim.org/docs.html>`_
|
||||
|
||||
.. tip::
|
||||
If you don't have access/manage your email server, use :ref:`inbound messages
|
||||
<email_communication/inbound_messages>`.
|
||||
If you do not have access/manage your email server, use :ref:`incoming mail servers
|
||||
<email-inbound-custom-domain-incoming-server>`.
|
||||
|
||||
@@ -8,63 +8,56 @@ Geo IP
|
||||
Installation
|
||||
============
|
||||
|
||||
.. warning::
|
||||
Please note that the installation depends on your computer's operating system and distribution.
|
||||
We will assume that a Linux operating system is being used.
|
||||
#. Download both the GeoLite2 City and Country
|
||||
`databases <https://dev.maxmind.com/geoip/geoip2/geolite2/>`_. You should end up with two files
|
||||
called :file:`GeoLite2-City.mmdb` and :file:`GeoLite2-Country.mmdb`.
|
||||
|
||||
#. Install `geoip2 <https://pypi.org/project/geoip2/>`__ Python library
|
||||
.. code-block:: bash
|
||||
#. Move the files to the folder :file:`/usr/share/GeoIP/`.
|
||||
|
||||
pip install geoip2
|
||||
.. code-block:: bash
|
||||
|
||||
#. Download the `GeoLite2 City database <https://dev.maxmind.com/geoip/geoip2/geolite2/>`_. You
|
||||
should end up with a file called ``GeoLite2-City.mmdb``
|
||||
#. Move the file to the folder ``/usr/share/GeoIP/``
|
||||
.. code-block:: bash
|
||||
|
||||
mv ~/Downloads/GeoLite2-City.mmdb /usr/share/GeoIP/
|
||||
mv ~/Downloads/GeoLite2-City.mmdb /usr/share/GeoIP/
|
||||
mv ~/Downloads/GeoLite2-Country.mmdb /usr/share/GeoIP/
|
||||
|
||||
#. Restart the server
|
||||
|
||||
.. note::
|
||||
If you can't/don't want to locate the geoip database in ``/usr/share/GeoIP/``, you can use the
|
||||
``--geoip-db`` option of the Odoo command line interface. This option takes the absolute path to
|
||||
the GeoIP database file and uses it as the GeoIP database. For example:
|
||||
If you don't want to locate the geoip database in :file:`/usr/share/GeoIP/`, use the
|
||||
:option:`--geoip-city-db <odoo-bin --geoip-city-db>` and
|
||||
:option:`--geoip-country-db <odoo-bin --geoip-country-db>` options of the Odoo command line
|
||||
interface. These options take the absolute path to the GeoIP database file and use it as the
|
||||
GeoIP database. For example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
./odoo-bin --geoip-db= ~/Downloads/GeoLite2-City.mmdb
|
||||
./odoo-bin --geoip-city-db= ~/Downloads/GeoLite2-City.mmdb
|
||||
|
||||
.. seealso::
|
||||
- :doc:`CLI documentation </developer/reference/cli>`.
|
||||
|
||||
.. warning::
|
||||
``GeoIP`` Python library can also be used. However this version is discontinued since January
|
||||
1. See `GeoLite Legacy databases are now discontinued
|
||||
<https://support.maxmind.com/geolite-legacy-discontinuation-notice/>`_
|
||||
Test GeoIP geolocation in your Odoo website
|
||||
===========================================
|
||||
|
||||
How to 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:
|
||||
|
||||
1. Go to your website. Open the web page that you want to test ``GeoIP``.
|
||||
2. Choose :menuselection:`Customize --> HTML/CSS/JS Editor`.
|
||||
3. Add the following piece of XML in the page :
|
||||
#. Go to your website. Open the web page that you want to test ``GeoIP``.
|
||||
#. Choose :menuselection:`Customize --> HTML/CSS/JS Editor`.
|
||||
#. Add the following piece of XML in the page :
|
||||
|
||||
.. code-block:: xml
|
||||
.. code-block:: xml
|
||||
|
||||
<h1 class="text-center" t-esc="request.session.get('geoip')"/>
|
||||
<h1 class="text-center" t-esc="request.geoip.country.name or 'geoip failure'"/>
|
||||
|
||||
You should end up with a dictionary indicating the location of the IP address.
|
||||
#. Save and refresh the page.
|
||||
|
||||
.. image:: geo_ip/on-premise_geo-ip-installation01.png
|
||||
:align: center
|
||||
Geo-ip is working if you read your country name displayed in bold in the middle of the page.
|
||||
|
||||
.. note::
|
||||
If the curly braces are empty ``{}``, it can be for any of the following reasons :
|
||||
In case you read "**geoip failure**" instead then the geolocalization failed. The common causes are:
|
||||
|
||||
- The browsing IP address is the localhost (``127.0.0.1``) or a local area network one
|
||||
(``192.168.*.*``)
|
||||
- If a reversed proxy is used, make sure to configure it correctly. See :option:`proxy mode
|
||||
<odoo-bin --proxy-mode>`
|
||||
- ``geoip2`` is not installed or the GeoIP database file wasn't found
|
||||
- The GeoIP database was unable to resolve the given IP address
|
||||
#. The browsing IP address is the localhost (``127.0.0.1``) or a local area network one. If you
|
||||
don't know, you can access your website using mobile data.
|
||||
#. You are using a reverse-proxy (apache, nginx) in front of Odoo but didn't start Odoo with the
|
||||
proxy-mode enabled. See :option:`proxy mode <odoo-bin --proxy-mode>`.
|
||||
#. The GeoIP database is corrupt, missing or unaccessible. In such case a warning was logged in the
|
||||
server logs.
|
||||
|
||||
|
Before Width: | Height: | Size: 73 KiB |
@@ -132,7 +132,7 @@ be downloaded from the `Odoo download page <https://www.odoo.com/page/download>`
|
||||
.. group-tab:: Fedora
|
||||
|
||||
.. note::
|
||||
Odoo {CURRENT_MAJOR_VERSION} 'rpm' package supports Fedora 36.
|
||||
Odoo {CURRENT_MAJOR_VERSION} 'rpm' package supports Fedora 38.
|
||||
|
||||
Once downloaded, the package can be installed using the 'dnf' package manager:
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ Git
|
||||
|
||||
To clone a Git repository, choose between cloning with HTTPS or SSH. In most cases, the best option
|
||||
is HTTPS. However, choose SSH to contribute to Odoo source code or when following the :doc:`Getting
|
||||
Started developer tutorial </developer/tutorials/getting_started>`.
|
||||
Started developer tutorial </developer/tutorials/server_framework_101>`.
|
||||
|
||||
.. tabs::
|
||||
|
||||
@@ -118,7 +118,11 @@ Prepare
|
||||
Python
|
||||
~~~~~~
|
||||
|
||||
Odoo requires **Python 3.7** or later to run.
|
||||
Odoo requires **Python 3.10** or later to run.
|
||||
|
||||
.. versionchanged:: 17
|
||||
Minimum requirement updated from Python 3.7 to Python 3.10.
|
||||
|
||||
|
||||
.. tabs::
|
||||
|
||||
@@ -140,7 +144,7 @@ Odoo requires **Python 3.7** or later to run.
|
||||
to download and install Python 3 if needed.
|
||||
|
||||
.. note::
|
||||
If Python 3 is already installed, make sure that the version is 3.7 or above, as previous
|
||||
If Python 3 is already installed, make sure that the version is 3.10 or above, as previous
|
||||
versions are not compatible with Odoo.
|
||||
|
||||
.. tabs::
|
||||
@@ -286,7 +290,6 @@ Dependencies
|
||||
.. tab:: Install with pip
|
||||
|
||||
.. warning::
|
||||
|
||||
Using pip may lead to security issues and broken dependencies; only do this if you
|
||||
know what you are doing.
|
||||
|
||||
|
||||
@@ -10,3 +10,4 @@ Odoo essentials
|
||||
essentials/contacts
|
||||
essentials/export_import_data
|
||||
essentials/in_app_purchase
|
||||
essentials/keyboard_shortcuts
|
||||
|
||||
@@ -2,238 +2,344 @@
|
||||
Activities
|
||||
==========
|
||||
|
||||
*Activities* are follow-up tasks tied to a record in an Odoo database. Activities can be scheduled
|
||||
on any page of the database that contains a chatter thread, kanban view, list view, or activities
|
||||
view of an application.
|
||||
.. |clock| replace:: :icon:`fa-clock-o` :guilabel:`(clock)` icon
|
||||
|
||||
*Activities* are follow-up tasks tied to a record in an Odoo database.
|
||||
|
||||
.. _activities/important:
|
||||
|
||||
The icon used to display activities varies, depending on the :ref:`activity type
|
||||
<activities/types>`:
|
||||
|
||||
- :icon:`fa-clock-o` :guilabel:`(clock)` icon: the default activities icon.
|
||||
- :icon:`fa-phone` :guilabel:`(phone)` icon: a phone call is scheduled.
|
||||
- :icon:`fa-envelope` :guilabel:`(envelope)` icon: an email is scheduled.
|
||||
- :icon:`fa-check` :guilabel:`(check)` icon: a "to-do" is scheduled.
|
||||
- :icon:`fa-users` :guilabel:`(people)` icon: a meeting is scheduled.
|
||||
- :icon:`fa-upload` :guilabel:`(upload)` icon: a document is scheduled to be uploaded.
|
||||
- :icon:`fa-pencil-square-o` :guilabel:`(request signature)` icon: a signature request is scheduled.
|
||||
|
||||
Schedule activities
|
||||
===================
|
||||
|
||||
One way that activities are created is by clicking the :guilabel:`Schedule Activity` button, located
|
||||
at the top of the *chatter* on any record. On the pop-up window that appears, select an
|
||||
:guilabel:`Activity Type` from the drop-down menu.
|
||||
Activities can be scheduled on any page of the database that contains a :ref:`chatter
|
||||
<activities/chatter>` thread, :ref:`Kanban view <activities/kanban>`, :ref:`list view
|
||||
<activities/list>`, or :ref:`activities view <activities/activity>` of an application.
|
||||
|
||||
.. _activities/chatter:
|
||||
|
||||
Chatter
|
||||
-------
|
||||
|
||||
Activities can be created from the chatter on any record.
|
||||
|
||||
To schedule a new activity, click the :guilabel:`Activities` button, located at the top of the
|
||||
chatter. In the :guilabel:`Schedule Activity` pop-up window that appears, :ref:`fill out the
|
||||
Schedule Activity form <activities/form>`.
|
||||
|
||||
.. image:: activities/chatter.png
|
||||
:align: center
|
||||
:alt: New activity type form.
|
||||
|
||||
.. _activities/kanban:
|
||||
|
||||
Kanban view
|
||||
-----------
|
||||
|
||||
Activities can also be created from the :icon:`oi-view-kanban` :guilabel:`(Kanban)` view.
|
||||
|
||||
To do so, click on the |clock| located at the bottom of an individual record.
|
||||
|
||||
Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Schedule Activity form
|
||||
<activities/form>`.
|
||||
|
||||
.. image:: activities/schedule-kanban-activity.png
|
||||
:align: center
|
||||
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
|
||||
|
||||
.. note::
|
||||
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
|
||||
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
|
||||
|
||||
.. _activities/list:
|
||||
|
||||
List view
|
||||
---------
|
||||
|
||||
Activities can also be created from a :icon:`oi-view-list` :guilabel:`(list)` view.
|
||||
|
||||
If the :guilabel:`Activities` column is hidden, reveal it using the :icon:`oi-settings-adjust`
|
||||
:guilabel:`(settings adjust)` icon in the far-right of the top row.
|
||||
|
||||
Then, click on the |clock| for the record the activity is being added to, and click :guilabel:`+
|
||||
Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form <activities/form>` that
|
||||
appears.
|
||||
|
||||
.. note::
|
||||
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
|
||||
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
|
||||
|
||||
.. image:: activities/schedule-list-activity.png
|
||||
:align: center
|
||||
:alt: List view of the CRM pipeline and the option to schedule an activity.
|
||||
|
||||
.. _activities/activity:
|
||||
|
||||
Activity view
|
||||
-------------
|
||||
|
||||
Most applications in Odoo have an *Activity* view available. If available, a |clock| is visible in
|
||||
the top-right corner of the main menu bar, amongst the other view option icons.
|
||||
|
||||
To open the activity view, click the |clock|.
|
||||
|
||||
.. image:: activities/activities.png
|
||||
:align: center
|
||||
:alt: Top-right menu with the Activities icon called out.
|
||||
|
||||
In this view, all the available activities are listed in the columns, while the horizontal entries
|
||||
represent all the individual records.
|
||||
|
||||
Activities that appear green have a due date in the future, activities that appear orange are due
|
||||
today, while activities appearing red are overdue.
|
||||
|
||||
Color bars in each column represent records for specific activity types, and display a number
|
||||
indicating how many activities are scheduled for that type.
|
||||
|
||||
If multiple activity types are scheduled for a record, a number appears in the box, indicating the
|
||||
total number of scheduled activities.
|
||||
|
||||
.. note::
|
||||
Activity colors, and their relation to an activity's due date, are consistent throughout Odoo,
|
||||
regardless of the activity type, or the view.
|
||||
|
||||
To schedule an activity for a record, hover over the corresponding field. Click the :icon:`fa-plus`
|
||||
:guilabel:`(plus)` icon that appears, and then :ref:`fill out the Schedule Activity form
|
||||
<activities/form>`.
|
||||
|
||||
.. image:: activities/activity-view.png
|
||||
:align: center
|
||||
:alt: Activity view of the CRM pipeline and the option to schedule an activity.
|
||||
|
||||
.. _activities/form:
|
||||
|
||||
Schedule Activity form
|
||||
----------------------
|
||||
|
||||
Activities can be scheduled from many different places, such as from the :ref:`chatter
|
||||
<activities/chatter>` of a record, or from one of multiple views in an application, when available:
|
||||
the :ref:`Kanban view <activities/kanban>`, :ref:`list view <activities/list>`, or :ref:`activity
|
||||
view <activities/activity>`.
|
||||
|
||||
Enter the following information on the form:
|
||||
|
||||
- :guilabel:`Activity Type`: select the type of activity from the drop-down menu. The default
|
||||
options are: :guilabel:`Email`, :guilabel:`Call`, :guilabel:`Meeting`, or :guilabel:`To-Do`.
|
||||
Depending on what other applications are installed, additional options may be available.
|
||||
- :guilabel:`Summary`: enter a short title for the activity, such as `Discuss Proposal`.
|
||||
- :guilabel:`Due Date`: using the calendar popover, select the activity's deadline.
|
||||
- :guilabel:`Assigned to`: by default, the current user populates this field. To assign a different
|
||||
user to the activity, select them from the drop-down menu.
|
||||
- :guilabel:`Notes`: add any additional information for the activity in this field.
|
||||
|
||||
When the :guilabel:`Schedule Activity` pop-up window is completed, click one of the following
|
||||
buttons:
|
||||
|
||||
- :guilabel:`Open Calendar`: opens the user's calendar to add and schedule the activity.
|
||||
|
||||
Click on the desired date and time for the activity, and a :guilabel:`New Event` pop-up window
|
||||
appears. The summary from the *Schedule Activity* pop-up window populates the :guilabel:`Title`
|
||||
field.
|
||||
|
||||
Enter the information in the :guilabel:`New Event` pop-up window, then click :guilabel:`Save &
|
||||
Close` to schedule it. Once scheduled, the activity is added to the chatter under the
|
||||
:guilabel:`Planned Activities` section.
|
||||
|
||||
.. important::
|
||||
The :guilabel:`Open Calendar` button **only** appears if the :guilabel:`Activity Type` is set
|
||||
to either :guilabel:`Call` or :guilabel:`Meeting`.
|
||||
|
||||
- :guilabel:`Schedule`: schedules the activity, and adds the activity to the chatter under
|
||||
:guilabel:`Planned Activities`.
|
||||
- :guilabel:`Schedule & Mark as Done`: adds the details of the activity to the chatter under
|
||||
:guilabel:`Today`. The activity is not scheduled, and is automatically marked as done.
|
||||
- :guilabel:`Done & Schedule Next`: adds the details of the activity to the chatter under
|
||||
:guilabel:`Today`. The activity is not scheduled, is automatically marked as done, and a new
|
||||
:guilabel:`Schedule Activity` pop-up window appears.
|
||||
- :guilabel:`Cancel`: discards any changes made on the :guilabel:`Schedule Activity` pop-up window.
|
||||
|
||||
.. image:: activities/schedule-pop-up.png
|
||||
:align: center
|
||||
:alt: View of CRM leads and the option to schedule an activity.
|
||||
|
||||
.. _activities/all:
|
||||
|
||||
All scheduled activities
|
||||
========================
|
||||
|
||||
To view a consolidated list of activities, organized by application, click the |clock| in the header
|
||||
menu, located in the top-right corner.
|
||||
|
||||
If any activities are scheduled, the number of activities appear in a red bubble on the
|
||||
|clock|.
|
||||
|
||||
All activities for each application are further divided into subsections, indicating where in the
|
||||
application the activity is to be completed. Each sub-section lists the number of scheduled
|
||||
activities that are :guilabel:`Late`, due :guilabel:`Today`, and scheduled in the
|
||||
:guilabel:`Future`.
|
||||
|
||||
.. example::
|
||||
In the *Time Off* application, one activity is scheduled to be done in the *All Time Off*
|
||||
requests dashboard, and six activities are scheduled to be done in the *Allocations* dashboard.
|
||||
|
||||
These requests appear in two separate lists in the all activities drop-down menu: one labeled
|
||||
`Time Off` and one labeled `Time Off Allocation`.
|
||||
|
||||
.. image:: activities/activities-menu.png
|
||||
:align: center
|
||||
:alt: The list of activities that is accessed from the main menu bar. Two entries for the Time
|
||||
Off application are highlighted.
|
||||
|
||||
Request a document
|
||||
------------------
|
||||
|
||||
The option to :guilabel:`Request a Document` is available at the bottom of the list of :ref:`all
|
||||
scheduled activities <activities/all>`, the option to :guilabel:`Request a Document` appears. Click
|
||||
:guilabel:`Request a Document`, and a :guilabel:`Request a file` pop-up window appears.
|
||||
|
||||
Enter the following information on the form:
|
||||
|
||||
- :guilabel:`Document Name`: enter a name for the document being requested.
|
||||
- :guilabel:`Request To`: select the user the document is being requested from using the drop-down
|
||||
menu.
|
||||
- :guilabel:`Due Date In`: enter a numerical value indicating when the document is due. Next to
|
||||
this field, a :guilabel:`Days` field is visible. Click :guilabel:`Days`, the default option, to
|
||||
reveal a drop-down menu. Select the desired time-frame option from the list. The options are
|
||||
:guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`.
|
||||
- :guilabel:`Workspace`: using the drop-down menu, select the specific :ref:`Workspace
|
||||
<documents/workspaces>` the document is being uploaded to.
|
||||
- :guilabel:`Tags`: select any desired tags from the drop-down menu. The available tags displayed
|
||||
are based on the tags configured for the selected :guilabel:`Workspace`.
|
||||
- :guilabel:`Message`: enter a message to clarify the document request in this field.
|
||||
|
||||
When all the fields are completed, click :guilabel:`Request` to send the document request.
|
||||
|
||||
.. image:: activities/request-doc.png
|
||||
:align: center
|
||||
:alt: The Request a file form, with all fields filled out to request a contract.
|
||||
|
||||
.. _activities/types:
|
||||
|
||||
Activity types
|
||||
==============
|
||||
|
||||
To view the currently configured types of activities in the database, navigate to
|
||||
:menuselection:`Settings app --> Discuss section --> Activities setting --> Activity Types`.
|
||||
|
||||
.. image:: activities/settings-activities-types.png
|
||||
:align: center
|
||||
:alt: Activity Types button in the Settings application under the Discuss section.
|
||||
|
||||
Doing so reveals the :guilabel:`Activity Types` page, where the existing activity types are found.
|
||||
|
||||
.. tip::
|
||||
Individual applications have a list of *Activity Types* dedicated to that application. For
|
||||
example, to view and edit the activities available for the *CRM* application, go to
|
||||
:menuselection:`CRM app --> Configuration --> Activity Types`.
|
||||
|
||||
Enter a title for the activity in the :guilabel:`Summary` field, located in the :guilabel:`Schedule
|
||||
Activity` pop-up window.
|
||||
.. image:: activities/activity-list.png
|
||||
:align: center
|
||||
:alt: The list of activity types already configured and available.
|
||||
|
||||
To assign the activity to a different user, select a name from the :guilabel:`Assigned to` drop-down
|
||||
menu. Otherwise, the user creating the activity is automatically assigned.
|
||||
Edit activity types
|
||||
-------------------
|
||||
|
||||
Lastly, feel free to add any additional information in the optional :guilabel:`Log a note...` field.
|
||||
To edit an existing :ref:`activity type <activities/types>`, click on the activity type, and the
|
||||
activity type form loads.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`Due Date` field on the :guilabel:`Schedule Activity` pop-up window auto-populates
|
||||
based on the configuration settings for the selected :guilabel:`Activity Type`. However, this
|
||||
date can be changed by selecting a day on the calendar in the :guilabel:`Due Date` field.
|
||||
Make any desired changes to the activity type form. The form automatically saves, but it can be
|
||||
saved manually at any time by clicking the :guilabel:`Save Manually` option, represented by a
|
||||
:icon:`fa-cloud-upload` :guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
|
||||
|
||||
Lastly, click one of the following buttons:
|
||||
Create new activity types
|
||||
-------------------------
|
||||
|
||||
- :guilabel:`Schedule`: adds the activity to the chatter under :guilabel:`Planned activities`.
|
||||
- :guilabel:`Mark as Done`: adds the details of the activity to the chatter under :guilabel:`Today`.
|
||||
The activity is not scheduled, it is automatically marked as completed.
|
||||
- :guilabel:`Done \& Schedule Next`: adds the task under :guilabel:`Today` marked as done, and
|
||||
opens a new activity window.
|
||||
- :guilabel:`Discard`: discards any changes made on the pop-up window.
|
||||
To create a new :ref:`activity type <activities/types>`, click :guilabel:`New` from the
|
||||
:guilabel:`Activity Types` page, and a blank activity type form loads.
|
||||
|
||||
.. image:: activities/schedule-pop-up.png
|
||||
:alt: View of CRM leads and the option to schedule an activity.
|
||||
Enter a :guilabel:`Name` for the activity type at the top of the form, then enter the following
|
||||
information on the form.
|
||||
|
||||
.. note::
|
||||
Depending on the activity type, the :guilabel:`Schedule` button may be replaced by a
|
||||
:guilabel:`Save` button, or an :guilabel:`Open Calendar` button.
|
||||
Activity Settings section
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Scheduled activities are added to the chatter for the record under :guilabel:`Planned activities`.
|
||||
- :guilabel:`Action`: using the drop-down menu, select an action associated with this new activity
|
||||
type. Some actions trigger specific behaviors after an activity is scheduled, such as:
|
||||
|
||||
.. image:: activities/chatter-activities.png
|
||||
:alt: View of CRM leads and the option to schedule an activity.
|
||||
- :guilabel:`Upload Document`: if selected, a link to upload a document is automatically added to
|
||||
the planned activity in the chatter.
|
||||
- :guilabel:`Call` or :guilabel:`Meeting`: if selected, users have the option to open their
|
||||
calendar to select a date and time for the activity.
|
||||
- :guilabel:`Request Signature`: if selected, a link to open a signature request pop-up window is
|
||||
automatically added to the planned activity in the chatter. This requires the Odoo *Sign*
|
||||
application to be installed.
|
||||
|
||||
Activities can also be scheduled from the kanban, list, or activities view of an application.
|
||||
.. note::
|
||||
Available activity types vary based on the installed applications in the database.
|
||||
|
||||
.. tabs::
|
||||
- :guilabel:`Folder`: select a specific :ref:`workspace <documents/workspaces>` folder to save a
|
||||
document to. This field **only** appears if :guilabel:`Upload Document` is selected for the
|
||||
:guilabel:`Action`.
|
||||
|
||||
.. tab:: Kanban view
|
||||
Using the drop-down menu, select the :guilabel:`Folder` the document is saved to.
|
||||
|
||||
Select a record on which to schedule an activity. Click on the :guilabel:`🕘 (clock)` icon,
|
||||
then :guilabel:`Schedule An Activity`, and proceed to fill out the pop-up form.
|
||||
- :guilabel:`Default User`: select a user from the drop-down menu to automatically assign this
|
||||
activity to the selected user when this activity type is scheduled. If this field is left blank,
|
||||
the activity is assigned to the user who creates the activity.
|
||||
- :guilabel:`Default Summary`: enter a note to include whenever this activity type is created.
|
||||
|
||||
.. image:: activities/schedule-kanban-activity.png
|
||||
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
|
||||
.. note::
|
||||
The information in the :guilabel:`Default User` and :guilabel:`Default Summary` fields are
|
||||
included when an activity is created. However, they can be altered before the activity is
|
||||
scheduled or saved.
|
||||
|
||||
.. tab:: List view
|
||||
- :guilabel:`Keep Done`: tick this checkbox to keep activities that have been marked as `Done`
|
||||
visible in the :ref:`activity view <activities/activity>`.
|
||||
- :guilabel:`Default Note`: enter any notes to appear with the activity.
|
||||
|
||||
Select a record on which to schedule an activity. Click on the :guilabel:`🕘 (clock)` icon,
|
||||
then :guilabel:`Schedule An Activity`. If the record already has an activity scheduled, the
|
||||
clock icon may be replaced by a :guilabel:`📞 (phone)` or an :guilabel:`✉️ (envelope)` icon.
|
||||
|
||||
.. image:: activities/schedule-list-activity.png
|
||||
:alt: List view of the CRM pipeline and the option to schedule an activity.
|
||||
|
||||
.. tab:: Activity view
|
||||
|
||||
To open the activity view for an application, select the :guilabel:`🕘 (clock)` icon from the
|
||||
menu bar anywhere in the database. Select any application from the drop-down menu, and click
|
||||
the :guilabel:`🕘 (clock)` icon for the desired app.
|
||||
|
||||
.. image:: activities/schedule-activity-view-menu.png
|
||||
:alt: Activity menu drop down with focus on where to open activity view for CRM.
|
||||
|
||||
Select a record on which to schedule an activity. Move across the row to find the desired
|
||||
activity type, then click the :guilabel:`+ (plus sign)`.
|
||||
|
||||
.. image:: activities/schedule-activity-view.png
|
||||
:alt: Activity view of the CRM pipeline and the option to schedule an activity.
|
||||
|
||||
.. note::
|
||||
Activity colors, and their relation to an activity's due date, is consistent throughout Odoo,
|
||||
regardless of the activity type, or the view.
|
||||
|
||||
- Activities that appear in **green** indicate a due date sometime in the future.
|
||||
- **Yellow** indicates that the activity's due date is today.
|
||||
- **Red** indicates that the activity is overdue and the due date has passed.
|
||||
|
||||
For example, if an activity is created for a phone call, and the due date passes, the activity
|
||||
appears with a red phone in list view, and a red clock on the kanban view.
|
||||
|
||||
View scheduled activities
|
||||
=========================
|
||||
|
||||
To view scheduled activities, open either the :menuselection:`Sales app` or :menuselection:`CRM app`
|
||||
and click the :guilabel:`🕘 (clock)` icon, located to the far-right side of the other view options.
|
||||
|
||||
Doing so opens the activities menu, showcasing all the scheduled activities for the user, by
|
||||
default. To show all activities for every user, remove the :guilabel:`My Pipeline` filter from the
|
||||
:guilabel:`Search...` bar.
|
||||
|
||||
To view a consolidated list of activities separated by the application where they were created, and
|
||||
by deadline, click the :guilabel:`🕘 (clock)` icon on the header menu to see the activities for that
|
||||
specific application in a drop-down menu.
|
||||
|
||||
The possibility to :guilabel:`Add new note` and :guilabel:`Request a Document` appear at the bottom
|
||||
of this drop-down menu, when the :guilabel:`🕘 (clock)` icon on the header menu is clicked.
|
||||
|
||||
.. image:: activities/activities-menu.png
|
||||
:alt: View of CRM leads page emphasizing the activities menu.
|
||||
|
||||
Configure activity types
|
||||
========================
|
||||
|
||||
To configure the types of activities in the database, go to :menuselection:`Settings app --> Discuss
|
||||
--> Activities --> Activity Types`.
|
||||
|
||||
.. image:: activities/settings-activities-types.png
|
||||
:alt: View of the settings page emphasizing the menu activity types.
|
||||
|
||||
Doing so reveals the :guilabel:`Activity Types` page, where the existing activity types are found.
|
||||
|
||||
To edit an existing activity type, select it from the list, then click :guilabel:`Edit`. To create a
|
||||
new activity type, click :guilabel:`Create`.
|
||||
|
||||
At the top of a blank activity type form, start by choosing a :guilabel:`Name` for the new activity
|
||||
type.
|
||||
|
||||
.. image:: activities/new-activity-type.png
|
||||
:alt: New activity type form.
|
||||
|
||||
Activity settings
|
||||
-----------------
|
||||
|
||||
Action
|
||||
~~~~~~
|
||||
|
||||
The *Action* field specifies the intent of the activity. Some actions trigger specific behaviors
|
||||
after an activity is scheduled.
|
||||
|
||||
- If :guilabel:`Upload Document` is selected, a link to upload a document is added directly to the
|
||||
planned activity in the chatter.
|
||||
- If either :guilabel:`Phonecall` or :guilabel:`Meeting` are selected, users have the option to open
|
||||
their calendar to schedule a time for this activity.
|
||||
- If :guilabel:`Request Signature` is selected, a link is added to the planned activity in the
|
||||
chatter that opens a signature request pop-up window.
|
||||
|
||||
.. note::
|
||||
The actions available to select on an activity type vary, depending on the applications currently
|
||||
installed in the database.
|
||||
|
||||
Default user
|
||||
~~~~~~~~~~~~
|
||||
|
||||
To automatically assign this activity to a specific user when this activity type is scheduled,
|
||||
choose a name from the :guilabel:`Default User` drop-down menu. If this field is left blank, the
|
||||
activity is assigned to the user who creates the activity.
|
||||
|
||||
Default summary
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
To include notes whenever this activity type is created, enter them into the :guilabel:`Default
|
||||
Summary` field.
|
||||
|
||||
.. note::
|
||||
The information in the :guilabel:`Default User` and :guilabel:`Default Summary` fields are
|
||||
included when an activity is created. However, they can be altered before the activity is
|
||||
scheduled or saved.
|
||||
|
||||
Next activity
|
||||
-------------
|
||||
|
||||
To automatically suggest, or trigger, a new activity after an activity has been marked complete, the
|
||||
:guilabel:`Chaining Type` must be set.
|
||||
|
||||
Suggest next activity
|
||||
Next Activity section
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In the :guilabel:`Chaining Type` field, select :guilabel:`Suggest Next Activity`. Upon doing so, the
|
||||
field underneath changes to: :guilabel:`Suggest`. Click the :guilabel:`Suggest` field drop-down menu
|
||||
to select any activities to recommend as follow-up tasks to this activity type.
|
||||
It is possible to have another activity either suggested or triggered. To do so, configure the
|
||||
:guilabel:`Next Activity` section.
|
||||
|
||||
In the :guilabel:`Schedule` field, choose a default deadline for these activities. To do so,
|
||||
configure a desired number of :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`. Then,
|
||||
decide if it should occur :guilabel:`after completion date` or :guilabel:`after previous activity
|
||||
deadline`.
|
||||
- :guilabel:`Chaining Type`: select either :guilabel:`Suggest Next Activity` or :guilabel:`Trigger
|
||||
Next Activity` from the drop-down menu. Depending on the selected option, either the
|
||||
:guilabel:`Suggest` or :guilabel:`Trigger` field is displayed.
|
||||
|
||||
This :guilabel:`Schedule` field information can be altered before the activity is scheduled.
|
||||
.. note::
|
||||
The :guilabel:`Chaining Type` field does **not** appear if :guilabel:`Upload Document` is
|
||||
selected for the :guilabel:`Action`.
|
||||
|
||||
When all configurations are complete, click :guilabel:`Save`.
|
||||
- :guilabel:`Suggest/Trigger`: depending on what is selected for the :guilabel:`Chaining Type`, this
|
||||
field either displays :guilabel:`Suggest` or :guilabel:`Trigger`. Using the drop-down menu, select
|
||||
the activity to recommend or schedule as a follow-up task to the activity type.
|
||||
- :guilabel:`Schedule`: configure when the next activity is suggested or triggered.
|
||||
|
||||
.. image:: activities/schedule-recommended-activity.png
|
||||
:alt: Schedule activity popup with emphasis on recommended activities.
|
||||
First, enter a numerical value indicating when the activity is suggested or triggered.
|
||||
|
||||
.. note::
|
||||
If an activity has the :guilabel:`Chaining Type` set to :guilabel:`Suggest Next Activity`, and
|
||||
has activities listed in the :guilabel:`Suggest` field, users are presented with recommendations
|
||||
for activities as next steps.
|
||||
Next to this field, a :guilabel:`Days` field is visible. Click :guilabel:`Days`, the default
|
||||
option, to reveal a drop-down menu. Select the desired time-frame option from the list. The
|
||||
options are :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`.
|
||||
|
||||
Trigger next activity
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
Lastly, using the drop-down menu, select whether the activity is scheduled or triggered either
|
||||
:guilabel:`after previous activity deadline` or :guilabel:`after completion date`.
|
||||
|
||||
Setting the :guilabel:`Chaining Type` to :guilabel:`Trigger Next Activity` immediately launches the
|
||||
next activity once the previous one is completed.
|
||||
|
||||
If :guilabel:`Trigger Next Activity` is selected in the :guilabel:`Chaining Type` field, the field
|
||||
beneath changes to: :guilabel:`Trigger`. From the :guilabel:`Trigger` field drop-down menu, select
|
||||
the activity that should be launched once this activity is completed.
|
||||
|
||||
In the :guilabel:`Schedule` field, choose a default deadline for these activities. To do so,
|
||||
configure a desired number of :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`. Then,
|
||||
decide if it should occur :guilabel:`after completion date` or :guilabel:`after previous activity
|
||||
deadline`.
|
||||
|
||||
This :guilabel:`Schedule` field information can be altered before the activity is scheduled.
|
||||
|
||||
When all configurations are complete, click :guilabel:`Save`.
|
||||
|
||||
.. image:: activities/triggered-activities.png
|
||||
:alt: Schedule new activity popup with emphasis on Done and launch next button.
|
||||
|
||||
.. note::
|
||||
When an activity has the :guilabel:`Chaining Type` set to :guilabel:`Trigger Next Activity`,
|
||||
marking the activity as `Done` immediately launches the next activity listed in the
|
||||
:guilabel:`Trigger` field.
|
||||
.. image:: activities/new-activity.png
|
||||
:align: center
|
||||
:alt: A new Activity form with all the fields filled out.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`/applications/productivity/discuss`
|
||||
- :doc:`/applications/productivity/discuss/team_communication`
|
||||
- :doc:`../productivity/discuss`
|
||||
- :doc:`../productivity/discuss/team_communication`
|
||||
- :doc:`../sales/crm/optimize/utilize_activities`
|
||||
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@@ -1,10 +1,12 @@
|
||||
:show-content:
|
||||
|
||||
========
|
||||
Contacts
|
||||
========
|
||||
|
||||
The *Contacts* application comes installed on all Odoo databases. Contacts are created for customers
|
||||
the company does business with through Odoo. A contact is a repository of vital business
|
||||
information, facilitating communication and business transactions.
|
||||
Contacts are created in the **Contacts** application for customers the company does business with
|
||||
through Odoo. A contact is a repository of vital business information, facilitating communication
|
||||
and business transactions.
|
||||
|
||||
Contact form
|
||||
============
|
||||
@@ -175,15 +177,33 @@ Partner Assignment tab
|
||||
|
||||
Next is the :guilabel:`Partner Assignment` tab, which by default, includes a :guilabel:`Geolocation`
|
||||
section, and other partner options, including :guilabel:`Partner Activation` and :guilabel:`Partner
|
||||
Review` configurations. These are **only** present when the *Enterprise Resellers* module is
|
||||
installed.
|
||||
Review` configurations. These are **only** present when the *Resellers* module is installed.
|
||||
|
||||
.. seealso::
|
||||
Follow the :doc:`Resellers documentation <../sales/crm/track_leads/resellers>` for more
|
||||
information on publishing partners on the website.
|
||||
|
||||
Membership tab
|
||||
--------------
|
||||
|
||||
Finally, there is the :guilabel:`Membership` tab, which can help users manage any memberships that
|
||||
are being offered to this specific contact. It should be noted that this tab only appears when the
|
||||
*Members* applications is installed.
|
||||
Finally, there is the :guilabel:`Membership` tab on contact forms, which can help users manage any
|
||||
memberships that are being offered to this specific contact. It should be noted that this tab
|
||||
**only** appears when the *Members* application is installed.
|
||||
|
||||
Activate membership
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To activate a contact's membership, click :guilabel:`Buy Membership` in the :guilabel:`Membership`
|
||||
tab of a contact form. On the pop-up window that appears, select a :guilabel:`Membership` from the
|
||||
drop-down menu. Then, configure a :guilabel:`Member Price`. Click :guilabel:`Invoice Membership`
|
||||
when both fields are filled in.
|
||||
|
||||
Alternatively, to offer a free membership, tick the :guilabel:`Free Member` checkbox, in the
|
||||
:guilabel:`Membership` tab of a contact form.
|
||||
|
||||
.. seealso::
|
||||
Follow the :doc:`Members documentation <../sales/members>` for more information on publishing
|
||||
members on the website.
|
||||
|
||||
Smart buttons
|
||||
=============
|
||||
@@ -236,3 +256,8 @@ in the main contacts page, but they can still be searched for with the :guilabel
|
||||
- :doc:`Add different addresses in CRM <../sales/sales/send_quotations/different_addresses>`
|
||||
- `Odoo's eLearning Contacts tutorial
|
||||
<https://www.odoo.com/slides/slide/contacts-2527?fullscreen=1>`_
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
contacts/merge
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
==============
|
||||
Merge contacts
|
||||
==============
|
||||
|
||||
Odoo's *Contacts* application allows user's to merge duplicate contacts, without losing any
|
||||
information in the process. This keeps the database organized, and prevents contacts from being
|
||||
contacted by more than one salesperson.
|
||||
|
||||
.. _contacts/merge-duplicate:
|
||||
|
||||
Merge duplicate contacts
|
||||
========================
|
||||
|
||||
.. danger::
|
||||
Merging is an irreversible action. Do **not** merge contacts unless absolutely certain they
|
||||
should be combined.
|
||||
|
||||
Navigate to the :menuselection:`Contacts app`, and select the :icon:`oi-view-list`
|
||||
:guilabel:`(list)` icon. Select two or more duplicate contacts from the list, and tick the checkbox
|
||||
(on the far-left) for the contacts that should be merged. Then, click the :icon:`fa-cog`
|
||||
:guilabel:`Actions` icon, and select :guilabel:`Merge` from the resulting drop-down menu.
|
||||
|
||||
.. image:: merge/merge-menu.png
|
||||
:align: center
|
||||
:alt: The merge contacts option in the Contacts application.
|
||||
|
||||
This opens the :guilabel:`Merge` pop-up window. From here, review the details of the contacts before
|
||||
confirming they should be merged. If any contacts in the list should **not** be merged, click the
|
||||
:icon:`fa-times` :guilabel:`(delete)` icon at the far right of the contact.
|
||||
|
||||
.. tip::
|
||||
Click the individual contact to open the record for that contact, and view additional
|
||||
information.
|
||||
|
||||
.. image:: merge/merge-window.png
|
||||
:align: center
|
||||
:alt: The merge pop-up window in the Contacts application.
|
||||
|
||||
Click the :guilabel:`Destination Contact` field, and select an option from the drop-down list. This
|
||||
field defaults to the contact record that was created first in the system.
|
||||
|
||||
After confirming the information on the pop-up window, click :guilabel:`Merge Contacts`.
|
||||
|
||||
Deduplicate contacts
|
||||
====================
|
||||
|
||||
After the merge is finished, a pop-up window appears confirming it is complete. This pop-up window
|
||||
also contains a :guilabel:`Deduplicate the other Contacts` button. This feature searches for
|
||||
duplicated records, based on selected criteria, and merges them automatically, or after manual
|
||||
approval.
|
||||
|
||||
Click the :guilabel:`Deduplicate the other Contacts` button to open the :guilabel:`Deduplicate
|
||||
Contacts` pop-up window.
|
||||
|
||||
Select one or more fields to be used in the search for duplicated records. Duplicated contacts can
|
||||
be searched, based on the following criteria:
|
||||
|
||||
- :guilabel:`Email`
|
||||
- :guilabel:`Name`
|
||||
- :guilabel:`Is Company`
|
||||
- :guilabel:`VAT`
|
||||
- :guilabel:`Parent Company`
|
||||
|
||||
.. note::
|
||||
If more than one field is selected, only records that have **all** fields in common are suggested
|
||||
as duplicates.
|
||||
|
||||
If necessary, select criteria to be used to exclude potential duplicates from the search. Potential
|
||||
duplicates can be excluded from the search, based on the following criteria:
|
||||
|
||||
- :guilabel:`A user associated to the contact`
|
||||
- :guilabel:`Journal Items associated to the contact`
|
||||
|
||||
After confirming the search criteria, click either :guilabel:`Merge with Manual Check`,
|
||||
:guilabel:`Merge Automatically`, or :guilabel:`Merge Automatically all process`.
|
||||
|
||||
If :guilabel:`Merge with Manual Check` is selected, complete the merge by following the :ref:`steps
|
||||
above <contacts/merge-duplicate>`.
|
||||
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 20 KiB |
@@ -2,6 +2,9 @@
|
||||
Export and import data
|
||||
======================
|
||||
|
||||
.. |list| replace:: :icon:`oi-view-list` :guilabel:`(list)` icon
|
||||
.. |actions| replace:: :icon:`fa-cog` :guilabel:`Actions`
|
||||
|
||||
In Odoo, it is sometimes necessary to export or import data for running reports, or for data
|
||||
modification. This document covers the export and import of data into and out of Odoo.
|
||||
|
||||
@@ -20,25 +23,24 @@ can aid in reporting on activities, although, Odoo provides a precise and easy r
|
||||
each available application.
|
||||
|
||||
With Odoo, the values can be exported from any field in any record. To do so, activate the list view
|
||||
(:guilabel:`☰ (three horizontal lines)` icon), on the items that need to be exported, and then
|
||||
select the records that should be exported. To select a record, tick the checkbox next to the
|
||||
corresponding record. Finally, click on :guilabel:`⚙️ Action`, and then :guilabel:`Export`.
|
||||
(|list|), on the items that need to be exported, then select the records that should be exported. To
|
||||
select a record, tick the checkbox next to the corresponding record. Finally, click on |actions|,
|
||||
then :guilabel:`Export`.
|
||||
|
||||
.. image:: export_import_data/list-view-export.png
|
||||
:align: center
|
||||
:alt: View of the different things to enable/click to export data.
|
||||
|
||||
When clicking on :guilabel:`Export`, an :guilabel:`Export Data` pop-over window appears, with
|
||||
several options for the data to export:
|
||||
|
||||
.. image:: export_import_data/export-data-overview.png
|
||||
:align: center
|
||||
:alt: Overview of options to consider when exporting data in Odoo..
|
||||
:alt: Overview of options to consider when exporting data in Odoo.
|
||||
|
||||
#. With the :guilabel:`I want to update data (import-compatable export)` option ticked, the system
|
||||
only shows the fields that can be imported. This is helpful in the case where the existing
|
||||
records need to be updated. This works like a filter. Leaving the box unticked, gives many more
|
||||
field options because it shows all the fields, not just the ones that can be imported.
|
||||
only shows the fields that can be imported. This is helpful in the case where the :ref:`existing
|
||||
records need to be updated <essentials/update-data>`. This works like a filter. Leaving the box
|
||||
unticked, gives many more field options because it shows all the fields, not just the ones that
|
||||
can be imported.
|
||||
#. When exporting, there is the option to export in two formats: `.csv` and `.xls`. With `.csv`,
|
||||
items are separated by a comma, while `.xls` holds information about all the worksheets in a
|
||||
file, including both content and formatting.
|
||||
@@ -55,8 +57,9 @@ several options for the data to export:
|
||||
can)` icon to remove the field.
|
||||
#. For recurring reports, it is helpful to save export presets. Select all the needed fields, and
|
||||
click on the template drop-down menu. Once there, click on :guilabel:`New template`, and give a
|
||||
unique name to the export just created. The next time the same list needs to be exported, select
|
||||
the related template that was previously saved from the drop-down menu.
|
||||
unique name to the export just created. Click the :guilabel:`💾 (floppy drive)` icon to save the
|
||||
configuration. The next time the same list needs to be exported, select the related template that
|
||||
was previously saved from the drop-down menu.
|
||||
|
||||
.. tip::
|
||||
It is helpful to know the field's external identifier. For example, :guilabel:`Related Company`
|
||||
@@ -69,7 +72,8 @@ Import data into Odoo
|
||||
=====================
|
||||
|
||||
Importing data into Odoo is extremely helpful during implementation, or in times where data needs to
|
||||
be updated in bulk. The following documentation covers how to import data into an Odoo database.
|
||||
be :ref:`updated in bulk <essentials/update-data>`. The following documentation covers how to import
|
||||
data into an Odoo database.
|
||||
|
||||
.. warning::
|
||||
Imports are permanent and **cannot** be undone. However, it is possible to use filters (`created
|
||||
@@ -81,7 +85,6 @@ be updated in bulk. The following documentation covers how to import data into a
|
||||
options: :guilabel:`Track history during import` and :guilabel:`Allow matching with subfields`.
|
||||
|
||||
.. image:: export_import_data/advanced-import.png
|
||||
:align: center
|
||||
:alt: Advanced import options when developer mode is activated.
|
||||
|
||||
If the model uses openchatter, the :guilabel:`Track history during import` option sets up
|
||||
@@ -90,6 +93,8 @@ be updated in bulk. The following documentation covers how to import data into a
|
||||
Should the :guilabel:`Allow matching with subfields` option be selected, then all subfields
|
||||
within a field are used to match under the :guilabel:`Odoo Field` while importing.
|
||||
|
||||
.. _essentials/export_import_data/get-started:
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
@@ -97,30 +102,32 @@ Data can be imported on any Odoo business object using either Excel (`.xlsx`) or
|
||||
(Comma-separated Values)` (`.csv`) formats. This includes: contacts, products, bank statements,
|
||||
journal entries, and orders.
|
||||
|
||||
Open the view of the object to which the data should be imported/populated, and click on
|
||||
:menuselection:`⭐ Favorites --> Import records`.
|
||||
Open the view of the object to which the data should be imported/populated, click the :icon:`fa-cog`
|
||||
(:guilabel:`gear`) icon and select :guilabel:`Import records`.
|
||||
|
||||
.. image:: export_import_data/import-button.png
|
||||
:align: center
|
||||
:alt: Favorites menu revealed with the import records option highlighted.
|
||||
:alt: Action menu revealed with the import records option highlighted.
|
||||
|
||||
After clicking :guilabel:`Import records`, Odoo reveals a separate page with templates that can be
|
||||
downloaded and populated with the company's own data. Such templates can be imported in one click,
|
||||
since the data mapping is already done. To download a template click :guilabel:`Import Template for
|
||||
Customers` at the center of the page.
|
||||
Click :icon:`fa-download`:guilabel:`Import Template for Customers` at the center of the page to
|
||||
download a :ref:`template <essentials/export_import_data/adapt-a-template>` and populate it with
|
||||
the company's own data. Such templates can be imported in one click since the data mapping is
|
||||
already preconfigured.
|
||||
|
||||
.. important::
|
||||
When importing a :abbr:`CSV (Comma-separated Values)` file, Odoo provides :guilabel:`Formatting`
|
||||
options. These options do **not** appear when importing the proprietary Excel file type (`.xls`,
|
||||
`.xlsx`).
|
||||
To upload the downloaded template or your own file, follow the next steps:
|
||||
|
||||
.. image:: export_import_data/formatting.png
|
||||
:align: center
|
||||
:alt: Formatting options presented when a CVS file is imported in Odoo.
|
||||
#. Click :guilabel:`Upload Data File` and select the desired file.
|
||||
#. Adjust the :guilabel:`Formatting` options as needed (for CSV files only).
|
||||
#. Ensure all data in the :guilabel:`File Column` is correctly mapped to the appropriate
|
||||
:guilabel:`Odoo Field` and free of errors.
|
||||
#. (Optional) Click :guilabel:`Load Data File` to reload the same file or upload a different one.
|
||||
#. Click :guilabel:`Test` to verify that the data is valid.
|
||||
#. Click :guilabel:`Import`.
|
||||
|
||||
Make necessary adjustments to the *Formatting* options, and ensure all columns in the
|
||||
:guilabel:`Odoo field` and :guilabel:`File Column` are free of errors. Finally, click
|
||||
:guilabel:`Import` to import the data.
|
||||
.. note::
|
||||
The :guilabel:`Formatting` options do **not** appear when importing the proprietary Excel file
|
||||
type (i.e., `.xls` or `.xlsx`).
|
||||
|
||||
.. _essentials/export_import_data/adapt-a-template:
|
||||
|
||||
Adapt a template
|
||||
----------------
|
||||
@@ -138,7 +145,6 @@ Once the template is downloaded, proceed to follow these steps:
|
||||
(ID) column.
|
||||
|
||||
.. image:: export_import_data/dragdown.gif
|
||||
:align: center
|
||||
:alt: An animation of the mouse dragging down the ID column, so each record has a unique ID.
|
||||
|
||||
.. note::
|
||||
@@ -147,7 +153,6 @@ Once the template is downloaded, proceed to follow these steps:
|
||||
Search the drop-down menu for the corresponding field.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
:alt: Drop-down menu expanded in the initial import screen on Odoo.
|
||||
|
||||
Then, use this field's label in the import file to ensure future imports are successful.
|
||||
@@ -157,6 +162,9 @@ Once the template is downloaded, proceed to follow these steps:
|
||||
using the fields that should be imported. This way, if there is not a sample import template,
|
||||
the names are accurate.
|
||||
|
||||
|
||||
.. _essentials/external-id:
|
||||
|
||||
Import from another application
|
||||
-------------------------------
|
||||
|
||||
@@ -165,7 +173,8 @@ from previous software to facilitate the transition to Odoo.
|
||||
|
||||
Setting an ID is not mandatory when importing, but it helps in many cases:
|
||||
|
||||
- Update imports: import the same file several times without creating duplicates.
|
||||
- :ref:`Update imports <essentials/update-data>`: import the same file several times without
|
||||
creating duplicates.
|
||||
- :ref:`Import relation fields <export_import_data/relation-fields>`.
|
||||
|
||||
To recreate relationships between different records, the unique identifier from the original
|
||||
@@ -175,10 +184,7 @@ When another record is imported that links to the first one, use **XXX/ID** (XXX
|
||||
the original unique identifier. This record can also be found using its name.
|
||||
|
||||
.. warning::
|
||||
It should be noted that there will be a conflict if two or more records have the same name.
|
||||
|
||||
The :guilabel:`External ID` (ID) can also be used to update the original import, if modified data
|
||||
needs to be re-imported later, therefore, it is a good practice to specify it whenever possible.
|
||||
It should be noted that conflicts occur if two (or more) records have the same *External ID*.
|
||||
|
||||
Field missing to map column
|
||||
---------------------------
|
||||
@@ -196,7 +202,6 @@ If this happens, check the :guilabel:`Show fields of relation fields (advanced)
|
||||
complete list of fields becomes available for each column.
|
||||
|
||||
.. image:: export_import_data/field_list.png
|
||||
:align: center
|
||||
:alt: Searching for the field to match the tax column.
|
||||
|
||||
Change data import format
|
||||
@@ -394,6 +399,33 @@ respective contacts:
|
||||
- :download:`Customers and their respective contacts
|
||||
<export_import_data/o2m_customers_contacts.csv>`
|
||||
|
||||
Import image files
|
||||
------------------
|
||||
|
||||
To import image files along with the :ref:`uploaded <essentials/export_import_data/get-started>`
|
||||
CSV or Excel file, follow the next steps:
|
||||
|
||||
#. Add the image file names to the relevant :guilabel:`Image` column in the data file.
|
||||
#. :ref:`Upload the data file <essentials/export_import_data/get-started>` or reload it by
|
||||
clicking :guilabel:`Load Data File`.
|
||||
#. Click :guilabel:`Upload your files` under the :guilabel:`Files to import` section.
|
||||
#. Select the relevant image files. The number of files selected appears next to the button.
|
||||
#. Click :guilabel:`Test` to verify that all data is valid.
|
||||
#. Click :guilabel:`Import`. During the import process, Odoo performs a file check to automatically
|
||||
link the uploaded images to the imported data file. If there is no match, the data file is
|
||||
imported without any image.
|
||||
|
||||
.. note::
|
||||
- The :guilabel:`Files to import` section is enabled if your product template has an
|
||||
:guilabel:`Image` column with all fields populated.
|
||||
- The image file names in the data file must correspond to the uploaded image files.
|
||||
- When importing a large number of images, you can specify the maximum batch size in megabytes
|
||||
and set a delay to prevent the system from becoming overloaded. To do so, :doc:`enable the
|
||||
developer mode <../general/developer_mode>` and fill in the :guilabel:`Max size per
|
||||
batch` and the :guilabel:`Delay after each batch` fields in the :guilabel:`Files to import`
|
||||
section. By default, the delay meets the RPC/API call limit defined in the `Odoo Cloud -
|
||||
Acceptable Use Policy <https://www.odoo.com/acceptable-use>`_.
|
||||
|
||||
Import records several times
|
||||
----------------------------
|
||||
|
||||
@@ -475,3 +507,43 @@ The two files produced are ready to be imported in Odoo without any modification
|
||||
imported these two :abbr:`CSV (Comma-separated Values)` files, there are four contacts and three
|
||||
companies (the first two contacts are linked to the first company). Keep in mind to first import
|
||||
the companies, and then the people.
|
||||
|
||||
.. _essentials/update-data:
|
||||
|
||||
Update data in Odoo
|
||||
===================
|
||||
|
||||
Existing data can be updated in bulk through a data import, as long as the :ref:`External ID
|
||||
<essentials/external-id>` remains consistent.
|
||||
|
||||
Prepare data export
|
||||
-------------------
|
||||
|
||||
To update data through an import, first navigate to the data to be updated, and select the |list| to
|
||||
activate list view. On the far-left side of the list, tick the checkbox for any record to be
|
||||
updated. Then, click |actions|, and select :icon:`fa-upload` :guilabel:`Export` from the drop-down
|
||||
menu.
|
||||
|
||||
On the resulting :guilabel:`Export Data` pop-up window, tick the checkbox labeled, :guilabel:`I want
|
||||
to update data (import-compatible export)`. This automatically includes the *External ID* in the
|
||||
export. Additionally, it limits the :guilabel:`Fields to export` list to **only** include fields
|
||||
that are able to be imported.
|
||||
|
||||
.. note::
|
||||
The :guilabel:`External ID` field does **not** appear in the :guilabel:`Fields to export` list
|
||||
unless it is manually added, but it is still included in the export. However, if the :guilabel:`I
|
||||
want to update data (import-compatible export)` checkbox is ticked, it is included in the export.
|
||||
|
||||
Select the required fields to be included in the export using the :ref:`options <export-data>` on
|
||||
the pop-up window, then click :guilabel:`Export`.
|
||||
|
||||
Import updated data
|
||||
-------------------
|
||||
|
||||
After exporting, make any necessary changes to the data file. When the file is ready, it can be
|
||||
:ref:`imported <import-data>` by following the same process as a normal data import.
|
||||
|
||||
.. danger::
|
||||
When updating data, it is extremely important that the *External ID* remain consistent, as
|
||||
this is how the system identifies a record. If an ID is altered, or removed, the system may add a
|
||||
duplicate record, instead of updating the existing one.
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 47 KiB |
@@ -89,7 +89,7 @@ settings. To use a service, simply interact with it wherever it appears in the d
|
||||
- :doc:`Lead mining <../sales/crm/acquire_leads/lead_mining>`
|
||||
- :doc:`Enrich your contacts base with Partner Autocomplete
|
||||
<../sales/crm/optimize/partner_autocomplete>`
|
||||
- :doc:`SMS essentials <../marketing/sms_marketing/essentials/sms_essentials>`
|
||||
- :doc:`SMS Marketing <../marketing/sms_marketing>`
|
||||
|
||||
.. _in_app_purchase/credits:
|
||||
|
||||
@@ -119,7 +119,7 @@ Credits are purchased in *Packs* from the `Odoo IAP Catalog
|
||||
The number of credits consumed depends on the length of the SMS and the country of destination.
|
||||
|
||||
For more information, refer to the :doc:`SMS Pricing and FAQ
|
||||
<../marketing/sms_marketing/pricing/pricing_and_faq>` documentation.
|
||||
<../marketing/sms_marketing/pricing_and_faq>` documentation.
|
||||
|
||||
.. _iap/buying_credits:
|
||||
|
||||
@@ -133,9 +133,9 @@ Users can check the current balance of credits for each service, and manually pu
|
||||
by navigating to the :menuselection:`Settings app --> Contacts section`, and beneath the
|
||||
:guilabel:`Odoo IAP` setting, click :guilabel:`View My Services`.
|
||||
|
||||
Doing so reveals a :guilabel:`My Services` page, listing the various |IAP| services in the database.
|
||||
From here, click an |IAP| service to open its :guilabel:`Account Information` page, where additional
|
||||
credits can be purchased.
|
||||
Doing so reveals an :guilabel:`IAP Service` page, listing the various |IAP| services in the
|
||||
database. From here, click an |IAP| service to open its :guilabel:`Account Information` page, where
|
||||
additional credits can be purchased.
|
||||
|
||||
Manually buy credits
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -152,12 +152,13 @@ Services`.
|
||||
:alt: The Settings app showing the Odoo IAP heading and View My Services button.
|
||||
|
||||
Doing so reveals an :guilabel:`IAP Account` page, listing the various |IAP| services in the
|
||||
database. From here, click an |IAP| service to open details about it; additional credits can be
|
||||
purchased from here.
|
||||
database. From here, click an |IAP| service to open its :guilabel:`Account Information` page, where
|
||||
additional credits can be purchased.
|
||||
|
||||
On the following page, click the :guilabel:`Buy Credit` button. Doing so loads a :guilabel:`Buy
|
||||
Credits for (IAP Account)` page in a new tab. From here, click :guilabel:`Buy` on the desired pack
|
||||
of credits. Then, follow the prompts to enter payment details, and confirm the order.
|
||||
On the :guilabel:`Account Information` page, click the :guilabel:`Buy Credit` button. Doing so loads
|
||||
a :guilabel:`Buy Credits for (IAP Account)` page in a new tab. From here, click :guilabel:`Buy` on
|
||||
the desired pack of credits. Then, follow the prompts to enter payment details, and confirm the
|
||||
order.
|
||||
|
||||
.. image:: in_app_purchase/buy-pack.png
|
||||
:align: center
|
||||
@@ -178,14 +179,14 @@ Under the :guilabel:`Contacts` section, where it says :guilabel:`Odoo IAP`, clic
|
||||
Services`.
|
||||
|
||||
The available |IAP| accounts appear in a list view on the :guilabel:`IAP Account` page. From here,
|
||||
click on the desired |IAP| account to view that service's details.
|
||||
click on the desired |IAP| account to view that service's :guilabel:`Account Information` page.
|
||||
|
||||
On the details page, tick the :guilabel:`Receive threshold warning` checkbox. Doing so reveals two
|
||||
fields on the form: :guilabel:`Warning Threshold` and :guilabel:`Contact Email`.
|
||||
On the :guilabel:`Account Information` page, tick the :guilabel:`Warn Me` checkbox. Doing so reveals
|
||||
two fields on the form: :guilabel:`Threshold` and :guilabel:`Warning Email`.
|
||||
|
||||
In the :guilabel:`Warning Threshold` field, enter an amount of credits Odoo should use as the
|
||||
minimum threshold for this service. In the :guilabel:`Contact Email` field, enter the email address
|
||||
In the :guilabel:`Threshold` field, enter an amount of credits Odoo should use as the
|
||||
minimum threshold for this service. In the :guilabel:`Warning Email` field, enter the email address
|
||||
that receives the notification.
|
||||
|
||||
Odoo sends a low-credit alert to the :guilabel:`Contact Email` when the balance of credits falls
|
||||
below the amount listed as the :guilabel:`Warning Threshold`.
|
||||
Odoo sends a low-credit alert to the :guilabel:`Warning Email` when the balance of credits falls
|
||||
below the amount listed as the :guilabel:`Threshold`.
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
==================
|
||||
Keyboard shortcuts
|
||||
==================
|
||||
|
||||
Users in Odoo can utilize several keyboard shortcuts to navigate through modules, execute actions,
|
||||
and manage data.
|
||||
|
||||
.. tip::
|
||||
Hold :kbd:`Ctrl` to view the keyboard shortcuts assigned to each element on the interface.
|
||||
|
||||
.. image:: keyboard_shortcuts/menu-shortcuts.png
|
||||
:align: center
|
||||
:alt: A selection of keyboard shortcuts in Odoo.
|
||||
|
||||
.. important::
|
||||
Some keyboard shortcuts may not be available on different versions of Odoo or effective depending
|
||||
on browsers, extensions, or other individual settings.
|
||||
|
||||
Keyboard shortcuts by operating system
|
||||
======================================
|
||||
|
||||
Below is a list of some of the most commonly used keyboard shortcuts within Odoo, listed by
|
||||
operating system.
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - Description
|
||||
- Windows / Linux
|
||||
- macOS
|
||||
* - Previous breadcrumb
|
||||
- :kbd:`Alt` + :kbd:`B`
|
||||
- :kbd:`Ctrl` + :kbd:`B`
|
||||
* - Create new record
|
||||
- :kbd:`Alt` + :kbd:`C`
|
||||
- :kbd:`Ctrl` + :kbd:`C`
|
||||
* - Odoo Home Page
|
||||
- :kbd:`Alt` + :kbd:`H`
|
||||
- :kbd:`Ctrl` + :kbd:`H`
|
||||
* - Discard changes
|
||||
- :kbd:`Alt` + :kbd:`J`
|
||||
- :kbd:`Ctrl` + :kbd:`J`
|
||||
* - Save changes
|
||||
- :kbd:`Alt` + :kbd:`S`
|
||||
- :kbd:`Ctrl` + :kbd:`S`
|
||||
* - Next page
|
||||
- :kbd:`Alt` + :kbd:`N`
|
||||
- :kbd:`Ctrl` + :kbd:`N`
|
||||
* - Previous page
|
||||
- :kbd:`Alt` + :kbd:`P`
|
||||
- :kbd:`Ctrl` + :kbd:`P`
|
||||
* - Search
|
||||
- :kbd:`Alt` + :kbd:`Q`
|
||||
- :kbd:`Ctrl` + :kbd:`Q`
|
||||
* - Select menus
|
||||
- :kbd:`Alt` + :kbd:`1-9`
|
||||
- :kbd:`Ctrl` + :kbd:`1-9`
|
||||
* - Create a new To-Do
|
||||
- :kbd:`Alt` + :kbd:`Shift` + :kbd:`T`
|
||||
- :kbd:`Ctrl` + :kbd:`Shift` + :kbd:`T`
|
||||
* - Search a Knowledge article
|
||||
- :kbd:`Alt` + :kbd:`F`
|
||||
- :kbd:`Ctrl` + :kbd:`F`
|
||||
* - Share a Knowledge article
|
||||
- :kbd:`Alt` + :kbd:`Shift` + :kbd:`S`
|
||||
- :kbd:`Ctrl` + :kbd:`Shift` + :kbd:`S`
|
||||
* - Open command palette
|
||||
- :kbd:`Ctrl` + :kbd:`K`
|
||||
- :kbd:`Command` + :kbd:`K`
|
||||
|
||||
.. tip::
|
||||
After opening the command palette, search using the following keyboard shortcuts:
|
||||
|
||||
- :kbd:`/`: search for menus, applications, and modules.
|
||||
- :kbd:`@`: search for users.
|
||||
- :kbd:`#`: search for **Discuss** channels.
|
||||
- :kbd:`?`: search for **Knowledge** articles.
|
||||
|
||||
Enter a name (or term) in the search bar, or use the arrow keys to scroll through the available
|
||||
options. Then, click :kbd:`Ctrl` + :kbd:`Enter` to open the selected app, module, or menu in a
|
||||
new tab.
|
||||
|
||||
.. image:: keyboard_shortcuts/command-palete.png
|
||||
:align: center
|
||||
:alt: The command palette in Odoo, with the menu search option selected.
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
@@ -1,100 +1,283 @@
|
||||
=========================
|
||||
Search and filter records
|
||||
=========================
|
||||
=================================
|
||||
Search, filter, and group records
|
||||
=================================
|
||||
|
||||
Odoo uses filters to include only the most relevant records depending on the purpose of the view you
|
||||
are on. However, you can edit the default filter or search for specific values.
|
||||
|
||||
.. _search/preconfigured-filters:
|
||||
|
||||
Preconfigured filters
|
||||
=====================
|
||||
|
||||
You can modify the default selection of records by clicking :guilabel:`Filters` and selecting one or
|
||||
several **preconfigured filters**.
|
||||
|
||||
.. example::
|
||||
On the Sales Analysis report, only records at the sales order stage are selected by default.
|
||||
However, you could *also* include records at the quotation stage by selecting
|
||||
:guilabel:`Quotations`. Furthermore, you could *only* include records from a specific year, for
|
||||
example *2022*, by selecting :menuselection:`Order Date --> 2022`.
|
||||
|
||||
.. image:: search/preconfigured-filters.png
|
||||
:align: center
|
||||
:alt: Using preconfigured filters on the Sales Analysis report
|
||||
|
||||
.. note::
|
||||
If you select preconfigured filters from the same group (i.e., that are *not* separated by an
|
||||
horizontal line), the records can match *any* condition to be included. However, if you select
|
||||
filters from different groups, the records have to match *all* condition to be included.
|
||||
|
||||
.. _search/custom-filters:
|
||||
|
||||
Custom filters
|
||||
==============
|
||||
|
||||
You can create custom filters using most fields present on the model by clicking
|
||||
:menuselection:`Filters --> Add Custom Filter`, selecting a field, an operator, a value, and
|
||||
clicking :guilabel:`Apply`.
|
||||
|
||||
.. example::
|
||||
You could *only* include records from a single salesperson on the Sales Analysis report, for
|
||||
example *Mitchell Admin*, by selecting :guilabel:`Salesperson` as the field, :guilabel:`is equal
|
||||
to` as the operator, and typing `Mitchell Admin` as the value.
|
||||
|
||||
.. image:: search/custom-filter.png
|
||||
:align: center
|
||||
:alt: Using a custom filter on the Sales Analysis report
|
||||
|
||||
.. note::
|
||||
If the records should *only* match one of several conditions, click :guilabel:`Add a condition`
|
||||
before applying a custom filter. If the records should match *all* conditions, add new custom
|
||||
filters instead.
|
||||
Odoo allows for the searching, filtering, and grouping of records in a view to display only the most
|
||||
relevant records. The search bar is located at the top of the view, start typing to :ref:`search for
|
||||
values <search/values>`, or click the :guilabel:`🔽 (down arrow)` icon to access the :ref:`Filter
|
||||
<search/filters>`, :ref:`Group By <search/group>`, and :ref:`Favorites <search/favorites>` drop-down
|
||||
menus.
|
||||
|
||||
.. _search/values:
|
||||
|
||||
Search for values
|
||||
=================
|
||||
|
||||
You can use the search field to quickly look for specific values and add them as a filter. Either
|
||||
type the full value you are searching for and select the desired field, or type a part of the
|
||||
value, click the dropdown button (:guilabel:`⏵`) before the chosen field, and select the exact
|
||||
value you are looking for.
|
||||
Use the search field to quickly look for specific values, and add them as a filter. Type the value
|
||||
to search for, and select the desired option from the drop-down menu to apply the search filter.
|
||||
|
||||
.. example::
|
||||
Instead of adding a custom filter to select records where *Mitchell Admin* is the salesperson on
|
||||
the Sales Analysis report, you could search for `Mitch`, click the dropdown button
|
||||
(:guilabel:`⏵`) next to :guilabel:`Search Salesperson for: Mitch`, and select
|
||||
:guilabel:`Mitchell Admin`.
|
||||
Instead of adding a :ref:`custom filter <search/custom-filters>` to select records where
|
||||
*Mitchell Admin* is the salesperson on the *Sales Analysis* report (:menuselection:`Sales app -->
|
||||
Reporting --> Sales`), search for `Mitch`, and click the :guilabel:`⏵ (right arrow)` next to
|
||||
:guilabel:`Search Salesperson for: Mitch`, and select :guilabel:`Mitchell Admin`.
|
||||
|
||||
.. image:: search/search-values.png
|
||||
:align: center
|
||||
:alt: Searching for a specific value on the Sales Analysis report
|
||||
|
||||
.. note::
|
||||
Using the search field is equivalent to using the *contains* operator when adding a custom
|
||||
filter. If you enter a partial value and directly select the desired field, *all* records
|
||||
containing the characters you typed for the selected field will be included.
|
||||
Using the search field is equivalent to using the *contains* operator when adding a :ref:`custom
|
||||
filter <search/custom-filters>`. If a partial value is entered, and the desired field is directly
|
||||
selected (without selecting the :guilabel:`⏵ (right arrow)`), *all* records containing the typed
|
||||
characters for the selected field are included.
|
||||
|
||||
.. _search/filters:
|
||||
|
||||
Filters
|
||||
=======
|
||||
|
||||
Filters are used to select records that meet specific criteria. The default selection of records is
|
||||
specific to each view, but can be modified by selecting one (or several) :ref:`preconfigured filters
|
||||
<search/preconfigured-filters>`, or by adding a :ref:`custom filter <search/custom-filters>`.
|
||||
|
||||
.. _search/preconfigured-filters:
|
||||
|
||||
Preconfigured filters
|
||||
---------------------
|
||||
|
||||
Modify the default selection of records by clicking the :guilabel:`🔽 (down arrow)` icon from the
|
||||
search bar, and selecting one (or several) *preconfigured filters* from the :guilabel:`Filters`
|
||||
drop-down menu.
|
||||
|
||||
.. example::
|
||||
On the *Sales Analysis* report (:menuselection:`Sales app --> Reporting --> Sales`), only records
|
||||
that are at the *sales order* stage, with an *order date* within the last 365 days, are selected
|
||||
by default.
|
||||
|
||||
To also include records at the *quotation* stage, select :guilabel:`Quotations` from the
|
||||
:guilabel:`Filters`.
|
||||
|
||||
Furthermore, to *only* include sales order and quotation records from a specific year, like
|
||||
2024, for example, first remove the existing `Order Date: Last 365 Days` filter, by clicking the
|
||||
:guilabel:`❌ (remove)` icon, then select :menuselection:`Order Date --> 2024`.
|
||||
|
||||
.. image:: search/preconfigured-filters.png
|
||||
:align: center
|
||||
:alt: Using preconfigured filters on the Sales Analysis report
|
||||
|
||||
.. note::
|
||||
The preconfigured :guilabel:`Filters` are grouped, and each group is separated by a horizontal
|
||||
line. Selecting preconfigured filters from the same group allows records to match *any* of the
|
||||
applied conditions. However, selecting filters from different groups requires records to match
|
||||
*all* of the applied conditions.
|
||||
|
||||
.. _search/custom-filters:
|
||||
|
||||
Custom filters
|
||||
--------------
|
||||
|
||||
If the :ref:`preconfigured filters <search/preconfigured-filters>` are not specific enough, add a
|
||||
custom filter. To do so, click the :guilabel:`🔽 (down arrow)` icon in the search bar, then select
|
||||
:menuselection:`Filters --> Add Custom Filter`.
|
||||
|
||||
The :guilabel:`Add Custom Filter` pop-up window displays the matching option, filter rule, and a
|
||||
toggle to :guilabel:`Include archived` records.
|
||||
|
||||
.. image:: search/custom-filter.png
|
||||
:align: center
|
||||
:alt: The Add Custom Filter pop-up window.
|
||||
|
||||
The default matching configuration is to :guilabel:`Match any of the following rules`, indicating
|
||||
that each filter rule is applied independently. To change the matching configuration to
|
||||
:guilabel:`Match all of the following rules`, at least two filter rules must be added to the custom
|
||||
filter.
|
||||
|
||||
- :guilabel:`Match all 🔽 of the following rules`: **all** of the filter rules must be met.
|
||||
Logically, this is an *AND* (`&`) operation.
|
||||
- :guilabel:`Match any 🔽 of the following rules`: **any** of the filter rules can be met.
|
||||
Logically, this is an *OR* (`|`) operation.
|
||||
|
||||
By default, a single filter rule is added to the custom filter. The following describes the
|
||||
structure of a filter rule:
|
||||
|
||||
#. The first inline field is the *field name* to filter by. Some fields have refined parameters that
|
||||
are nested within another field. These fields have an :guilabel:`> (arrow)` icon beside them,
|
||||
which can be selected to reveal the nested fields.
|
||||
#. The second inline field is the conditional *operator* used to compare the field name to the
|
||||
value. The :ref:`available conditional operators <reference/orm/domains>` are specific to the
|
||||
field's data type.
|
||||
#. The third inline field is the variable *value* of the field name. The value input may appear as a
|
||||
drop-down menu, a text input, a number input, a date/time input, a boolean selector, or it may be
|
||||
blank, depending on the operator used and the field's data type.
|
||||
|
||||
Three inline buttons are also available to the right of the rule's filter criteria:
|
||||
|
||||
#. :guilabel:`➕ (plus sign)`: adds a new rule below the existing rule.
|
||||
#. :guilabel:`(Add branch)`: adds a new group of rules below the existing rule, with the
|
||||
:guilabel:`any` and :guilabel:`all` matching options available to define how each rule within
|
||||
this branch is applied to the filter. If the matching option is set to the same as the parent
|
||||
group, the fields are moved to join the parent group.
|
||||
|
||||
.. example::
|
||||
If the matching option is set to :guilabel:`Match all 🔽 of the following rules`, and a new
|
||||
branch is added with its matching option changed from :guilabel:`any 🔽 of` to :guilabel:`all
|
||||
🔽 of`, the newly-added branch disappears, and its group of rules are moved to the parent
|
||||
group.
|
||||
|
||||
#. :guilabel:`🗑️ (garbage can)`: deletes the node. If a branch node is deleted, all children of
|
||||
that node are deleted, as well.
|
||||
|
||||
A new filter rule can be added to the custom filter by clicking the :guilabel:`New Rule` button.
|
||||
|
||||
Once the filter criteria are defined, click :guilabel:`Add` to add the custom filter to the view.
|
||||
|
||||
.. example::
|
||||
To target all leads and opportunities from the :menuselection:`CRM` app that are in the *Won*
|
||||
stage, and have an expected revenue greater than $1,000, the following should be entered:
|
||||
|
||||
:guilabel:`Match all 🔽 (down arrow) of the following rules:`
|
||||
|
||||
#. :guilabel:`Stage` :guilabel:`is in` :guilabel:`Won`
|
||||
#. :guilabel:`Expected Revenue` :guilabel:`>` `1,000`
|
||||
#. :guilabel:`any 🔽 (down arrow)` :guilabel:`of:`
|
||||
|
||||
- :guilabel:`Type` :guilabel:`=` :guilabel:`Lead`
|
||||
- :guilabel:`Type` :guilabel:`=` :guilabel:`Opportunity`
|
||||
|
||||
.. image:: search/custom-filter-example.png
|
||||
:align: center
|
||||
:alt: Adding a custom filter to filter specific records in CRM.
|
||||
|
||||
.. tip::
|
||||
Activate :ref:`developer-mode` to reveal each field's technical name and data type, as well as
|
||||
the :guilabel:`# Code editor` text area below the filter rules, to view and edit the domain
|
||||
manually.
|
||||
|
||||
.. _search/group:
|
||||
|
||||
Group records
|
||||
=============
|
||||
|
||||
You can click :guilabel:`Group By` below the search field to cluster records together according to
|
||||
one of the **preconfigured groups**.
|
||||
The display of records in a view can be clustered together, according to one of the *preconfigured
|
||||
groups*. To do so, click the :guilabel:`🔽 (down arrow)` icon in the search bar, then select one of
|
||||
the :guilabel:`Group By` options from the drop-down menu.
|
||||
|
||||
.. example::
|
||||
You could group the records by salesperson on the Sales Analysis report by clicking
|
||||
:guilabel:`Group By` and selecting :guilabel:`Salesperson`. No records are filtered out.
|
||||
To group the records by salesperson on the *Sales Analysis* report (:menuselection:`Sales app -->
|
||||
Reporting --> Sales`), click the :guilabel:`Salesperson` option from the :guilabel:`Group By`
|
||||
drop-down menu. The view changes to group the records by salesperson, without filtering out any
|
||||
records.
|
||||
|
||||
.. image:: search/group.png
|
||||
:align: center
|
||||
:alt: Grouping records on the Sales Analysis report
|
||||
|
||||
You can **customize groups** by using a wide selection of fields present on the model. To do so,
|
||||
click :menuselection:`Group By --> Add Custom Group`, select a field, and click :guilabel:`Apply`.
|
||||
It is possible to *customize groups* by using a field present on the model. To do so, click
|
||||
:menuselection:`Add Custom Group`, and select a field from the drop-down menu.
|
||||
|
||||
.. note::
|
||||
You can use several groups at the same time. The first group you select is the main cluster, the
|
||||
next one you add further divides the main group's categories, and so on.
|
||||
Several groups can be used at the same time. The first group that is selected is the main
|
||||
cluster, the next one that is added further divides the main group's categories, and so on.
|
||||
Furthermore, filters and groups can be used together to refine the view even more.
|
||||
|
||||
.. _search/comparison:
|
||||
|
||||
Comparison
|
||||
==========
|
||||
|
||||
Certain reporting dashboards include a :guilabel:`Comparison` section in the drop-down menus of
|
||||
their :guilabel:`Search...` bars. This includes the :doc:`Overall Equipment Effectiveness
|
||||
<../inventory_and_mrp/manufacturing/reporting/oee>` report for the *Manufacturing* app, and the
|
||||
:doc:`Purchase <../inventory_and_mrp/purchase/advanced/analyze>` report for the *Purchase* app,
|
||||
among others.
|
||||
|
||||
The options in the :icon:`fa-adjust` :guilabel:`Comparison` section are used to compare data from
|
||||
two different time periods. There are two comparison options to choose from: :guilabel:`(Time
|
||||
Filter): Previous Period` and :guilabel:`(Time Filter): Previous Year`.
|
||||
|
||||
.. important::
|
||||
For some reports, the :guilabel:`Comparison` section **only** appears in the
|
||||
:guilabel:`Search...` bar drop-down menu if one (or more) time periods have been selected in the
|
||||
:guilabel:`Filters` column. This is because, if no time period is specified, there is nothing to
|
||||
compare.
|
||||
|
||||
Additionally, some reports only allow use of the :guilabel:`Comparison` feature when the
|
||||
:icon:`fa-pie-chart` :guilabel:`(pie chart)` graph type, or the :icon:`oi-view-pivot`
|
||||
:guilabel:`(pivot)` view, is selected. A :guilabel:`Comparison` option can be selected even if
|
||||
another view is enabled, but doing so does **not** change the way data is displayed on the
|
||||
report.
|
||||
|
||||
.. image:: search/comparison-section.png
|
||||
:align: center
|
||||
:alt: The Search... bar for the production analysis report.
|
||||
|
||||
To view data using one of the two comparisons, begin by selecting a time period in the
|
||||
:guilabel:`Filters` column of the :guilabel:`Search...` bar drop-down menu. Then, select either
|
||||
:guilabel:`(Time Filter): Previous Period` or :guilabel:`(Time Filter): Previous Year` in the
|
||||
:guilabel:`Comparison` section.
|
||||
|
||||
With one of the :guilabel:`Comparison` options enabled, the report compares the data for the
|
||||
selected period, with the data for the same unit of time (month, quarter, year), one period or year
|
||||
prior. The way the data is displayed depends on the selected view:
|
||||
|
||||
- The :icon:`fa-bar-chart` :guilabel:`(bar chart)` shows two bars, side-by-side, for each unit of
|
||||
time for the selected time period. The left bar represents the selected time period, while the
|
||||
right bar represents the previous time period.
|
||||
- The :icon:`fa-line-chart` :guilabel:`(line chart)` is displayed with two lines, one representing
|
||||
the selected time period, and the other representing the previous time period.
|
||||
- The :icon:`fa-pie-chart` :guilabel:`(pie chart)` appears as a large circle with a smaller circle
|
||||
inside. The larger circle represents the selected time period, while the smaller circle represents
|
||||
the previous time period.
|
||||
- The :icon:`oi-view-pivot` :guilabel:`(pivot table)` is displayed with each column split into two
|
||||
smaller columns. The right column represents the selected time period, while the left column
|
||||
represents the previous time period.
|
||||
|
||||
.. example::
|
||||
In the :guilabel:`Production Analysis` report of the :menuselection:`Manufacturing` app, data for
|
||||
the second quarter of 2024 is compared to data for the second quarter of 2023. :guilabel:`Q2` is
|
||||
selected in the :guilabel:`End Date` filter section of the :guilabel:`Search...` bar drop-down
|
||||
menu. In the :guilabel:`Comparison` section, :guilabel:`End Date: Previous Year` is selected.
|
||||
|
||||
The current year is 2024, so the larger circle shows data for the second quarter (Q2) of 2024.
|
||||
The smaller circle shows data for the second quarter (Q2) of 2023, which is the same time period,
|
||||
but one *year* prior.
|
||||
|
||||
If :guilabel:`End Date: Previous Period` is selected instead, the smaller circle shows data for
|
||||
the first quarter (Q1) of 2024, which is the same time period, but one *period* prior.
|
||||
|
||||
.. image:: search/comparison.png
|
||||
:align: center
|
||||
:alt: The comparison view of the Production Analysis report.
|
||||
|
||||
.. _search/favorites:
|
||||
|
||||
Favorites
|
||||
=========
|
||||
|
||||
Favorites are a way to save a specific search for future use, or as the new default filter for the
|
||||
view.
|
||||
|
||||
To save the current view as a favorite, click the :guilabel:`🔽 (down arrow)` icon in the search
|
||||
bar, then select the :guilabel:`Save current search` drop-down menu to display the following
|
||||
options:
|
||||
|
||||
- Filter name: name of the favorited search.
|
||||
- :guilabel:`Default filter`: sets the favorited search as the default filter for the view.
|
||||
- :guilabel:`Shared`: makes the favorited search available to all users. By default, the favorited
|
||||
search is only available to the user who created it.
|
||||
|
||||
Once the options are set, click :guilabel:`Save` to save the favorited search.
|
||||
|
||||
.. image:: search/favorites.png
|
||||
:align: center
|
||||
:alt: Saving a favorite search on the Sales Analysis report
|
||||
|
||||
Saved favorites can be accessed by clicking the :guilabel:`🔽 (down arrow)` icon in the search bar,
|
||||
then selecting the saved filter in the :guilabel:`Favorites` drop-down menu. To remove a saved
|
||||
favorite, click the :guilabel:`🗑️ (garbage can)` icon next to the favorited search.
|
||||
|
||||
.. tip::
|
||||
To view *all* favorited searches, first activate :ref:`developer-mode`, and navigate to
|
||||
:menuselection:`Settings app --> Technical --> User Interface: User-defined Filters`. From here,
|
||||
all favorited searches can be viewed, edited, archived, or deleted.
|
||||
|
||||
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 8.0 KiB |
@@ -76,6 +76,8 @@ expense either when the transaction occurs (accrual basis) or when the payment i
|
||||
.. seealso::
|
||||
:doc:`Cash basis <accounting/taxes/cash_basis>`
|
||||
|
||||
.. _accounting/multi-company:
|
||||
|
||||
Multi-company
|
||||
=============
|
||||
|
||||
@@ -96,6 +98,12 @@ 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
|
||||
=======================
|
||||
|
||||
@@ -215,6 +223,8 @@ and loss balance is automatically reported on the balance sheet report.
|
||||
.. seealso::
|
||||
:doc:`Accounting Cheat Sheet <accounting/get_started/cheat_sheet>`
|
||||
|
||||
.. _fiduciaries:
|
||||
|
||||
Fiduciaries
|
||||
===========
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
Bank and cash accounts
|
||||
======================
|
||||
|
||||
You can manage as many bank or cash accounts as needed on your database. Configuring them well
|
||||
You can manage as many bank or cash accounts as needed on your database. Configuring them correctly
|
||||
allows you to have all your banking data up-to-date and ready for :doc:`reconciliation
|
||||
<bank/reconciliation>` with your journal entries.
|
||||
|
||||
@@ -21,22 +21,22 @@ which include action buttons.
|
||||
.. image:: bank/card.png
|
||||
:alt: Bank journals are displayed on the Accounting Dashboard and contain action buttons
|
||||
|
||||
.. _bank_accounts/manage:
|
||||
.. _accounting/bank/manage:
|
||||
|
||||
Manage your bank and cash accounts
|
||||
==================================
|
||||
Manage bank and cash accounts
|
||||
=============================
|
||||
|
||||
Connect your bank for automatic synchronization
|
||||
-----------------------------------------------
|
||||
Connect a bank for automatic synchronization
|
||||
--------------------------------------------
|
||||
|
||||
To connect your bank account to your database, go to :menuselection:`Accounting --> Configuration
|
||||
--> Banks: Add a Bank Account`, select your bank in the list, click on :guilabel:`Connect`, and
|
||||
follow the instructions.
|
||||
--> Add a Bank Account`, select your bank in the list, click on :guilabel:`Connect`, and follow the
|
||||
instructions.
|
||||
|
||||
.. seealso::
|
||||
:doc:`bank/bank_synchronization`
|
||||
|
||||
.. _bank_accounts/create:
|
||||
.. _accounting/bank/create:
|
||||
|
||||
Create a bank account
|
||||
---------------------
|
||||
@@ -44,8 +44,9 @@ Create a bank account
|
||||
If your banking institution is not available in Odoo, or if you don't want to connect your bank
|
||||
account to your database, you can configure your bank account manually.
|
||||
|
||||
To manually add a bank account, go to :menuselection:`Accounting --> Configuration --> Banks:
|
||||
Add a Bank Account`, click on :guilabel:`Create it` (at the bottom right), and fill out the form.
|
||||
To manually add a bank account, go to :menuselection:`Accounting --> Configuration --> Add a Bank
|
||||
Account`, click on :guilabel:`Record transactions manually` (at the bottom right), fill out the bank
|
||||
information, and click :guilabel:`Create`.
|
||||
|
||||
.. note::
|
||||
- Odoo automatically detects the bank account type (e.g., IBAN) and enables some features
|
||||
@@ -61,7 +62,7 @@ To create a new cash journal, go to :menuselection:`Accounting --> Configuration
|
||||
Journals`, click on :guilabel:`Create` and select :guilabel:`Cash` in the :guilabel:`Type` field.
|
||||
|
||||
For more information on the accounting information fields, read the
|
||||
:ref:`bank_accounts/configuration` section of this page.
|
||||
:ref:`accounting/bank/configuration` section of this page.
|
||||
|
||||
.. note::
|
||||
A default cash journal is available and can be used straight away. You can review it by going to
|
||||
@@ -73,7 +74,7 @@ Edit an existing bank or cash journal
|
||||
To edit an existing bank journal, go to :menuselection:`Accounting --> Configuration --> Accounting:
|
||||
Journals` and select the journal you want to modify.
|
||||
|
||||
.. _bank_accounts/configuration:
|
||||
.. _accounting/bank/configuration:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
@@ -86,14 +87,23 @@ You can edit the accounting information and bank account number according to you
|
||||
.. seealso::
|
||||
- :doc:`get_started/multi_currency`
|
||||
- :doc:`bank/transactions`
|
||||
- `Bank configuration <https://www.youtube.com/watch?v=tVhhXw-VnGE>`_
|
||||
|
||||
.. _bank_accounts/suspense:
|
||||
.. _accounting/bank/suspense:
|
||||
|
||||
Suspense account
|
||||
----------------
|
||||
|
||||
Bank statement transactions are posted on the :guilabel:`Suspense Account` until the final
|
||||
reconciliation allows finding the right account.
|
||||
Bank statement transactions are posted on the suspense account until they are reconciled. At any
|
||||
moment, the suspense account's balance in the general ledger shows the balance of transactions that
|
||||
have not yet been reconciled.
|
||||
|
||||
.. note::
|
||||
When a bank transaction is reconciled, the journal entry is modified to replace the bank suspense
|
||||
account with the account of the journal item it is reconciled with. This account is usually the
|
||||
:ref:`outstanding receipts or payments account <accounting/bank/outstanding-accounts>` if
|
||||
reconciling with a registered payment or the account receivable or payable if reconciling with
|
||||
an invoice or bill directly.
|
||||
|
||||
Profit and loss accounts
|
||||
------------------------
|
||||
@@ -105,16 +115,18 @@ register a loss when the ending balance of a cash register differs from what the
|
||||
Currency
|
||||
--------
|
||||
|
||||
You can edit the currency used to enter the statements.
|
||||
You can edit the currency used to enter the transactions.
|
||||
|
||||
.. seealso::
|
||||
:doc:`get_started/multi_currency`
|
||||
|
||||
.. _accounting/bank/account-number:
|
||||
|
||||
Account number
|
||||
--------------
|
||||
|
||||
If you need to **edit your bank account details**, click on the external link arrow next to your
|
||||
:guilabel:`Account Number`. On the new page, click on the external link arrow next to your
|
||||
:guilabel:`Account Number`. On the account page, click on the external link arrow next to your
|
||||
:guilabel:`Bank` and update your bank information accordingly. These details are used when
|
||||
registering payments.
|
||||
|
||||
@@ -124,12 +136,13 @@ registering payments.
|
||||
Bank feeds
|
||||
----------
|
||||
|
||||
:guilabel:`Bank Feeds` defines how the bank statements are registered. Three options are available:
|
||||
:guilabel:`Bank Feeds` defines how the bank transactions are registered. Three options are
|
||||
available:
|
||||
|
||||
- :guilabel:`Undefined yet`, which should be selected when you don’t know yet if you will
|
||||
synchronize your bank account with your database or not.
|
||||
- :guilabel:`Import (CAMT, CODA, CSV, OFX, QIF)`, which should be selected if you want to import
|
||||
your bank statement using a different format.
|
||||
your bank statements and transactions using a different format.
|
||||
- :guilabel:`Automated Bank Synchronization`, which should be selected if your bank is synchronized
|
||||
with your database.
|
||||
|
||||
@@ -137,53 +150,47 @@ Bank feeds
|
||||
- :doc:`bank/bank_synchronization`
|
||||
- :doc:`bank/transactions`
|
||||
|
||||
.. _bank/outstanding-accounts:
|
||||
.. _accounting/bank/outstanding-accounts:
|
||||
|
||||
Outstanding accounts
|
||||
====================
|
||||
|
||||
By default, payments are registered through transitory accounts named **outstanding accounts**,
|
||||
before being recorded in your bank account.
|
||||
By default, payments in Odoo do not create journal entries, but they can easily be configured to
|
||||
create journal entries using **outstanding accounts**.
|
||||
|
||||
- An **outstanding payments account** is where outgoing payments are posted until they are linked
|
||||
with a withdrawal from your bank statement.
|
||||
- An **outstanding receipts account** is where incoming payments are posted until they are linked
|
||||
with a deposit from your bank statement.
|
||||
with incoming bank transactions.
|
||||
- An **outstanding payments account** is where outgoing payments are posted until they are linked
|
||||
with outgoing bank transactions.
|
||||
|
||||
These accounts should be of :ref:`type <chart-of-account/type>` :guilabel:`Current Assets`.
|
||||
These accounts are usually of :ref:`type <chart-of-account/type>` :guilabel:`Current Assets` and
|
||||
:guilabel:`Current Liabilities`.
|
||||
|
||||
Payments that are registered in Odoo are posted to the outstanding receipts and outstanding accounts
|
||||
until they are reconciled. At any moment, the outstanding receipts account's balance in the general
|
||||
ledger shows the balance of registered incoming payments that have not yet been reconciled, and the
|
||||
outstanding payments account's balance in the general ledger shows the balance of registered
|
||||
outgoing payments that have not yet been reconciled.
|
||||
|
||||
Bank and cash journal configuration
|
||||
-----------------------------------
|
||||
|
||||
To configure payments to create journal entries, set outstanding accounts for the journal's payment
|
||||
methods. This can be done for any journal with the :ref:`type <chart-of-account/type>`
|
||||
:guilabel:`Bank` or :guilabel:`Cash`.
|
||||
|
||||
To configure the outstanding accounts for a journal's payment methods, first go to
|
||||
:menuselection:`Accounting --> Configuration --> Journals` and select a bank or cash journal. In the
|
||||
:guilabel:`Incoming Payments` and :guilabel:`Outgoing Payments` tabs, set :guilabel:`Outstanding
|
||||
Receipts accounts` and :guilabel:`Outstanding Payments accounts` for each payment method that you
|
||||
want to create journal entries.
|
||||
|
||||
.. note::
|
||||
The movement from an outstanding account to a bank account is done automatically when you
|
||||
reconcile the bank account with a bank statement.
|
||||
|
||||
Default accounts configuration
|
||||
------------------------------
|
||||
|
||||
The outstanding accounts are defined by default. If necessary, you can update them by going to
|
||||
:menuselection:`Accounting --> Configuration --> Settings --> Default Accounts` and update your
|
||||
:guilabel:`Outstanding Receipts Account` and :guilabel:`Outstanding Payments Account`.
|
||||
|
||||
Bank and cash journals configuration
|
||||
------------------------------------
|
||||
|
||||
You can also set specific outstanding accounts for any journal with the :ref:`type
|
||||
<chart-of-account/type>` :guilabel:`Bank` or :guilabel:`Cash`.
|
||||
|
||||
From your :guilabel:`Accounting Dashboard`, click on the menu selection ⋮ of the journal you want to
|
||||
configure, and click on :guilabel:`Configuration`, then open the :guilabel:`Incoming/Outgoing
|
||||
Payments` tab. To display the outstanding accounts column, click on the toggle button and check the
|
||||
:guilabel:`Outstanding Receipts/Payments accounts`, then update the account.
|
||||
|
||||
.. image:: bank/toggle-button.png
|
||||
:align: center
|
||||
:alt: Select the toggle button and click on outstanding Accounts
|
||||
|
||||
.. note::
|
||||
- If you do not specify an outstanding payments account or an outstanding receipts account for a
|
||||
specific journal, Odoo uses the default outstanding accounts.
|
||||
- If your main bank account is added as an outstanding receipts account or outstanding payments
|
||||
account, when a payment is registered, the invoice or bill's status is directly set to
|
||||
:guilabel:`Paid`.
|
||||
- If the main bank account of the journal is added as an outstanding receipts account or
|
||||
outstanding payments account, when a payment is registered, the invoice or bill's status is
|
||||
directly set to :guilabel:`Paid`.
|
||||
- If the outstanding receipts or outstanding payments account for a payment method is left blank,
|
||||
registering a payment with that payment method will not create any journal entry.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
@@ -192,4 +199,6 @@ Payments` tab. To display the outstanding accounts column, click on the toggle b
|
||||
bank/transactions
|
||||
bank/reconciliation
|
||||
bank/reconciliation_models
|
||||
bank/internal_transfers
|
||||
bank/foreign_currency
|
||||
bank/loans
|
||||
|
||||
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 25 KiB |
@@ -11,7 +11,7 @@ To check if your bank is compatible with Odoo, go to `Odoo Accounting Features
|
||||
<https://www.odoo.com/page/accounting-features>`_, and click on
|
||||
:guilabel:`See list of supported institutions`.
|
||||
|
||||
Odoo supports more than 25,000 institutions around the world.
|
||||
Odoo supports more than 26,000 institutions around the world.
|
||||
|
||||
To connect to the banks, Odoo uses multiple web-services:
|
||||
|
||||
@@ -42,7 +42,7 @@ First synchronization
|
||||
---------------------
|
||||
|
||||
You can start synchronization either by going to the Accounting app and
|
||||
:menuselection:`Accounting Dashboard --> Configuration --> Banks: Add a Bank Account`.
|
||||
:menuselection:`Accounting --> Configuration --> Add a Bank Account`.
|
||||
|
||||
Now you can search for your bank institution. Select it and follow the steps to synchronize with it.
|
||||
|
||||
@@ -51,37 +51,38 @@ 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 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.
|
||||
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.
|
||||
|
||||
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
|
||||
in your journal settings.
|
||||
|
||||
You can find all your synchronizations by going to :menuselection:`Accounting Dashboard -->
|
||||
Configuration --> Accounting: Online Synchronization`.
|
||||
To view all your synchronizations, activate the :ref:`developer mode <developer-mode>` and go to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`.
|
||||
|
||||
Synchronize manually
|
||||
--------------------
|
||||
|
||||
After your first synchronization, the created journals are synchronized by default every 12 hours.
|
||||
If you wish, you can synchronize manually by clicking on the :guilabel:`Synchronize Now` button on
|
||||
the dashboard.
|
||||
If you wish, you can synchronize them manually by clicking on the :guilabel:`Synchronize Now` button
|
||||
on the dashboard.
|
||||
|
||||
Or you can go to :menuselection:`Accounting Dashboard --> Configuration -->
|
||||
Accounting: Online Synchronization`, select your institution and then click on the
|
||||
:guilabel:`fetch transactions` button.
|
||||
Alternatively, activate the :ref:`developer mode <developer-mode>`, go to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`, select your institution,
|
||||
and then click the :guilabel:`Fetch transactions` button.
|
||||
|
||||
.. important::
|
||||
Some institutions do not allow transactions to be fetched automatically. For such institutions,
|
||||
@@ -95,9 +96,10 @@ Issues
|
||||
Synchronization in error
|
||||
------------------------
|
||||
|
||||
To report a connection error to the `Odoo support <https://www.odoo.com/help>`_, go to
|
||||
:menuselection:`Accounting Dashboard--> Configuration --> Accounting: Online Synchronization`,
|
||||
select the connection that failed, and copy the error description and the reference.
|
||||
To report a connection error to the `Odoo support <https://www.odoo.com/help>`_, activate the
|
||||
:ref:`developer mode <developer-mode>`, go to :menuselection:`Accounting --> Configuration -->
|
||||
Online Synchronization`, select the connection that failed, and copy the error description and the
|
||||
reference.
|
||||
|
||||
Synchronization disconnected
|
||||
----------------------------
|
||||
@@ -106,7 +108,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:`Fetch Account` button, please contact the
|
||||
If you are unable to reconnect using the :guilabel:`Reconnect` 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.
|
||||
|
||||
@@ -127,14 +129,14 @@ Finally, make sure all your users refresh their Odoo page by pressing CTRL+F5.
|
||||
|
||||
.. Note::
|
||||
|
||||
- All previous synchronizations are disconnected during the installation and won't work anymore.
|
||||
- You can find them directly in the synchronization menu
|
||||
(:menuselection:`Accounting Dashboard --> Configuration -->
|
||||
Accounting: Online Synchronization`). It is not possible to resynchronize these connections;
|
||||
you have to make new ones.
|
||||
- Do not uninstall `account_online_sync`, which is the previous module for online
|
||||
- All previous synchronizations are disconnected during the installation and will not work
|
||||
anymore. To view them, activate the :ref:`developer mode <developer-mode>` and go to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`). It is not possible
|
||||
to resynchronize these connections; you have to make new ones.
|
||||
- Do not uninstall the `account_online_sync` module, which is the previous module for online
|
||||
synchronization. The new one overrides it.
|
||||
- By default, `account_online_synchronization` is installed automatically with Accounting.
|
||||
- By default, the `account_online_synchronization` module is installed automatically with
|
||||
Accounting.
|
||||
|
||||
FAQ
|
||||
===
|
||||
@@ -144,11 +146,11 @@ The synchronization is not working in real-time. Is that normal?
|
||||
|
||||
The process is not intended to work in real-time as third party providers synchronize your accounts
|
||||
at different intervals. To force the synchronization and fetch the statements, go to your
|
||||
:guilabel:`Accounting Dashboard`, and click on the :guilabel:`Synchronize Now` button. You can also
|
||||
synchronize and fetch transactions through :menuselection:`Accounting Dashboard -->
|
||||
Configuration --> Accounting: Online Synchronization`. Some providers only allow one refresh per
|
||||
day, so it is possible that clicking on :guilabel:`Synchronize Now` does not get your latest
|
||||
transactions if you already performed such action earlier in the day.
|
||||
:guilabel:`Accounting Dashboard`, and click on the :guilabel:`Synchronize Now` button. Synchronize
|
||||
and fetch transactions by activating the :ref:`developer mode <developer-mode>` and going to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`. Some providers only allow
|
||||
one refresh per day, so it is possible that clicking on :guilabel:`Synchronize Now` does not get
|
||||
your latest transactions if you already performed such action earlier in the day.
|
||||
|
||||
A transaction can be visible on your bank account but not be fetched if it has the status
|
||||
:guilabel:`Pending`. Only transactions with the :guilabel:`Posted` status will be retrieved. If the
|
||||
@@ -157,9 +159,9 @@ transaction is not **Posted** yet, you will have to wait until the status change
|
||||
Is the Online Bank Synchronization feature included in my contract?
|
||||
-------------------------------------------------------------------
|
||||
|
||||
- **Community Version**: No, this feature is not included in the Community Version.
|
||||
- **Online Version**: Yes, even if you benefit from the One App Free contract.
|
||||
- **Enterprise Version**: Yes, if you have a valid enterprise contract linked to your database.
|
||||
- **Community Edition**: No, this feature is not included in the Community Version.
|
||||
- **Online Edition**: Yes, even if you benefit from the One App Free contract.
|
||||
- **Enterprise Edition**: Yes, if you have a valid enterprise contract linked to your database.
|
||||
|
||||
Some banks have a status "Beta." What does this mean?
|
||||
-----------------------------------------------------
|
||||
@@ -185,9 +187,9 @@ Why don't I see any transactions?
|
||||
---------------------------------
|
||||
|
||||
During your first synchronization, you selected the bank accounts you decided to synchronize with
|
||||
Odoo. If you didn't synchronize any of your accounts, you can go to
|
||||
:menuselection:`Accounting Dashboard --> Configuration --> Accounting: Online Synchronization` to
|
||||
click on the :guilabel:`Fetch Account` button on the connection.
|
||||
Odoo. If you didn't synchronize any of your accounts, activate the :ref:`developer mode
|
||||
<developer-mode>`, go to :menuselection:`Accounting --> Configuration --> Online Synchronization`,
|
||||
and click the :guilabel:`Fetch Account` button on the connection.
|
||||
|
||||
There may also be no new transactions.
|
||||
|
||||
@@ -197,9 +199,9 @@ database, please `submit a support ticket <https://www.odoo.com/help>`_.
|
||||
How can I update my bank credentials?
|
||||
-------------------------------------
|
||||
|
||||
You can update your credentials by going to :menuselection:`Accounting Dashboard -->
|
||||
Configuration --> Accounting: Online Synchronization`,open the connection you want to update your
|
||||
credentials and click on the :guilabel:`Update Credentials` button.
|
||||
To update your credentials, activate the :ref:`developer mode <developer-mode>` and go to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`. Open the connection you
|
||||
want to update your credentials and click the :guilabel:`Update Credentials` button.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
@@ -7,7 +7,6 @@ in one place. It offers non-intrusive connectivity to ASPSPs' official APIs acro
|
||||
storing data.
|
||||
|
||||
.. image:: enablebanking/enablebanking.png
|
||||
:align: center
|
||||
:alt: Enable Banking logo
|
||||
|
||||
**Odoo** synchronizes directly with banks to get access to all bank transactions and automatically
|
||||
@@ -30,7 +29,6 @@ Link bank accounts with Odoo
|
||||
:guilabel:`Continue authentication`;
|
||||
|
||||
.. image:: enablebanking/enablebankingauth.png
|
||||
:align: center
|
||||
:alt: Enable Banking authentication page
|
||||
|
||||
#. Finally, you are redirected to your bank's login page.
|
||||
|
||||
@@ -6,15 +6,11 @@ Ponto
|
||||
place and directly see all their transactions within one app. It is a third-party solution that is
|
||||
continuously expanding the number of bank institutions that can be synchronized with Odoo.
|
||||
|
||||
.. image:: ponto/ponto-logo.png
|
||||
:align: center
|
||||
:alt: Logo of the Ponto brand
|
||||
|
||||
**Odoo** can synchronize directly with your bank to get all bank statements imported automatically
|
||||
into your database.
|
||||
|
||||
Ponto is a paid third-party provider that can handle the synchronization between your bank accounts
|
||||
and Odoo. `Its pricing is 4€/month per account/integration <https://myponto.com/en#pricing>`_.
|
||||
and Odoo.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`../bank_synchronization`
|
||||
@@ -31,34 +27,29 @@ Link your bank accounts with Ponto
|
||||
#. Once you are logged in, create an *organization*.
|
||||
|
||||
.. image:: ponto/ponto-organization.png
|
||||
:align: center
|
||||
:alt: Fill out the form to add an organization in Ponto.
|
||||
|
||||
#. | Go to :menuselection:`Accounts --> Live`, and click on *Add account*.
|
||||
| You might have to add your **Billing Information** first.
|
||||
#. Go to :menuselection:`Accounts --> Live`, and click :guilabel:`Add account`. You might have to
|
||||
add your **Billing Information** first.
|
||||
#. Select your country, your bank institutions, give your consent to Ponto, and follow the steps
|
||||
on-screen to link your bank account with your Ponto account.
|
||||
|
||||
.. image:: ponto/ponto-add-account.png
|
||||
:align: center
|
||||
:alt: Add bank accounts to your Ponto account.
|
||||
|
||||
#. Make sure to add all bank accounts you want to synchronize with your Odoo database before moving
|
||||
on to the next steps.
|
||||
#. Add all bank accounts you want to synchronize with your Odoo database and move to the next steps.
|
||||
|
||||
Link your Ponto account with your Odoo database
|
||||
-----------------------------------------------
|
||||
|
||||
#. Go to :menuselection:`Accounting --> Configuration --> Add a Bank Account`.
|
||||
#. Search your institution, make sure to select the right institution. By selecting the institution,
|
||||
you can verify that the third party provider is Ponto.
|
||||
#. Click on *Connect* and follow the steps.
|
||||
#. At some point, you will have to authorize the accounts you want to access in Odoo. Please select
|
||||
**all the accounts** you want to synchronize. Even the ones coming from other banking
|
||||
institutions.
|
||||
#. Search for your institution and select it so you can verify that the third party provider is
|
||||
Ponto.
|
||||
#. Click :guilabel:`Connect` and follow the steps.
|
||||
#. Select **all accounts** you want to access and synchronize in Odoo, even the ones coming from
|
||||
other banking institutions.
|
||||
|
||||
.. image:: ponto/ponto-select-accounts.png
|
||||
:align: center
|
||||
:alt: Selection of the accounts you wish to synchronize with Odoo.
|
||||
|
||||
#. Finish the flow.
|
||||
@@ -70,26 +61,26 @@ Link your Ponto account with your Odoo database
|
||||
Update your synchronization credentials
|
||||
---------------------------------------
|
||||
|
||||
You might have to update your Ponto credentials or modify the synchronization settings.
|
||||
To update your Ponto credentials or modify the synchronization settings, activate the
|
||||
:ref:`developer mode <developer-mode>`, go to :menuselection:`Accounting --> Configuration -->
|
||||
Online Synchronization`, and select the institution from which you want to fetch the other
|
||||
accounts. Click :guilabel:`Fetch Accounts` to start the flow.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Online Synchronization` and select
|
||||
the institution you want to fetch the other accounts. Click on *Fetch Accounts* button to start the
|
||||
flow.
|
||||
|
||||
During the update, select **all the accounts** you want to synchronize, even the ones coming
|
||||
from other banking institutions.
|
||||
.. note::
|
||||
During the update, select **all accounts** you want to synchronize, even the ones coming from
|
||||
other banking institutions.
|
||||
|
||||
Fetch new accounts
|
||||
------------------
|
||||
|
||||
You might want to add new online accounts to your connection.
|
||||
To add new online accounts to your connection, activate the :ref:`developer mode <developer-mode>`,
|
||||
go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, and select the
|
||||
institution from which you want to fetch the other accounts. Click :guilabel:`Fetch Accounts` to
|
||||
start the flow.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Online Synchronization` and select
|
||||
the institution you want to fetch the other accounts. Click on *Fetch Accounts* button to start the
|
||||
flow.
|
||||
|
||||
Don't forget to keep authorization for existing accounts (for all institutions that you
|
||||
have synchronized with Ponto).
|
||||
.. note::
|
||||
Don't forget to keep authorization for existing accounts (for all institutions that you have
|
||||
synchronized with Ponto).
|
||||
|
||||
FAQ
|
||||
===
|
||||
@@ -102,7 +93,7 @@ You selected an institution from the list and did not authorize any accounts fro
|
||||
I have an error about that my authorization has expired
|
||||
-------------------------------------------------------
|
||||
|
||||
Every **3 months** (90 days) you must re-authorize the connection between your bank account
|
||||
Every **6 months** (180 days) you must re-authorize the connection between your bank account
|
||||
and Ponto. This must be done from the `Ponto website <https://myponto.com>`_. If you do not
|
||||
do this, the synchronization will stop for these accounts.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB |
@@ -6,11 +6,6 @@ Salt Edge
|
||||
from your bank accounts. It supports ~5000 institutions in more than 50
|
||||
countries.
|
||||
|
||||
.. image:: saltedge/saltedge-logo.png
|
||||
:align: center
|
||||
:width: 50%
|
||||
:alt: Salt Edge Logo
|
||||
|
||||
Odoo can synchronize directly with your bank to get all bank statements imported
|
||||
automatically into your database.
|
||||
|
||||
@@ -34,20 +29,17 @@ Link your bank accounts with Odoo
|
||||
account.
|
||||
|
||||
.. image:: saltedge/saltedge-contact-email.png
|
||||
:align: center
|
||||
:alt: Email address to provide to Salt Edge for the creation of your account.
|
||||
|
||||
#. After entering your email address, you are redirected to Salt Edge to continue
|
||||
the synchronization process.
|
||||
|
||||
.. image:: saltedge/saltedge-login-page.png
|
||||
:align: center
|
||||
:alt: Salt Edge Login page.
|
||||
|
||||
#. Make sure you give your consent by checking the consent checkbox.
|
||||
|
||||
.. image:: saltedge/saltedge-give-consent.png
|
||||
:align: center
|
||||
:alt: Salt Edge give consent page.
|
||||
|
||||
#. Complete the synchronization by following the steps.
|
||||
@@ -56,11 +48,10 @@ Link your bank accounts with Odoo
|
||||
Update your credentials
|
||||
-----------------------
|
||||
|
||||
You might have to update your Salt Edge credentials or modify the synchronization settings.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Online Synchronization` and
|
||||
select the institution you want to update credentials. Click on the *Update Credentials* button
|
||||
to start the flow and follow the steps.
|
||||
To update your Salt Edge credentials or modify the synchronization settings, activate the
|
||||
:ref:`developer mode <developer-mode>`, go to :menuselection:`Accounting --> Configuration -->
|
||||
Online Synchronization`, and select the institution you want to update credentials. Click
|
||||
:guilabel:`Update Credentials` to start the flow and follow the steps.
|
||||
|
||||
Don't forget to check the consent checkbox. Otherwise, Odoo may not be able to access
|
||||
your information.
|
||||
@@ -68,14 +59,14 @@ your information.
|
||||
Fetch new accounts
|
||||
------------------
|
||||
|
||||
You might want to add new online accounts to your connection.
|
||||
To add new online accounts to your connection, activate the :ref:`developer mode <developer-mode>`,
|
||||
go to :menuselection:`Accounting --> Configuration --> Online Synchronization`, and select the
|
||||
institution to fetch the new accounts. Click :guilabel:`Fetch Accounts` to start the flow and
|
||||
follow the steps.
|
||||
|
||||
To do so, go to :menuselection:`Accounting --> Configuration --> Online Synchronization` and
|
||||
select the institution to fetch the new accounts. Click on the *Fetch Accounts* button
|
||||
to start the flow and follow the steps.
|
||||
|
||||
Don't forget to check the consent checkbox. Otherwise, Odoo may not be able to access
|
||||
your information.
|
||||
.. note::
|
||||
Don't forget to check the consent checkbox. Otherwise, Odoo may not be able to access your
|
||||
information.
|
||||
|
||||
FAQ
|
||||
===
|
||||
@@ -94,15 +85,15 @@ record.
|
||||
I have an error saying that I have already synchronized this account
|
||||
--------------------------------------------------------------------
|
||||
|
||||
You have probably already synchronized your bank account with Salt Edge, please check on your `dashboard
|
||||
<https://www.saltedge.com/dashboard>`_ that you don't already have a connection with the same
|
||||
credentials.
|
||||
You have probably already synchronized your bank account with Salt Edge, please check on your
|
||||
`dashboard <https://www.saltedge.com/dashboard>`_ that you don't already have a connection with the
|
||||
same credentials.
|
||||
|
||||
In case you already have a synchronization with the same credentials present on your Salt Edge
|
||||
dashboard and this synchronization has not been created with Odoo, please delete it and create it
|
||||
from your Odoo database.
|
||||
If you already have a synchronization with the same credentials present on your Salt Edge
|
||||
dashboard and this synchronization has not been created with Odoo, delete it and create it from your
|
||||
Odoo database.
|
||||
|
||||
In case you already have a connection with the same credentials present on your Salt Edge dashboard
|
||||
and this synchronization was created with Odoo, you will normally be able to find it by going to
|
||||
:menuselection:`Accounting --> Configuration --> Online Synchronization`. Please make sure to do an
|
||||
*Update Credentials* to reactivate the connection.
|
||||
If you already have a connection with the same credentials present on your Salt Edge dashboard
|
||||
and this synchronization was created with Odoo, activate the :ref:`developer
|
||||
mode <developer-mode>`, go to :menuselection:`Accounting --> Configuration --> Online
|
||||
Synchronization`, and click :guilabel:`Update Credentials` to reactivate the connection.
|
||||
|
||||
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
@@ -0,0 +1,71 @@
|
||||
==================
|
||||
Internal transfers
|
||||
==================
|
||||
|
||||
Internal money transfers can be handled in Odoo. At least two bank or cash accounts are needed to
|
||||
make internal transfers.
|
||||
|
||||
.. seealso::
|
||||
:ref:`How to add an additional bank account <accounting/bank/create>`
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
An internal transfer account is automatically created on your database based on your company's
|
||||
:doc:`localization <../../fiscal_localizations>` and depending on your country’s legislation. To
|
||||
modify the default :guilabel:`Internal Transfer` account, go to :menuselection:`Accounting -->
|
||||
Configuration --> Settings` and scroll down to the :guilabel:`Default Accounts` section.
|
||||
|
||||
Register an internal transfer from one bank to another
|
||||
======================================================
|
||||
|
||||
When money is transferred from one bank or cash account to another, that amount appears as two
|
||||
transactions on the corresponding journals, whether the transactions are created manually, via
|
||||
import, or via :doc:`bank synchronization <bank_synchronization>`. When reconciling the transaction,
|
||||
select the :guilabel:`Internal Transfers` :doc:`reconciliation model <reconciliation_models>`
|
||||
button. This reconciliation model button writes the transaction off to the :guilabel:`Internal
|
||||
Transfer` account.
|
||||
|
||||
.. tip::
|
||||
Remember to reconcile the transaction for both the outgoing transaction on the journal that sends
|
||||
the payment and the incoming transaction on the journal that receives the payment.
|
||||
|
||||
.. example::
|
||||
Take, for example, a transfer of $1000 from Bank A to Bank B:
|
||||
|
||||
- Bank journal (Bank A)
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - **Account**
|
||||
- **Debit**
|
||||
- **Credit**
|
||||
* - Bank A account
|
||||
-
|
||||
- $1,000
|
||||
* - **Internal transfer account**
|
||||
- **$1,000**
|
||||
-
|
||||
|
||||
- Bank journal (Bank B)
|
||||
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
:stub-columns: 1
|
||||
|
||||
* - **Account**
|
||||
- **Debit**
|
||||
- **Credit**
|
||||
* - Bank B account
|
||||
- $1,000
|
||||
-
|
||||
* - **Internal transfer account**
|
||||
-
|
||||
- **$1,000**
|
||||
|
||||
.. seealso::
|
||||
:doc:`reconciliation`
|
||||
:doc:`reconciliation_models`
|
||||
@@ -0,0 +1,70 @@
|
||||
================
|
||||
Loans management
|
||||
================
|
||||
|
||||
Odoo's loan management gives a comprehensive list of all loans undertaken by your company in order
|
||||
to maintain a holistic and forecasted view of upcoming due dates (e.g., cash forecast). Set up
|
||||
amortization schedules—or import them—and let Odoo automatically handle monthly interest and
|
||||
principal adjustments so that your financial reports are always accurate with minimal effort.
|
||||
|
||||
Create a new loan
|
||||
-----------------
|
||||
|
||||
Create a new loan by going to :menuselection:`Accounting --> Accounting --> Loans`. When creating a
|
||||
new loan, there are three options for how to create amortization schedules:
|
||||
|
||||
- importing it from a supported file;
|
||||
- calculating it from multiple input values (e.g., the :guilabel:`Amount Borrowed`, the
|
||||
:guilabel:`Duration`, etc.) using the :guilabel:`Compute` button;
|
||||
- manually filling in the lines of the schedule.
|
||||
|
||||
In each case, three different fields are required for each line of the amortization schedule: the
|
||||
:guilabel:`Date`, the :guilabel:`Principal`, and the :guilabel:`Interest`.
|
||||
|
||||
The :guilabel:`Amount Borrowed`, :guilabel:`Interest`, and :guilabel:`Duration` fields will be red
|
||||
if the sum of the lines does not match the total of the amortization schedule lines.
|
||||
|
||||
Loan entries mechanism
|
||||
----------------------
|
||||
|
||||
When the amount borrowed is credited to a bank account, it should be transferred to a long-term
|
||||
account (defined in the :guilabel:`Loan Settings` tab). Then, upon the validation of the loan, Odoo
|
||||
creates the necessary journal entries so that there is always a holistic and forecasted view of
|
||||
upcoming due dates. The entire process is completely automated with a long-term and short-term
|
||||
principal reclassification mechanism.
|
||||
|
||||
For each line of the amortization schedule, Odoo creates the following entries:
|
||||
|
||||
A payment entry on the same date that
|
||||
- debits the principal amount to the long-term account;
|
||||
- debits the interest amount to the expense account;
|
||||
- credits the payment amount to the short-term account: this is the amount that will be
|
||||
withdrawn by the bank.
|
||||
|
||||
A reclassification entry on the same date that
|
||||
- debits the sum of the principal amounts of the next 12 months to the long-term account;
|
||||
- credits the sum of the principal amounts of the next 12 months to the short-term account.
|
||||
|
||||
A reversed entry of the reclassification entry on *the next day* that simply reverses the previous
|
||||
one.
|
||||
|
||||
With this mechanism, month after month, the short-term account is always up to date with the
|
||||
current short-term due amounts.
|
||||
|
||||
Closing a loan
|
||||
--------------
|
||||
|
||||
By default, a loan will be closed whenever its last payment entry is posted. However, it can also
|
||||
be manually closed (e.g., because it is being paid off early) by clicking on the :guilabel:`Close`
|
||||
button. A wizard will appear asking from which date the loan should be closed. All draft entries
|
||||
after this date will be deleted too.
|
||||
|
||||
A loan can also be cancelled. In that case, all entries will be deleted even if they were already
|
||||
posted.
|
||||
|
||||
Loans Analysis Report
|
||||
---------------------
|
||||
|
||||
By going to :menuselection:`Accounting --> Reporting --> Loans Analysis`, you can access a
|
||||
report with a pivot view of your ongoing loans. By default, the report shows the principal,
|
||||
interest, and total payment for each year for the loan duration.
|
||||
@@ -69,13 +69,13 @@ Transactions can be matched automatically with the use of :doc:`reconciliation m
|
||||
: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/button>`.
|
||||
#. If the resulting entry isn't fully balanced, balance it by adding another existing counterpart
|
||||
#. If the resulting entry is not 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 aren't sure how to reconcile a particular transaction and would like to deal with it
|
||||
If you are not 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.
|
||||
|
||||
@@ -112,7 +112,7 @@ has a search bar that allows you to search for specific batch payments.
|
||||
Manual operations
|
||||
-----------------
|
||||
|
||||
If there isn't an existing entry to match the selected transaction, you may instead wish to
|
||||
If there is not 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,6 +123,10 @@ 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.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 9.0 KiB |
@@ -21,17 +21,23 @@ Import transactions
|
||||
|
||||
Odoo supports multiple file formats to import transactions:
|
||||
|
||||
- SEPA recommended Cash Management format (CAMT.053);
|
||||
- Comma-separated values (.CSV);
|
||||
- Open Financial Exchange (.OFX);
|
||||
- Quicken Interchange Format (.QIF);
|
||||
- Belgium: Coded Statement of Account (.CODA).
|
||||
- SEPA recommended Cash Management format (CAMT.053)
|
||||
- Comma-separated values (CSV)
|
||||
- Open Financial Exchange (OFX)
|
||||
- Quicken Interchange Format (QIF)
|
||||
- Belgium: Coded Statement of Account (CODA)
|
||||
|
||||
To import a file, go to the :guilabel:`Accounting Dashboard`, and in the :guilabel:`Bank` journal,
|
||||
click on :guilabel:`Import Transactions`.
|
||||
click on :guilabel:`Import File`.
|
||||
|
||||
.. image:: transactions/import-transactions.png
|
||||
:alt: Import bank transactions from the bank journal
|
||||
.. tip::
|
||||
Alternatively, you can also:
|
||||
|
||||
- click the :icon:`fa-ellipsis-v` :guilabel:`(ellipsis)` icon on the :guilabel:`Bank`
|
||||
journal and select :guilabel:`Import file`;
|
||||
- or access the transaction list by clicking the :icon:`fa-ellipsis-v` :guilabel:`(ellipsis)`
|
||||
icon on the :guilabel:`Bank` journal and selecting :guilabel:`Transactions`, then click
|
||||
the :icon:`fa-cog` :guilabel:`(gear)` icon and select :guilabel:`Import records`.
|
||||
|
||||
Next, select the file and upload it.
|
||||
|
||||
@@ -67,22 +73,28 @@ on your business flow, you may want to record them for control purposes.
|
||||
account balance as of the date you begin synchronizing or importing transactions. This is
|
||||
necessary to ensure the accuracy of your accounting.
|
||||
|
||||
To access a list of statements, go to your :guilabel:`Accounting Dashboard`, click on the vertical
|
||||
ellipsis (:guilabel:`⋮`) button next to the bank or cash journal you want to check, then on
|
||||
:guilabel:`Statements`
|
||||
To access a list of existing statements, go to the :guilabel:`Accounting Dashboard`, click the
|
||||
:icon:`fa-ellipsis-v` :guilabel:`(ellipsis)` icon next to the bank or cash journal you want to
|
||||
check, then click :guilabel:`Statements`.
|
||||
|
||||
.. _transactions/statement-kanban:
|
||||
|
||||
Statement creation from the kanban view
|
||||
---------------------------------------
|
||||
|
||||
Open the bank reconciliation view by clicking on the name of the bank journal, and identify the
|
||||
transaction corresponding to the last transaction of your bank statement. Click on the
|
||||
:guilabel:`STATEMENT` button when hovering on the upper separator line.
|
||||
Open the bank reconciliation (kanban) view from the :guilabel:`Accounting Dashboard` by clicking on
|
||||
the name of the bank journal and identify the transaction corresponding to the last (most recent)
|
||||
transaction of your bank statement. Click on the :guilabel:`Statement` button when hovering on the
|
||||
upper separator line to create a statement from that transaction down to the oldest transaction that
|
||||
is not yet part of a statement.
|
||||
|
||||
.. image:: transactions/statements-kanban.png
|
||||
:alt: A "STATEMENT" button is visible when hovering on the line separating two transactions.
|
||||
:alt: A "Statement" button is visible when hovering on the line separating two transactions.
|
||||
|
||||
Fill out the statement's details and save. The newly created statement includes the previous
|
||||
transactions following the last statement.
|
||||
In the :guilabel:`Create Statement` window, fill out the statement's :guilabel:`Reference`, verify
|
||||
its :guilabel:`Starting Balance` and :guilabel:`Ending Balance`, and click :guilabel:`Save`.
|
||||
|
||||
.. _transactions/statement-list:
|
||||
|
||||
Statement creation from the list view
|
||||
-------------------------------------
|
||||
@@ -92,3 +104,35 @@ view. Select all the transactions corresponding to the bank statement, and, in t
|
||||
:guilabel:`Statement` column, select an existing statement or create a new one by typing its
|
||||
reference, clicking on :guilabel:`Create and edit...`, filling out the statement's details, and
|
||||
saving.
|
||||
|
||||
.. _transactions/view-edit-print:
|
||||
|
||||
Statement viewing, editing, and printing
|
||||
----------------------------------------
|
||||
|
||||
To view an existing statement, click on the statement amount in the reconciliation (kanban) view or
|
||||
click on the statement name in the bank transaction list view. From here, you can edit the
|
||||
:guilabel:`Reference`, :guilabel:`Starting Balance`, or :guilabel:`Ending Balance`.
|
||||
|
||||
.. note::
|
||||
Manually updating the :guilabel:`Starting Balance` automatically updates the :guilabel:`Ending
|
||||
Balance` based on the new value of the :guilabel:`Starting Balance` and the value of the
|
||||
statement's transactions.
|
||||
|
||||
.. warning::
|
||||
If the :guilabel:`Starting Balance` doesn't equal the previous statement's :guilabel:`Ending
|
||||
Balance`, or if the :guilabel:`Ending Balance` doesn't equal the running balance
|
||||
(:guilabel:`Starting Balance` plus the statement's transactions), a warning appears explaining
|
||||
the issue. To maintain flexibility, it is still possible to save without first resolving the
|
||||
issue.
|
||||
|
||||
To attach a digital copy (i.e., JPEG, PNG, or PDF) of the bank statement for enhanced recordkeeping,
|
||||
click the :icon:`fa-paperclip` :guilabel:`Attachments` button and select the file to attach.
|
||||
|
||||
To generate and print a PDF of the bank statement, click the :guilabel:`Print` button (if accessed
|
||||
via the reconciliation view) or click on the :icon:`fa-cog`:guilabel:`(gear)` icon and click
|
||||
:icon:`fa-print`:guilabel:`Statement` (if accessed via the list view).
|
||||
|
||||
.. note::
|
||||
When a bank statement is generated to be printed, it is automatically added to the
|
||||
:guilabel:`Attachments`.
|
||||
|
||||
|
Before Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 23 KiB |
@@ -4,225 +4,292 @@
|
||||
Customer invoices
|
||||
=================
|
||||
|
||||
From Customer Invoice to Payments Collection
|
||||
============================================
|
||||
A customer invoice is a document issued by a company for products and/or services sold to a
|
||||
customer. It records receivables as they are sent to customers. Customer invoices can include
|
||||
amounts due for the goods and/or services provided, applicable sales taxes, shipping and handling
|
||||
fees, and other charges. Odoo supports multiple invoicing and payment workflows.
|
||||
|
||||
Odoo supports multiple invoicing and payment workflows, so you can
|
||||
choose and use the ones that match your business needs. Whether you want
|
||||
to accept a single payment for a single invoice, or process a payment
|
||||
spanning multiple invoices and taking discounts for early payments, you
|
||||
can do so efficiently and accurately.
|
||||
.. seealso::
|
||||
:doc:`/applications/finance/accounting/customer_invoices/overview`
|
||||
|
||||
From Draft Invoice to Profit and Loss
|
||||
-------------------------------------
|
||||
From draft invoice to profit and loss report, the process involves several steps once the goods (or
|
||||
services) have been ordered/shipped (or rendered) to a customer, depending on the invoicing policy:
|
||||
|
||||
If we pick up at the end of a typical 'order to cash' scenario, after
|
||||
the goods have been shipped, you will: issue an invoice; receive
|
||||
payment; deposit that payment at the bank; make sure the Customer
|
||||
Invoice is closed; follow up if Customers are late; and finally present
|
||||
your Income on the Profit and Loss report and show the decrease in
|
||||
Assets on the Balance Sheet report.
|
||||
- :ref:`accounting/invoice/creation`
|
||||
- :ref:`accounting/invoice/confirmation`
|
||||
- :ref:`accounting/invoice/sending`
|
||||
- :ref:`accounting/invoice/paymentandreconciliation`
|
||||
- :ref:`accounting/invoice/followup`
|
||||
- :ref:`accounting/invoice/reporting`
|
||||
|
||||
Invoicing in most countries occurs when a contractual obligation is met.
|
||||
If you ship a box to a customer, you have met the terms of the contract
|
||||
and can bill them. If your supplier sends you a shipment, they have met
|
||||
the terms of that contract and can bill you. Therefore, the terms of the
|
||||
contract is fulfilled when the box moves to or from the truck. At this
|
||||
point, Odoo supports the creation of what is called a Draft Invoice by
|
||||
Warehouse staff.
|
||||
.. _accounting/invoice/creation:
|
||||
|
||||
Invoice creation
|
||||
----------------
|
||||
================
|
||||
|
||||
Draft invoices can be manually generated from other documents such as
|
||||
Sales Orders, Purchase Orders,etc. Although you can create a draft
|
||||
invoice directly if you would like.
|
||||
Draft invoices can be created directly from documents like sales orders or purchase orders or
|
||||
manually from the :guilabel:`Customer Invoices` journal in the :guilabel:`Accounting Dashboard`.
|
||||
|
||||
An invoice must be provided to the customer with the necessary
|
||||
information in order for them to pay for the goods and services ordered
|
||||
and delivered. It must also include other information needed to pay the
|
||||
invoice in a timely and precise manner.
|
||||
An invoice must include the required information to enable the customer to pay promptly for their
|
||||
goods and services. Make sure the following fields are appropriately completed:
|
||||
|
||||
Draft invoices
|
||||
--------------
|
||||
- :guilabel:`Customer`: When a customer is selected, Odoo automatically pulls information from the
|
||||
customer record like the invoice address,
|
||||
:doc:`preferred payment terms <customer_invoices/payment_terms>`,
|
||||
:doc:`fiscal positions <taxes/fiscal_positions>`, receivable account, and more onto the invoice.
|
||||
To change these values for this specific invoice, edit them directly on the invoice. To change
|
||||
them for future invoices, change the values on the contact record.
|
||||
- :guilabel:`Invoice Date`: If not set manually, this field is automatically set as the current date
|
||||
upon confirmation.
|
||||
- :guilabel:`Due Date` or :doc:`payment terms <customer_invoices/payment_terms>`: To specify when
|
||||
the customer has to pay the invoice.
|
||||
- :guilabel:`Journal`: Automatically set and can be changed if needed.
|
||||
- :doc:`Currency <get_started/multi_currency>`. If the invoice's currency differs from the
|
||||
company's currency, the currency exchange rate is automatically displayed.
|
||||
|
||||
The system generates invoice which are initially set to the Draft state.
|
||||
While these invoices remain unvalidated, they have no accounting impact within the system.
|
||||
There is nothing to stop users from creating their own draft invoices.
|
||||
In the :guilabel:`Invoice Lines` tab:
|
||||
|
||||
Let's create a customer invoice with following information:
|
||||
- :guilabel:`Product`: Click :guilabel:`Add a line`, then search for and select the product.
|
||||
- :guilabel:`Quantity`
|
||||
- :guilabel:`Price`
|
||||
- :doc:`Taxes <taxes>` (if applicable)
|
||||
|
||||
- Customer: Agrolait
|
||||
- Product: iMac
|
||||
- Quantity: 1
|
||||
- Unit Price: 100
|
||||
- Taxes: Tax 15%
|
||||
To access the product catalog and view all items in an organized display, click :doc:`Catalog
|
||||
</applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/product_catalog>`.
|
||||
When the products and quantities are selected, click :guilabel:`Back to Invoice` to return to the
|
||||
invoice; the selected catalog items will appear in the invoice lines.
|
||||
|
||||
.. image:: customer_invoices/invoice01.png
|
||||
.. tip::
|
||||
To display the total amount of the invoice in words, go to :menuselection:`Accounting -->
|
||||
Configuration --> Settings` and activate the :guilabel:`Total amount of invoice in letters`
|
||||
option.
|
||||
|
||||
.. image:: customer_invoices/invoice02.png
|
||||
The :guilabel:`Journal Items` tab displays the accounting entries created. Additional invoice
|
||||
information such as the :guilabel:`Customer Reference`, :guilabel:`Payment Reference`, :doc:`Fiscal
|
||||
Positions <taxes/fiscal_positions>`, :doc:`Incoterms <customer_invoices/incoterms>`, and more can be
|
||||
added or modified in the :guilabel:`Other Info` tab.
|
||||
|
||||
The document is composed of three parts:
|
||||
.. note::
|
||||
Odoo initially creates invoices in :guilabel:`Draft` status. Draft invoices have no accounting
|
||||
impact until they are :ref:`confirmed <accounting/invoice/confirmation>`.
|
||||
|
||||
- the top of the invoice, with customer information,
|
||||
- the main body of the invoice, with detailed invoice lines,
|
||||
- the bottom of the page, with detail about the taxes, and the totals.
|
||||
.. seealso::
|
||||
:doc:`/applications/sales/sales/invoicing/proforma`
|
||||
|
||||
Open or Pro-forma invoices
|
||||
.. _accounting/invoice/confirmation:
|
||||
|
||||
Invoice confirmation
|
||||
====================
|
||||
|
||||
Click :guilabel:`Confirm` when the invoice is completed. The invoice's status changes to
|
||||
:guilabel:`Posted`, and a journal entry is generated based on the invoice configuration. On
|
||||
confirmation, Odoo assigns each invoice a unique number from a defined :ref:`sequence
|
||||
<accounting/invoice/sequence>`.
|
||||
|
||||
.. note::
|
||||
- Once confirmed, an invoice can no longer be updated. Click :guilabel:`Reset to draft` if
|
||||
changes are needed.
|
||||
- If required, invoices and other journal entries can be locked once posted using the
|
||||
:ref:`Secure posted entries with hash <data-inalterability/restricted>` feature.
|
||||
|
||||
.. _accounting/invoice/sending:
|
||||
|
||||
Invoice sending
|
||||
===============
|
||||
|
||||
To set a preferred :guilabel:`Invoice sending` method for a customer, go to
|
||||
:menuselection:`Accounting --> Customers --> Customers` and select the customer. In the
|
||||
:guilabel:`Accounting` tab of the contact form, select the preferred :guilabel:`Invoice sending`
|
||||
method in the :guilabel:`Customer Invoices` section.
|
||||
|
||||
.. note::
|
||||
Sending letters in Odoo requires :doc:`In-App Purchase (IAP) <../../essentials/in_app_purchase>`
|
||||
credit or tokens.
|
||||
|
||||
To send the invoice to the customer, navigate back to the invoice record and follow these steps:
|
||||
|
||||
#. Click :guilabel:`Print & Send`.
|
||||
#. If the :ref:`default invoice layout <studio/pdf-reports/default-layout>` has not been customized
|
||||
yet, a :guilabel:`Configure your document layout` pop-up window appears. Configure the layout and
|
||||
click :guilabel:`Continue`.
|
||||
|
||||
.. note::
|
||||
- The document layout can be changed at any time in the general settings.
|
||||
- To add a QR code for banking app payments to the invoice, enable the :guilabel:`QR Code`
|
||||
option in the :guilabel:`Configure Your Document Layout` window. To modify this option, go
|
||||
to :menuselection:`Accounting --> Configuration --> Settings`, scroll down to the
|
||||
:guilabel:`Customer Payments` section, and enable/disable the :guilabel:`QR Codes` option.
|
||||
|
||||
#. In the :guilabel:`Print & Send` window:
|
||||
|
||||
- If a preferred :guilabel:`Invoice sending` method was set in the contact form, it is selected
|
||||
by default. Select another one if needed.
|
||||
- If no preferred :guilabel:`Invoice sending` method was set in the contact form, select the
|
||||
method to use for sending the invoice to the customer.
|
||||
|
||||
#. Click :guilabel:`Print & Send` if the :guilabel:`by Email` option is selected, or click
|
||||
:guilabel:`Print`.
|
||||
|
||||
.. _accounting/invoice/sending-multiple-invoices:
|
||||
|
||||
Sending multiple invoices
|
||||
-------------------------
|
||||
|
||||
To send and print multiple invoices, go to :menuselection:`Accounting --> Customers --> Invoices`,
|
||||
select them in the :guilabel:`Invoices` list view and click :guilabel:`Print & Send`. The
|
||||
:guilabel:`Print & Send` window displays the selected invoice sending methods based on the preferred
|
||||
method set.
|
||||
|
||||
A banner is added to the selected invoices to indicate they are part of an ongoing send and print
|
||||
batch. This helps prevent the process from being triggered manually again, as it may take some time
|
||||
to complete for exceptionally large batches.
|
||||
|
||||
To check all invoices that have not yet been sent, go to :menuselection:`Accounting --> Customers
|
||||
--> Invoices`. In the :guilabel:`Invoices` list view, click into the search bar and filter on
|
||||
:guilabel:`Not Sent`.
|
||||
|
||||
.. _accounting/invoice/paymentandreconciliation:
|
||||
|
||||
Payment and reconciliation
|
||||
==========================
|
||||
|
||||
In Odoo, an invoice is considered :guilabel:`Paid` when the associated accounting entry has been
|
||||
reconciled with a corresponding bank transaction.
|
||||
|
||||
.. seealso::
|
||||
- :doc:`payments`
|
||||
- :doc:`bank/reconciliation`
|
||||
|
||||
.. _accounting/invoice/followup:
|
||||
|
||||
Payment follow-up
|
||||
=================
|
||||
|
||||
Odoo's :doc:`follow-up actions <payments/follow_up>` help companies follow up on customer invoices.
|
||||
Different actions can be set up to remind customers to pay their outstanding invoices, depending on
|
||||
how much the customer is overdue. These actions are bundled into follow-up levels that trigger when
|
||||
an invoice is overdue by a certain number of days. If there are multiple overdue invoices for the
|
||||
same customer, the actions are performed on the most overdue invoice.
|
||||
|
||||
.. _accounting/invoice/sequence:
|
||||
|
||||
Invoice sequence
|
||||
================
|
||||
|
||||
When confirming an invoice, Odoo generates a unique invoice reference number. By default, Odoo uses
|
||||
the following sequence format `INV/year/incrementing-number` (e.g., `INV/2025/00001`), which
|
||||
restarts from `00001` each year.
|
||||
|
||||
However, it is possible to :ref:`change the sequence format <accounting/invoice/resequencing>` and
|
||||
its periodicity, and to :ref:`mass-resequence invoices <accounting/invoice/mass-resequencing>`.
|
||||
|
||||
.. note::
|
||||
Changes made to reference numbers are logged in the chatter.
|
||||
|
||||
.. _accounting/invoice/resequencing:
|
||||
|
||||
Changing the default sequence
|
||||
-----------------------------
|
||||
|
||||
To customize the default sequence, open the last confirmed invoice, click :guilabel:`Reset to
|
||||
Draft`, and edit the invoice's reference number.
|
||||
|
||||
.. image:: customer_invoices/reference-number.png
|
||||
:alt: Editing the reference number of an invoice.
|
||||
|
||||
Odoo then explains how the detected format will be applied to all future invoices. For example, if
|
||||
the current invoice's month is added, the sequence's periodicity will change to every month instead
|
||||
of every year.
|
||||
|
||||
.. image:: customer_invoices/sequence-dialog.png
|
||||
:alt: Editing the reference number of an invoice.
|
||||
|
||||
.. tip::
|
||||
The sequence format can be edited directly when creating the first invoice of a given sequence
|
||||
period.
|
||||
|
||||
.. _accounting/invoice/mass-resequencing:
|
||||
|
||||
Mass-resequencing invoices
|
||||
--------------------------
|
||||
|
||||
An invoice will usually include the quantity and the price of goods
|
||||
and/or services, the date, any parties involved, the unique invoice
|
||||
number, and any tax information.
|
||||
It can be helpful to resequence multiple invoice numbers. For example, when importing invoices from
|
||||
another invoicing or accounting system and the reference originates from the previous software,
|
||||
continuity for the current year must be maintained without restarting from the beginning.
|
||||
|
||||
"Validate" the invoice when you are ready to approve it. The invoice
|
||||
then moves from the Draft state to the Open state.
|
||||
.. note::
|
||||
This feature is only available to users with administrator or advisor access.
|
||||
|
||||
When you have validated an invoice, Odoo gives it a unique number from a
|
||||
defined, and modifiable, sequence.
|
||||
Follow these steps to resequence invoice numbers:
|
||||
|
||||
.. image:: customer_invoices/invoice03.png
|
||||
#. Activate the :ref:`developer mode <developer-mode>`.
|
||||
#. From the :guilabel:`Accounting Dashboard`, open the :guilabel:`Customer Invoices` journal.
|
||||
#. Select the invoices that need a new sequence.
|
||||
#. Click the :icon:`fa-cog` :guilabel:`Actions` menu and select :guilabel:`Resequence`.
|
||||
#. In the :guilabel:`Ordering` field, choose to
|
||||
|
||||
Accounting entries corresponding to this invoice are automatically
|
||||
generated when you validate the invoice. You can see the details by
|
||||
clicking on the entry in the Journal Entry field in the "Other Info"
|
||||
tab.
|
||||
- :guilabel:`Keep current order`: The order of the numbers remains the same.
|
||||
- :guilabel:`Reorder by accounting date`: The number is reordered by accounting date.
|
||||
|
||||
.. image:: customer_invoices/invoice04.png
|
||||
#. Set the :guilabel:`First New Sequence`.
|
||||
#. :guilabel:`Preview Modifications` and click :guilabel:`Confirm`.
|
||||
|
||||
Send the invoice to customer
|
||||
----------------------------
|
||||
The first invoice using the new sequence appears in red in the :guilabel:`Customer Invoices` list.
|
||||
|
||||
After validating the customer invoice, you can directly send it to the
|
||||
customer via the 'Send by email' functionality.
|
||||
.. image:: customer_invoices/invoice-sequencing.png
|
||||
:alt: Resequence options window
|
||||
|
||||
.. image:: customer_invoices/invoice05.png
|
||||
.. _accounting/invoice/reporting:
|
||||
|
||||
A typical journal entry generated from a validated invoice will look
|
||||
like as follows:
|
||||
Reporting
|
||||
=========
|
||||
|
||||
+-----------------------+---------------+----------------+-------------+--------------+
|
||||
| **Account** | **Partner** | **Due date** | **Debit** | **Credit** |
|
||||
+=======================+===============+================+=============+==============+
|
||||
| Accounts Receivable | Agrolait | 01/07/2015 | 115 | |
|
||||
+-----------------------+---------------+----------------+-------------+--------------+
|
||||
| Taxes | Agrolait | | | 15 |
|
||||
+-----------------------+---------------+----------------+-------------+--------------+
|
||||
| Sales | | | | 100 |
|
||||
+-----------------------+---------------+----------------+-------------+--------------+
|
||||
.. _accounting/invoice/partner-reports:
|
||||
|
||||
Payment
|
||||
-------
|
||||
|
||||
In Odoo, an invoice is considered to be paid when the associated
|
||||
accounting entry has been reconciled with the payment entries. If there
|
||||
has not been a reconciliation, the invoice will remain in the Open state
|
||||
until you have entered the payment.
|
||||
|
||||
A typical journal entry generated from a payment will look like as
|
||||
follows:
|
||||
|
||||
+-----------------------+---------------+----------------+-------------+--------------+
|
||||
| **Account** | **Partner** | **Due date** | **Debit** | **Credit** |
|
||||
+=======================+===============+================+=============+==============+
|
||||
| Bank | Agrolait | | 115 | |
|
||||
+-----------------------+---------------+----------------+-------------+--------------+
|
||||
| Accounts Receivable | Agrolait | | | 115 |
|
||||
+-----------------------+---------------+----------------+-------------+--------------+
|
||||
|
||||
Receive a partial payment through the bank statement
|
||||
----------------------------------------------------
|
||||
|
||||
You can manually enter your bank statements in Odoo, or you can import
|
||||
them in from a csv file or from several other predefined formats
|
||||
according to your accounting localisation.
|
||||
|
||||
Create a bank statement from the accounting dashboard with the related
|
||||
journal and enter an amount of $100 .
|
||||
|
||||
.. image:: customer_invoices/invoice06.png
|
||||
|
||||
Reconcile
|
||||
---------
|
||||
|
||||
Now let's reconcile!
|
||||
|
||||
.. image:: customer_invoices/invoice07.png
|
||||
|
||||
You can now go through every transaction and reconcile them or you can mass reconcile with instructions at the bottom.
|
||||
|
||||
After reconciling the items in the sheet, the related invoice will now
|
||||
display "You have outstanding payments for this customer. You can
|
||||
reconcile them to pay this invoice. "
|
||||
|
||||
.. image:: customer_invoices/invoice08.png
|
||||
|
||||
.. image:: customer_invoices/invoice09.png
|
||||
|
||||
Apply the payment. Below, you can see that the payment has been added to
|
||||
the invoice.
|
||||
|
||||
.. image:: customer_invoices/invoice10.png
|
||||
|
||||
Payment Followup
|
||||
----------------
|
||||
|
||||
There's a growing trend of customers paying bills later and later.
|
||||
Therefore, collectors must make every effort to collect money and
|
||||
collect it faster.
|
||||
|
||||
Odoo will help you define your follow-up strategy. To remind customers
|
||||
to pay their outstanding invoices, you can define different actions
|
||||
depending on how severely overdue the customer is. These actions are
|
||||
bundled into follow-up levels that are triggered when the due date of an
|
||||
invoice has passed a certain number of days. If there are other overdue
|
||||
invoices for the same customer, the actions of the most overdue invoice
|
||||
will be executed.
|
||||
|
||||
By going to the customer record and diving into the "Overdue Payments"
|
||||
you will see the follow-up message and all overdue invoices.
|
||||
|
||||
.. image:: customer_invoices/invoice11.png
|
||||
|
||||
.. image:: customer_invoices/invoice12.png
|
||||
|
||||
.. _customer-invoices/aging-report:
|
||||
|
||||
Customer aging report:
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The customer aging report will be an additional key tool for the
|
||||
collector to understand the customer credit issues, and to prioritize
|
||||
their work.
|
||||
|
||||
Use the aging report to determine which customers are overdue and begin
|
||||
your collection efforts.
|
||||
|
||||
.. image:: customer_invoices/invoice13.png
|
||||
|
||||
Profit and loss
|
||||
Partner reports
|
||||
---------------
|
||||
|
||||
The Profit and Loss statement displays your revenue and expense details.
|
||||
Ultimately, this gives you a clear image of your Net Profit and Loss. It
|
||||
is sometimes referred to as the "Income Statement" or "Statement of
|
||||
Revenues and Expenses."
|
||||
.. _accounting/invoices/partner-ledger:
|
||||
|
||||
.. image:: customer_invoices/invoice14.png
|
||||
Partner Ledger
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
The :guilabel:`Partner Ledger` report shows the balance of customers and suppliers. To access it,
|
||||
go to :menuselection:`Accounting --> Reporting --> Partner Ledger`.
|
||||
|
||||
.. _accounting/invoices/aging-report:
|
||||
|
||||
Aged Receivable
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
To review outstanding customer invoices and their related due dates, use the :ref:`Aged Receivable
|
||||
<accounting/reporting/aged-receivable>` report. To access it, go to :menuselection:`Accounting -->
|
||||
Reporting --> Aged Receivable`.
|
||||
|
||||
.. _accounting/invoices/aged-payable:
|
||||
|
||||
Aged Payable
|
||||
~~~~~~~~~~~~
|
||||
|
||||
To review outstanding vendor bills and their related due dates, use the :ref:`Aged Payable
|
||||
<accounting/reporting/aged-payable>` report. To access it, go to :menuselection:`Accounting -->
|
||||
Reporting --> Aged Payable`.
|
||||
|
||||
.. _accounting/invoices/profit-and-loss:
|
||||
|
||||
Profit and Loss
|
||||
---------------
|
||||
|
||||
The :ref:`Profit and Loss <accounting/reporting/profit-and-loss>` statement shows details of income
|
||||
and expenses.
|
||||
|
||||
.. _accounting/invoices/balance-sheet:
|
||||
|
||||
Balance sheet
|
||||
-------------
|
||||
|
||||
The balance sheet summarizes your company's liabilities,
|
||||
assets and equity at a specific moment in time.
|
||||
|
||||
.. image:: customer_invoices/invoice15.png
|
||||
|
||||
.. image:: customer_invoices/invoice16.png
|
||||
|
||||
For example, if you manage your inventory using the perpetual accounting
|
||||
method, you should expect a decrease in account "Current Assets" once
|
||||
the material has been shipped to the customer.
|
||||
The :ref:`Balance Sheet <accounting/reporting/balance-sheet>` summarizes the company's assets,
|
||||
liabilities, and equity at a specific time.
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
@@ -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 the company maintain a steady cash flow.
|
||||
can help a 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,15 +17,46 @@ can help the 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 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>`.
|
||||
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".
|
||||
|
||||
.. _cash-discounts/tax-reductions:
|
||||
|
||||
@@ -33,24 +64,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**.
|
||||
to a **tax reduction**. Since tax reductions are set on individual payment terms, each term can use
|
||||
a specific tax reduction.
|
||||
|
||||
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:
|
||||
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:
|
||||
|
||||
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::
|
||||
|
||||
@@ -70,10 +101,10 @@ Never
|
||||
- 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
|
||||
|
||||
@@ -85,10 +116,10 @@ Never
|
||||
- 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
|
||||
|
||||
@@ -100,10 +131,10 @@ Never
|
||||
- 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
|
||||
@@ -112,41 +143,12 @@ Never
|
||||
- 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
|
||||
===========================================
|
||||
|
||||
Apply a cash discount to a customer invoice by selecting the :ref:`payment terms you created
|
||||
On a customer invoice, apply a cash discount 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.
|
||||
|
||||
@@ -154,26 +156,23 @@ 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 sent to the customer.
|
||||
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.
|
||||
|
||||
.. image:: cash_discounts/invoice-print.png
|
||||
: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."
|
||||
: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 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.
|
||||
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.
|
||||
|
||||
.. note::
|
||||
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`
|
||||
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.
|
||||
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 16 KiB |
@@ -21,6 +21,8 @@ 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
|
||||
===================
|
||||
|
||||
@@ -30,7 +32,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:`Add Credit Note`.
|
||||
and click on :guilabel:`Credit Note`.
|
||||
|
||||
You can choose between three options:
|
||||
|
||||
@@ -72,12 +74,15 @@ 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:`Add debit note`, fill in the information, and click :guilabel:`Create`.
|
||||
form view, click :guilabel:`Cog icon (⚙) --> Debit Note`, fill in the information, and click
|
||||
:guilabel:`Create Debit Note`.
|
||||
|
||||
Record a vendor refund
|
||||
======================
|
||||
@@ -86,7 +91,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:`Add Credit Note`.
|
||||
clicking on :guilabel:`Credit Note`.
|
||||
|
||||
Record a debit note
|
||||
===================
|
||||
@@ -94,8 +99,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:`Add debit note`. Fill in the information, and click
|
||||
:guilabel:`Create debit note`.
|
||||
debit note for, and click :guilabel:`Cog icon (⚙) --> Debit Note`. Fill in the information, and click
|
||||
:guilabel:`Create Debit Note`.
|
||||
|
||||
Journal entries
|
||||
===============
|
||||
|
||||
@@ -18,8 +18,13 @@ To specify a sales order's invoice and delivery addresses, first go to :menusele
|
||||
|
||||
On quotations and sales orders, there are now fields for :guilabel:`Invoice Address` and
|
||||
:guilabel:`Delivery Address`. If the customer has an invoice or delivery address listed on their
|
||||
contact record, the corresponding field will use that address by default, but any contact's address
|
||||
can be used instead.
|
||||
:ref:`contact record <sales/send_quotations/contact-form-config>`, the corresponding field uses that
|
||||
address, by default, but any contact's address can be used instead.
|
||||
|
||||
.. seealso::
|
||||
For more information, refer to the documentation on :ref:`Contact Form Configuration
|
||||
<sales/send_quotations/contact-form-config>`.
|
||||
|
||||
|
||||
Invoice and deliver to different addresses
|
||||
==========================================
|
||||
|
||||
@@ -2,194 +2,186 @@
|
||||
Deferred revenues
|
||||
=================
|
||||
|
||||
**Deferred revenues**, or **unearned revenue**, are payments made in advance by customers for
|
||||
products yet to deliver or services yet to render.
|
||||
**Deferred revenues**, or **unearned revenues**, are invoices addressed to customers
|
||||
for goods yet to be delivered or services yet to be rendered.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
Odoo Accounting handles deferred revenues by spreading them in multiple entries that are
|
||||
automatically created in *draft mode* and then posted periodically.
|
||||
Odoo Accounting handles deferred revenues by spreading them in multiple entries that are 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 *draft* to *posted*.
|
||||
you see a change from :guilabel:`Draft` to :guilabel:`Posted`.
|
||||
|
||||
Prerequisites
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Such transactions must be posted on a **Deferred Revenue Account** rather than on the default income
|
||||
account.
|
||||
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:
|
||||
|
||||
Configure a Deferred Revenue Account
|
||||
------------------------------------
|
||||
Journal
|
||||
The deferral entries are posted in this journal.
|
||||
Deferred Revenue
|
||||
Revenues are deferred on this Current Liability account until they are recognized.
|
||||
Generate Entries
|
||||
By default, Odoo :ref:`automatically generates <customer_invoices/deferred/generate_on_validation>`
|
||||
the deferral entries when you post a customer invoice. However, you can also choose to
|
||||
:ref:`generate them manually <customer_invoices/deferred/generate_manually>` by selecting the
|
||||
:guilabel:`Manually & Grouped` option instead.
|
||||
Based on
|
||||
Suppose an invoice of $1200 must be deferred over 12 months.
|
||||
|
||||
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.
|
||||
- The :guilabel:`Months` option accounts for $100 each month prorated to the number of days in
|
||||
that month (e.g., $50 for the first month if the :guilabel:`Start Date` is set to the 15th of
|
||||
the month).
|
||||
|
||||
.. image:: deferred_revenues/deferred_revenues01.png
|
||||
:align: center
|
||||
:alt: Configuration of a Deferred Revenue Account in Odoo Accounting
|
||||
- The :guilabel:`Full Months` option considers each month started to be full (e.g., $100 for the
|
||||
first month even if the :guilabel:`Start Date` is set to the 15th of the month); this means that
|
||||
with the :guilabel:`Full Months` option, a full $100 is recognized in the first partial month,
|
||||
eliminating the need for a 13th month to recognize any remainder as would be the case when using
|
||||
the :guilabel:`Months` option.
|
||||
|
||||
- The :guilabel:`Days` option accounts for different amounts depending on the number of days in
|
||||
each month (e.g., ~$102 for January and ~$92 for February).
|
||||
|
||||
.. _customer_invoices/deferred/generate_on_validation:
|
||||
|
||||
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`. Deferred revenue entries are posted from the invoice
|
||||
date and are displayed in the report accordingly.
|
||||
|
||||
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's accounting date, 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
|
||||
|
||||
.. note::
|
||||
This account's type must be either *Current Liabilities* or *Non-current Liabilities*
|
||||
Only invoices whose accounting date is before the end of the period of the report
|
||||
are taken into account.
|
||||
|
||||
Post an income to the right account
|
||||
-----------------------------------
|
||||
.. _customer_invoices/deferred/generate_manually:
|
||||
|
||||
Select the account on a draft invoice
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Generate grouped deferral entries manually
|
||||
==========================================
|
||||
|
||||
On a draft invoice, select the right account for all the products of which the incomes must be
|
||||
deferred.
|
||||
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.
|
||||
|
||||
.. image:: deferred_revenues/deferred_revenues02.png
|
||||
:align: center
|
||||
:alt: Selection of a Deferred Revenue Account on a draft invoice in Odoo Accounting
|
||||
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:
|
||||
|
||||
Choose a different Income Account for specific products
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
- 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.
|
||||
|
||||
Start editing the product, go to the *Accounting* tab, select the right **Income Account**, and
|
||||
save.
|
||||
.. example::
|
||||
There are two invoices:
|
||||
|
||||
.. image:: deferred_revenues/deferred_revenues03.png
|
||||
:align: center
|
||||
:alt: Change of the Income Account for a product in Odoo
|
||||
- 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
|
||||
|
||||
.. tip::
|
||||
It is possible to automate the creation of revenue entries for these products (see:
|
||||
`Automate the Deferred Revenues`_).
|
||||
In January
|
||||
At the end of January, after clicking the :guilabel:`Generate Entries` button, there are the
|
||||
following entries:
|
||||
|
||||
Change the account of a posted journal item
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
- Entry 1 dated on the 31st January:
|
||||
|
||||
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.
|
||||
- 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)
|
||||
|
||||
.. image:: deferred_revenues/deferred_revenues04.png
|
||||
:align: center
|
||||
:alt: Modification of a posted journal item's account in Odoo Accounting
|
||||
- Entry 2 dated on the 1st February, the reversal of the previous entry:
|
||||
|
||||
Deferred Revenues entries
|
||||
=========================
|
||||
- Line 1: Expense account **1800**
|
||||
- Line 2: Deferred account **-150**
|
||||
- Line 3: Expense account **-1650**
|
||||
|
||||
Create a new entry
|
||||
------------------
|
||||
In February
|
||||
At the end of February, after clicking the :guilabel:`Generate Entries` button, there are the
|
||||
following entries:
|
||||
|
||||
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.
|
||||
- Entry 1 dated on the 28th February:
|
||||
|
||||
To create a new entry, go to :menuselection:`Accounting --> Accounting --> Deferred Revenues`, click
|
||||
on *Create*, and fill out the form.
|
||||
- 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)
|
||||
|
||||
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.
|
||||
- Entry 2 dated on the 1st March, the reversal of the previous entry.
|
||||
|
||||
.. image:: deferred_revenues/deferred_revenues05.png
|
||||
:align: center
|
||||
:alt: Deferred Revenue entry in Odoo Accounting
|
||||
From March to October
|
||||
The same computation is done for each month until October.
|
||||
|
||||
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.
|
||||
In November
|
||||
At the end of November, after clicking the :guilabel:`Generate Entries` button, there are the
|
||||
following entries:
|
||||
|
||||
.. image:: deferred_revenues/deferred_revenues06.png
|
||||
:align: center
|
||||
:alt: Revenue Board in Odoo Accounting
|
||||
- Entry 1 dated on the 30th November:
|
||||
|
||||
What does "Prorata Temporis" mean?
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
- 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)
|
||||
|
||||
The **Prorata Temporis** feature is useful to recognize your revenue the most accurately possible.
|
||||
- Entry 2 dated on the 1st December, the reversal of the previous entry.
|
||||
|
||||
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 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.
|
||||
|
||||
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.
|
||||
In total
|
||||
If we aggregate everything, we would have:
|
||||
|
||||
Deferred Entry from the Sales Journal
|
||||
-------------------------------------
|
||||
- invoice A and invoice B
|
||||
- two entries (one for the deferral and one for the reversal) for each month from January to
|
||||
November
|
||||
|
||||
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>`_
|
||||
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.
|
||||
|
||||
|
After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
@@ -13,71 +13,287 @@ some governments for fiscal control or to facilitate the administration.
|
||||
Electronic invoicing of your documents such as customer invoices, credit notes or vendor bills is
|
||||
one of the application of EDI.
|
||||
|
||||
Odoo supports, among others, the following formats.
|
||||
Odoo supports e-invoicing in many countries. Refer to the country's page for more details:
|
||||
|
||||
.. list-table::
|
||||
:header-rows: 1
|
||||
|
||||
* - Format Name
|
||||
- Applicability
|
||||
* - 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)
|
||||
- For German companies
|
||||
* - Fattura PA (IT)
|
||||
- For Italian companies
|
||||
* - CFDI (4.0)
|
||||
- For Mexican companies
|
||||
* - Peru UBL 2.1
|
||||
- For Peruvian companies
|
||||
* - SII IVA Llevanza de libros registro (ES)
|
||||
- For Spanish companies
|
||||
* - UBL 2.1 (Columbia)
|
||||
- For Colombian companies
|
||||
* - Egyptian Tax Authority
|
||||
- For Egyptian companies
|
||||
* - E-Invoice (IN)
|
||||
- For Indian companies
|
||||
* - NLCIUS (Netherlands)
|
||||
- For Dutch companies
|
||||
* - EHF 3.0
|
||||
- For Norwegian companies
|
||||
* - SG BIS Billing 3.0
|
||||
- For Singaporean companies
|
||||
* - A-NZ BIS Billing 3.0
|
||||
- For Australian/New Zealand companies
|
||||
- :doc:`Argentina <electronic_invoicing/argentina>`
|
||||
- :doc:`Austria <electronic_invoicing/austria>`
|
||||
- :doc:`Belgium <electronic_invoicing/belgium>`
|
||||
- :doc:`Brazil <electronic_invoicing/brazil>`
|
||||
- :doc:`Chile <electronic_invoicing/chile>`
|
||||
- :doc:`Colombia <electronic_invoicing/colombia>`
|
||||
- :doc:`Croatia <electronic_invoicing/croatia>`
|
||||
- :doc:`Denmark <electronic_invoicing/denmark>`
|
||||
- :doc:`Ecuador <electronic_invoicing/ecuador>`
|
||||
- :doc:`Estonia <electronic_invoicing/estonia>`
|
||||
- :doc:`Finland <electronic_invoicing/finland>`
|
||||
- :doc:`France <electronic_invoicing/france>`
|
||||
- :doc:`Germany <electronic_invoicing/germany>`
|
||||
- :doc:`Hungary <electronic_invoicing/hungary>`
|
||||
- :doc:`Ireland <electronic_invoicing/ireland>`
|
||||
- :doc:`Italy <electronic_invoicing/italy>`
|
||||
- :doc:`Latvia <electronic_invoicing/latvia>`
|
||||
- :doc:`Lithuania <electronic_invoicing/lithuania>`
|
||||
- :doc:`Luxembourg <electronic_invoicing/luxembourg>`
|
||||
- :doc:`Mexico <electronic_invoicing/mexico>`
|
||||
- :doc:`Netherlands <electronic_invoicing/netherlands>`
|
||||
- :doc:`Norway <electronic_invoicing/norway>`
|
||||
- :doc:`Peru <electronic_invoicing/peru>`
|
||||
- :doc:`Poland <electronic_invoicing/poland>`
|
||||
- :doc:`Portugal <electronic_invoicing/portugal>`
|
||||
- :doc:`Romania <electronic_invoicing/romania>`
|
||||
- :doc:`Slovenia <electronic_invoicing/slovenia>`
|
||||
- :doc:`Spain <electronic_invoicing/spain>`
|
||||
- :doc:`Spain - Basque Country <electronic_invoicing/basque_country>`
|
||||
- :doc:`Uruguay <electronic_invoicing/uruguay>`
|
||||
|
||||
.. seealso::
|
||||
:ref:`fiscal_localizations/packages`
|
||||
:doc:`Fiscal localizations documentation <../../fiscal_localizations>`
|
||||
|
||||
.. _e-invoicing/configuration:
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
Go to :menuselection:`Accounting --> Configuration --> Journals --> Customer Invoices --> Advanced
|
||||
Settings --> Electronic Invoicing` and enable the formats you need for this journal.
|
||||
By default, the format available in the :ref:`send window <e-invoicing/generation>` depends on your
|
||||
customer's country.
|
||||
|
||||
.. image:: electronic_invoicing/formats.png
|
||||
:align: center
|
||||
:alt: Select the EDI format you need
|
||||
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.
|
||||
|
||||
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.
|
||||
.. 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 and receive 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`. If you do not have the
|
||||
Peppol module installed, first tick the :guilabel:`Enable PEPPOL` checkbox and then **manually
|
||||
save**. Click :guilabel:`Start sending via Peppol` to open the registration form.
|
||||
|
||||
.. note::
|
||||
- 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.
|
||||
This registration form also pops up if you choose to :guilabel:`Send & Print` an
|
||||
invoice via Peppol without completing the registration process.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-registration-settings.png
|
||||
:alt: Peppol registration button
|
||||
|
||||
You can register either as a sender or a receiver. A sender can only send invoices and credit notes
|
||||
on Odoo via Peppol, without ever registering as a Peppol participant on Odoo SMP. If you have an
|
||||
existing Peppol registration elsewhere that you want to keep, but want to send invoices from your
|
||||
Odoo database and receive other documents in another software, register as a **sender**.
|
||||
|
||||
.. tip::
|
||||
- You can always register as a sender first and register to receive documents later.
|
||||
- When registering, you can specify if you would also like to receive documents.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-registration-wizard.png
|
||||
:alt: Peppol registration form
|
||||
|
||||
Fill in the following information:
|
||||
|
||||
- Check the receiver box if you want to register on Odoo SMP. If you are migrating from another
|
||||
service provider, insert the :guilabel:`Migration key` from the previous provider (the field
|
||||
becomes visible after you tick the checkbox).
|
||||
- :guilabel:`E-Address Scheme`: the Peppol Electronic Address Scheme 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:`Endpoint`: this is usually a Company Registry number or a VAT number.
|
||||
- :guilabel:`Phone`: phone number including the country code (e.g., `+32` in Belgium).
|
||||
- :guilabel:`Email`: this is the email Odoo can use to contact you regarding your Peppol
|
||||
registration.
|
||||
|
||||
If you want to explore or demo Peppol, you can choose to register in :guilabel:`Demo` mode.
|
||||
Otherwise, select :guilabel:`Live`.
|
||||
|
||||
.. tip::
|
||||
- Selecting :guilabel:`Demo` simulates everything in Odoo. There is no sending, receiving, or
|
||||
partner verification.
|
||||
- For **advanced users only**, it is possible to run tests on Peppol's test network. The server
|
||||
allows to register on Peppol and send/receive test invoices to/from other participants.
|
||||
To do so, enable the :ref:`developer-mode`, open the **Settings** app, go to
|
||||
:menuselection:`Technical --> System Parameters`, and search for `account_peppol.edi.mode`.
|
||||
Click the parameter and change the :guilabel:`Value` to `test`. Go back to the Peppol setup
|
||||
menu in the **Settings** app. The option :guilabel:`Test` is now available.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-system-parameter.png
|
||||
:alt: Peppol test mode parameter
|
||||
|
||||
.. 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)
|
||||
|
||||
When set up, request a verification code to be sent to you by clicking :guilabel:`Send a
|
||||
registration code by SMS`. A text message containing a code is sent to the phone number provided to
|
||||
finalize the verification process.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-phone-verification.png
|
||||
:alt: phone validation
|
||||
|
||||
Once you enter the code and click :guilabel:`Register`, your Peppol participant status is updated.
|
||||
If you chose to only send documents, then the status changes to :guilabel:`Can send but
|
||||
not receive`.
|
||||
If you opted to receive documents as well, the status changes to :guilabel:`Can send, pending
|
||||
registration to receive`. In that case, it should be automatically activated within a day.
|
||||
|
||||
Then, set the default journal for receiving vendor bills in the :guilabel:`Incoming Invoices
|
||||
Journal`.
|
||||
|
||||
.. tip::
|
||||
To manually trigger the cron that checks the registration status, enable the
|
||||
:ref:`developer-mode`, then go to :menuselection:`Settings --> Technical --> Scheduled Actions`,
|
||||
and search for the :guilabel:`PEPPOL: update participant status` action.
|
||||
|
||||
Your receiver application status should be updated soon after you are registered on the Peppol
|
||||
network.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-receiver.png
|
||||
:alt: receiver application
|
||||
|
||||
All invoices and vendor bills can now be sent directly using the Peppol network.
|
||||
|
||||
.. important::
|
||||
To update the email that Odoo can use to contact you, modify the email and click
|
||||
:guilabel:`Update contact details`.
|
||||
|
||||
Configure Peppol services
|
||||
-------------------------
|
||||
|
||||
Once you are registered on Odoo SMP, the :guilabel:`Configure Peppol Services` button
|
||||
becomes visible to allow you to enable or disable document formats that other participants
|
||||
can send you via Peppol. By default, all document formats supported by Odoo are enabled (depending
|
||||
on the installed modules).
|
||||
|
||||
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.
|
||||
|
||||
It is possible to verify the Peppol participant status of several customers at once.
|
||||
To do so, go to :menuselection:`Accounting --> Customers --> Customers` and switch to the list view.
|
||||
Select the customers you want to verify and then click :menuselection:`Actions --> Verify Peppol`.
|
||||
|
||||
If the participant is registered on the Peppol network but cannot receive the format you selected
|
||||
for them, the :guilabel:`Peppol endpoint validity` label changes to :guilabel:`Cannot
|
||||
receive this format`.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-participant-format.png
|
||||
:alt: verify contact ubl format
|
||||
|
||||
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
|
||||
|
||||
Posted invoices that can be sent via Peppol are marked as :guilabel:`Peppol Ready`.
|
||||
To display them, use the :guilabel:`Peppol Ready` filter or access the Accounting dashboard and
|
||||
click :guilabel:`Peppol ready invoices` on the corresponding sales journal.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-ready-invoices.png
|
||||
:alt: Filter Peppol ready invoices
|
||||
|
||||
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.
|
||||
|
||||
A cron runs regularly to check the status of these invoices. It is possible to check the status
|
||||
before the cron runs by clicking :guilabel:`Fetch Peppol invoice status` in the corresponding
|
||||
sales journal on the Accounting dashboard.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-fetch-message-status.png
|
||||
:alt: Fetch invoice Peppol status
|
||||
|
||||
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
|
||||
|
||||
If you want to retrieve incoming Peppol documents before the cron runs, you can do so from the
|
||||
Accounting dashboard on the main Peppol purchase journal that you set up in the settings. Just click
|
||||
:guilabel:`Fetch from Peppol`.
|
||||
|
||||
.. image:: electronic_invoicing/peppol-fetch-bills.png
|
||||
:alt: Fetch bills from Peppol
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
:orphan:
|
||||
|
||||
======================================
|
||||
Odoo electronic invoicing in Argentina
|
||||
======================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Argentina's regulatory standards and compatible with the requirements set
|
||||
forth by the `Administración Federal de Ingresos Públicos (AFIP) <https://www.afip.gob.ar/>`_.
|
||||
|
||||
Legal framework for e-invoicing in Argentina
|
||||
============================================
|
||||
|
||||
In Argentina, e-invoicing is regulated by the :abbr:`AFIP (Administración Federal de Ingresos
|
||||
Públicos)` and is mandatory for most businesses to ensure tax compliance and transparency. The
|
||||
primary regulations governing e-invoicing include:
|
||||
|
||||
- `General Resolution No. 4290/2018 <https://biblioteca.afip.gob.ar/search/query/norma.aspx?p=t:RAG|n:4290|o:3|a:2018|f:02/08/2018>`_
|
||||
which establishes the mandatory use of electronic invoices for specific economic activities and
|
||||
turnover thresholds.
|
||||
- Fiscal code regulations: Requires electronic invoices for all VAT-registered businesses, including
|
||||
B2B, :abbr:`B2G (business-to-government)`, and B2C transactions.
|
||||
- Implementation of :abbr:`CAE (Código de Autorización Electrónico)`: Every electronic invoice must
|
||||
include a :abbr:`CAE (Código de Autorización Electrónico)` issued by the :abbr:`AFIP
|
||||
(Administración Federal de Ingresos Públicos)`, ensuring its validity and authenticity.
|
||||
|
||||
Compliance with Argentinian e-invoicing regulations
|
||||
===================================================
|
||||
|
||||
Odoo Invoicing simplifies the process of adhering to Argentina's e-invoicing regulations, offering
|
||||
features designed to ensure compliance:
|
||||
|
||||
- **Supported formats**: Odoo supports Argentina's authorized e-invoice formats, including :abbr:`FE
|
||||
(Factura Electrónica)` with :abbr:`AFIP (Administración Federal de Ingresos Públicos)`-compliant
|
||||
digital validation, XML with :abbr:`CAE (Código de Autorización Electrónico)` authorization for
|
||||
real-time integration with :abbr:`AFIP (Administración Federal de Ingresos Públicos)`, and
|
||||
digitally signed PDF invoices featuring :abbr:`CAE (Código de Autorización Electrónico)` and
|
||||
QR codes for secure validation.
|
||||
- **Secure storage and retrieval**: Complying with Argentina’s ten-year storage requirement, Odoo
|
||||
provides tamper-proof archiving and easy retrieval for audits or tax inspections.
|
||||
- **Automatic VAT calculation and reporting**: Odoo ensures compliance with Argentina's VAT
|
||||
regulations by automatically calculating VAT, incorporating it into invoices, and adhering to
|
||||
legal reporting requirements for accurate tax submissions.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Argentinian fiscal localization documentation <../../../fiscal_localizations/argentina>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Argentine e-invoicing laws and how Odoo’s invoicing
|
||||
module supports compliance with AFIP regulations and the Fiscal Code. It is not intended as legal
|
||||
advice. We recommend consulting with a tax advisor or legal professional familiar with
|
||||
Argentinian e-invoicing regulations to ensure compliance tailored to your specific business
|
||||
needs.
|
||||
@@ -0,0 +1,52 @@
|
||||
:orphan:
|
||||
|
||||
====================================
|
||||
Odoo electronic invoicing in Austria
|
||||
====================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to Austria's regulatory standards, and compatible with the European `Peppol
|
||||
<https://peppol.org/about/>`_ framework.
|
||||
|
||||
Legal framework for e-invoicing in Austria
|
||||
==========================================
|
||||
|
||||
In Austria, businesses must adhere to e-invoicing laws that ensure secure, authentic, and storable
|
||||
transactions. The main regulation governing e-invoicing requirements in Austria is the `Austrian VAT
|
||||
Act (UStG) <https://www.ris.bka.gv.at/GeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10004873>`_
|
||||
and its related e-invoicing standards for public procurement (`BGBI. I Nr. 32/2019 <https://360.lexisnexis.at/d/rechtsnorm-ris/32_bundesgesetz_mit_dem_das_beamten_dienstrechtsge/b_bgbl_2019_2019_I_32_46c550bf37>`_),
|
||||
which aligns with `EU Directive 2014/55/EU <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32014L0055>`_.
|
||||
These laws mandate that all businesses engaged in :abbr:`B2G (business-to-government)` transactions
|
||||
must use e-invoicing, and increasingly, e-invoicing is encouraged for B2B transactions to improve
|
||||
tax compliance and transparency.
|
||||
|
||||
Compliance with Austrian e-invoicing regulations
|
||||
================================================
|
||||
|
||||
Odoo Invoicing makes it easy for businesses to send, store, and ensure the integrity of their
|
||||
invoices. Here is how Odoo ensures compliance:
|
||||
|
||||
- **Supported format**: Odoo supports standard e-invoice formats such as PDF with digital signatures
|
||||
and XML in :abbr:`UBL (Universal Business Language)` format, which are fully compatible with
|
||||
e-rechnung.gv.at, Austria's central electronic invoicing platform for public procurement
|
||||
transactions. Any platform can be used if connected to the authentication services of the Federal
|
||||
Service Portal (:abbr:`USP (Unternehmensserviceportal)`) e-rechnung.gv.at for e-invoicing
|
||||
transmission.
|
||||
- **Secure storage and retrieval**: In accordance with the Austrian requirement to store invoices
|
||||
for a minimum of seven years, Odoo securely archives all invoices in a tamper-proof system,
|
||||
ensuring that they can be easily retrieved during audits.
|
||||
- **Automatic VAT calculation and reporting**: Odoo Invoicing helps businesses stay in line with
|
||||
Austrian VAT requirements by automatically calculating and including VAT in invoices and ensuring
|
||||
that each invoice follows the legal format for B2B and :abbr:`B2G (business-to-government)`
|
||||
transactions.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Austria fiscal localization documentation <../../../fiscal_localizations/austria>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides an overview of Austrian e-invoicing laws and how Odoo Invoicing supports
|
||||
compliance with the Austrian VAT Act (UStG) and related regulations. It does does not constitute
|
||||
legal advice. We recommend consulting with a tax advisor or legal professional familiar with
|
||||
Austrian e-invoicing regulations to ensure full compliance tailored to your specific business
|
||||
requirements.
|
||||
@@ -0,0 +1,50 @@
|
||||
:orphan:
|
||||
|
||||
===============================================
|
||||
Odoo electronic invoicing in the Basque Country
|
||||
===============================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Basque Country's regulatory standards.
|
||||
|
||||
Legal framework for e-invoicing in the Basque Country
|
||||
=====================================================
|
||||
|
||||
In the Basque Country, electronic invoicing is governed by Spanish national legislation and regional
|
||||
implementations, including the `Ley de Facturación Electrónica <https://www.facturae.gob.es/face/Paginas/FACE.aspx>`_
|
||||
and compliance with `EU Directive 2014/55/EU <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32014L0055>`_.
|
||||
For :abbr:`B2G (business-to-government)` transactions, e-invoicing is mandatory, and suppliers must
|
||||
submit e-invoices through the FACe platform or the regional system, e-Factura Euskadi, specifically
|
||||
designed for the Basque Country. These platforms ensure the secure submission of invoices to public
|
||||
administrations. While B2B e-invoicing is not yet mandatory, its use is growing, supported by the
|
||||
implementation of the TicketBAI system, which is specific to the Basque Country and promotes tax
|
||||
transparency.
|
||||
|
||||
Compliance with Basque e-invoicing regulations
|
||||
==============================================
|
||||
|
||||
Odoo Invoicing is fully prepared to help businesses meet the Basque Country's e-invoicing
|
||||
requirements while complying with broader Spanish and EU standards. Here is how Odoo ensures
|
||||
compliance:
|
||||
|
||||
- **Supported formats**: Odoo supports formats such as Facturae XML, required for compliance with
|
||||
the FACe and e-Factura Euskadi platforms. Additionally, Odoo integrates with the TicketBAI system,
|
||||
ensuring all invoices meet the technical and legal standards for secure submission to tax
|
||||
authorities. Odoo enables businesses to submit e-invoices seamlessly to the FACe platform for
|
||||
national compliance and the e-Factura Euskadi system for regional public administration
|
||||
transactions. Furthermore, Odoo supports compliance with the TicketBAI initiative, specific to the
|
||||
Basque Country.
|
||||
- **Secure storage and retrieval**: In accordance with regulations requiring invoices to be stored
|
||||
for a minimum of 6 years, Odoo provides a secure, tamper-proof archive for all invoices, allowing
|
||||
easy access for audits and tax reviews.
|
||||
- **Automatic VAT calculation and reporting**: Odoo Invoicing automates VAT calculations, ensuring
|
||||
invoices adhere to Basque Country VAT requirements for B2G and B2B transactions while facilitating
|
||||
compliance with the SII (Immediate Supply of Information) system for real-time VAT reporting.
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides an overview of e-invoicing laws in the Basque Country and how Odoo Invoicing
|
||||
supports compliance with the Ley de Facturación Electrónica, e-Factura Euskadi, TicketBAI system,
|
||||
and FACe platform. It is not intended as legal advice. We recommend consulting with a tax advisor
|
||||
or legal professional familiar with e-invoicing regulations in the Basque Country to ensure
|
||||
compliance tailored to your specific business needs.
|
||||
@@ -0,0 +1,53 @@
|
||||
:orphan:
|
||||
|
||||
====================================
|
||||
Odoo electronic invoicing in Belgium
|
||||
====================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to Belgium's regulatory standards, and compatible with the European `Peppol
|
||||
<https://peppol.org/about/>`_ framework.
|
||||
|
||||
Legal framework for e-invoicing in Belgium
|
||||
==========================================
|
||||
|
||||
In Belgium, businesses must adhere to e-invoicing laws that ensure secure, authentic, and storable
|
||||
transactions. The primary regulation governing e-invoicing requirements in Belgium is the `Belgian
|
||||
VAT Code <https://finances.belgium.be/fr/sur_le_spf/r%C3%A9glementation/r%C3%A9glementation-2023/tva>`_
|
||||
and its related `e-invoicing standards for public procurement <https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&sum_date=&pd_search=2023-09-21&numac_search=2023045155&page=1&lg_txt=F&caller=list&2023045155=0&trier=promulgation&fr=f&nm_ecran=2023045155&choix1=et&choix2=et>`_,
|
||||
which align with `EU Directive 2014/55/EU <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32014L0055>`_.
|
||||
These laws mandate that all businesses engaged in :abbr:`B2G (business-to-government)` transactions
|
||||
must use e-invoicing via Mercurius, Belgium's official electronic invoicing platform for public
|
||||
procurement transactions. Additionally, Belgium is part of the Peppol network, which provides a
|
||||
standardized framework for cross-border e-invoicing across Europe. Increasingly, e-invoicing is also
|
||||
encouraged for B2B transactions to enhance tax compliance and transparency.
|
||||
|
||||
Compliance with Belgian e-invoicing regulations
|
||||
===============================================
|
||||
|
||||
Odoo Invoicing makes it easy for businesses to send, store, and ensure the integrity of their
|
||||
invoices. Here is how Odoo ensures compliance:
|
||||
|
||||
- **Peppol-compliant formats**: Odoo supports the standardized XML (:abbr:`UBL (Universal Business
|
||||
Language)`) format for Peppol, ensuring compliance with both Belgian and European e-invoicing
|
||||
standards. This ensures your invoices meet the legal requirements for public procurement in
|
||||
Belgium and other EU countries. Odoo enables businesses to send e-invoices directly to government
|
||||
entities in compliance with Belgian regulations through Belgium’s Mercurius platform for public
|
||||
procurement.
|
||||
- **Secure storage and retrieval**: In accordance with Belgian requirements to store invoices for a
|
||||
minimum of seven years, Odoo securely archives all invoices in a tamper-proof system, ensuring
|
||||
that they can be easily retrieved during audits.
|
||||
- **Automatic VAT calculation and reporting**: Odoo Invoicing helps businesses comply with Belgian
|
||||
VAT requirements by automatically calculating and including VAT in invoices and ensuring that each
|
||||
invoice follows the legal format for B2B and :abbr:`B2G (business-to-government)` transactions.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Belgium fiscal localization documentation <../../../fiscal_localizations/belgium>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides an overview of Belgian e-invoicing laws and how Odoo Invoicing supports
|
||||
compliance with the Belgian VAT Code, Peppol standards, and related regulations. It does not
|
||||
constitute legal advice. We recommend consulting with a tax advisor or legal professional
|
||||
familiar with Belgian e-invoicing regulations to ensure full compliance tailored to your specific
|
||||
business requirements.
|
||||
@@ -0,0 +1,53 @@
|
||||
:orphan:
|
||||
|
||||
===================================
|
||||
Odoo electronic invoicing in Brazil
|
||||
===================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Brazil's regulatory standards and compatible with the requirements set
|
||||
forth by the `Secretaria da Fazenda (SEFAZ) <https://www.gov.br/receitafederal/pt-br>`_.
|
||||
|
||||
Legal framework for e-invoicing in Brazil
|
||||
=========================================
|
||||
|
||||
In Brazil, e-invoicing is highly regulated and mandatory for most businesses to ensure tax
|
||||
compliance and transparency. The key regulations governing e-invoicing include:
|
||||
|
||||
- :abbr:`NF-e (Nota Fiscal Eletrônica)`: A mandatory e-invoice for goods and services used in B2B
|
||||
and :abbr:`B2G (business-to-government)` transactions.
|
||||
- :abbr:`CT-e (Conhecimento de Transporte Eletrônico)`: Specific to freight and logistics services.
|
||||
- :abbr:`NFS-e (Nota Fiscal de Serviços Eletrônica)`: Issued for service-based transactions, with
|
||||
implementation varying by municipality.
|
||||
- Integration with :abbr:`SEFAZ (Secretaria da Fazenda)`: Every electronic invoice must be
|
||||
authorized by :abbr:`SEFAZ (Secretaria da Fazenda)` and issued with a unique authorization code
|
||||
(Autorização de Uso).
|
||||
|
||||
Compliance with Brazilian e-invoicing regulations
|
||||
=================================================
|
||||
|
||||
Odoo Invoicing simplifies the process of adhering to Brazil’s complex e-invoicing regulations,
|
||||
offering features designed to ensure compliance:
|
||||
|
||||
- **Supported formats**: Odoo supports Brazil's authorized e-invoice formats, including :abbr:`NF-e
|
||||
(Nota Fiscal Eletrônica)` for goods and services compliant with :abbr:`SEFAZ (Secretaria da
|
||||
Fazenda)`, :abbr:`NFS-e (Nota Fiscal de Serviços Eletrônica)` customizable for municipal
|
||||
requirements, :abbr:`CT-e (Conhecimento de Transporte Eletrônico)` for logistics and
|
||||
transportation, and digital PDF invoices with :abbr:`SEFAZ (Secretaria da Fazenda)` authorization
|
||||
codes and QR codes.
|
||||
- **Secure storage and retrieval**: Complying with Brazil's five-year storage requirement, Odoo
|
||||
offers tamper-proof archiving for easy retrieval during audits or inspections.
|
||||
- **Automatic tax calculation and reporting**: Odoo automates tax calculations for ICMS, IPI, and
|
||||
ISS, ensuring compliance with regional tax rules and generating reports compatible with
|
||||
:abbr:`SEFAZ (Secretaria da Fazenda)` and municipal requirements.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Brazilian fiscal localization documentation <../../../fiscal_localizations/brazil>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Brazilian e-invoicing laws and how Odoo’s invoicing
|
||||
module supports compliance with :abbr:`SEFAZ (Secretaria da Fazenda)` regulations. It is not
|
||||
intended as legal advice. We recommend consulting with a tax advisor or legal professional
|
||||
familiar with Brazilian e-invoicing regulations to ensure compliance tailored to your specific
|
||||
business needs.
|
||||
@@ -0,0 +1,51 @@
|
||||
:orphan:
|
||||
|
||||
==================================
|
||||
Odoo electronic invoicing in Chile
|
||||
==================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Chile's regulatory requirements and compatible with standards set by the
|
||||
`Servicio de Impuestos Internos (SII) <https://homer.sii.cl/>`_.
|
||||
|
||||
Legal framework for e-invoicing in Chile
|
||||
========================================
|
||||
|
||||
Chile is a pioneer in mandatory electronic invoicing, with comprehensive regulations to ensure tax
|
||||
compliance and enhance transparency. Key elements include:
|
||||
|
||||
- **Factura Electrónica**: Mandatory for most businesses to issue invoices digitally through the
|
||||
:abbr:`SII (Servicio de Impuestos Internos)`'s system.
|
||||
- **Boleta Electrónica**: Required for retail transactions to report sales and tax information.
|
||||
- **Guía de Despacho Electrónica**: Necessary for tracking the transport of goods.
|
||||
- **Integration with SII**: All electronic invoices must be validated by the :abbr:`SII (Servicio
|
||||
de Impuestos Internos)`, assigned a unique Folio authorization code, and reported for tax
|
||||
purposes.
|
||||
|
||||
Compliance with Chilean e-invoicing regulations
|
||||
===============================================
|
||||
|
||||
Odoo Invoicing simplifies adherence to Chile's e-invoicing requirements with features designed to
|
||||
ensure compliance:
|
||||
|
||||
- **Supported formats**: Odoo supports all major Chilean e-invoice formats, including Factura
|
||||
Electrónica, Boleta Electrónica, and Guía de Despacho Electrónica, ensuring :abbr:`SII (Servicio
|
||||
de Impuestos Internos)` compatibility with digital validation and Folio assignment.
|
||||
- **Integration with SII**: Odoo seamlessly connects with :abbr:`SII (Servicio de Impuestos
|
||||
Internos)`'s systems, automating invoice submission and ensuring real-time validation for
|
||||
compliant issuance.
|
||||
- **Secure storage and retrieval**: Complying with Chile's mandatory storage period of six years,
|
||||
Odoo provides tamper-proof archiving for invoices, enabling easy access for audits or tax
|
||||
inspections.
|
||||
- **Automatic tax calculation and reporting**: Odoo automates calculations for VAT (IVA) and other
|
||||
applicable taxes, ensuring accurate invoicing and adherence to Chile's tax reporting standards.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Chilean fiscal localization documentation <../../../fiscal_localizations/chile>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Chilean e-invoicing laws and how Odoo supports
|
||||
compliance with :abbr:`SII (Servicio de Impuestos Internos)` regulations. It is not intended as
|
||||
legal or tax advice. We recommend consulting a tax advisor or legal professional familiar with
|
||||
Chilean e-invoicing regulations to ensure compliance tailored to your specific business needs.
|
||||
@@ -0,0 +1,51 @@
|
||||
:orphan:
|
||||
|
||||
=====================================
|
||||
Odoo electronic invoicing in Colombia
|
||||
=====================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to meet Colombia's regulatory requirements and fully compatible with the
|
||||
guidelines established by the `Dirección de Impuestos y Aduanas Nacionales (DIAN)
|
||||
<https://www.dian.gov.co/>`_.
|
||||
|
||||
Legal framework for e-invoicing in Colombia
|
||||
===========================================
|
||||
|
||||
Colombia has implemented mandatory e-invoicing for most businesses to enhance tax compliance and
|
||||
improve transparency. Key elements include:
|
||||
|
||||
- **Factura Electrónica**: Mandatory for B2B, B2C, and :abbr:`B2G (business-to-government)`
|
||||
transactions, requiring compliance with :abbr:`DIAN (Dirección de Impuestos y Aduanas
|
||||
Nacionales)`'s technical specifications.
|
||||
- **Integration with DIAN**: All electronic invoices must be submitted to :abbr:`DIAN (Dirección de
|
||||
Impuestos y Aduanas Nacionales)` for validation, where they are assigned a unique :abbr:`CUFE
|
||||
(Código Único de Factura Electrónica)` authorization code.
|
||||
- **Adoption of XML Standards**: Colombian e-invoicing uses XML as the standard format for
|
||||
electronic invoices, ensuring interoperability and standardized reporting.
|
||||
|
||||
Compliance with Colombian e-invoicing regulations
|
||||
=================================================
|
||||
|
||||
Odoo Invoicing simplifies the complexities of e-invoicing compliance in Colombia, offering tailored
|
||||
features:
|
||||
|
||||
- **Supported formats**: Odoo supports Factura Electrónica in :abbr:`DIAN (Dirección de Impuestos y
|
||||
Aduanas Nacionales)`-compliant XML formats, including legally required :abbr:`CUFE (Código Único
|
||||
de Factura Electrónica)` codes and additional fields for B2B, B2C, and :abbr:`B2G
|
||||
(business-to-government)` transactions.
|
||||
- **Secure storage and retrieval**: In compliance with Colombia's six-year mandatory storage
|
||||
requirement, Odoo provides tamper-proof invoice archiving, ensuring easy access for audits or
|
||||
inspections.
|
||||
- **Automatic tax calculation and reporting**: Odoo automates tax calculations for VAT (IVA) and
|
||||
other applicable taxes, ensuring accuracy and compliance with DIAN's tax reporting standards.
|
||||
|
||||
.. seealso::
|
||||
:doc:`Colombian fiscal localization documentation <../../../fiscal_localizations/colombia>`
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides a general overview of Colombian e-invoicing regulations and how Odoo supports
|
||||
compliance with DIAN requirements. It is not intended as legal or tax advice. We recommend
|
||||
consulting with a tax advisor or legal professional familiar with Colombian e-invoicing
|
||||
regulations to ensure compliance tailored to your specific business needs.
|
||||
@@ -0,0 +1,50 @@
|
||||
:orphan:
|
||||
|
||||
====================================
|
||||
Odoo electronic invoicing in Croatia
|
||||
====================================
|
||||
|
||||
Odoo Invoicing is our trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to Croatia's regulatory standards.
|
||||
|
||||
Legal framework for e-invoicing in Croatia
|
||||
==========================================
|
||||
|
||||
In Croatia, businesses must comply with e-invoicing regulations to ensure secure, authentic, and
|
||||
storable transactions. The main legal framework governing e-invoicing in Croatia is the
|
||||
Fiscalization Act and its related requirements for public procurement, which are aligned with `EU
|
||||
Directive 2014/55/EU <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32014L0055>`_ on
|
||||
e-invoicing in public procurement. Under these regulations, all businesses involved in :abbr:`B2G
|
||||
(business-to-government)` transactions are required to use electronic invoicing via the :abbr:`CIS
|
||||
(Central Invoice System)`, Croatia’s official platform for public sector e-invoicing. Croatia is
|
||||
also part of the Peppol network, facilitating standardized cross-border e-invoicing within the
|
||||
European Union. Furthermore, e-invoicing is increasingly encouraged for B2B transactions, promoting
|
||||
greater transparency and tax compliance.
|
||||
|
||||
Compliance with Croatian e-invoicing regulations
|
||||
================================================
|
||||
|
||||
Odoo Invoicing makes it easy for businesses to send, store, and ensure the integrity of their
|
||||
invoices. Here is how Odoo ensures compliance:
|
||||
|
||||
- **Supported formats**: Odoo supports standard e-invoice formats, such as PDF with digital
|
||||
signatures and XML in :abbr:`UBL (Universal Business Language)` format, which are fully compatible
|
||||
with Croatia's :abbr:`CIS (Central Invoice System)` for public procurement transactions.
|
||||
Additionally, Odoo enables transmission of e-invoices through any platform connected to the Peppol
|
||||
network, as the *Servis eRačun za državu* reached via Peppol, ensuring compliance with both
|
||||
Croatian and EU standards.
|
||||
- **Secure storage and retrieval**: In accordance with Croatian regulations to store invoices for a
|
||||
minimum of eleven years, Odoo securely archives all invoices in a tamper-proof system, ensuring
|
||||
they can be easily retrieved during audits.
|
||||
- **Automatic VAT calculation and reporting**: Odoo Invoicing helps businesses stay in line with
|
||||
Croatian VAT requirements by automatically calculating and including VAT in invoices and ensuring
|
||||
that each invoice follows the legal format for both B2B and :abbr:`B2G (business-to-government)`
|
||||
transactions.
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides an overview of Croatian e-invoicing laws and how Odoo Invoicing supports
|
||||
compliance with the Fiscalization Act, Peppol standards, and other relevant regulations. It does
|
||||
not constitute legal adviceWe recommend consulting with a tax advisor or legal professional
|
||||
familiar with Croatian e-invoicing regulations to ensure compliance tailored to your specific
|
||||
business needs.
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,47 @@
|
||||
:orphan:
|
||||
|
||||
====================================
|
||||
Odoo electronic invoicing in Denmark
|
||||
====================================
|
||||
|
||||
Odoo Invoicing is your trusted partner for safe, efficient, and legally compliant e-invoicing
|
||||
solutions tailored to Denmark's regulatory standards.
|
||||
|
||||
Legal framework for e-invoicing in Denmark
|
||||
==========================================
|
||||
|
||||
In Denmark, e-invoicing is governed by `EU Directive 2014/55/EU <https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32014L0055>`_,
|
||||
mandating the use of e-invoicing for :abbr:`B2G (business-to-government)` transactions. Danish
|
||||
public sector entities require invoices to be submitted through NemHandel, the national e-invoicing
|
||||
platform, using the OIOUBL format (a local version of :abbr:`UBL (Universal Business Language)` and
|
||||
XML). Denmark is also a key member of the Peppol network, enabling streamlined, standardized, and
|
||||
secure cross-border e-invoicing for transactions within the European Union. While e-invoicing is not
|
||||
mandatory for B2B transactions, its adoption is growing as businesses seek greater efficiency and
|
||||
compliance.
|
||||
|
||||
Compliance with Danish e-invoicing regulations
|
||||
==============================================
|
||||
|
||||
Odoo Invoicing makes it easy for businesses to send, store, and ensure the integrity of their
|
||||
invoices. Here is how Odoo ensures compliance:
|
||||
|
||||
- **Supported formats**: Odoo supports OIOUBL, which is required for public sector invoicing via
|
||||
NemHandel. It also supports UBL XML for transactions through the Peppol network, ensuring
|
||||
compatibility with Denmark’s and Europe’s e-invoicing standards. Odoo enables businesses to send
|
||||
e-invoices through NemHandel, directly to Danish public entities in the required format. For
|
||||
international transactions, Odoo ensures compatibility with Peppol Access Points,
|
||||
facilitating cross-border invoicing.
|
||||
- **Secure storage and retrieval**: In line with Danish regulations, which require businesses to
|
||||
store invoices for at least five years, Odoo securely archives all invoices in a tamper-proof
|
||||
system, ensuring easy access for audits and compliance checks.
|
||||
- **Automatic VAT calculation and reporting**: Odoo Invoicing automates VAT calculations and
|
||||
ensures invoices are formatted to meet Denmark’s legal requirements for B2G and B2B transactions,
|
||||
helping businesses comply with local tax laws.
|
||||
|
||||
.. admonition:: Disclaimer
|
||||
|
||||
This page provides an overview of Danish e-invoicing laws and how Odoo Invoicing supports
|
||||
compliance with NemHandel, OIOUBL standards, Peppol standards, and other relevant regulations. It
|
||||
does not constitute legal advice. We recommend consulting with a tax advisor or legal
|
||||
professional familiar with Danish e-invoicing regulations to ensure compliance tailored to your
|
||||
specific business needs.
|
||||