Compare commits
1651 Commits
om_account
...
16.0
| Author | SHA1 | Date | |
|---|---|---|---|
| a3bde81378 | |||
| 86d79da36b | |||
| 425b6ee820 | |||
| 310c606270 | |||
| 2b70b8beb7 | |||
| 25daae9eef | |||
| 10ee25b1ac | |||
| ea03d56c8e | |||
| 96a2438b13 | |||
| 46b73edadf | |||
| 7d35b4a377 | |||
| bd4df2fc3e | |||
| 6991e4956c | |||
| 807c474af4 | |||
| 62e3b75c64 | |||
| a875de6ab9 | |||
| adf867464e | |||
| 9ed6dddba1 | |||
| 45bacfa973 | |||
| ebade46d0a | |||
| f63282ef6d | |||
| 9fe857ebd7 | |||
| f37d7240fc | |||
| 6376ea081d | |||
| 1ff139ba75 | |||
| 6d40e0caa6 | |||
| be10c7bdd8 | |||
| 8b0af310fc | |||
| a1145a7773 | |||
| 773a390bed | |||
| 5c61e3dfad | |||
| f7a44ace9e | |||
| c688b17afb | |||
| d7337681f6 | |||
| 44f11fa3ab | |||
| 204c353b16 | |||
| b0e561d572 | |||
| f2423bd49d | |||
| 5520ca5d4f | |||
| e5f4d4483e | |||
| dcc929a326 | |||
| 87828837c6 | |||
| 71cf5380ff | |||
| a592f6cc70 | |||
| 4c8d4f5f7d | |||
| ac1a9b8cdc | |||
| ce13daaa58 | |||
| 20540056fa | |||
| 3f481c75d4 | |||
| 5b59a07033 | |||
| 8b1fb96368 | |||
| 5c8f90ff77 | |||
| 0667f24bd7 | |||
| 54ac099597 | |||
| 7341099882 | |||
| cc78bca1dc | |||
| 734b356286 | |||
| 4dd14c3fa0 | |||
| b29092491b | |||
| 255ec20637 | |||
| b70114419a | |||
| 4e5ceb11fb | |||
| ab4ea51bff | |||
| 02fc2bbc84 | |||
| 7aa2cf424a | |||
| 5e6726ee08 | |||
| f6f43fbca2 | |||
| e161f17642 | |||
| c661356c1f | |||
| 2001a64180 | |||
| 99d1daa1e8 | |||
| fa1a7d42e1 | |||
| 6d90045065 | |||
| 88f656b55c | |||
| a0b28de2bf | |||
| f810819876 | |||
| 739fb53837 | |||
| 6f8ed82b4c | |||
| 9309fb6768 | |||
| 8da7e5a08b | |||
| b15f459f58 | |||
| 0a657d2f43 | |||
| 31fea6f015 | |||
| 601b399d65 | |||
|
|
7cef9f1a32 | ||
| 18dd9c7a1f | |||
| 1c6d6b1dcc | |||
| b3d78f3f06 | |||
| 5d5fbb835e | |||
| f259d7da1b | |||
| 433f68b5a4 | |||
| 3729ee8cd6 | |||
| 261e8aea62 | |||
| a1dd66ec6a | |||
| f579fbc83f | |||
| bd2cfbcc3d | |||
| 9c009dddb5 | |||
| fd94630e79 | |||
| c8274bd0a6 | |||
| 4bea3edbeb | |||
| 3aa73a29a5 | |||
| 5934b7cf4d | |||
| 39f0b6d406 | |||
| 1c1a16a55a | |||
| 991507c29a | |||
| 553f5fa25f | |||
| 8c5ef8bfd2 | |||
| 4e0580a2b4 | |||
| 451e109b7f | |||
| fa79d8c15d | |||
| 55800608ec | |||
| 63e66334af | |||
| 4b7d2f2efc | |||
| a7b02a742a | |||
| 825ad03236 | |||
| 484763b809 | |||
| b0d2c5668c | |||
| 444278accb | |||
| c8b19a8c62 | |||
| 1a3285cdc4 | |||
| cd55fd9f19 | |||
| d75d397e6a | |||
| 4e95aa47de | |||
| 0911b0d951 | |||
| 1ea59d44f0 | |||
| b4fcbfdf2a | |||
| cca99e065a | |||
| ec6e3c8fd2 | |||
| 2c1d9c3ef2 | |||
| 583dd0dd15 | |||
| 66ae014a38 | |||
| b2f175536a | |||
| 6794a1b842 | |||
| 191f857aff | |||
| bf6065aeb7 | |||
| 00e6ff7e78 | |||
| 1f5b011fce | |||
| 61db219e01 | |||
| 771994f944 | |||
| def74bd656 | |||
| 6e4be30e3a | |||
| 96a2eeda3a | |||
| a6209db573 | |||
| bfc350252a | |||
| 64efc9b0b4 | |||
| 8d4ddfb7d2 | |||
| 447b8431e6 | |||
| 007783c1e2 | |||
| 72a4524aed | |||
| 7e37a29bee | |||
| 1f0cf23801 | |||
| 999a996df8 | |||
| 8966de83af | |||
| 403368df7a | |||
| fef59e7a73 | |||
| c2285f865e | |||
| 34d8248b79 | |||
| f64852997f | |||
| fcf45b130e | |||
| fd4665364d | |||
| 91a344cbc2 | |||
| 7b8f5090db | |||
| e2039f54f4 | |||
| 445b34f452 | |||
| c3a4151359 | |||
| c05ba71bcd | |||
| 389a32d760 | |||
| 609ef99c44 | |||
| 71e98f5b3f | |||
| 25052f2e2d | |||
| a5c0f76f89 | |||
| 81d2547e9d | |||
| a0c172c649 | |||
| 8a65785c52 | |||
| 85fff4657e | |||
| 114449be53 | |||
| df1dabb253 | |||
| 65094d2031 | |||
| 9d8a226283 | |||
| 7bff54cb58 | |||
| 4f9f60b121 | |||
| f0cee69a24 | |||
| 0d6e910d3e | |||
| 64f515e11b | |||
| ef22709eb7 | |||
| 65c6df9940 | |||
| cbc12f44b8 | |||
| 45eba87eda | |||
| 510be1ffcb | |||
| 9ceb54d29c | |||
| 942da80b9c | |||
| 3da4cc2dec | |||
| b4572fa6f1 | |||
| 01f5ee1c46 | |||
| 952b235888 | |||
| f98c11412d | |||
| a8e27776d3 | |||
| 6038b70592 | |||
| e259a897fe | |||
| 05027ef13c | |||
| d65b12bc80 | |||
| 905d4a6c04 | |||
| a213ef10a8 | |||
| f2b16e50a7 | |||
| 4d25cf4ade | |||
| 82b2acd792 | |||
| 7522999082 | |||
| f8e694b71a | |||
| 83cbdf54e9 | |||
| 7744f3212d | |||
| b55049d482 | |||
| 54f981fd25 | |||
| 7d753b772a | |||
| cd8e63eb08 | |||
| 29f5780312 | |||
| 6dd6679e9a | |||
| 26c795216e | |||
| 5b40d83c0c | |||
| 22279e8c98 | |||
| 09bc143899 | |||
| d29af3f5ad | |||
| 7441874199 | |||
| 068638b20a | |||
| 5c65820935 | |||
| 748b61b2f6 | |||
| 70d359dd8d | |||
| c4d093c497 | |||
| 39ccc6bde5 | |||
| 8df4722e8b | |||
| fe3a822173 | |||
| 7d9a1eefbb | |||
| c74f5414af | |||
| 98387bc517 | |||
| a6e739601e | |||
| e3b372f3d0 | |||
| 8f8e41943a | |||
| 7af8e80303 | |||
| 9f86d4807c | |||
| 1a082b425c | |||
| 48fcec14c5 | |||
| d54a6b9d08 | |||
| 26e1be3a4f | |||
| 10cd0f3bc1 | |||
| d2ec4529cc | |||
| a1bf9980cb | |||
| 42292618bb | |||
| 07d598c857 | |||
| 757ec36790 | |||
| 7441e29889 | |||
| c48a8ddc63 | |||
| c31ba607e5 | |||
| 97eafd2fcf | |||
| b3e06b7bbd | |||
| ddc65dc558 | |||
| 8dc88a671f | |||
| 928a2661bb | |||
| 7f9278fc8f | |||
| bc99107f8e | |||
| db6cbffd60 | |||
| 55df443de3 | |||
| e28e930732 | |||
| 2ffa038703 | |||
| 5c6a987442 | |||
| 5f26a8f675 | |||
| 0f25bd4d77 | |||
| 41a6368228 | |||
| 20ec0b6fd6 | |||
| 71655a3923 | |||
| 06103e090a | |||
| f78d7b8d35 | |||
| b87a626ee7 | |||
| 5c587f8e7d | |||
| 14645156c6 | |||
| 9af897fa59 | |||
| 6b447e3364 | |||
| 162e2aa3e8 | |||
| 68fa068d8b | |||
| d481df1702 | |||
| 2f6ce319ba | |||
| 8093696ec8 | |||
| 53d1657954 | |||
| 87eae8f9c1 | |||
| 1b5655d1aa | |||
| 01ec5954bb | |||
| 0d853abbc3 | |||
| fada6f30ff | |||
| c10bbc8f8a | |||
| 492d828ca3 | |||
| 343a0700b6 | |||
| c582038d23 | |||
| 4c70b26e1d | |||
| 56b120ae6f | |||
| 3ef03aea6e | |||
| 9897dcfa04 | |||
| 01b7ffd8d3 | |||
| 0ed1b40384 | |||
| 0a1b6e156a | |||
| f09ad65b7a | |||
| 92b30574c7 | |||
| f5eb897143 | |||
| 8ed74a3aed | |||
| 7158e9210f | |||
| 9444f8805a | |||
| 2095fde1f4 | |||
| 922c8a49d5 | |||
| 7acf00fc4d | |||
| 86b416cb47 | |||
| 09ed1d8731 | |||
| 022f0cb891 | |||
| 8e4a3d8d4a | |||
| 97f60c2aa5 | |||
| 7fb3d0a77d | |||
| 82d2d1eff6 | |||
| 1ed5e88c7c | |||
| a1f473b8a3 | |||
| 0ed968a17b | |||
| 1a3e7389fa | |||
| 8199d0022d | |||
| 8eb03de70b | |||
| 1a43c797c3 | |||
| 668ff3da60 | |||
| a3d8b01582 | |||
| 380afede5e | |||
| bf85022852 | |||
| 76f3b5cd0d | |||
| 818c86a758 | |||
| a718da84af | |||
| c7b7860fd6 | |||
| 31da31ec45 | |||
| 2fd5aa0787 | |||
| d47e45ae64 | |||
| 1fea3621f5 | |||
| 6855e3711a | |||
| 26f2040905 | |||
| a52b141017 | |||
| 5d988b1cb8 | |||
| 4fc18d865b | |||
| 262a6e4b84 | |||
| e450738fd7 | |||
| 83ec459ca5 | |||
| 4de853d788 | |||
| ad6cbac1f8 | |||
| 2fcd451339 | |||
| 762547c1f5 | |||
| 25cc185aee | |||
| 0fc6a1d6f3 | |||
| 76991aecae | |||
| f7c03a7122 | |||
| dc0fa2dff7 | |||
| 99043f1c52 | |||
| 73a89f15e6 | |||
| b4a3b13ee0 | |||
| 3d30491875 | |||
| dda64246c5 | |||
| a0d1d19687 | |||
| 66c81b2a91 | |||
| c945b52671 | |||
| 146d71319e | |||
| d6d2136df6 | |||
| 9c9cc898a4 | |||
| be07a3b18d | |||
| 9f312687b1 | |||
| eadb83779e | |||
| e244e8279b | |||
| 47fe5ea7a5 | |||
| 05724afff0 | |||
| 5578fb365a | |||
| 30a3b0dc4e | |||
| 51c5cb3bdb | |||
| 0849ae6161 | |||
| 81ee76ce21 | |||
| dc76af271e | |||
| 5f868f7610 | |||
| cf31963487 | |||
| f1b923ae7f | |||
| 0484142dd5 | |||
| 806c7ce8b8 | |||
| 424742714d | |||
| 87b5247726 | |||
| e225e7b2a2 | |||
| 1877e3c1ae | |||
| 3ea304cb45 | |||
| d49b02938a | |||
| 8db12c649f | |||
| 9c16569b69 | |||
| c2813bc9b3 | |||
| 5111caa738 | |||
| 2f302772e3 | |||
| 0deb721477 | |||
| 178f8e137e | |||
| 0769cb0756 | |||
| 95485e2558 | |||
| ab144b1350 | |||
| 4c6fd5e470 | |||
| 05e045267a | |||
| f5a9261856 | |||
| 764642fbf1 | |||
| 9170934142 | |||
| a0877d3ba4 | |||
| d236c96001 | |||
| 5f76fc4ad5 | |||
| db4e11225b | |||
| 28987afc7d | |||
| eff6288a42 | |||
| af344b5014 | |||
| e97a22516c | |||
| d99c2f23a9 | |||
| 49b0220cc1 | |||
| 8f87c713f3 | |||
| eb2ad30e64 | |||
| 1ebf77f1aa | |||
| 32e517b5ec | |||
| fe243328a0 | |||
| 070314632d | |||
| b9c4a621dc | |||
| 5f9fb1597b | |||
| 62edb14057 | |||
| 2b1c121be9 | |||
| 51efac175a | |||
| 7e737b5877 | |||
| 2beb85437a | |||
| cfdd00e264 | |||
| 034ea5c0bd | |||
| 8621fac655 | |||
| 8a5b68926c | |||
| 22885f7fdd | |||
| e3e51b8367 | |||
| 019224ba4c | |||
| 833346a1a8 | |||
| c501af7d45 | |||
| aa1b8801ce | |||
| b48081c8e2 | |||
| a366d1b52c | |||
| 5cb28ea01a | |||
| 30f1f2df49 | |||
| c416aabc44 | |||
| 17d150a45f | |||
| 6211de488b | |||
| 5fd192356f | |||
| 929448f1ca | |||
| 8733b3cb61 | |||
| c5fa399627 | |||
| 4ce9f94318 | |||
| 281c0167b1 | |||
| 96d4ad7ef7 | |||
| 6ce7c48b2d | |||
| c3bdb2c14d | |||
| 898b423feb | |||
| 7264942e8d | |||
| 3f23cfecf3 | |||
| 23e386b526 | |||
| f0193a9307 | |||
| bbddf942a2 | |||
| f7d3a429a5 | |||
| 89bba86349 | |||
| 0a2076df37 | |||
| 7da0bc5c93 | |||
| 2c7bea7e69 | |||
| cc4bde613b | |||
| a3e7e80ffb | |||
| 3d2174b4e8 | |||
| 436bc160e3 | |||
| 693821eb53 | |||
| 495bb536f1 | |||
| a81ee9d711 | |||
| 13f88ed1ed | |||
| 9c92bd8a2d | |||
| 9815bfd407 | |||
| 42256b6283 | |||
| 4d4b874ee0 | |||
| e741fd3d1c | |||
| 23db6fae45 | |||
| 0cac17c395 | |||
| 9bea4833ca | |||
| d70d24cb7a | |||
| ab129128b3 | |||
| 8c292c2217 | |||
| 0b504afdca | |||
| fa76207199 | |||
| a6d3222ffc | |||
| e7b8c1fc11 | |||
| 226ecfa11e | |||
| 92a34a2292 | |||
| 19b6b2caca | |||
| 448f814aae | |||
| 2537f4e58c | |||
| d0059616aa | |||
| 8c8199abbd | |||
| 64825c8e84 | |||
| 62cd370099 | |||
| 9b528e38fc | |||
| c45450ed87 | |||
| cc53a55c96 | |||
| 9573216bfd | |||
| 2839e110fe | |||
| ba9ce2ad88 | |||
| eb4d7a5477 | |||
| 42d21b989a | |||
| 23cf3ad81b | |||
| cce324dbfb | |||
| 9e1dcd02dd | |||
| bfbe68ff88 | |||
| e07234573c | |||
| 5b2f53b33a | |||
| 14e7468ca7 | |||
| 7df06465a8 | |||
| cb2eb054eb | |||
| 3ef2cc50fe | |||
| d12d454c70 | |||
| 9a17bcd25e | |||
| 73ebe069f6 | |||
| 2755e373fd | |||
| 9e43910cc8 | |||
| 1646ace09b | |||
| c6c6570800 | |||
| 21576ec28f | |||
| a5b60a5d3b | |||
| abcb71d469 | |||
| 4fdf6333f2 | |||
| c18aba668b | |||
| 0a8333e1e2 | |||
| 3d19db5049 | |||
| 62e7767925 | |||
| 070c89e75e | |||
| cf0d897dfa | |||
| 9fc1c6bd65 | |||
| 342e616963 | |||
| a4c6f5c561 | |||
| 811d32c5be | |||
| 135074c040 | |||
| af55099d83 | |||
| 2d9f32fc2f | |||
| d361711043 | |||
| 426c0e0792 | |||
| ae451e5911 | |||
| 31bcb48704 | |||
| 25703173fb | |||
| eab2080115 | |||
| 5f99227e6c | |||
| 4a547632ac | |||
| 8cd9bae8ea | |||
| ddadefa9a6 | |||
| 7276688114 | |||
| 66450d4d02 | |||
| 2d0bda98b1 | |||
| 89943c26eb | |||
| 0ac25c7405 | |||
| b54c955847 | |||
| 857ec4fceb | |||
| 83ff1a0ec5 | |||
| ef85be3808 | |||
| 25b80d98ce | |||
| 1871e1ffe9 | |||
| 4440daa0a4 | |||
| 6e018447b2 | |||
| 5c4949bf5b | |||
| 90cb176847 | |||
| bdf8278b7f | |||
| da1f2fd426 | |||
| 4b1cbbc86b | |||
| 0957e4d55b | |||
| 6509c2136f | |||
| 52877f9b2c | |||
| 6176d27861 | |||
| 37a160148d | |||
| ee1501034b | |||
| 92e62ae21b | |||
| 7a5d6aa254 | |||
| 42a4abb176 | |||
| 440324c078 | |||
| 7e9e92a179 | |||
| ad62d49f3d | |||
| a562808d99 | |||
| 7f6a00a8f7 | |||
| f04db1b076 | |||
| 236b4a6227 | |||
| 93be36fb52 | |||
| 412f99f6a1 | |||
| a00f32e12f | |||
| 155436e103 | |||
| c43c7035a7 | |||
| a68656e1d5 | |||
| 65a7419e30 | |||
| d334b0c87b | |||
| 4826cd422e | |||
| 0f8a0bddba | |||
| 155faf8f8b | |||
| b8e8b0d989 | |||
| 8f8eec47a9 | |||
| c0767d1041 | |||
| 4bb470d291 | |||
| 7f4f78e750 | |||
| 6640a61437 | |||
| 0e7e46d0bb | |||
| 367f45a9b3 | |||
| 1d4e56cbd9 | |||
| 4e07525d10 | |||
| f5d6ad46c4 | |||
| cc8804103b | |||
| f7f24085cd | |||
| 097cf223ec | |||
| 8c3381f41b | |||
| 05a553a8fb | |||
| e71e1e04f4 | |||
| cc614c3ecf | |||
| 49feadbeb9 | |||
| 66d1bf5e47 | |||
| 7d39b690ec | |||
| 48c79615fe | |||
| 55dac4ca23 | |||
| a861002926 | |||
| 462f134278 | |||
| 1a42ca3cb1 | |||
| f5574ed238 | |||
| 3f00653bb2 | |||
| 505f69fb27 | |||
| 85ff0c5741 | |||
| b91b95bccd | |||
| 984be00635 | |||
| 01fd85aec0 | |||
| 6aa60f1bc3 | |||
| 55bad508da | |||
| 99ec962ca3 | |||
| d4b094937a | |||
| 19e36c1a35 | |||
| ce15caaa45 | |||
| 315e1bd1e7 | |||
| ff8d274a38 | |||
| ab2c9cddae | |||
| 16dc380c53 | |||
| 4b5170e8b7 | |||
| c7912ec5a6 | |||
| 090f0099c0 | |||
| ed7a1d93ba | |||
| cbf850a987 | |||
| 877cbcdd6b | |||
| 44e10c9212 | |||
| a2742e95ec | |||
| 9105818e3a | |||
| f06a374569 | |||
| 1c38931430 | |||
| fa92ab9ba8 | |||
| 4b56acc480 | |||
| f3cb0587f5 | |||
| 3e756c774f | |||
| e8fe926dbb | |||
| b2a168bd06 | |||
| 4628821451 | |||
| ab108c0437 | |||
| 5d9fe7b1f3 | |||
| 1b3bf2d301 | |||
| 017d7883d3 | |||
| 00439eac6e | |||
| d5b31de87e | |||
| f9a6b56c81 | |||
| 123239031f | |||
| 7f65dc9a92 | |||
| 25c345f665 | |||
| 2c2058e07b | |||
| f628de0c15 | |||
| 998d97da45 | |||
| 7a6f12082b | |||
|
|
9bb80002c8 | ||
| 2cf3b5185d | |||
| 9214b650ae | |||
| e6027c710b | |||
| 7a40f423d4 | |||
| 9966aa4ffa | |||
| 7c90e7bee2 | |||
| be3a699471 | |||
| a68f5ed5da | |||
| 3a4d546c10 | |||
| 386893e751 | |||
| e8cd94cc98 | |||
| bbf383a59f | |||
| eb41cf2557 | |||
| 7d71cd87fe | |||
| 886affc442 | |||
| 236c25028c | |||
| ca0996089d | |||
| 326bbe4eb1 | |||
| bd2de68a13 | |||
| 241485ada6 | |||
| 93925e7edb | |||
| 8be03b6213 | |||
| f8be9708f2 | |||
| 43f1d3a460 | |||
| 95ab9b7b07 | |||
| c4dec5820f | |||
| cf8020a374 | |||
| 8b2b00309b | |||
| 43c386dd0f | |||
| 94e68bf101 | |||
| c6fcbd4e88 | |||
| 95ec10c4cd | |||
| 8cde5f5b85 | |||
| 92daedbcfe | |||
| 59af83f001 | |||
| 68ca5feaec | |||
| d379066f8d | |||
| 50f45a25f6 | |||
| 4f1b44f859 | |||
| 63cb075ebe | |||
| 3bc89980fb | |||
| a30f10f463 | |||
| a3f387f59d | |||
| 0496b94742 | |||
| eeea0bde1d | |||
| 19a63eac0c | |||
| ff42b73982 | |||
| ac9207b0c6 | |||
| 7dadc5938a | |||
| 88fb907a24 | |||
| a349d97184 | |||
| 2eee80609f | |||
| fcb747f2c9 | |||
| 826194b88f | |||
| 303d179c1a | |||
| b309b6f244 | |||
| ee0ef6b69d | |||
| 121fcd2639 | |||
| 5cecb3364e | |||
| 1e2909808a | |||
| b8658d0fed | |||
| ea586f0019 | |||
| 4219a55576 | |||
| 2d6197c181 | |||
| 049d8dc461 | |||
| 8f7afa25fc | |||
| 7c0c8cf62a | |||
| e0c9e3817f | |||
| 95894e0965 | |||
| 0fd426db38 | |||
| 7f38305cda | |||
| 9eb03938ba | |||
| 38b16543da | |||
| 3a6e036b1d | |||
| c28baccca8 | |||
| 2352fdfaab | |||
| fd93d95ef0 | |||
| 1ad508d029 | |||
| 80e2953742 | |||
| 8f2214eb37 | |||
| 105434392b | |||
| d77c0ec323 | |||
| ebc9c2da81 | |||
| b706079a96 | |||
| 1a3fb88ff0 | |||
| fe73ec564d | |||
| 38becb2347 | |||
| 9cc237dfcd | |||
| 59a0a18068 | |||
| 3cdcbd70c3 | |||
| 36f48cb3ef | |||
| 6e40ceba46 | |||
| 9ed9312f52 | |||
| 3bf88a3db2 | |||
| cd835868a4 | |||
| 3adbefa88a | |||
| 6192b3aff5 | |||
| b504a42afc | |||
| 60532fda2e | |||
| 4604622231 | |||
| f4e43a2f84 | |||
| c5c3887d97 | |||
| 8ce3697a6e | |||
| bbe37b34d9 | |||
| ae8c208c59 | |||
| 3811a9d7cd | |||
| 3eed4a9224 | |||
| 68b713a69a | |||
| af1be38c68 | |||
| 3780eaf1f2 | |||
| 1f23472908 | |||
| 5e71e0a98a | |||
| 5e665079f3 | |||
| b67d86ef4b | |||
| cf83815785 | |||
| 255a06a789 | |||
| 3153e06601 | |||
| 7e4c9dcd99 | |||
| 8e92de0c4e | |||
| eb58ac434c | |||
| 5aed68117b | |||
| b6c3a855a4 | |||
| cd4b7cd2e6 | |||
| cb1e060ebb | |||
| ccc9ef0644 | |||
| 03b1d2bd59 | |||
| 565ef8f0cc | |||
| ae52efe220 | |||
| 09576d37b4 | |||
| 3b556e385d | |||
| d24677fc8e | |||
| bc9c9bf125 | |||
| 953db1c18e | |||
| bb6408e1bb | |||
| f5ee80a075 | |||
| e2a1ef97cf | |||
| f7aa151993 | |||
| c8461e648d | |||
| 78f57a52e8 | |||
| 645bbb9e1f | |||
| 1c5b8f78e8 | |||
| b06be61868 | |||
| 22635fd1db | |||
| 502f3c276f | |||
| a29e7d3701 | |||
| 90a6de998c | |||
| 309834e218 | |||
| 36548b07b3 | |||
| a647db524a | |||
| 96392d7cab | |||
| 3c73cf7286 | |||
| 5128d56863 | |||
| ec366ca548 | |||
| eaaf033cd5 | |||
| 899eefb2b1 | |||
| 35c152c073 | |||
| 4db61b7221 | |||
| 56faad93d6 | |||
| b02021eeab | |||
| 0f8d4c52be | |||
| f6b23b2697 | |||
| 9c162c8c40 | |||
| 9ee9d2dc06 | |||
| f88873226d | |||
| e6ef101e11 | |||
| ace82b83f0 | |||
| c3b5ebd7bc | |||
| f52001bffa | |||
| 8289f0ec93 | |||
| 4c85b5da81 | |||
| 7bddb74ba7 | |||
| b088c69c2b | |||
| ffc66cfaa1 | |||
| 50705d8a20 | |||
| eb85e1f034 | |||
| c104fc8c43 | |||
| 12aaeebb69 | |||
| b8accd5199 | |||
| 36e718ae36 | |||
| fc67cb263f | |||
| d6bec900fe | |||
| db967ff6e3 | |||
| 9d6d07b2e1 | |||
| 1444a3064e | |||
| 0a2e334aee | |||
| 15d21d3ab5 | |||
| a4f565087c | |||
| 6a11883c7c | |||
| 1202892973 | |||
| d3e1cc28bc | |||
| 151246c614 | |||
| 5049ba6907 | |||
| f8b593bec4 | |||
| 682e48bb2b | |||
| c4ddcb8e92 | |||
| d992b45cdd | |||
| f89637d6e8 | |||
| a493701b6e | |||
| 77b6a4b2fc | |||
| 9d595b2565 | |||
| 812b64b18d | |||
| a6d4d64192 | |||
| 0f52520ee3 | |||
| 8a996f5083 | |||
| b4e0d93c28 | |||
| f54217e713 | |||
| ebb1399951 | |||
| f9d33713ab | |||
| 4af3a1e647 | |||
| af44da007b | |||
| 1d5a2ceed0 | |||
| 4f9d558cf4 | |||
| 8bdd6064ab | |||
| 76b43e0b65 | |||
| 3b80e2101c | |||
| 42653be822 | |||
| 717ce4756a | |||
| 5ac0c18619 | |||
| 79dd86e13f | |||
| 05b6f98a82 | |||
| 098ce63b26 | |||
| 254f6312b4 | |||
| 5dc4447ff3 | |||
| d77978d0c9 | |||
| c4df067894 | |||
| c210efa9a2 | |||
| 3dbf0baeb2 | |||
| 5903af189c | |||
| 507eab7847 | |||
| 0f5b16febc | |||
| 1b5342da13 | |||
| 9d2776f6ce | |||
| 716a6d735c | |||
| 5362b526e7 | |||
| 0586c40667 | |||
| 9e48c4e0dc | |||
| 569a853b3a | |||
| 74a3f434a4 | |||
| a6af9583df | |||
| 326900b3a7 | |||
| c4dfb0a886 | |||
| a5efdebe15 | |||
| cb84ce69be | |||
| 7e5354d5ad | |||
| 521d765b35 | |||
| 7fbaaf189b | |||
| 6a9182c820 | |||
| 90f7afa720 | |||
| 90c893ae66 | |||
| 8d55a7ee70 | |||
| f6e32ece58 | |||
| 162ad41852 | |||
| 8b89083a51 | |||
| 68c5b015e0 | |||
| 61e360ae9e | |||
| 50663c7700 | |||
| 4da1291a50 | |||
| 94df75a9bf | |||
| 5ea3184c5e | |||
| 099bb0dfd5 | |||
| e318c89788 | |||
| 1174604b05 | |||
| 364f37aa5a | |||
| bbb71840c1 | |||
| c2923e01e6 | |||
| 4131ae0adb | |||
| f16e0abf03 | |||
| 07adc2628c | |||
| a682b818d3 | |||
| b2a8c2dcde | |||
| 2314a8f6c2 | |||
| f2033e0408 | |||
| 38d4a641f1 | |||
| 8ca3561c1a | |||
| bf7158a6e8 | |||
| 6a92d586a4 | |||
| 2a93942be1 | |||
| e81e6f4ff1 | |||
| 5e4cf9723b | |||
| a6fb93b231 | |||
| a3022f8332 | |||
| af0b27d762 | |||
| d2a8d537f6 | |||
| 52d65dabba | |||
| cbd499b88f | |||
| d59aa0179a | |||
| bf61f4eb4f | |||
| 97352ac44d | |||
| eb0687da36 | |||
| ceea23aaaf | |||
| 802a5a8a1c | |||
| 2d24db2b08 | |||
| bfb1edac54 | |||
| b12ac35b65 | |||
| 8b881eba5b | |||
| b2317325e2 | |||
| a8e845cb8b | |||
| 14bd70a67c | |||
| 82cfb22c03 | |||
| 50cd192fd8 | |||
| 62a0a9b1bd | |||
| 88b9f087a1 | |||
| 55b5ad56c8 | |||
| 00d5145aa0 | |||
| 6161522a04 | |||
| abaabc4cc0 | |||
| 2686884335 | |||
| f41c8d4c6f | |||
| a9496bdbd2 | |||
| 5e634580c2 | |||
| 37b4590851 | |||
| 81e565fdec | |||
| b912c85da7 | |||
| 7ef63fa72d | |||
| 627c3e9ffa | |||
| 876b3f4a7d | |||
| f323562bbd | |||
| f98711ec66 | |||
| 8db97cf776 | |||
| f38452a52a | |||
| 03d392803f | |||
| 8b40cf2659 | |||
| 86cf1847f4 | |||
| 45d7ed8b73 | |||
| 0b7b196159 | |||
| 33ad700d61 | |||
| 7f8552981b | |||
| 5cc9d2512b | |||
| 6ab789e36d | |||
| f8109af6ce | |||
| 1bfc6ac3af | |||
| 548817116a | |||
| b2f712e6b6 | |||
| 93739ddaff | |||
| 1373305638 | |||
| 70a54d0787 | |||
| 40a164b1b0 | |||
| bc966d56b0 | |||
| 61e7953827 | |||
| 192e1a9dbc | |||
| 2fe3c98c53 | |||
| 5f3cca665d | |||
| 88d5b049ff | |||
| 4614cb31fb | |||
| 44d76bc4a1 | |||
| 353350476d | |||
| 76d63a2fe8 | |||
| cce75a5895 | |||
| 2409adec5e | |||
| f75a5247b5 | |||
| 8cfa1310d1 | |||
| 086b96cc39 | |||
| 908aa7e1da | |||
| b6218e6b07 | |||
| 3d868855ca | |||
| 7e7213f67b | |||
| f5afc7d31c | |||
| 72737afb61 | |||
| b39e81512e | |||
| 62fad98a12 | |||
| 98c4aa7358 | |||
| 1a3ee1d4de | |||
| be2facb1f1 | |||
| 97b4731ca6 | |||
| 83326bcaed | |||
| 09eda63698 | |||
| d0aaff2135 | |||
| 7bd0bd0989 | |||
| 94bd98ab65 | |||
| 25fa4c853b | |||
| 4b4581ff2e | |||
| e1ea01e59e | |||
| da4d5c2494 | |||
| 3713992eb3 | |||
| e1c8337464 | |||
| 6c81ab18c8 | |||
| f0085588b9 | |||
| 8fdb330a6c | |||
| fb7a94f8ae | |||
| e71e3822e0 | |||
| e289fb9145 | |||
| bf2a8c4010 | |||
| 5cc34775f3 | |||
| 7f75afbdba | |||
| 1390ec0c15 | |||
| 4e84600e7e | |||
| c0ea49872c | |||
| 0685e4cabe | |||
| 875a590978 | |||
| 98d8aeb011 | |||
| 2f9905210a | |||
| 41d56a304a | |||
| 55da1da7f3 | |||
| a65d315cda | |||
| 16e6c57a3f | |||
| 638a2df7c6 | |||
| 9b53282444 | |||
| 89d02b353b | |||
| c968cca4de | |||
| e163b0d99b | |||
| 4426a5abb6 | |||
| 8c8e527249 | |||
| f50c1865d5 | |||
| f5257dc7ab | |||
| 14315e0035 | |||
| e2fe62b379 | |||
| 1f9bea1264 | |||
| 08f1a4d3cb | |||
| be8a0ac9c3 | |||
| a383f11d2a | |||
| 91618edeec | |||
| b64f6da230 | |||
| ba4b26b175 | |||
| 525c919b3a | |||
| d7f6de08e9 | |||
| 0d20ab7aa8 | |||
| 231d59da7f | |||
| 4fef277751 | |||
| 7032e64dcb | |||
| 15481c11c0 | |||
| 5930f771e5 | |||
| 2290c90089 | |||
| eb28ba0f78 | |||
| 7df203efe8 | |||
| 766b1dd779 | |||
| e992a8ea3f | |||
| e3863de129 | |||
| bfed6bdcf4 | |||
| f4834218ce | |||
| e3e001ac5b | |||
| afc1985114 | |||
| f0c0fa15ac | |||
| 3bb17aa74a | |||
| 3887d3afd3 | |||
| ccf1ac8e77 | |||
| df84150f14 | |||
| fd4f3c89cf | |||
| 46fa14692c | |||
| 2d26b672bf | |||
| f908dd5acd | |||
| f50135b5c6 | |||
| 2be8fc95b7 | |||
| 736d4b40e0 | |||
| 7fa0a4c79a | |||
| 8881aeb2ca | |||
| 8fa1c29c59 | |||
| 318ef00817 | |||
| 3fcdf69f56 | |||
| e2785fff55 | |||
| e5adc46d44 | |||
| 6052fcbe7e | |||
| 268e7e9b23 | |||
| 53f93fe01b | |||
| 202cb09e2b | |||
| c29df047d2 | |||
| 8dc8a3d39b | |||
| 34a4c17e9b | |||
| ccb61bd1d9 | |||
| be89574d27 | |||
| e8a12c08d8 | |||
| 16a5812db0 | |||
| 366eeab65d | |||
| ce185f92e3 | |||
| 276dccf5fd | |||
| 4fc6c80352 | |||
| 016afe19f8 | |||
| 7295ad401c | |||
| 1eed0fbda0 | |||
| da449b9852 | |||
|
|
9a499aced7 | ||
| c3f2c4f522 | |||
| a356f71745 | |||
| 0a76509365 | |||
| 9083833444 | |||
| ed9dc11c4b | |||
| 1c2d483a46 | |||
| 1f073938d7 | |||
| e12133fff0 | |||
| 61d95f53d6 | |||
| ebd9d7c16f | |||
| 455a7192d3 | |||
| 4c8ec8ffa3 | |||
| 2beca515ca | |||
| e1c3544f09 | |||
| 242fc36fd0 | |||
| 4754df89b7 | |||
| e050040bae | |||
| 30deb10c27 | |||
| f2791efa4f | |||
| acc9748aa2 | |||
| b36fe277c0 | |||
| 0b07e80ecb | |||
| b448019f93 | |||
| a108daebd0 | |||
| 2c950b5a0a | |||
| 0ded373257 | |||
| 4ad6ffce26 | |||
| 265f8092e5 | |||
| 6735056551 | |||
| a70aae6404 | |||
| f7c2027d17 | |||
| 8f9c4f4ed9 | |||
| cd4fa9df4d | |||
| b776dea93e | |||
| 2d655e9822 | |||
| f1aef07115 | |||
| ceac54f2a8 | |||
| 8cd2d73dd1 | |||
| 4c8a85091e | |||
| 1d8e306a5b | |||
| ff76148774 | |||
| 263616cf66 | |||
| 5d8563cf5e | |||
| 3a8e7bb486 | |||
| dac924d260 | |||
| 2fec9bae57 | |||
| a3a0e7f1a9 | |||
| 57e4922aa4 | |||
| 5a86e951c9 | |||
| 07a2292b98 | |||
| 498ebf5b5e | |||
| 0c0a53fb80 | |||
| f13d08283f | |||
| 6776b72adf | |||
| fc0111f9af | |||
| 58ecb0871a | |||
| 5ab36dc181 | |||
| 9eb4e7eb59 | |||
| b73d178751 | |||
| aeb5997303 | |||
| b6be8f1f51 | |||
| 6e4ec0f188 | |||
| d84a9d95e3 | |||
| e85ead856e | |||
| d640f69b64 | |||
| 3a855c6905 | |||
| e5bc9f79bc | |||
| e4a9a645a1 | |||
| 7be7fc0d06 | |||
| 639c21ee64 | |||
| 83463f08fd | |||
| d62c41a4c0 | |||
| 5bc32a7b39 | |||
| b87f9f2f0f | |||
| ecb8f48fc7 | |||
| 453e861eb1 | |||
| 9d9ba90f65 | |||
| c0ec43dc15 | |||
| 8bf0f53a1f | |||
| b9935804d8 | |||
| e3cd173cae | |||
| 0b171536bd | |||
| 4df5459abb | |||
| 99c360c739 | |||
| 238f3a123f | |||
| 7635f192bc | |||
| 4be4c95126 | |||
| c7174e1aa0 | |||
| 038f113176 | |||
| e640b7dc00 | |||
| 69ee0e8a79 | |||
| 44f9bf1d9d | |||
| 528d049505 | |||
| d38fff270d | |||
| f47e6d77df | |||
| bcdb9f7100 | |||
| 79c3511ced | |||
| 77163b4017 | |||
| 52512ff961 | |||
| 8e37d624ff | |||
| 2b845fa110 | |||
| 09c730c852 | |||
| 9ea0b5ca1e | |||
| 3f7c12c4cb | |||
| 52212a4234 | |||
| aad83a6e45 | |||
| b15249a7cc | |||
| 971c0b6bb1 | |||
| c8259d3fae | |||
| c1c1591ffd | |||
| 1ceae80007 | |||
| 711c240058 | |||
| ed906caf54 | |||
| fa316c0948 | |||
| 64da73b835 | |||
| 51d27b362c | |||
| 11bf6134ec | |||
| e6fd3d1594 | |||
| 6c440b46d0 | |||
| 6f5049ff54 | |||
| 785da91996 | |||
| a59be21d5c | |||
| dcd8d31c0b | |||
| bbff9cd347 | |||
| c5433c7b44 | |||
| 52e3ae85ef | |||
| 6ee8d34a08 | |||
| fc845bf79a | |||
| aa3ea16a1b | |||
| 5d72ad53fb | |||
| d5a16b3baa | |||
| 4300c11cb1 | |||
| 611bf9a530 | |||
| f665a077cb | |||
| 62c2411818 | |||
| 1aeff8903c | |||
| 7a0fe4f363 | |||
| 6ebe68c8fc | |||
| 075a340056 | |||
| d764da736d | |||
| b9ee75209a | |||
| 389ffcbadb | |||
| 37ec61eab2 | |||
| a901150981 | |||
| d7e623d816 | |||
| 45e7dd2c6c | |||
| 25ca66a86b | |||
| a78cbd6583 | |||
| 09283bba61 | |||
| e738070b24 | |||
| 0c67e0d798 | |||
| 9e7f379923 | |||
| 93426fbae5 | |||
| f1b9101b13 | |||
| 33d3b02763 | |||
| 2a169afa62 | |||
| a2fc7b47c1 | |||
| c717460cea | |||
| a8f57858d8 | |||
| 3ab0e79386 | |||
| 236b78c33b | |||
| 18138fd178 | |||
| fa34dcb44e | |||
| f8a7e22755 | |||
| 5e7a05b949 | |||
| 676d1fd8c1 | |||
| 9a569b9af1 | |||
| bfda22756e | |||
| 237d692cd1 | |||
| 31b57b24f5 | |||
| ff8cc52e41 | |||
| f6d8bab742 | |||
| 1bd0a301dd | |||
| d7ac3f27e0 | |||
| adf18c04a9 | |||
| 150023c203 | |||
| 21bf17da38 | |||
| 54c3d037a0 | |||
| cc7c59f4fa | |||
| 491c5fa696 | |||
| cb1c08a52d | |||
| 7c414a48de | |||
| 0d03d8d956 | |||
| ee974eb8d1 | |||
| 5e17847c10 | |||
| 753ee2e4e3 | |||
| 2c73095fd6 | |||
| c31875dc95 | |||
| 39ac32de74 | |||
| 3a6f76212d | |||
| 89c5d6195a | |||
| a6c0f93af0 | |||
| f52cdfe12d | |||
| fe91357505 | |||
| e4c578f20a | |||
| d9734e17fb | |||
| 4cc3f94635 | |||
| 8ff4dd5b3c | |||
| 423b6acfde | |||
| ccf2ec0804 | |||
| 002f0bda6f | |||
| 753aee7fc5 | |||
| c96b8b5c64 | |||
| 821e088b8e | |||
| 3ea5965a99 | |||
| 5ce2821634 | |||
| 5d4b6ee4fc | |||
| 7399e63d70 | |||
| fc27945b4e | |||
| 2b98a8ca57 | |||
| d50103ca24 | |||
| 52a3aaec81 | |||
| 48d9f3af80 | |||
| 7575ca93ad | |||
| dcf7f0daa9 | |||
| ffe3f45168 | |||
| bd17bdabf9 | |||
| 118c993e31 | |||
| 33707afaaf | |||
| 5fc79cb304 | |||
| b595872bb3 | |||
| e50e55444c | |||
| 0f68d7e8f9 | |||
| f161ba7728 | |||
| fb2479c6fe | |||
| f8f75587c3 | |||
| 3cbf6b5144 | |||
| 48cf579779 | |||
| 5c5edd2106 | |||
| 4a4b2f7206 | |||
| e84cdd1a54 | |||
| 410eaab039 | |||
| 8b8dd4758f | |||
| 16dfa61d3d | |||
| cd0dcdb06b | |||
| 0bc76ebcfb | |||
| b86383444b | |||
| e788902689 | |||
| 2d0d90ba7e | |||
| c56cba7257 | |||
| 63623d0dc3 | |||
| 1a409eab82 | |||
| 135242d577 | |||
| aec96c5193 | |||
| a68eef6627 | |||
| 0ed1ee7bb0 | |||
| ccdde704c7 | |||
| f2803833a6 | |||
| 884df448f0 | |||
| a1cba28258 | |||
| eddb6db49e | |||
| 67267c20a3 | |||
| 547da816ad | |||
| ecf57118ba | |||
| 3681255837 | |||
| f97595108f | |||
| 7bf6c0aa4b | |||
| 9fb24cad21 | |||
| b036b9f480 | |||
| 2d677619f3 | |||
| 576e6edecc | |||
| 0819ee5593 | |||
| 7ca45462cf | |||
| 0e8399ae71 | |||
| cf42f5455d | |||
| 50536e5867 | |||
| e3c584c560 | |||
| c48e67db97 | |||
| fd8c6f50f2 | |||
| e09e6074c8 | |||
| c470e9603f | |||
| faf0882b3a | |||
| e96209ad14 | |||
| 1912047142 | |||
| 8011416ceb | |||
| 2d3f527e24 | |||
| aed221fa34 | |||
| 425d46b0ef | |||
| b3d43ad682 | |||
| 65af6a8437 | |||
| ac07f2e7df | |||
| 4d1c88b43b | |||
| 465720ccdd | |||
| 21fe8ed322 | |||
| 01d440de88 | |||
| aba0ce3a6d | |||
| 906217822f | |||
| 9e81d94e5d | |||
| 092f3b1026 | |||
| 6739cac57b | |||
| 2d69ab84ce | |||
| af3a8d4dbc | |||
| 0792585612 | |||
| ee798802e6 | |||
| 3f44bf0577 | |||
| eaedae0565 | |||
| 9c068d07c9 | |||
| 8abe88b2d3 | |||
| ece70df8fe | |||
| ecc375cf63 | |||
| d89a5b2e4b | |||
| d041586baf | |||
| 49472d32a1 | |||
| aa83b5c270 | |||
| 24bd37cd38 | |||
| a4e24baeb5 | |||
| f0512fdce3 | |||
| 101b6c9b74 | |||
| 9db3f91c28 | |||
| 94de4c07da | |||
| 67eedfddc4 | |||
| 829ec15b5b | |||
| e8bc314cfb | |||
| 85328a6e96 | |||
| 3af743ed1b | |||
| b3b67e7abf | |||
| f2d4464209 | |||
| 3fa52b6f32 | |||
| 01ad3e8a8a | |||
| fc4bbe2568 | |||
| d1a407c6b8 | |||
| a210ca3e17 | |||
| 276f4a5aa4 | |||
| 56b5e117f1 | |||
| 00c5630072 | |||
| f3a4594386 | |||
| ed335e5010 | |||
| cdd5dbb5ea | |||
| 0e51ca5bce | |||
| 0f24587641 | |||
| 5b1f74e263 | |||
| 0a2171ae91 | |||
| 09573a7cfc | |||
| 686c4f2698 | |||
| 9273950afc | |||
| add6fe3994 | |||
| 581efc0235 | |||
| b1d9b4810f | |||
| a868059124 | |||
| 2ceb788c2e | |||
| 3ca93dfc54 | |||
| e8315b207d | |||
| 3090536fc7 | |||
| c5034b43ab | |||
| 6b4b7939b0 | |||
| 99be7c765a | |||
| a018275ebf | |||
| fb9777247a | |||
| 1e8239c7e2 | |||
| 81b127648b | |||
| 4c5e3f2f28 | |||
| 9fb7d3ff42 | |||
| ac3093b5dc | |||
| 975d29fa31 | |||
| 94adb5f348 | |||
| fba8cc9acd | |||
| 0fb75fa95f | |||
| 840c4ac3a9 | |||
| 16613c86a7 | |||
| 0c43591378 | |||
| 9ea6ac8d24 | |||
| 394210c99b | |||
| 0a7c8c70b0 | |||
| 50cfffdb19 | |||
| 262f2ceef5 | |||
| 5377ca3d57 | |||
| 2fc48951c8 | |||
| b5308c583c | |||
| ffc4690cf5 | |||
| aace3488c5 | |||
| 9782ca679d | |||
| 258500d3f7 | |||
| 20a3a2d33d | |||
| 09b6d24303 | |||
| 244569004b | |||
| 773928cf47 | |||
| 0b60b46a40 | |||
| 4a4797e49d | |||
| a26a507d31 | |||
| 151578461e | |||
| c219e1c5e6 | |||
| 701190a853 | |||
| 4a5d224e26 | |||
| c948ed897f | |||
| 9f83c4003a | |||
| 60ad89af8d | |||
| f59c3ac6e4 | |||
| 25aae80175 | |||
| 8a784023df | |||
| d105b3086e | |||
| e68734af4d | |||
| 80aca5c42e | |||
| 91cc351b9f | |||
| 3727eff0a1 | |||
| 98e8f2c77f | |||
| d9cc0ef9d3 | |||
| 20e5e555f1 | |||
| 156a6a6cb6 | |||
| 2c57c4598c | |||
| 130678682c | |||
| ca706b0281 | |||
| 9ff2b454fb | |||
| 5362042060 | |||
| 59c05047e6 | |||
| dabc32defa | |||
| d0ba4497b8 | |||
| cbdbb2cb4f | |||
| 8090db41fd | |||
| e4b8bf49c6 | |||
| f91e4f7f47 | |||
| 2185ab4d96 | |||
| 8b55326dbd | |||
| 29de3846b7 | |||
| 781f6703f2 | |||
| 7901b11a6d | |||
| 136351e574 | |||
| 004fe34221 | |||
| dc15afe84c | |||
| 298b4baeae | |||
| efa72f8d96 | |||
| d5d8cca96e | |||
| 34676028f9 | |||
| 6639a57225 | |||
| e084da09e7 | |||
| 8afc6b5c10 | |||
| 28b558e0eb | |||
| 18d55d8ef9 | |||
| ded62cb3f1 | |||
| da00ab06c2 | |||
| 4021aeef49 | |||
| 3cf5653f0d | |||
| 779e44f63a | |||
| 17f8d7bb98 | |||
| 47e0d157a2 | |||
| bcfaf764a4 | |||
| cd38fe180c | |||
| 51b54d0dc6 | |||
| a452163d96 | |||
| 1457492697 | |||
| c7ce387900 | |||
| 7131dbd052 | |||
| 1a2c8df31e | |||
| d2d280c2e3 | |||
| 7480c912b5 | |||
| 307fb2c8a3 | |||
| 85dcab4226 | |||
| da7bb49726 | |||
| 17c5b9b811 | |||
| 458ca8b40c | |||
| 9bf906a371 | |||
| b1e7ce7277 | |||
| 0fb461e3df | |||
| fdb9083e95 | |||
| ab645f0fe9 | |||
| 290ce48514 | |||
| b6c35b9f76 | |||
| 5c90e911b0 | |||
| b63181ae6b | |||
| bc72822fe4 | |||
| 29d6e2157c | |||
| 6b851b5033 | |||
| cad2a32394 | |||
| b251ba9709 | |||
| 812fb1ff32 | |||
| 0e299769bb | |||
| 956fed6616 | |||
| ef982e5d22 | |||
| fe589090d7 | |||
| 6100570511 | |||
| c25370304e | |||
| 203d561a5d | |||
| 987367d1ca | |||
| f7523e073f | |||
| f42fd8a333 | |||
| bf39b6c79e | |||
| 33dbbb5178 | |||
| db79948886 | |||
| cf09b40b4a | |||
| fbc5aedf35 | |||
| 31c0f1566b | |||
| 16786404e1 | |||
| 050d68c0d1 | |||
| 9f807e8e1d | |||
| 851c2d0239 | |||
| f9ab417fdf | |||
| 6702e0714f | |||
| fa16558cda | |||
| 5328e0be5d | |||
| 1bd02406d4 | |||
| a4c34fb326 | |||
| 80a70b758d | |||
| 0a333efddb | |||
| a4cf1a2957 | |||
| 59e5709f28 | |||
| 1195eb23b1 | |||
| 69f00977ae | |||
| fc8b8b8a9a | |||
| 07a3160ed5 | |||
| 1496fbfa53 | |||
| 780593c0b6 | |||
| db891f43ce | |||
| 3357d9a86b | |||
| 43a7ca4b5e | |||
| c764a356ce | |||
| 4a881b9eaf | |||
| 76d70ea861 | |||
| 959a04e1cc | |||
| bf8fbcc9e3 | |||
| f9fe46154a | |||
| c97921b2ea | |||
| 95967f2f45 | |||
| 552c05599f | |||
| 837d110796 | |||
| fcc7e84300 | |||
| 9080bc85f2 | |||
| 512f1a8f4d | |||
| 4faa6b9af4 | |||
| 019ee02912 |
@@ -1,46 +0,0 @@
|
|||||||
====================================
|
|
||||||
Odoo 19 Accounting Financial Reports
|
|
||||||
====================================
|
|
||||||
|
|
||||||
This Module will provide all the financial reports for odoo 19
|
|
||||||
community edition
|
|
||||||
|
|
||||||
Installation
|
|
||||||
============
|
|
||||||
|
|
||||||
To install this module, you need to:
|
|
||||||
|
|
||||||
Download the module and add it to your Odoo addons folder. Afterward, log on to
|
|
||||||
your Odoo server and go to the Apps menu. Trigger the debug mode and update the
|
|
||||||
list by clicking on the "Update Apps List" link. Now install the module by
|
|
||||||
clicking on the install button.
|
|
||||||
|
|
||||||
Upgrade
|
|
||||||
============
|
|
||||||
|
|
||||||
To upgrade this module, you need to:
|
|
||||||
|
|
||||||
Download the module and add it to your Odoo addons folder. Restart the server
|
|
||||||
and log on to your Odoo server. Select the Apps menu and upgrade the module by
|
|
||||||
clicking on the upgrade button.
|
|
||||||
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
=============
|
|
||||||
|
|
||||||
There is Nothing to Configure
|
|
||||||
|
|
||||||
|
|
||||||
Credits
|
|
||||||
=======
|
|
||||||
|
|
||||||
Contributors
|
|
||||||
------------
|
|
||||||
|
|
||||||
* Odoo Mates <odoomates@gmail.com>
|
|
||||||
|
|
||||||
|
|
||||||
Author & Maintainer
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
This module is maintained by the Odoo Mates
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
from . import wizard
|
|
||||||
from . import models
|
|
||||||
from . import report
|
|
||||||
|
|
||||||
|
|
||||||
def _pre_init_clean_m2m_models(env):
|
|
||||||
env.cr.execute("""DROP TABLE IF EXISTS account_journal_account_report_partner_ledger_rel""")
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
'name': 'Odoo 19 Accounting Financial Reports',
|
|
||||||
'version': '19.0.1.0.2', # __odoosky_original_version__: '1.0.2'
|
|
||||||
'category': 'Invoicing Management',
|
|
||||||
'description': 'Accounting Reports For Odoo 19, Accounting Financial Reports, '
|
|
||||||
'Odoo 19 Financial Reports',
|
|
||||||
'summary': 'Accounting Reports For Odoo 19',
|
|
||||||
'sequence': '1',
|
|
||||||
'author': 'Odoo Mates, Odoo SA',
|
|
||||||
'license': 'LGPL-3',
|
|
||||||
'company': 'Odoo Mates',
|
|
||||||
'maintainer': 'Odoo Mates',
|
|
||||||
'support': 'odoomates@gmail.com',
|
|
||||||
'website': 'https://www.youtube.com/watch?v=yA4NLwOLZms',
|
|
||||||
'depends': ['account'],
|
|
||||||
'live_test_url': 'https://www.youtube.com/watch?v=yA4NLwOLZms',
|
|
||||||
'data': [
|
|
||||||
'security/ir.model.access.csv',
|
|
||||||
'data/account_account_type.xml',
|
|
||||||
'views/menu.xml',
|
|
||||||
'views/ledger_menu.xml',
|
|
||||||
'views/financial_report.xml',
|
|
||||||
'views/settings.xml',
|
|
||||||
'wizard/account_report_common_view.xml',
|
|
||||||
'wizard/partner_ledger.xml',
|
|
||||||
'wizard/general_ledger.xml',
|
|
||||||
'wizard/trial_balance.xml',
|
|
||||||
'wizard/balance_sheet.xml',
|
|
||||||
'wizard/profit_and_loss.xml',
|
|
||||||
'wizard/tax_report.xml',
|
|
||||||
'wizard/aged_partner.xml',
|
|
||||||
'wizard/journal_audit.xml',
|
|
||||||
'report/report.xml',
|
|
||||||
'report/report_partner_ledger.xml',
|
|
||||||
'report/report_general_ledger.xml',
|
|
||||||
'report/report_trial_balance.xml',
|
|
||||||
'report/report_financial.xml',
|
|
||||||
'report/report_tax.xml',
|
|
||||||
'report/report_aged_partner.xml',
|
|
||||||
'report/report_journal_audit.xml',
|
|
||||||
'report/report_journal_entries.xml',
|
|
||||||
],
|
|
||||||
'pre_init_hook': '_pre_init_clean_m2m_models',
|
|
||||||
'images': ['static/description/banner.gif'],
|
|
||||||
}
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
<data noupdate="1">
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_receivable">
|
|
||||||
<field name="name">Receivable</field>
|
|
||||||
<field name="type">asset_receivable</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_payable">
|
|
||||||
<field name="name">Payable</field>
|
|
||||||
<field name="type">liability_payable</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_liquidity">
|
|
||||||
<field name="name">Bank and Cash</field>
|
|
||||||
<field name="type">asset_cash</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_credit_card">
|
|
||||||
<field name="name">Credit Card</field>
|
|
||||||
<field name="type">liability_credit_card</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_current_assets">
|
|
||||||
<field name="name">Current Assets</field>
|
|
||||||
<field name="type">asset_current</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_non_current_assets">
|
|
||||||
<field name="name">Non-current Assets</field>
|
|
||||||
<field name="type">asset_non_current</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_prepayments">
|
|
||||||
<field name="name">Prepayments</field>
|
|
||||||
<field name="type">asset_prepayments</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_fixed_assets">
|
|
||||||
<field name="name">Fixed Assets</field>
|
|
||||||
<field name="type">asset_fixed</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_current_liabilities">
|
|
||||||
<field name="name">Current Liabilities</field>
|
|
||||||
<field name="type">liability_current</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_non_current_liabilities">
|
|
||||||
<field name="name">Non-current Liabilities</field>
|
|
||||||
<field name="type">liability_non_current</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_equity">
|
|
||||||
<field name="name">Equity</field>
|
|
||||||
<field name="type">equity</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_unaffected_earnings">
|
|
||||||
<field name="name">Current Year Earnings</field>
|
|
||||||
<field name="type">equity_unaffected</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_revenue">
|
|
||||||
<field name="name">Income</field>
|
|
||||||
<field name="type">income</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_other_income">
|
|
||||||
<field name="name">Other Income</field>
|
|
||||||
<field name="type">income_other</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_expenses">
|
|
||||||
<field name="name">Expenses</field>
|
|
||||||
<field name="type">expense</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_depreciation">
|
|
||||||
<field name="name">Depreciation</field>
|
|
||||||
<field name="type">expense_depreciation</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_type_direct_costs">
|
|
||||||
<field name="name">Cost of Revenue</field>
|
|
||||||
<field name="type">expense_direct_cost</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.account.type" id="data_account_off_sheet">
|
|
||||||
<field name="name">Off-Balance Sheet</field>
|
|
||||||
<field name="type">off_balance</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</data>
|
|
||||||
</odoo>
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
from . import account_account_type
|
|
||||||
from . import account_financial_report
|
|
||||||
from . import account_move_line
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
from odoo import api, models, fields
|
|
||||||
|
|
||||||
|
|
||||||
class AccountAccountType(models.Model):
|
|
||||||
_name = "account.account.type"
|
|
||||||
_description = "Account Account Type"
|
|
||||||
|
|
||||||
name = fields.Char('Name', required=True, translate=True)
|
|
||||||
type = fields.Selection(
|
|
||||||
selection=[
|
|
||||||
("asset_receivable", "Receivable"),
|
|
||||||
("asset_cash", "Bank and Cash"),
|
|
||||||
("asset_current", "Current Assets"),
|
|
||||||
("asset_non_current", "Non-current Assets"),
|
|
||||||
("asset_prepayments", "Prepayments"),
|
|
||||||
("asset_fixed", "Fixed Assets"),
|
|
||||||
("liability_payable", "Payable"),
|
|
||||||
("liability_credit_card", "Credit Card"),
|
|
||||||
("liability_current", "Current Liabilities"),
|
|
||||||
("liability_non_current", "Non-current Liabilities"),
|
|
||||||
("equity", "Equity"),
|
|
||||||
("equity_unaffected", "Current Year Earnings"),
|
|
||||||
("income", "Income"),
|
|
||||||
("income_other", "Other Income"),
|
|
||||||
("expense", "Expenses"),
|
|
||||||
("expense_depreciation", "Depreciation"),
|
|
||||||
("expense_direct_cost", "Cost of Revenue"),
|
|
||||||
("off_balance", "Off-Balance Sheet"),
|
|
||||||
],
|
|
||||||
string="Type",
|
|
||||||
help="These types are defined according to your country. The type contains more information " \
|
|
||||||
"about the account and its specificities."
|
|
||||||
)
|
|
||||||
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
from odoo import api, models, fields
|
|
||||||
|
|
||||||
|
|
||||||
class AccountFinancialReport(models.Model):
|
|
||||||
_name = "account.financial.report"
|
|
||||||
_description = "Account Report"
|
|
||||||
|
|
||||||
@api.depends('parent_id', 'parent_id.level')
|
|
||||||
def _get_level(self):
|
|
||||||
'''Returns a dictionary with key=the ID of a record and value = the level of this
|
|
||||||
record in the tree structure.'''
|
|
||||||
for report in self:
|
|
||||||
level = 0
|
|
||||||
if report.parent_id:
|
|
||||||
level = report.parent_id.level + 1
|
|
||||||
report.level = level
|
|
||||||
|
|
||||||
def _get_children_by_order(self):
|
|
||||||
res = self
|
|
||||||
children = self.search([('parent_id', 'in', self.ids)], order='sequence ASC')
|
|
||||||
if children:
|
|
||||||
for child in children:
|
|
||||||
res += child._get_children_by_order()
|
|
||||||
return res
|
|
||||||
|
|
||||||
name = fields.Char('Report Name', required=True, translate=True)
|
|
||||||
parent_id = fields.Many2one('account.financial.report', 'Parent')
|
|
||||||
children_ids = fields.One2many('account.financial.report', 'parent_id', 'Account Report')
|
|
||||||
sequence = fields.Integer('Sequence')
|
|
||||||
level = fields.Integer(compute='_get_level', string='Level', store=True, recursive=True)
|
|
||||||
type = fields.Selection([
|
|
||||||
('sum', 'View'),
|
|
||||||
('accounts', 'Accounts'),
|
|
||||||
('account_type', 'Account Type'),
|
|
||||||
('account_report', 'Report Value'),
|
|
||||||
], 'Type', default='sum')
|
|
||||||
account_ids = fields.Many2many(
|
|
||||||
'account.account', 'account_account_financial_report',
|
|
||||||
'report_line_id', 'account_id', 'Accounts'
|
|
||||||
)
|
|
||||||
account_report_id = fields.Many2one('account.financial.report', 'Report Value')
|
|
||||||
account_type_ids = fields.Many2many(
|
|
||||||
'account.account.type', 'account_account_financial_report_type',
|
|
||||||
'report_id', 'account_type_id', 'Account Types'
|
|
||||||
)
|
|
||||||
report_domain = fields.Char(string="Report Domain")
|
|
||||||
sign = fields.Selection(
|
|
||||||
[('-1', 'Reverse balance sign'), ('1', 'Preserve balance sign')], 'Sign on Reports',
|
|
||||||
required=True, default='1',
|
|
||||||
help='For accounts that are typically more debited than credited and that you would '
|
|
||||||
'like to print as negative amounts in your reports, you should reverse the sign '
|
|
||||||
'of the balance; e.g.: Expense account. The same applies for accounts that are '
|
|
||||||
'typically more credited than debited and that you would like to print as positive '
|
|
||||||
'amounts in your reports; e.g.: Income account.'
|
|
||||||
)
|
|
||||||
display_detail = fields.Selection([
|
|
||||||
('no_detail', 'No detail'),
|
|
||||||
('detail_flat', 'Display children flat'),
|
|
||||||
('detail_with_hierarchy', 'Display children with hierarchy')
|
|
||||||
], 'Display details', default='detail_flat')
|
|
||||||
style_overwrite = fields.Selection([
|
|
||||||
('0', 'Automatic formatting'),
|
|
||||||
('1', 'Main Title 1 (bold, underlined)'),
|
|
||||||
('2', 'Title 2 (bold)'),
|
|
||||||
('3', 'Title 3 (bold, smaller)'),
|
|
||||||
('4', 'Normal Text'),
|
|
||||||
('5', 'Italic Text (smaller)'),
|
|
||||||
('6', 'Smallest Text'),
|
|
||||||
], 'Financial Report Style', default='0',
|
|
||||||
help="You can set up here the format you want this record to be displayed. "
|
|
||||||
"If you leave the automatic formatting, it will be computed based on the "
|
|
||||||
"financial reports hierarchy (auto-computed field 'level').")
|
|
||||||
children_ids = fields.One2many('account.financial.report', 'parent_id', string='Children')
|
|
||||||
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
import ast
|
|
||||||
from odoo.osv import expression
|
|
||||||
from odoo import api, models, fields
|
|
||||||
|
|
||||||
|
|
||||||
class AccountMoveLine(models.Model):
|
|
||||||
_inherit = "account.move.line"
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _where_calc(self, domain, active_test=True):
|
|
||||||
"""Computes the WHERE clause needed to implement an OpenERP domain.
|
|
||||||
|
|
||||||
:param list domain: the domain to compute
|
|
||||||
:param bool active_test: whether the default filtering of records with
|
|
||||||
``active`` field set to ``False`` should be applied.
|
|
||||||
:return: the query expressing the given domain as provided in domain
|
|
||||||
:rtype: Query
|
|
||||||
"""
|
|
||||||
# if the object has an active field ('active', 'x_active'), filter out all
|
|
||||||
# inactive records unless they were explicitly asked for
|
|
||||||
if self._active_name and active_test and self.env.context.get('active_test', True):
|
|
||||||
# the item[0] trick below works for domain items and '&'/'|'/'!'
|
|
||||||
# operators too
|
|
||||||
if not any(item[0] == self._active_name for item in domain):
|
|
||||||
domain = [(self._active_name, '=', 1)] + domain
|
|
||||||
|
|
||||||
if domain:
|
|
||||||
return expression.expression(domain, self).query
|
|
||||||
else:
|
|
||||||
return Query(self.env, self._table, self._table_sql)
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _apply_ir_rules(self, query, mode='read'):
|
|
||||||
"""Add what's missing in ``query`` to implement all appropriate ir.rules
|
|
||||||
(using the ``model_name``'s rules or the current model's rules if ``model_name`` is None)
|
|
||||||
|
|
||||||
:param query: the current query object
|
|
||||||
"""
|
|
||||||
if self.env.su:
|
|
||||||
return
|
|
||||||
|
|
||||||
# apply main rules on the object
|
|
||||||
Rule = self.env['ir.rule']
|
|
||||||
domain = Rule._compute_domain(self._name, mode)
|
|
||||||
if domain:
|
|
||||||
expression.expression(domain, self.sudo(), self._table, query)
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _query_get(self, domain=None):
|
|
||||||
self.check_access('read')
|
|
||||||
|
|
||||||
context = dict(self.env.context or {})
|
|
||||||
domain = domain or []
|
|
||||||
if not isinstance(domain, (list, tuple)):
|
|
||||||
domain = ast.literal_eval(domain)
|
|
||||||
|
|
||||||
date_field = 'date'
|
|
||||||
if context.get('aged_balance'):
|
|
||||||
date_field = 'date_maturity'
|
|
||||||
if context.get('date_to'):
|
|
||||||
domain += [(date_field, '<=', context['date_to'])]
|
|
||||||
if context.get('date_from'):
|
|
||||||
if not context.get('strict_range'):
|
|
||||||
domain += ['|', (date_field, '>=', context['date_from']), ('account_id.include_initial_balance', '=', True)]
|
|
||||||
elif context.get('initial_bal'):
|
|
||||||
domain += [(date_field, '<', context['date_from'])]
|
|
||||||
else:
|
|
||||||
domain += [(date_field, '>=', context['date_from'])]
|
|
||||||
|
|
||||||
if context.get('journal_ids'):
|
|
||||||
domain += [('journal_id', 'in', context['journal_ids'])]
|
|
||||||
|
|
||||||
state = context.get('state')
|
|
||||||
if state and state.lower() != 'all':
|
|
||||||
domain += [('parent_state', '=', state)]
|
|
||||||
|
|
||||||
if context.get('company_id'):
|
|
||||||
domain += [('company_id', '=', context['company_id'])]
|
|
||||||
elif context.get('allowed_company_ids'):
|
|
||||||
domain += [('company_id', 'in', self.env.companies.ids)]
|
|
||||||
else:
|
|
||||||
domain += [('company_id', '=', self.env.company.id)]
|
|
||||||
|
|
||||||
if context.get('reconcile_date'):
|
|
||||||
domain += ['|', ('reconciled', '=', False), '|', ('matched_debit_ids.max_date', '>', context['reconcile_date']), ('matched_credit_ids.max_date', '>', context['reconcile_date'])]
|
|
||||||
|
|
||||||
if context.get('account_tag_ids'):
|
|
||||||
domain += [('account_id.tag_ids', 'in', context['account_tag_ids'].ids)]
|
|
||||||
|
|
||||||
if context.get('account_ids'):
|
|
||||||
domain += [('account_id', 'in', context['account_ids'].ids)]
|
|
||||||
|
|
||||||
if context.get('analytic_tag_ids'):
|
|
||||||
domain += [('analytic_tag_ids', 'in', context['analytic_tag_ids'].ids)]
|
|
||||||
|
|
||||||
if context.get('analytic_account_ids'):
|
|
||||||
domain += [('analytic_distribution', 'in', context['analytic_account_ids'].ids)]
|
|
||||||
|
|
||||||
if context.get('partner_ids'):
|
|
||||||
domain += [('partner_id', 'in', context['partner_ids'].ids)]
|
|
||||||
|
|
||||||
if context.get('partner_categories'):
|
|
||||||
domain += [('partner_id.category_id', 'in', context['partner_categories'].ids)]
|
|
||||||
|
|
||||||
where_clause = ""
|
|
||||||
where_clause_params = []
|
|
||||||
tables = ''
|
|
||||||
if domain:
|
|
||||||
domain.append(('display_type', 'not in', ('line_section', 'line_note')))
|
|
||||||
domain.append(('parent_state', '!=', 'cancel'))
|
|
||||||
|
|
||||||
query = self._where_calc(domain)
|
|
||||||
self._apply_ir_rules(query)
|
|
||||||
from_string, from_params = query.from_clause
|
|
||||||
where_string, where_params = query.where_clause
|
|
||||||
tables, where_clause, where_clause_params = from_string, where_string, from_params + where_params
|
|
||||||
return tables, where_clause, where_clause_params
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
from . import report_partner_ledger
|
|
||||||
from . import report_general_ledger
|
|
||||||
from . import report_trial_balance
|
|
||||||
from . import report_tax
|
|
||||||
from . import report_aged_partner
|
|
||||||
from . import report_journal
|
|
||||||
from . import report_financial
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="action_report_general_ledger" model="ir.actions.report">
|
|
||||||
<field name="name">General Ledger</field>
|
|
||||||
<field name="model">account.report.general.ledger</field>
|
|
||||||
<field name="report_type">qweb-pdf</field>
|
|
||||||
<field name="report_name">accounting_pdf_reports.report_general_ledger</field>
|
|
||||||
<field name="report_file">accounting_pdf_reports.report_general_ledger</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_report_partnerledger" model="ir.actions.report">
|
|
||||||
<field name="name">Partner Ledger</field>
|
|
||||||
<field name="model">account.report.partner.ledger</field>
|
|
||||||
<field name="report_type">qweb-pdf</field>
|
|
||||||
<field name="report_name">accounting_pdf_reports.report_partnerledger</field>
|
|
||||||
<field name="report_file">accounting_pdf_reports.report_partnerledger</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
|
|
||||||
<record id="action_report_trial_balance" model="ir.actions.report">
|
|
||||||
<field name="name">Trial Balance</field>
|
|
||||||
<field name="model">account.balance.report</field>
|
|
||||||
<field name="report_type">qweb-pdf</field>
|
|
||||||
<field name="report_name">accounting_pdf_reports.report_trialbalance</field>
|
|
||||||
<field name="report_file">accounting_pdf_reports.report_trialbalance</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_report_financial" model="ir.actions.report">
|
|
||||||
<field name="name">Financial Report</field>
|
|
||||||
<field name="model">account.financial.report</field>
|
|
||||||
<field name="report_type">qweb-pdf</field>
|
|
||||||
<field name="report_name">accounting_pdf_reports.report_financial</field>
|
|
||||||
<field name="report_file">accounting_pdf_reports.report_financial</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_report_account_tax" model="ir.actions.report">
|
|
||||||
<field name="name">Tax Report</field>
|
|
||||||
<field name="model">account.tax.report.wizard</field>
|
|
||||||
<field name="report_type">qweb-pdf</field>
|
|
||||||
<field name="report_name">accounting_pdf_reports.report_tax</field>
|
|
||||||
<field name="report_file">accounting_pdf_reports.report_tax</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_report_aged_partner_balance" model="ir.actions.report">
|
|
||||||
<field name="name">Aged Partner Balance</field>
|
|
||||||
<field name="model">res.partner</field>
|
|
||||||
<field name="report_type">qweb-pdf</field>
|
|
||||||
<field name="report_name">accounting_pdf_reports.report_agedpartnerbalance</field>
|
|
||||||
<field name="report_file">accounting_pdf_reports.report_agedpartnerbalance</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_report_journal" model="ir.actions.report">
|
|
||||||
<field name="name">Journals Audit</field>
|
|
||||||
<field name="model">account.common.journal.report</field>
|
|
||||||
<field name="report_type">qweb-pdf</field>
|
|
||||||
<field name="report_name">accounting_pdf_reports.report_journal</field>
|
|
||||||
<field name="report_file">accounting_pdf_reports.report_journal</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_report_journal_entries" model="ir.actions.report">
|
|
||||||
<field name="name">Journals Entries</field>
|
|
||||||
<field name="model">account.move</field>
|
|
||||||
<field name="report_type">qweb-pdf</field>
|
|
||||||
<field name="report_name">accounting_pdf_reports.report_journal_entries</field>
|
|
||||||
<field name="report_file">accounting_pdf_reports.report_journal_entries</field>
|
|
||||||
<field name="binding_model_id" ref="account.model_account_move"/>
|
|
||||||
<field name="binding_type">report</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,263 +0,0 @@
|
|||||||
import time
|
|
||||||
from odoo import api, models, fields, _
|
|
||||||
from odoo.exceptions import UserError
|
|
||||||
from odoo.tools import float_is_zero
|
|
||||||
from datetime import datetime
|
|
||||||
from dateutil.relativedelta import relativedelta
|
|
||||||
|
|
||||||
|
|
||||||
class ReportAgedPartnerBalance(models.AbstractModel):
|
|
||||||
_name = 'report.accounting_pdf_reports.report_agedpartnerbalance'
|
|
||||||
_description = 'Aged Partner Balance Report'
|
|
||||||
|
|
||||||
def _get_partner_move_lines(self, account_type, partner_ids,
|
|
||||||
date_from, target_move, period_length):
|
|
||||||
# This method can receive the context key 'include_nullified_amount' {Boolean}
|
|
||||||
# Do an invoice and a payment and unreconcile. The amount will be nullified
|
|
||||||
# By default, the partner wouldn't appear in this report.
|
|
||||||
# The context key allow it to appear
|
|
||||||
# In case of a period_length of 30 days as of 2019-02-08, we want the following periods:
|
|
||||||
# Name Stop Start
|
|
||||||
# 1 - 30 : 2019-02-07 - 2019-01-09
|
|
||||||
# 31 - 60 : 2019-01-08 - 2018-12-10
|
|
||||||
# 61 - 90 : 2018-12-09 - 2018-11-10
|
|
||||||
# 91 - 120 : 2018-11-09 - 2018-10-11
|
|
||||||
# +120 : 2018-10-10
|
|
||||||
periods = {}
|
|
||||||
start = datetime.strptime(str(date_from), "%Y-%m-%d")
|
|
||||||
date_from = datetime.strptime(str(date_from), "%Y-%m-%d").date()
|
|
||||||
for i in range(5)[::-1]:
|
|
||||||
stop = start - relativedelta(days=period_length)
|
|
||||||
period_name = str((5-(i+1)) * period_length + 1) + '-' + str((5-i) * period_length)
|
|
||||||
period_stop = (start - relativedelta(days=1)).strftime('%Y-%m-%d')
|
|
||||||
if i == 0:
|
|
||||||
period_name = '+' + str(4 * period_length)
|
|
||||||
periods[str(i)] = {
|
|
||||||
'name': period_name,
|
|
||||||
'stop': period_stop,
|
|
||||||
'start': (i!=0 and stop.strftime('%Y-%m-%d') or False),
|
|
||||||
}
|
|
||||||
start = stop
|
|
||||||
|
|
||||||
res = []
|
|
||||||
total = []
|
|
||||||
cr = self.env.cr
|
|
||||||
user_company = self.env.user.company_id
|
|
||||||
user_currency = user_company.currency_id
|
|
||||||
company_ids = self.env.context.get('company_ids') or [user_company.id]
|
|
||||||
move_state = ['draft', 'posted']
|
|
||||||
date = self.env.context.get('date') or fields.Date.today()
|
|
||||||
company = self.env['res.company'].browse(self.env.context.get('company_id')) or self.env.company
|
|
||||||
|
|
||||||
if target_move == 'posted':
|
|
||||||
move_state = ['posted']
|
|
||||||
arg_list = (tuple(move_state), tuple(account_type))
|
|
||||||
|
|
||||||
reconciliation_clause = '(l.reconciled IS FALSE)'
|
|
||||||
cr.execute('SELECT debit_move_id, credit_move_id FROM account_partial_reconcile where max_date > %s', (date_from,))
|
|
||||||
reconciled_after_date = []
|
|
||||||
for row in cr.fetchall():
|
|
||||||
reconciled_after_date += [row[0], row[1]]
|
|
||||||
if reconciled_after_date:
|
|
||||||
reconciliation_clause = '(l.reconciled IS FALSE OR l.id IN %s)'
|
|
||||||
arg_list += (tuple(reconciled_after_date),)
|
|
||||||
arg_list += (date_from, tuple(company_ids))
|
|
||||||
query = '''
|
|
||||||
SELECT DISTINCT l.partner_id, UPPER(res_partner.name)
|
|
||||||
FROM account_move_line AS l left join res_partner on l.partner_id = res_partner.id, account_account, account_move am
|
|
||||||
WHERE (l.account_id = account_account.id)
|
|
||||||
AND (l.move_id = am.id)
|
|
||||||
AND (am.state IN %s)
|
|
||||||
AND (account_account.account_type IN %s)
|
|
||||||
AND ''' + reconciliation_clause + '''
|
|
||||||
AND (l.date <= %s)
|
|
||||||
AND l.company_id IN %s
|
|
||||||
ORDER BY UPPER(res_partner.name)'''
|
|
||||||
cr.execute(query, arg_list)
|
|
||||||
partners = cr.dictfetchall()
|
|
||||||
# put a total of 0
|
|
||||||
for i in range(7):
|
|
||||||
total.append(0)
|
|
||||||
|
|
||||||
# Build a string like (1,2,3) for easy use in SQL query
|
|
||||||
if not partner_ids:
|
|
||||||
partner_ids = [partner['partner_id'] for partner in partners if partner['partner_id']]
|
|
||||||
lines = dict((partner['partner_id'] or False, []) for partner in partners)
|
|
||||||
if not partner_ids:
|
|
||||||
return [], [], {}
|
|
||||||
|
|
||||||
# This dictionary will store the not due amount of all partners
|
|
||||||
undue_amounts = {}
|
|
||||||
query = '''SELECT l.id
|
|
||||||
FROM account_move_line AS l, account_account, account_move am
|
|
||||||
WHERE (l.account_id = account_account.id) AND (l.move_id = am.id)
|
|
||||||
AND (am.state IN %s)
|
|
||||||
AND (account_account.account_type IN %s)
|
|
||||||
AND (COALESCE(l.date_maturity,l.date) >= %s)\
|
|
||||||
AND ((l.partner_id IN %s) OR (l.partner_id IS NULL))
|
|
||||||
AND (l.date <= %s)
|
|
||||||
AND l.company_id IN %s'''
|
|
||||||
cr.execute(query, (tuple(move_state), tuple(account_type), date_from,
|
|
||||||
tuple(partner_ids), date_from, tuple(company_ids)))
|
|
||||||
aml_ids = cr.fetchall()
|
|
||||||
aml_ids = aml_ids and [x[0] for x in aml_ids] or []
|
|
||||||
for line in self.env['account.move.line'].browse(aml_ids):
|
|
||||||
partner_id = line.partner_id.id or False
|
|
||||||
if partner_id not in undue_amounts:
|
|
||||||
undue_amounts[partner_id] = 0.0
|
|
||||||
line_amount = line.company_id.currency_id._convert(line.balance,
|
|
||||||
user_currency,
|
|
||||||
company, date)
|
|
||||||
if user_currency.is_zero(line_amount):
|
|
||||||
continue
|
|
||||||
for partial_line in line.matched_debit_ids:
|
|
||||||
if partial_line.max_date <= date_from:
|
|
||||||
line_currency = partial_line.company_id.currency_id
|
|
||||||
line_amount += line_currency._convert(partial_line.amount,
|
|
||||||
user_currency,
|
|
||||||
company, date)
|
|
||||||
for partial_line in line.matched_credit_ids:
|
|
||||||
if partial_line.max_date <= date_from:
|
|
||||||
line_currency = partial_line.company_id.currency_id
|
|
||||||
line_amount -= line_currency._convert(partial_line.amount,
|
|
||||||
user_currency,
|
|
||||||
company, date)
|
|
||||||
if not self.env.user.company_id.currency_id.is_zero(line_amount):
|
|
||||||
undue_amounts[partner_id] += line_amount
|
|
||||||
lines[partner_id].append({
|
|
||||||
'line': line,
|
|
||||||
'amount': line_amount,
|
|
||||||
'period': 6,
|
|
||||||
})
|
|
||||||
|
|
||||||
# Use one query per period and store results in history (a list variable)
|
|
||||||
# Each history will contain: history[1] = {'<partner_id>': <partner_debit-credit>}
|
|
||||||
history = []
|
|
||||||
for i in range(5):
|
|
||||||
args_list = (tuple(move_state), tuple(account_type), tuple(partner_ids),)
|
|
||||||
dates_query = '(COALESCE(l.date_maturity,l.date)'
|
|
||||||
|
|
||||||
if periods[str(i)]['start'] and periods[str(i)]['stop']:
|
|
||||||
dates_query += ' BETWEEN %s AND %s)'
|
|
||||||
args_list += (periods[str(i)]['start'], periods[str(i)]['stop'])
|
|
||||||
elif periods[str(i)]['start']:
|
|
||||||
dates_query += ' >= %s)'
|
|
||||||
args_list += (periods[str(i)]['start'],)
|
|
||||||
else:
|
|
||||||
dates_query += ' <= %s)'
|
|
||||||
args_list += (periods[str(i)]['stop'],)
|
|
||||||
args_list += (date_from, tuple(company_ids))
|
|
||||||
|
|
||||||
query = '''SELECT l.id
|
|
||||||
FROM account_move_line AS l, account_account, account_move am
|
|
||||||
WHERE (l.account_id = account_account.id) AND (l.move_id = am.id)
|
|
||||||
AND (am.state IN %s)
|
|
||||||
AND (account_account.account_type IN %s)
|
|
||||||
AND ((l.partner_id IN %s) OR (l.partner_id IS NULL))
|
|
||||||
AND ''' + dates_query + '''
|
|
||||||
AND (l.date <= %s)
|
|
||||||
AND l.company_id IN %s'''
|
|
||||||
cr.execute(query, args_list)
|
|
||||||
partners_amount = {}
|
|
||||||
aml_ids = cr.fetchall()
|
|
||||||
aml_ids = aml_ids and [x[0] for x in aml_ids] or []
|
|
||||||
for line in self.env['account.move.line'].browse(aml_ids):
|
|
||||||
partner_id = line.partner_id.id or False
|
|
||||||
if partner_id not in partners_amount:
|
|
||||||
partners_amount[partner_id] = 0.0
|
|
||||||
line_currency_id = line.company_id.currency_id
|
|
||||||
line_amount = line_currency_id._convert(line.balance, user_currency, company, date)
|
|
||||||
if user_currency.is_zero(line_amount):
|
|
||||||
continue
|
|
||||||
for partial_line in line.matched_debit_ids:
|
|
||||||
if partial_line.max_date <= date_from:
|
|
||||||
line_currency_id = partial_line.company_id.currency_id
|
|
||||||
line_amount += line_currency_id._convert(
|
|
||||||
partial_line.amount, user_currency, company, date)
|
|
||||||
for partial_line in line.matched_credit_ids:
|
|
||||||
if partial_line.max_date <= date_from:
|
|
||||||
line_currency_id = partial_line.company_id.currency_id
|
|
||||||
line_amount -= line_currency_id._convert(
|
|
||||||
partial_line.amount, user_currency, company, date)
|
|
||||||
if not self.env.user.company_id.currency_id.is_zero(line_amount):
|
|
||||||
partners_amount[partner_id] += line_amount
|
|
||||||
lines[partner_id].append({
|
|
||||||
'line': line,
|
|
||||||
'amount': line_amount,
|
|
||||||
'period': i + 1,
|
|
||||||
})
|
|
||||||
history.append(partners_amount)
|
|
||||||
|
|
||||||
for partner in partners:
|
|
||||||
if partner['partner_id'] is None:
|
|
||||||
partner['partner_id'] = False
|
|
||||||
at_least_one_amount = False
|
|
||||||
values = {}
|
|
||||||
undue_amt = 0.0
|
|
||||||
if partner['partner_id'] in undue_amounts: # Making sure this partner actually was found by the query
|
|
||||||
undue_amt = undue_amounts[partner['partner_id']]
|
|
||||||
|
|
||||||
total[6] = total[6] + undue_amt
|
|
||||||
values['direction'] = undue_amt
|
|
||||||
if not float_is_zero(values['direction'], precision_rounding=self.env.user.company_id.currency_id.rounding):
|
|
||||||
at_least_one_amount = True
|
|
||||||
|
|
||||||
for i in range(5):
|
|
||||||
during = False
|
|
||||||
if partner['partner_id'] in history[i]:
|
|
||||||
during = [history[i][partner['partner_id']]]
|
|
||||||
# Adding counter
|
|
||||||
total[(i)] = total[(i)] + (during and during[0] or 0)
|
|
||||||
values[str(i)] = during and during[0] or 0.0
|
|
||||||
if not float_is_zero(values[str(i)],
|
|
||||||
precision_rounding=self.env.user.company_id.currency_id.rounding):
|
|
||||||
at_least_one_amount = True
|
|
||||||
values['total'] = sum([values['direction']] + [values[str(i)] for i in range(5)])
|
|
||||||
## Add for total
|
|
||||||
total[(i + 1)] += values['total']
|
|
||||||
values['partner_id'] = partner['partner_id']
|
|
||||||
if partner['partner_id']:
|
|
||||||
browsed_partner = self.env['res.partner'].browse(partner['partner_id'])
|
|
||||||
values['name'] = browsed_partner.name and len(
|
|
||||||
browsed_partner.name) >= 45 and browsed_partner.name[
|
|
||||||
0:40] + '...' or browsed_partner.name
|
|
||||||
values['trust'] = browsed_partner.trust
|
|
||||||
else:
|
|
||||||
values['name'] = _('Unknown Partner')
|
|
||||||
values['trust'] = False
|
|
||||||
|
|
||||||
if at_least_one_amount or (self.env.context.get('include_nullified_amount') and lines[partner['partner_id']]):
|
|
||||||
res.append(values)
|
|
||||||
|
|
||||||
return res, total, lines
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _get_report_values(self, docids, data=None):
|
|
||||||
if not data.get('form') or not self.env.context.get('active_model') or not self.env.context.get('active_id'):
|
|
||||||
raise UserError(_("Form content is missing, this report cannot be printed."))
|
|
||||||
|
|
||||||
model = self.env.context.get('active_model')
|
|
||||||
docs = self.env[model].browse(self.env.context.get('active_id'))
|
|
||||||
|
|
||||||
target_move = data['form'].get('target_move', 'all')
|
|
||||||
date_from = data['form'].get('date_from', time.strftime('%Y-%m-%d'))
|
|
||||||
|
|
||||||
if data['form']['result_selection'] == 'customer':
|
|
||||||
account_type = ['asset_receivable']
|
|
||||||
elif data['form']['result_selection'] == 'supplier':
|
|
||||||
account_type = ['liability_payable']
|
|
||||||
else:
|
|
||||||
account_type = ['asset_receivable', 'liability_payable']
|
|
||||||
partner_ids = data['form']['partner_ids']
|
|
||||||
movelines, total, dummy = self._get_partner_move_lines(
|
|
||||||
account_type, partner_ids, date_from, target_move, data['form']['period_length']
|
|
||||||
)
|
|
||||||
return {
|
|
||||||
'doc_ids': self.ids,
|
|
||||||
'doc_model': model,
|
|
||||||
'data': data['form'],
|
|
||||||
'docs': docs,
|
|
||||||
'time': time,
|
|
||||||
'get_partner_lines': movelines,
|
|
||||||
'get_direction': total,
|
|
||||||
}
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<template id="report_agedpartnerbalance">
|
|
||||||
<t t-call="web.html_container">
|
|
||||||
<t t-set="data_report_margin_top" t-value="12"/>
|
|
||||||
<t t-set="data_report_header_spacing" t-value="9"/>
|
|
||||||
<t t-set="data_report_dpi" t-value="110"/>
|
|
||||||
<t t-call="web.internal_layout">
|
|
||||||
<div class="page">
|
|
||||||
<h2>Aged Partner Balance</h2>
|
|
||||||
|
|
||||||
<div class="row mt32">
|
|
||||||
<div class="col-3">
|
|
||||||
<strong>Start Date:</strong>
|
|
||||||
<p t-esc="data['date_from']"/>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<strong>Period Length (days)</strong>
|
|
||||||
<p t-esc="data['period_length']"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb32">
|
|
||||||
<div class="col-3">
|
|
||||||
<strong>Partner's:</strong>
|
|
||||||
<p>
|
|
||||||
<span t-if="data['result_selection'] == 'customer'">Receivable Accounts</span>
|
|
||||||
<span t-if="data['result_selection'] == 'supplier'">Payable Accounts</span>
|
|
||||||
<span t-if="data['result_selection'] == 'customer_supplier'">Receivable and Payable Accounts</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<strong>Target Moves:</strong>
|
|
||||||
<p>
|
|
||||||
<span t-if="data['target_move'] == 'all'">All Entries</span>
|
|
||||||
<span t-if="data['target_move'] == 'posted'">All Posted Entries</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="table table-sm table-reports">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Partners</th>
|
|
||||||
<th class="text-end">
|
|
||||||
<span>Not due</span>
|
|
||||||
</th>
|
|
||||||
<th class="text-end"><span t-esc="data['4']['name']"/></th>
|
|
||||||
<th class="text-end"><span t-esc="data['3']['name']"/></th>
|
|
||||||
<th class="text-end"><span t-esc="data['2']['name']"/></th>
|
|
||||||
<th class="text-end"><span t-esc="data['1']['name']"/></th>
|
|
||||||
<th class="text-end"><span t-esc="data['0']['name']"/></th>
|
|
||||||
<th class="text-end">Total</th>
|
|
||||||
</tr>
|
|
||||||
<tr t-if="get_partner_lines">
|
|
||||||
<th>Account Total</th>
|
|
||||||
<th class="text-end"><span t-esc="get_direction[6]" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></th>
|
|
||||||
<th class="text-end"><span t-esc="get_direction[4]" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></th>
|
|
||||||
<th class="text-end"><span t-esc="get_direction[3]" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></th>
|
|
||||||
<th class="text-end"><span t-esc="get_direction[2]" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></th>
|
|
||||||
<th class="text-end"><span t-esc="get_direction[1]" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></th>
|
|
||||||
<th class="text-end"><span t-esc="get_direction[0]" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></th>
|
|
||||||
<th class="text-end"><span t-esc="get_direction[5]" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr t-foreach="get_partner_lines" t-as="partner">
|
|
||||||
<td>
|
|
||||||
<span t-esc="partner['name']"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="partner['direction']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="partner['4']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="partner['3']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="partner['2']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="partner['1']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="partner['0']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="partner['total']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,163 +0,0 @@
|
|||||||
import time
|
|
||||||
from odoo import api, models, _
|
|
||||||
from odoo.exceptions import UserError
|
|
||||||
|
|
||||||
|
|
||||||
class ReportFinancial(models.AbstractModel):
|
|
||||||
_name = 'report.accounting_pdf_reports.report_financial'
|
|
||||||
_description = 'Financial Reports'
|
|
||||||
|
|
||||||
def _compute_account_balance(self, accounts):
|
|
||||||
""" compute the balance, debit and credit for the provided accounts
|
|
||||||
"""
|
|
||||||
mapping = {
|
|
||||||
'balance': "COALESCE(SUM(debit),0) - COALESCE(SUM(credit), 0) as balance",
|
|
||||||
'debit': "COALESCE(SUM(debit), 0) as debit",
|
|
||||||
'credit': "COALESCE(SUM(credit), 0) as credit",
|
|
||||||
}
|
|
||||||
|
|
||||||
res = {}
|
|
||||||
for account in accounts:
|
|
||||||
res[account.id] = dict.fromkeys(mapping, 0.0)
|
|
||||||
if accounts:
|
|
||||||
tables, where_clause, where_params = self.env['account.move.line']._query_get()
|
|
||||||
tables = tables.replace('"', '') if tables else "account_move_line"
|
|
||||||
wheres = [""]
|
|
||||||
if where_clause.strip():
|
|
||||||
wheres.append(where_clause.strip())
|
|
||||||
filters = " AND ".join(wheres)
|
|
||||||
request = "SELECT account_id as id, " + ', '.join(mapping.values()) + \
|
|
||||||
" FROM " + tables + \
|
|
||||||
" WHERE account_id IN %s " \
|
|
||||||
+ filters + \
|
|
||||||
" GROUP BY account_id"
|
|
||||||
params = (tuple(accounts._ids),) + tuple(where_params)
|
|
||||||
self.env.cr.execute(request, params)
|
|
||||||
for row in self.env.cr.dictfetchall():
|
|
||||||
res[row['id']] = row
|
|
||||||
return res
|
|
||||||
|
|
||||||
def _compute_report_balance(self, reports):
|
|
||||||
'''returns a dictionary with key=the ID of a record and value=the credit, debit and balance amount
|
|
||||||
computed for this record. If the record is of type :
|
|
||||||
'accounts' : it's the sum of the linked accounts
|
|
||||||
'account_type' : it's the sum of leaf accoutns with such an account_type
|
|
||||||
'account_report' : it's the amount of the related report
|
|
||||||
'sum' : it's the sum of the children of this record (aka a 'view' record)'''
|
|
||||||
res = {}
|
|
||||||
fields = ['credit', 'debit', 'balance']
|
|
||||||
for report in reports:
|
|
||||||
if report.id in res:
|
|
||||||
continue
|
|
||||||
res[report.id] = dict((fn, 0.0) for fn in fields)
|
|
||||||
if report.type == 'accounts':
|
|
||||||
# it's the sum of the linked accounts
|
|
||||||
res[report.id]['account'] = self._compute_account_balance(report.account_ids)
|
|
||||||
for value in res[report.id]['account'].values():
|
|
||||||
for field in fields:
|
|
||||||
res[report.id][field] += value.get(field)
|
|
||||||
elif report.type == 'account_type':
|
|
||||||
# it's the sum the leaf accounts with such an account type
|
|
||||||
accounts = self.env['account.account'].search(
|
|
||||||
[('account_type', 'in', report.account_type_ids.mapped('type'))])
|
|
||||||
|
|
||||||
res[report.id]['account'] = self._compute_account_balance(accounts)
|
|
||||||
for value in res[report.id]['account'].values():
|
|
||||||
for field in fields:
|
|
||||||
res[report.id][field] += value.get(field)
|
|
||||||
elif report.type == 'account_report' and report.account_report_id:
|
|
||||||
# it's the amount of the linked report
|
|
||||||
res2 = self._compute_report_balance(report.account_report_id)
|
|
||||||
for key, value in res2.items():
|
|
||||||
for field in fields:
|
|
||||||
res[report.id][field] += value[field]
|
|
||||||
elif report.type == 'sum':
|
|
||||||
# it's the sum of the children of this account.report
|
|
||||||
res2 = self._compute_report_balance(report.children_ids)
|
|
||||||
for key, value in res2.items():
|
|
||||||
for field in fields:
|
|
||||||
res[report.id][field] += value[field]
|
|
||||||
return res
|
|
||||||
|
|
||||||
def get_account_lines(self, data):
|
|
||||||
lines = []
|
|
||||||
account_report = self.env['account.financial.report'].search(
|
|
||||||
[('id', '=', data['account_report_id'][0])])
|
|
||||||
child_reports = account_report._get_children_by_order()
|
|
||||||
res = self.with_context(data.get('used_context'))._compute_report_balance(child_reports)
|
|
||||||
if data['enable_filter']:
|
|
||||||
comparison_res = self.with_context(
|
|
||||||
data.get('comparison_context'))._compute_report_balance(
|
|
||||||
child_reports)
|
|
||||||
for report_id, value in comparison_res.items():
|
|
||||||
res[report_id]['comp_bal'] = value['balance']
|
|
||||||
report_acc = res[report_id].get('account')
|
|
||||||
if report_acc:
|
|
||||||
for account_id, val in comparison_res[report_id].get('account').items():
|
|
||||||
report_acc[account_id]['comp_bal'] = val['balance']
|
|
||||||
for report in child_reports:
|
|
||||||
vals = {
|
|
||||||
'name': report.name,
|
|
||||||
'balance': res[report.id]['balance'] * float(report.sign),
|
|
||||||
'type': 'report',
|
|
||||||
'level': bool(report.style_overwrite) and report.style_overwrite or report.level,
|
|
||||||
'account_type': report.type or False, #used to underline the financial report balances
|
|
||||||
}
|
|
||||||
if data['debit_credit']:
|
|
||||||
vals['debit'] = res[report.id]['debit']
|
|
||||||
vals['credit'] = res[report.id]['credit']
|
|
||||||
|
|
||||||
if data['enable_filter']:
|
|
||||||
vals['balance_cmp'] = res[report.id]['comp_bal'] * float(report.sign)
|
|
||||||
|
|
||||||
lines.append(vals)
|
|
||||||
if report.display_detail == 'no_detail':
|
|
||||||
#the rest of the loop is used to display the details of the financial report, so it's not needed here.
|
|
||||||
continue
|
|
||||||
if res[report.id].get('account'):
|
|
||||||
sub_lines = []
|
|
||||||
for account_id, value in res[report.id]['account'].items():
|
|
||||||
#if there are accounts to display, we add them to the lines with a level equals to their level in
|
|
||||||
#the COA + 1 (to avoid having them with a too low level that would conflicts with the level of data
|
|
||||||
#financial reports for Assets, liabilities...)
|
|
||||||
flag = False
|
|
||||||
account = self.env['account.account'].browse(account_id)
|
|
||||||
vals = {
|
|
||||||
'name': account.code + ' ' + account.name,
|
|
||||||
'balance': value['balance'] * float(report.sign) or 0.0,
|
|
||||||
'type': 'account',
|
|
||||||
'level': report.display_detail == 'detail_with_hierarchy' and 4,
|
|
||||||
'account_type': account.account_type,
|
|
||||||
}
|
|
||||||
if data['debit_credit']:
|
|
||||||
vals['debit'] = value['debit']
|
|
||||||
vals['credit'] = value['credit']
|
|
||||||
if not self.env.company.currency_id.is_zero(vals['debit']) or not self.env.company.currency_id.is_zero(vals['credit']):
|
|
||||||
flag = True
|
|
||||||
if not self.env.company.currency_id.is_zero(vals['balance']):
|
|
||||||
flag = True
|
|
||||||
if data['enable_filter']:
|
|
||||||
vals['balance_cmp'] = value['comp_bal'] * float(report.sign)
|
|
||||||
if not self.env.company.currency_id.is_zero(vals['balance_cmp']):
|
|
||||||
flag = True
|
|
||||||
if flag:
|
|
||||||
sub_lines.append(vals)
|
|
||||||
lines += sorted(sub_lines, key=lambda sub_line: sub_line['name'])
|
|
||||||
return lines
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _get_report_values(self, docids, data=None):
|
|
||||||
if not data.get('form') or not self.env.context.get('active_model') or not self.env.context.get('active_id'):
|
|
||||||
raise UserError(_("Form content is missing, this report cannot be printed."))
|
|
||||||
|
|
||||||
model = self.env.context.get('active_model')
|
|
||||||
docs = self.env[model].browse(self.env.context.get('active_id'))
|
|
||||||
report_lines = self.get_account_lines(data.get('form'))
|
|
||||||
return {
|
|
||||||
'doc_ids': self.ids,
|
|
||||||
'doc_model': model,
|
|
||||||
'data': data['form'],
|
|
||||||
'docs': docs,
|
|
||||||
'time': time,
|
|
||||||
'get_account_lines': report_lines,
|
|
||||||
}
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<template id="report_financial">
|
|
||||||
<t t-call="web.html_container">
|
|
||||||
<t t-foreach="docs" t-as="o">
|
|
||||||
<t t-call="web.internal_layout">
|
|
||||||
<div class="page">
|
|
||||||
<h2 t-esc="data['account_report_id'][1]"/>
|
|
||||||
|
|
||||||
<div class="row mt32 mb32">
|
|
||||||
<div class="col-4">
|
|
||||||
<strong>Target Moves:</strong>
|
|
||||||
<p>
|
|
||||||
<span t-if="data['target_move'] == 'all'">All Entries</span>
|
|
||||||
<span t-if="data['target_move'] == 'posted'">All Posted Entries</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<p>
|
|
||||||
<t t-if="data['date_from']"><strong>Date from :</strong> <span t-esc="data['date_from']"/><br/></t>
|
|
||||||
<t t-if="data['date_to']"><strong>Date to :</strong> <span t-esc="data['date_to']"/></t>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="table table-sm table-reports" t-if="data['debit_credit'] == 1">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Name</th>
|
|
||||||
<th class="text-end">Debit</th>
|
|
||||||
<th class="text-end">Credit</th>
|
|
||||||
<th class="text-end">Balance</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr t-foreach="get_account_lines" t-as="a">
|
|
||||||
<t t-if="a['level'] != 0">
|
|
||||||
<t t-if="int(a.get('level')) > 3"><t t-set="style" t-value="'font-weight: normal;'"/></t>
|
|
||||||
<t t-if="not int(a.get('level')) > 3"><t t-set="style" t-value="'font-weight: bold;'"/></t>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<span style="color: white;" t-esc="'..' * int(a.get('level', 0))"/>
|
|
||||||
<span t-att-style="style" t-esc="a.get('name')"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end" style="white-space: text-nowrap;">
|
|
||||||
<span t-att-style="style" t-esc="a.get('debit')" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end" style="white-space: text-nowrap;">
|
|
||||||
<span t-att-style="style" t-esc="a.get('credit')" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end" style="white-space: text-nowrap;">
|
|
||||||
<span t-att-style="style" t-esc="a.get('balance')" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
</t>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<table class="table table-sm table-reports" t-if="not data['enable_filter'] and not data['debit_credit']">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Name</th>
|
|
||||||
<th class="text-end">Balance</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr t-foreach="get_account_lines" t-as="a">
|
|
||||||
<t t-if="a['level'] != 0">
|
|
||||||
<t t-if="int(a.get('level')) > 3"><t t-set="style" t-value="'font-weight: normal;'"/></t>
|
|
||||||
<t t-if="not int(a.get('level')) > 3"><t t-set="style" t-value="'font-weight: bold;'"/></t>
|
|
||||||
|
|
||||||
<td>
|
|
||||||
<span style="color: white;" t-esc="'..' * int(a.get('level', 0))"/>
|
|
||||||
<span t-att-style="style" t-esc="a.get('name')"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end"><span t-att-style="style" t-esc="a.get('balance')" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></td>
|
|
||||||
</t>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<table class="table table-sm table-reports" t-if="data['enable_filter'] == 1 and not data['debit_credit']">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Name</th>
|
|
||||||
<th class="text-end">Balance</th>
|
|
||||||
<th class="text-end"><span t-esc="data['label_filter']"/></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr t-foreach="get_account_lines" t-as="a">
|
|
||||||
<t t-if="a['level'] != 0">
|
|
||||||
<t t-if="int(a.get('level')) > 3"><t t-set="style" t-value="'font-weight: normal;'"/></t>
|
|
||||||
<t t-if="not int(a.get('level')) > 3"><t t-set="style" t-value="'font-weight: bold;'"/></t>
|
|
||||||
<td>
|
|
||||||
<span style="color: white;" t-esc="'..'"/>
|
|
||||||
<span t-att-style="style" t-esc="a.get('name')"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-att-style="style" t-esc="a.get('balance')" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-att-style="style" t-esc="a.get('balance_cmp')" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
</t>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,184 +0,0 @@
|
|||||||
import time
|
|
||||||
from odoo import api, models, _
|
|
||||||
from odoo.exceptions import UserError
|
|
||||||
|
|
||||||
|
|
||||||
class ReportGeneralLedger(models.AbstractModel):
|
|
||||||
_name = 'report.accounting_pdf_reports.report_general_ledger'
|
|
||||||
_description = 'General Ledger Report'
|
|
||||||
|
|
||||||
def _get_account_move_entry(self, accounts, analytic_account_ids,
|
|
||||||
partner_ids, init_balance,
|
|
||||||
sortby, display_account):
|
|
||||||
"""
|
|
||||||
:param:
|
|
||||||
accounts: the recordset of accounts
|
|
||||||
analytic_account_ids: the recordset of analytic accounts
|
|
||||||
init_balance: boolean value of initial_balance
|
|
||||||
sortby: sorting by date or partner and journal
|
|
||||||
display_account: type of account(receivable, payable and both)
|
|
||||||
|
|
||||||
Returns a dictionary of accounts with following key and value {
|
|
||||||
'code': account code,
|
|
||||||
'name': account name,
|
|
||||||
'debit': sum of total debit amount,
|
|
||||||
'credit': sum of total credit amount,
|
|
||||||
'balance': total balance,
|
|
||||||
'amount_currency': sum of amount_currency,
|
|
||||||
'move_lines': list of move line
|
|
||||||
}
|
|
||||||
"""
|
|
||||||
cr = self.env.cr
|
|
||||||
MoveLine = self.env['account.move.line']
|
|
||||||
move_lines = {x: [] for x in accounts.ids}
|
|
||||||
|
|
||||||
# Prepare initial sql query and Get the initial move lines
|
|
||||||
if init_balance:
|
|
||||||
context = dict(self.env.context)
|
|
||||||
context['date_from'] = self.env.context.get('date_from')
|
|
||||||
context['date_to'] = False
|
|
||||||
context['initial_bal'] = True
|
|
||||||
if analytic_account_ids:
|
|
||||||
context['analytic_account_ids'] = analytic_account_ids
|
|
||||||
if partner_ids:
|
|
||||||
context['partner_ids'] = partner_ids
|
|
||||||
init_tables, init_where_clause, init_where_params = MoveLine.with_context(context)._query_get()
|
|
||||||
init_wheres = [""]
|
|
||||||
if init_where_clause.strip():
|
|
||||||
init_wheres.append(init_where_clause.strip())
|
|
||||||
init_filters = " AND ".join(init_wheres)
|
|
||||||
filters = init_filters.replace('account_move_line__move_id', 'm').replace('account_move_line', 'l')
|
|
||||||
sql = ("""SELECT 0 AS lid, l.account_id AS account_id, '' AS ldate,
|
|
||||||
'' AS lcode, 0.0 AS amount_currency,
|
|
||||||
'' AS analytic_account_id, '' AS lref,
|
|
||||||
'Initial Balance' AS lname, COALESCE(SUM(l.debit),0.0) AS debit,
|
|
||||||
COALESCE(SUM(l.credit),0.0) AS credit,
|
|
||||||
COALESCE(SUM(l.debit),0) - COALESCE(SUM(l.credit), 0) as balance,
|
|
||||||
'' AS lpartner_id,\
|
|
||||||
'' AS move_name, '' AS move_id, '' AS currency_code,\
|
|
||||||
NULL AS currency_id,\
|
|
||||||
'' AS invoice_id, '' AS invoice_type, '' AS invoice_number,\
|
|
||||||
'' AS partner_name\
|
|
||||||
FROM account_move_line l\
|
|
||||||
LEFT JOIN account_move m ON (l.move_id=m.id)\
|
|
||||||
LEFT JOIN res_currency c ON (l.currency_id=c.id)\
|
|
||||||
LEFT JOIN res_partner p ON (l.partner_id=p.id)\
|
|
||||||
JOIN account_journal j ON (l.journal_id=j.id)\
|
|
||||||
WHERE l.account_id IN %s""" + filters + ' GROUP BY l.account_id')
|
|
||||||
params = (tuple(accounts.ids),) + tuple(init_where_params)
|
|
||||||
cr.execute(sql, params)
|
|
||||||
for row in cr.dictfetchall():
|
|
||||||
move_lines[row.pop('account_id')].append(row)
|
|
||||||
|
|
||||||
sql_sort = 'l.date, l.move_id'
|
|
||||||
if sortby == 'sort_journal_partner':
|
|
||||||
sql_sort = 'j.code, p.name, l.move_id'
|
|
||||||
|
|
||||||
# Prepare sql query base on selected parameters from wizard
|
|
||||||
context = dict(self.env.context)
|
|
||||||
if analytic_account_ids:
|
|
||||||
context['analytic_account_ids'] = analytic_account_ids
|
|
||||||
if partner_ids:
|
|
||||||
context['partner_ids'] = partner_ids
|
|
||||||
tables, where_clause, where_params = MoveLine.with_context(context)._query_get()
|
|
||||||
wheres = [""]
|
|
||||||
if where_clause.strip():
|
|
||||||
wheres.append(where_clause.strip())
|
|
||||||
filters = " AND ".join(wheres)
|
|
||||||
filters = filters.replace('account_move_line__move_id', 'm').replace('account_move_line', 'l')
|
|
||||||
|
|
||||||
# Get move lines base on sql query and Calculate the total balance of move lines
|
|
||||||
sql = ('''SELECT l.id AS lid, l.account_id AS account_id,
|
|
||||||
l.date AS ldate, j.code AS lcode, l.currency_id,
|
|
||||||
l.amount_currency, '' AS analytic_account_id,
|
|
||||||
l.ref AS lref, l.name AS lname, COALESCE(l.debit,0) AS debit,
|
|
||||||
COALESCE(l.credit,0) AS credit,
|
|
||||||
COALESCE(SUM(l.debit),0) - COALESCE(SUM(l.credit), 0) AS balance,\
|
|
||||||
m.name AS move_name, c.symbol AS currency_code,
|
|
||||||
p.name AS partner_name\
|
|
||||||
FROM account_move_line l\
|
|
||||||
JOIN account_move m ON (l.move_id=m.id)\
|
|
||||||
LEFT JOIN res_currency c ON (l.currency_id=c.id)\
|
|
||||||
LEFT JOIN res_partner p ON (l.partner_id=p.id)\
|
|
||||||
JOIN account_journal j ON (l.journal_id=j.id)\
|
|
||||||
JOIN account_account acc ON (l.account_id = acc.id) \
|
|
||||||
WHERE l.account_id IN %s ''' + filters + ''' GROUP BY l.id,
|
|
||||||
l.account_id, l.date, j.code, l.currency_id, l.amount_currency,
|
|
||||||
l.ref, l.name, m.name, c.symbol, p.name ORDER BY ''' + sql_sort)
|
|
||||||
params = (tuple(accounts.ids),) + tuple(where_params)
|
|
||||||
cr.execute(sql, params)
|
|
||||||
|
|
||||||
for row in cr.dictfetchall():
|
|
||||||
balance = 0
|
|
||||||
for line in move_lines.get(row['account_id']):
|
|
||||||
balance += line['debit'] - line['credit']
|
|
||||||
row['balance'] += balance
|
|
||||||
move_lines[row.pop('account_id')].append(row)
|
|
||||||
|
|
||||||
# Calculate the debit, credit and balance for Accounts
|
|
||||||
account_res = []
|
|
||||||
for account in accounts:
|
|
||||||
currency = account.currency_id and account.currency_id or self.env.company.currency_id
|
|
||||||
res = dict((fn, 0.0) for fn in ['credit', 'debit', 'balance'])
|
|
||||||
res['code'] = account.code
|
|
||||||
res['name'] = account.name
|
|
||||||
res['move_lines'] = move_lines[account.id]
|
|
||||||
for line in res.get('move_lines'):
|
|
||||||
res['debit'] += line['debit']
|
|
||||||
res['credit'] += line['credit']
|
|
||||||
res['balance'] = line['balance']
|
|
||||||
if display_account == 'all':
|
|
||||||
account_res.append(res)
|
|
||||||
if display_account == 'movement' and res.get('move_lines'):
|
|
||||||
account_res.append(res)
|
|
||||||
if display_account == 'not_zero' and not currency.is_zero(res['balance']):
|
|
||||||
account_res.append(res)
|
|
||||||
return account_res
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _get_report_values(self, docids, data=None):
|
|
||||||
if not data.get('form') or not self.env.context.get('active_model'):
|
|
||||||
raise UserError(_("Form content is missing, this report cannot be printed."))
|
|
||||||
model = self.env.context.get('active_model')
|
|
||||||
docs = self.env[model].browse(self.env.context.get('active_ids', []))
|
|
||||||
init_balance = data['form'].get('initial_balance', True)
|
|
||||||
sortby = data['form'].get('sortby', 'sort_date')
|
|
||||||
display_account = data['form']['display_account']
|
|
||||||
codes = []
|
|
||||||
if data['form'].get('journal_ids', False):
|
|
||||||
codes = [journal.code for journal in
|
|
||||||
self.env['account.journal'].search(
|
|
||||||
[('id', 'in', data['form']['journal_ids'])])]
|
|
||||||
analytic_account_ids = False
|
|
||||||
if data['form'].get('analytic_account_ids', False):
|
|
||||||
analytic_account_ids = self.env['account.analytic.account'].search(
|
|
||||||
[('id', 'in', data['form']['analytic_account_ids'])])
|
|
||||||
partner_ids = False
|
|
||||||
if data['form'].get('partner_ids', False):
|
|
||||||
partner_ids = self.env['res.partner'].search(
|
|
||||||
[('id', 'in', data['form']['partner_ids'])])
|
|
||||||
if model == 'account.account':
|
|
||||||
accounts = docs
|
|
||||||
else:
|
|
||||||
domain = []
|
|
||||||
if data['form'].get('account_ids', False):
|
|
||||||
domain.append(('id', 'in', data['form']['account_ids']))
|
|
||||||
accounts = self.env['account.account'].search(domain)
|
|
||||||
accounts_res = self.with_context(
|
|
||||||
data['form'].get('used_context', {}))._get_account_move_entry(
|
|
||||||
accounts,
|
|
||||||
analytic_account_ids,
|
|
||||||
partner_ids,
|
|
||||||
init_balance, sortby, display_account)
|
|
||||||
return {
|
|
||||||
'doc_ids': docids,
|
|
||||||
'doc_model': model,
|
|
||||||
'data': data['form'],
|
|
||||||
'docs': docs,
|
|
||||||
'time': time,
|
|
||||||
'Accounts': accounts_res,
|
|
||||||
'print_journal': codes,
|
|
||||||
'accounts': accounts,
|
|
||||||
'partner_ids': partner_ids,
|
|
||||||
'analytic_account_ids': analytic_account_ids,
|
|
||||||
}
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<template id="report_general_ledger">
|
|
||||||
<t t-call="web.html_container">
|
|
||||||
<t t-set="data_report_margin_top" t-value="12"/>
|
|
||||||
<t t-set="data_report_header_spacing" t-value="9"/>
|
|
||||||
<t t-set="data_report_dpi" t-value="110"/>
|
|
||||||
<t t-call="web.internal_layout">
|
|
||||||
<div class="page">
|
|
||||||
<h2><span t-esc="res_company.name"/>: General ledger</h2>
|
|
||||||
|
|
||||||
<div class="row mt32">
|
|
||||||
<div class="col-4">
|
|
||||||
<strong>Journals:</strong>
|
|
||||||
<p t-esc="', '.join([ lt or '' for lt in print_journal ])"/>
|
|
||||||
</div>
|
|
||||||
<t groups="analytic.group_analytic_accounting">
|
|
||||||
<t t-if="analytic_account_ids">
|
|
||||||
<div class="col-4">
|
|
||||||
<strong>Analytic Accounts:</strong>
|
|
||||||
<p t-esc="', '.join([aa.name or '' for aa in analytic_account_ids ])"/>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
<div class="col-4">
|
|
||||||
<strong>Display Account</strong>
|
|
||||||
<p>
|
|
||||||
<span t-if="data['display_account'] == 'all'">All accounts'</span>
|
|
||||||
<span t-if="data['display_account'] == 'movement'">With movements</span>
|
|
||||||
<span t-if="data['display_account'] == 'not_zero'">With balance not equal to zero</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<strong>Target Moves:</strong>
|
|
||||||
<p t-if="data['target_move'] == 'all'">All Entries</p>
|
|
||||||
<p t-if="data['target_move'] == 'posted'">All Posted Entries</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mb32">
|
|
||||||
<div class="col-4">
|
|
||||||
<strong>Sorted By:</strong>
|
|
||||||
<p t-if="data['sortby'] == 'sort_date'">Date</p>
|
|
||||||
<p t-if="data['sortby'] == 'sort_journal_partner'">Journal and Partner</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<t t-if="data['date_from']"><strong>Date from :</strong> <span t-esc="data['date_from']"/><br/></t>
|
|
||||||
<t t-if="data['date_to']"><strong>Date to :</strong> <span t-esc="data['date_to']"/></t>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="table table-sm table-reports">
|
|
||||||
<thead>
|
|
||||||
<tr class="text-center">
|
|
||||||
<th>Date</th>
|
|
||||||
<th>JRNL</th>
|
|
||||||
<th>Partner</th>
|
|
||||||
<th>Ref</th>
|
|
||||||
<th>Move</th>
|
|
||||||
<t groups="analytic.group_analytic_accounting">
|
|
||||||
<th>Analytic Account</th>
|
|
||||||
</t>
|
|
||||||
<th>Entry Label</th>
|
|
||||||
<th>Debit</th>
|
|
||||||
<th>Credit</th>
|
|
||||||
<th>Balance</th>
|
|
||||||
<th groups="base.group_multi_currency">Currency</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<t t-foreach="Accounts" t-as="account">
|
|
||||||
<tr style="font-weight: bold;">
|
|
||||||
<td colspan="6">
|
|
||||||
<span style="color: white;" t-esc="'..'"/>
|
|
||||||
<span t-esc="account['code']"/>
|
|
||||||
<span t-esc="account['name']"/>
|
|
||||||
</td>
|
|
||||||
<t groups="analytic.group_analytic_accounting">
|
|
||||||
<td></td>
|
|
||||||
</t>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="account['debit']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="account['credit']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="account['balance']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td groups="base.group_multi_currency"/>
|
|
||||||
</tr>
|
|
||||||
<tr t-foreach="account['move_lines']" t-as="line">
|
|
||||||
<td><span t-esc="line['ldate']"/></td>
|
|
||||||
<td><span t-esc="line['lcode']"/></td>
|
|
||||||
<td><span t-esc="line['partner_name']"/></td>
|
|
||||||
<td><span t-if="line['lref']" t-esc="line['lref']"/></td>
|
|
||||||
<td><span t-esc="line['move_name']"/></td>
|
|
||||||
<t groups="analytic.group_analytic_accounting">
|
|
||||||
<td><span t-esc="line['analytic_account_id']"/></td>
|
|
||||||
</t>
|
|
||||||
<td><span t-esc="line['lname']"/></td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="line['debit']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="line['credit']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="line['balance']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end" groups="base.group_multi_currency">
|
|
||||||
<span t-esc="line['amount_currency'] if line['amount_currency'] and line['amount_currency'] > 0.00 else ''"/>
|
|
||||||
<span t-esc="line['currency_code'] if line['amount_currency'] and line['amount_currency'] > 0.00 else ''"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</t>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,117 +0,0 @@
|
|||||||
import time
|
|
||||||
from odoo import api, models, _
|
|
||||||
from odoo.exceptions import UserError
|
|
||||||
|
|
||||||
|
|
||||||
class ReportJournal(models.AbstractModel):
|
|
||||||
_name = 'report.accounting_pdf_reports.report_journal'
|
|
||||||
_description = 'Journal Audit Report'
|
|
||||||
|
|
||||||
def lines(self, target_move, journal_ids, sort_selection, data):
|
|
||||||
if isinstance(journal_ids, int):
|
|
||||||
journal_ids = [journal_ids]
|
|
||||||
|
|
||||||
move_state = ['draft', 'posted']
|
|
||||||
if target_move == 'posted':
|
|
||||||
move_state = ['posted']
|
|
||||||
|
|
||||||
query_get_clause = self._get_query_get_clause(data)
|
|
||||||
params = [tuple(move_state), tuple(journal_ids)] + query_get_clause[2]
|
|
||||||
query = 'SELECT "account_move_line".id FROM ' + query_get_clause[0] + ', account_move am, account_account acc WHERE "account_move_line".account_id = acc.id AND "account_move_line".move_id=am.id AND am.state IN %s AND "account_move_line".journal_id IN %s AND ' + query_get_clause[1] + ' ORDER BY '
|
|
||||||
if sort_selection == 'date':
|
|
||||||
query += '"account_move_line".date'
|
|
||||||
else:
|
|
||||||
query += 'am.name'
|
|
||||||
query += ', "account_move_line".move_id'
|
|
||||||
self.env.cr.execute(query, tuple(params))
|
|
||||||
ids = (x[0] for x in self.env.cr.fetchall())
|
|
||||||
return self.env['account.move.line'].browse(ids)
|
|
||||||
|
|
||||||
def _sum_debit(self, data, journal_id):
|
|
||||||
move_state = ['draft', 'posted']
|
|
||||||
if data['form'].get('target_move', 'all') == 'posted':
|
|
||||||
move_state = ['posted']
|
|
||||||
|
|
||||||
query_get_clause = self._get_query_get_clause(data)
|
|
||||||
params = [tuple(move_state), tuple(journal_id.ids)] + query_get_clause[2]
|
|
||||||
self.env.cr.execute('SELECT SUM(debit) FROM ' + query_get_clause[0] + ', account_move am '
|
|
||||||
'WHERE "account_move_line".move_id=am.id AND am.state IN %s AND "account_move_line".journal_id IN %s AND ' + query_get_clause[1] + ' ',
|
|
||||||
tuple(params))
|
|
||||||
return self.env.cr.fetchone()[0] or 0.0
|
|
||||||
|
|
||||||
def _sum_credit(self, data, journal_id):
|
|
||||||
move_state = ['draft', 'posted']
|
|
||||||
if data['form'].get('target_move', 'all') == 'posted':
|
|
||||||
move_state = ['posted']
|
|
||||||
|
|
||||||
query_get_clause = self._get_query_get_clause(data)
|
|
||||||
params = [tuple(move_state), tuple(journal_id.ids)] + query_get_clause[2]
|
|
||||||
self.env.cr.execute('SELECT SUM(credit) FROM ' + query_get_clause[0] + ', account_move am '
|
|
||||||
'WHERE "account_move_line".move_id=am.id AND am.state IN %s AND "account_move_line".journal_id IN %s AND ' + query_get_clause[1] + ' ',
|
|
||||||
tuple(params))
|
|
||||||
return self.env.cr.fetchone()[0] or 0.0
|
|
||||||
|
|
||||||
def _get_taxes(self, data, journal_id):
|
|
||||||
move_state = ['draft', 'posted']
|
|
||||||
if data['form'].get('target_move', 'all') == 'posted':
|
|
||||||
move_state = ['posted']
|
|
||||||
|
|
||||||
query_get_clause = self._get_query_get_clause(data)
|
|
||||||
params = [tuple(move_state), tuple(journal_id.ids)] + query_get_clause[2]
|
|
||||||
query = """
|
|
||||||
SELECT rel.account_tax_id, SUM("account_move_line".balance) AS base_amount
|
|
||||||
FROM account_move_line_account_tax_rel rel, """ + query_get_clause[0] + """
|
|
||||||
LEFT JOIN account_move am ON "account_move_line".move_id = am.id
|
|
||||||
WHERE "account_move_line".id = rel.account_move_line_id
|
|
||||||
AND am.state IN %s
|
|
||||||
AND "account_move_line".journal_id IN %s
|
|
||||||
AND """ + query_get_clause[1] + """
|
|
||||||
GROUP BY rel.account_tax_id"""
|
|
||||||
self.env.cr.execute(query, tuple(params))
|
|
||||||
ids = []
|
|
||||||
base_amounts = {}
|
|
||||||
for row in self.env.cr.fetchall():
|
|
||||||
ids.append(row[0])
|
|
||||||
base_amounts[row[0]] = row[1]
|
|
||||||
|
|
||||||
|
|
||||||
res = {}
|
|
||||||
for tax in self.env['account.tax'].browse(ids):
|
|
||||||
self.env.cr.execute('SELECT sum(debit - credit) FROM ' + query_get_clause[0] + ', account_move am '
|
|
||||||
'WHERE "account_move_line".move_id=am.id AND am.state IN %s AND "account_move_line".journal_id IN %s AND ' + query_get_clause[1] + ' AND tax_line_id = %s',
|
|
||||||
tuple(params + [tax.id]))
|
|
||||||
res[tax] = {
|
|
||||||
'base_amount': base_amounts[tax.id],
|
|
||||||
'tax_amount': self.env.cr.fetchone()[0] or 0.0,
|
|
||||||
}
|
|
||||||
if journal_id.type == 'sale':
|
|
||||||
#sales operation are credits
|
|
||||||
res[tax]['base_amount'] = res[tax]['base_amount'] * -1
|
|
||||||
res[tax]['tax_amount'] = res[tax]['tax_amount'] * -1
|
|
||||||
return res
|
|
||||||
|
|
||||||
def _get_query_get_clause(self, data):
|
|
||||||
return self.env['account.move.line'].with_context(data['form'].get('used_context', {}))._query_get()
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _get_report_values(self, docids, data=None):
|
|
||||||
if not data.get('form'):
|
|
||||||
raise UserError(_("Form content is missing, this report cannot be printed."))
|
|
||||||
|
|
||||||
target_move = data['form'].get('target_move', 'all')
|
|
||||||
sort_selection = data['form'].get('sort_selection', 'date')
|
|
||||||
|
|
||||||
res = {}
|
|
||||||
for journal in data['form']['journal_ids']:
|
|
||||||
res[journal] = self.with_context(data['form'].get('used_context', {})).lines(target_move, journal, sort_selection, data)
|
|
||||||
return {
|
|
||||||
'doc_ids': data['form']['journal_ids'],
|
|
||||||
'doc_model': self.env['account.journal'],
|
|
||||||
'data': data,
|
|
||||||
'docs': self.env['account.journal'].browse(data['form']['journal_ids']),
|
|
||||||
'time': time,
|
|
||||||
'lines': res,
|
|
||||||
'sum_credit': self._sum_credit,
|
|
||||||
'sum_debit': self._sum_debit,
|
|
||||||
'get_taxes': self._get_taxes,
|
|
||||||
}
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<template id="report_journal">
|
|
||||||
<t t-call="web.html_container">
|
|
||||||
<t t-set="data_report_margin_top" t-value="12"/>
|
|
||||||
<t t-set="data_report_header_spacing" t-value="9"/>
|
|
||||||
<t t-set="data_report_dpi" t-value="110"/>
|
|
||||||
<t t-foreach="docs" t-as="o">
|
|
||||||
<t t-call="web.internal_layout">
|
|
||||||
<div class="page">
|
|
||||||
<h2><t t-esc="o.name"/> Journal</h2>
|
|
||||||
|
|
||||||
<div class="row mt32">
|
|
||||||
<div class="col-3">
|
|
||||||
<strong>Company:</strong>
|
|
||||||
<p t-esc="res_company.name"/>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<strong>Journal:</strong>
|
|
||||||
<p t-esc="o.name"/>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<strong>Entries Sorted By:</strong>
|
|
||||||
<p t-if="data['form'].get('sort_selection') != 'l.date'">Journal Entry Number</p>
|
|
||||||
<p t-if="data['form'].get('sort_selection') == 'l.date'">Date</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<strong>Target Moves:</strong>
|
|
||||||
<p t-if="data['form']['target_move'] == 'all'">All Entries</p>
|
|
||||||
<p t-if="data['form']['target_move'] == 'posted'">All Posted Entries</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="table table-sm table-reports">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Move</th>
|
|
||||||
<th>Date</th>
|
|
||||||
<th>Account</th>
|
|
||||||
<th>Partner</th>
|
|
||||||
<th>Label</th>
|
|
||||||
<th>Debit</th>
|
|
||||||
<th>Credit</th>
|
|
||||||
<th t-if="data['form']['amount_currency']">Currency</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr t-foreach="lines[o.id]" t-as="aml">
|
|
||||||
<td><span t-esc="aml.move_id.name != '/' and aml.move_id.name or ('*'+str(aml.move_id.id))"/></td>
|
|
||||||
<td><span t-field="aml.date"/></td>
|
|
||||||
<td><span t-field="aml.account_id.code"/></td>
|
|
||||||
<td><span t-esc="aml.sudo().partner_id and aml.sudo().partner_id.name and aml.sudo().partner_id.name[:23] or ''"/></td>
|
|
||||||
<td><span t-esc="aml.name and aml.name[:35]"/></td>
|
|
||||||
<td><span t-esc="aml.debit" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></td>
|
|
||||||
<td><span t-esc="aml.credit" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></td>
|
|
||||||
<td t-if="data['form']['amount_currency'] and aml.amount_currency">
|
|
||||||
<span t-esc="aml.amount_currency" t-options="{'widget': 'monetary', 'display_currency': aml.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-4 pull-right">
|
|
||||||
<table>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Total</strong></td>
|
|
||||||
<td><span t-esc="sum_debit(data, o)" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></td>
|
|
||||||
<td><span t-esc="sum_credit(data, o)" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-4">
|
|
||||||
<table class="table table-sm table-reports">
|
|
||||||
<thead>
|
|
||||||
<tr><th colspan="3">Tax Declaration</th></tr>
|
|
||||||
<tr>
|
|
||||||
<th>Name</th>
|
|
||||||
<th>Base Amount</th>
|
|
||||||
<th>Tax Amount</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<t t-set="taxes" t-value="get_taxes(data, o)"/>
|
|
||||||
<tr t-foreach="taxes" t-as="tax">
|
|
||||||
<td><span t-esc="tax.name"/></td>
|
|
||||||
<td><span t-esc="taxes[tax]['base_amount']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></td>
|
|
||||||
<td><span t-esc="taxes[tax]['tax_amount']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<template id="report_journal_entries">
|
|
||||||
<t t-call="web.html_container">
|
|
||||||
<t t-call="web.external_layout">
|
|
||||||
<t t-foreach="docs" t-as="o">
|
|
||||||
<div class="page" style="font-size:15px;">
|
|
||||||
<div>
|
|
||||||
<h3>
|
|
||||||
<span t-field="o.name"/>
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
<br></br>
|
|
||||||
<div class="row">
|
|
||||||
<table width="100%" class="table-bordered">
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td>Journal:
|
|
||||||
<span t-field="o.journal_id.name"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Date:
|
|
||||||
<span t-field="o.date" t-options="{'widget': 'date'}"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
Partner:
|
|
||||||
<span t-field="o.partner_id.display_name"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
Reference:
|
|
||||||
<span t-field="o.ref"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<br></br>
|
|
||||||
<table width="100%" class="table-bordered">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Account</th>
|
|
||||||
<th>Date</th>
|
|
||||||
<th>Partner</th>
|
|
||||||
<th>Label</th>
|
|
||||||
<th>Analytic Account</th>
|
|
||||||
<th>Debit</th>
|
|
||||||
<th>Credit</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<t t-set="total_credit" t-value="0"/>
|
|
||||||
<t t-set="total_debit" t-value="0"/>
|
|
||||||
<t t-foreach="o.line_ids" t-as="line">
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<span t-field="line.account_id.name"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span t-field="line.date" t-options="{'widget': 'date'}"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span t-field="line.partner_id.display_name"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span t-field="line.name"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span t-field="line.analytic_account_id.display_name"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-field="line.debit"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': line.currency_id}"/>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-field="line.credit"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': line.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<t t-set="total_credit" t-value="total_credit + line.credit"/>
|
|
||||||
<t t-set="total_debit" t-value="total_debit + line.debit"/>
|
|
||||||
</tr>
|
|
||||||
</t>
|
|
||||||
</tbody>
|
|
||||||
<tfooter>
|
|
||||||
<tr>
|
|
||||||
<td colspan="5"></td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="total_debit"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="total_credit"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': o.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tfooter>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,122 +0,0 @@
|
|||||||
import time
|
|
||||||
from odoo import api, models, _
|
|
||||||
from odoo.exceptions import UserError
|
|
||||||
|
|
||||||
|
|
||||||
class ReportPartnerLedger(models.AbstractModel):
|
|
||||||
_name = 'report.accounting_pdf_reports.report_partnerledger'
|
|
||||||
_description = 'Partner Ledger Report'
|
|
||||||
|
|
||||||
def _lines(self, data, partner):
|
|
||||||
full_account = []
|
|
||||||
currency = self.env['res.currency']
|
|
||||||
query_get_data = self.env['account.move.line'].with_context(data['form'].get('used_context', {}))._query_get()
|
|
||||||
reconcile_clause = "" if data['form']['reconciled'] else ' AND "account_move_line".full_reconcile_id IS NULL '
|
|
||||||
params = [partner.id, tuple(data['computed']['move_state']), tuple(data['computed']['account_ids'])] + query_get_data[2]
|
|
||||||
query = """
|
|
||||||
SELECT "account_move_line".id, "account_move_line".date, j.code, acc.name->>'en_US' as a_name, "account_move_line".ref, m.name as move_name, "account_move_line".name, "account_move_line".debit, "account_move_line".credit, "account_move_line".amount_currency,"account_move_line".currency_id, c.symbol AS currency_code
|
|
||||||
FROM """ + query_get_data[0] + """
|
|
||||||
LEFT JOIN account_journal j ON ("account_move_line".journal_id = j.id)
|
|
||||||
LEFT JOIN account_account acc ON ("account_move_line".account_id = acc.id)
|
|
||||||
LEFT JOIN res_currency c ON ("account_move_line".currency_id=c.id)
|
|
||||||
LEFT JOIN account_move m ON (m.id="account_move_line".move_id)
|
|
||||||
WHERE "account_move_line".partner_id = %s
|
|
||||||
AND m.state IN %s
|
|
||||||
AND "account_move_line".account_id IN %s AND """ + query_get_data[1] + reconcile_clause + """
|
|
||||||
ORDER BY "account_move_line".date"""
|
|
||||||
self.env.cr.execute(query, tuple(params))
|
|
||||||
res = self.env.cr.dictfetchall()
|
|
||||||
sum = 0.0
|
|
||||||
lang_code = self.env.context.get('lang') or 'en_US'
|
|
||||||
lang = self.env['res.lang']
|
|
||||||
lang_id = lang._lang_get(lang_code)
|
|
||||||
date_format = lang_id.date_format
|
|
||||||
for r in res:
|
|
||||||
r['date'] = r['date']
|
|
||||||
r['displayed_name'] = '-'.join(
|
|
||||||
r[field_name] for field_name in ('move_name', 'ref', 'name')
|
|
||||||
if r[field_name] not in (None, '', '/')
|
|
||||||
)
|
|
||||||
sum += r['debit'] - r['credit']
|
|
||||||
r['progress'] = sum
|
|
||||||
r['currency_id'] = currency.browse(r.get('currency_id'))
|
|
||||||
full_account.append(r)
|
|
||||||
return full_account
|
|
||||||
|
|
||||||
def _sum_partner(self, data, partner, field):
|
|
||||||
if field not in ['debit', 'credit', 'debit - credit']:
|
|
||||||
return
|
|
||||||
result = 0.0
|
|
||||||
query_get_data = self.env['account.move.line'].with_context(data['form'].get('used_context', {}))._query_get()
|
|
||||||
reconcile_clause = "" if data['form']['reconciled'] else ' AND "account_move_line".full_reconcile_id IS NULL '
|
|
||||||
|
|
||||||
params = [partner.id, tuple(data['computed']['move_state']), tuple(data['computed']['account_ids'])] + query_get_data[2]
|
|
||||||
query = """SELECT sum(""" + field + """)
|
|
||||||
FROM """ + query_get_data[0] + """, account_move AS m
|
|
||||||
WHERE "account_move_line".partner_id = %s
|
|
||||||
AND m.id = "account_move_line".move_id
|
|
||||||
AND m.state IN %s
|
|
||||||
AND account_id IN %s
|
|
||||||
AND """ + query_get_data[1] + reconcile_clause
|
|
||||||
self.env.cr.execute(query, tuple(params))
|
|
||||||
|
|
||||||
contemp = self.env.cr.fetchone()
|
|
||||||
if contemp is not None:
|
|
||||||
result = contemp[0] or 0.0
|
|
||||||
return result
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _get_report_values(self, docids, data=None):
|
|
||||||
if not data.get('form'):
|
|
||||||
raise UserError(_("Form content is missing, this report cannot be printed."))
|
|
||||||
data['computed'] = {}
|
|
||||||
|
|
||||||
obj_partner = self.env['res.partner']
|
|
||||||
query_get_data = self.env['account.move.line'].with_context(data['form'].get('used_context', {}))._query_get()
|
|
||||||
data['computed']['move_state'] = ['draft', 'posted']
|
|
||||||
if data['form'].get('target_move', 'all') == 'posted':
|
|
||||||
data['computed']['move_state'] = ['posted']
|
|
||||||
result_selection = data['form'].get('result_selection', 'customer')
|
|
||||||
if result_selection == 'supplier':
|
|
||||||
data['computed']['ACCOUNT_TYPE'] = ['liability_payable']
|
|
||||||
elif result_selection == 'customer':
|
|
||||||
data['computed']['ACCOUNT_TYPE'] = ['asset_receivable']
|
|
||||||
else:
|
|
||||||
data['computed']['ACCOUNT_TYPE'] = ['asset_receivable', 'liability_payable']
|
|
||||||
|
|
||||||
self.env.cr.execute("""
|
|
||||||
SELECT a.id
|
|
||||||
FROM account_account a
|
|
||||||
WHERE a.account_type IN %s
|
|
||||||
AND a.active""", (tuple(data['computed']['ACCOUNT_TYPE']),))
|
|
||||||
data['computed']['account_ids'] = [a for (a,) in self.env.cr.fetchall()]
|
|
||||||
params = [tuple(data['computed']['move_state']), tuple(data['computed']['account_ids'])] + query_get_data[2]
|
|
||||||
reconcile_clause = "" if data['form']['reconciled'] else ' AND "account_move_line".full_reconcile_id IS NULL '
|
|
||||||
query = """
|
|
||||||
SELECT DISTINCT "account_move_line".partner_id
|
|
||||||
FROM """ + query_get_data[0] + """, account_account AS account, account_move AS am
|
|
||||||
WHERE "account_move_line".partner_id IS NOT NULL
|
|
||||||
AND "account_move_line".account_id = account.id
|
|
||||||
AND am.id = "account_move_line".move_id
|
|
||||||
AND am.state IN %s
|
|
||||||
AND "account_move_line".account_id IN %s
|
|
||||||
AND account.active
|
|
||||||
AND """ + query_get_data[1] + reconcile_clause
|
|
||||||
self.env.cr.execute(query, tuple(params))
|
|
||||||
if data['form']['partner_ids']:
|
|
||||||
partner_ids = data['form']['partner_ids']
|
|
||||||
else:
|
|
||||||
partner_ids = [res['partner_id'] for res in
|
|
||||||
self.env.cr.dictfetchall()]
|
|
||||||
partners = obj_partner.browse(partner_ids)
|
|
||||||
partners = sorted(partners, key=lambda x: (x.ref or '', x.name or ''))
|
|
||||||
|
|
||||||
return {
|
|
||||||
'doc_ids': partner_ids,
|
|
||||||
'doc_model': self.env['res.partner'],
|
|
||||||
'data': data,
|
|
||||||
'docs': partners,
|
|
||||||
'time': time,
|
|
||||||
'lines': self._lines,
|
|
||||||
'sum_partner': self._sum_partner,
|
|
||||||
}
|
|
||||||
@@ -1,109 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<template id="report_partnerledger">
|
|
||||||
<t t-call="web.html_container">
|
|
||||||
<t t-call="web.internal_layout">
|
|
||||||
<t t-set="data_report_margin_top" t-value="12"/>
|
|
||||||
<t t-set="data_report_header_spacing" t-value="9"/>
|
|
||||||
<t t-set="data_report_dpi" t-value="110"/>
|
|
||||||
<div class="page">
|
|
||||||
<h2>Partner Ledger</h2>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-3">
|
|
||||||
<strong>Company:</strong>
|
|
||||||
<p t-esc="res_company.name"/>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<t t-if="data['form']['date_from']">
|
|
||||||
<strong>Date from :</strong>
|
|
||||||
<span t-esc="data['form']['date_from']"/>
|
|
||||||
<br/>
|
|
||||||
</t>
|
|
||||||
<t t-if="data['form']['date_to']">
|
|
||||||
<strong>Date to :</strong>
|
|
||||||
<span t-esc="data['form']['date_to']"/>
|
|
||||||
</t>
|
|
||||||
</div>
|
|
||||||
<div class="col-3">
|
|
||||||
<strong>Target Moves:</strong>
|
|
||||||
<p t-if="data['form']['target_move'] == 'all'">All Entries</p>
|
|
||||||
<p t-if="data['form']['target_move'] == 'posted'">All Posted Entries</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="table table-sm table-reports">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Date</th>
|
|
||||||
<th>JRNL</th>
|
|
||||||
<th>Account</th>
|
|
||||||
<th>Ref</th>
|
|
||||||
<th>Debit</th>
|
|
||||||
<th>Credit</th>
|
|
||||||
<th>Balance</th>
|
|
||||||
<th t-if="data['form']['amount_currency']">Currency</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<t t-foreach="docs" t-as="o">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td colspan="4">
|
|
||||||
<strong t-esc="o.ref"/>
|
|
||||||
-
|
|
||||||
<strong t-esc="o.name"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<strong t-esc="sum_partner(data, o, 'debit')"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<strong t-esc="sum_partner(data, o, 'credit')"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<strong t-esc="sum_partner(data, o, 'debit - credit')"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr t-foreach="lines(data, o)" t-as="line">
|
|
||||||
<td>
|
|
||||||
<span t-esc="line['date']"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span t-esc="line['code']"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span t-esc="line['a_name']"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span t-esc="line['displayed_name']"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="line['debit']"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="line['credit']"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-esc="line['progress']"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end" t-if="data['form']['amount_currency']">
|
|
||||||
<t t-if="line['currency_id']">
|
|
||||||
<span t-esc="line['amount_currency']"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': line['currency_id']}"/>
|
|
||||||
</t>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</t>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
from odoo import api, models, _
|
|
||||||
from odoo.exceptions import UserError
|
|
||||||
|
|
||||||
|
|
||||||
class ReportTax(models.AbstractModel):
|
|
||||||
_name = 'report.accounting_pdf_reports.report_tax'
|
|
||||||
_description = 'Tax Report'
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _get_report_values(self, docids, data=None):
|
|
||||||
if not data.get('form'):
|
|
||||||
raise UserError(_("Form content is missing, this report cannot be printed."))
|
|
||||||
return {
|
|
||||||
'data': data['form'],
|
|
||||||
'lines': self.get_lines(data.get('form')),
|
|
||||||
}
|
|
||||||
|
|
||||||
def _sql_from_amls_one(self):
|
|
||||||
sql = """SELECT "account_move_line".tax_line_id, COALESCE(SUM("account_move_line".debit-"account_move_line".credit), 0)
|
|
||||||
FROM %s
|
|
||||||
WHERE %s GROUP BY "account_move_line".tax_line_id"""
|
|
||||||
return sql
|
|
||||||
|
|
||||||
def _sql_from_amls_two(self):
|
|
||||||
sql = """SELECT r.account_tax_id, COALESCE(SUM("account_move_line".debit-"account_move_line".credit), 0)
|
|
||||||
FROM %s
|
|
||||||
INNER JOIN account_move_line_account_tax_rel r ON ("account_move_line".id = r.account_move_line_id)
|
|
||||||
INNER JOIN account_tax t ON (r.account_tax_id = t.id)
|
|
||||||
WHERE %s GROUP BY r.account_tax_id"""
|
|
||||||
return sql
|
|
||||||
|
|
||||||
def _compute_from_amls(self, options, taxes):
|
|
||||||
#compute the tax amount
|
|
||||||
sql = self._sql_from_amls_one()
|
|
||||||
tables, where_clause, where_params = self.env['account.move.line']._query_get()
|
|
||||||
query = sql % (tables, where_clause)
|
|
||||||
self.env.cr.execute(query, where_params)
|
|
||||||
results = self.env.cr.fetchall()
|
|
||||||
for result in results:
|
|
||||||
if result[0] in taxes:
|
|
||||||
taxes[result[0]]['tax'] = abs(result[1])
|
|
||||||
|
|
||||||
#compute the net amount
|
|
||||||
sql2 = self._sql_from_amls_two()
|
|
||||||
query = sql2 % (tables, where_clause)
|
|
||||||
self.env.cr.execute(query, where_params)
|
|
||||||
results = self.env.cr.fetchall()
|
|
||||||
for result in results:
|
|
||||||
if result[0] in taxes:
|
|
||||||
taxes[result[0]]['net'] = abs(result[1])
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def get_lines(self, options):
|
|
||||||
taxes = {}
|
|
||||||
for tax in self.env['account.tax'].search([('type_tax_use', '!=', 'none')]):
|
|
||||||
if tax.children_tax_ids:
|
|
||||||
for child in tax.children_tax_ids:
|
|
||||||
if child.type_tax_use != 'none':
|
|
||||||
continue
|
|
||||||
taxes[child.id] = {'tax': 0, 'net': 0, 'name': child.name, 'type': tax.type_tax_use}
|
|
||||||
else:
|
|
||||||
taxes[tax.id] = {'tax': 0, 'net': 0, 'name': tax.name, 'type': tax.type_tax_use}
|
|
||||||
self.with_context(date_from=options['date_from'], date_to=options['date_to'],
|
|
||||||
state=options['target_move'],
|
|
||||||
strict_range=True)._compute_from_amls(options, taxes)
|
|
||||||
groups = dict((tp, []) for tp in ['sale', 'purchase'])
|
|
||||||
for tax in taxes.values():
|
|
||||||
if tax['tax']:
|
|
||||||
groups[tax['type']].append(tax)
|
|
||||||
return groups
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<template id="report_tax">
|
|
||||||
<t t-call="web.html_container">
|
|
||||||
<t t-set="data_report_margin_top" t-value="12"/>
|
|
||||||
<t t-set="data_report_header_spacing" t-value="9"/>
|
|
||||||
<t t-set="data_report_dpi" t-value="110"/>
|
|
||||||
<t t-call="web.internal_layout">
|
|
||||||
<div class="page">
|
|
||||||
<h3>Tax Report</h3>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-4">
|
|
||||||
<strong>Company:</strong>
|
|
||||||
<p t-esc="res_company.name"/>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<t>
|
|
||||||
<strong>Date from :</strong>
|
|
||||||
<span t-esc="data['date_from']"/>
|
|
||||||
</t>
|
|
||||||
<br/>
|
|
||||||
<t>
|
|
||||||
<strong>Date to :</strong>
|
|
||||||
<span t-esc="data['date_to']"/>
|
|
||||||
</t>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<strong>Target Moves:</strong>
|
|
||||||
<p>
|
|
||||||
<span t-if="data['target_move'] == 'all'">All Entries</span>
|
|
||||||
<span t-if="data['target_move'] == 'posted'">All Posted Entries</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<table class="table table-sm table-reports">
|
|
||||||
<thead>
|
|
||||||
<tr align="left">
|
|
||||||
<th>Sale</th>
|
|
||||||
<th>Net</th>
|
|
||||||
<th>Tax</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tr align="left" t-foreach="lines['sale']" t-as="line">
|
|
||||||
<td>
|
|
||||||
<span t-esc="line.get('name')"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span t-att-style="style" t-esc="line.get('net')"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span t-att-style="style" t-esc="line.get('tax')"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<br/>
|
|
||||||
<tr align="left">
|
|
||||||
<td>
|
|
||||||
<strong>Purchase</strong>
|
|
||||||
</td>
|
|
||||||
<td></td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
<tr align="left" t-foreach="lines['purchase']" t-as="line">
|
|
||||||
<td>
|
|
||||||
<span t-esc="line.get('name')"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span t-att-style="style" t-esc="line.get('net')"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span t-att-style="style" t-esc="line.get('tax')"
|
|
||||||
t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
import time
|
|
||||||
from odoo import api, models, _
|
|
||||||
from odoo.exceptions import UserError
|
|
||||||
|
|
||||||
|
|
||||||
class ReportTrialBalance(models.AbstractModel):
|
|
||||||
_name = 'report.accounting_pdf_reports.report_trialbalance'
|
|
||||||
_description = 'Trial Balance Report'
|
|
||||||
|
|
||||||
def _get_accounts(self, accounts, display_account):
|
|
||||||
""" compute the balance, debit and credit for the provided accounts
|
|
||||||
:Arguments:
|
|
||||||
`accounts`: list of accounts record,
|
|
||||||
`display_account`: it's used to display either all accounts or those accounts which balance is > 0
|
|
||||||
:Returns a list of dictionary of Accounts with following key and value
|
|
||||||
`name`: Account name,
|
|
||||||
`code`: Account code,
|
|
||||||
`credit`: total amount of credit,
|
|
||||||
`debit`: total amount of debit,
|
|
||||||
`balance`: total amount of balance,
|
|
||||||
"""
|
|
||||||
|
|
||||||
account_result = {}
|
|
||||||
# Prepare sql query base on selected parameters from wizard
|
|
||||||
tables, where_clause, where_params = self.env['account.move.line']._query_get()
|
|
||||||
tables = tables.replace('"','')
|
|
||||||
if not tables:
|
|
||||||
tables = 'account_move_line'
|
|
||||||
wheres = [""]
|
|
||||||
if where_clause.strip():
|
|
||||||
wheres.append(where_clause.strip())
|
|
||||||
filters = " AND ".join(wheres)
|
|
||||||
# compute the balance, debit and credit for the provided accounts
|
|
||||||
request = ("SELECT account_id AS id, SUM(debit) AS debit, SUM(credit) AS credit, "
|
|
||||||
"(SUM(debit) - SUM(credit)) AS balance" +\
|
|
||||||
" FROM " + tables + " WHERE account_id IN %s " + filters + " GROUP BY account_id")
|
|
||||||
params = (tuple(accounts.ids),) + tuple(where_params)
|
|
||||||
self.env.cr.execute(request, params)
|
|
||||||
for row in self.env.cr.dictfetchall():
|
|
||||||
account_result[row.pop('id')] = row
|
|
||||||
|
|
||||||
account_res = []
|
|
||||||
for account in accounts:
|
|
||||||
res = dict((fn, 0.0) for fn in ['credit', 'debit', 'balance'])
|
|
||||||
currency = account.currency_id and account.currency_id or self.env.company.currency_id
|
|
||||||
res['code'] = account.code
|
|
||||||
res['name'] = account.name
|
|
||||||
if account.id in account_result:
|
|
||||||
res['debit'] = account_result[account.id].get('debit')
|
|
||||||
res['credit'] = account_result[account.id].get('credit')
|
|
||||||
res['balance'] = account_result[account.id].get('balance')
|
|
||||||
if display_account == 'all':
|
|
||||||
account_res.append(res)
|
|
||||||
if display_account == 'not_zero' and not currency.is_zero(res['balance']):
|
|
||||||
account_res.append(res)
|
|
||||||
if display_account == 'movement' and (not currency.is_zero(res['debit']) or not currency.is_zero(res['credit'])):
|
|
||||||
account_res.append(res)
|
|
||||||
return account_res
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _get_report_values(self, docids, data=None):
|
|
||||||
if not data.get('form') or not self.env.context.get('active_model'):
|
|
||||||
raise UserError(_("Form content is missing, this report cannot be printed."))
|
|
||||||
|
|
||||||
model = self.env.context.get('active_model')
|
|
||||||
docs = self.env[model].browse(self.env.context.get('active_ids', []))
|
|
||||||
display_account = data['form'].get('display_account')
|
|
||||||
accounts = docs if model == 'account.account' else self.env['account.account'].search([])
|
|
||||||
context = data['form'].get('used_context')
|
|
||||||
analytic_accounts = []
|
|
||||||
if data['form'].get('analytic_account_ids'):
|
|
||||||
analytic_account_ids = self.env['account.analytic.account'].browse(data['form'].get('analytic_account_ids'))
|
|
||||||
context['analytic_account_ids'] = analytic_account_ids
|
|
||||||
analytic_accounts = [account.name for account in analytic_account_ids]
|
|
||||||
account_res = self.with_context(context)._get_accounts(accounts, display_account)
|
|
||||||
codes = []
|
|
||||||
if data['form'].get('journal_ids', False):
|
|
||||||
codes = [journal.code for journal in
|
|
||||||
self.env['account.journal'].search(
|
|
||||||
[('id', 'in', data['form']['journal_ids'])])]
|
|
||||||
return {
|
|
||||||
'doc_ids': self.ids,
|
|
||||||
'doc_model': model,
|
|
||||||
'data': data['form'],
|
|
||||||
'docs': docs,
|
|
||||||
'print_journal': codes,
|
|
||||||
'analytic_accounts': analytic_accounts,
|
|
||||||
'time': time,
|
|
||||||
'Accounts': account_res,
|
|
||||||
}
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<template id="report_trialbalance">
|
|
||||||
<t t-call="web.html_container">
|
|
||||||
<t t-set="data_report_margin_top" t-value="12"/>
|
|
||||||
<t t-set="data_report_header_spacing" t-value="9"/>
|
|
||||||
<t t-set="data_report_dpi" t-value="110"/>
|
|
||||||
<t t-call="web.internal_layout">
|
|
||||||
<div class="page">
|
|
||||||
<h2><span t-esc="res_company.name"/>: Trial Balance</h2>
|
|
||||||
|
|
||||||
<div class="row mt32">
|
|
||||||
<div class="col-4">
|
|
||||||
<strong>Display Account:</strong>
|
|
||||||
<p>
|
|
||||||
<span t-if="data['display_account'] == 'all'">All accounts</span>
|
|
||||||
<span t-if="data['display_account'] == 'movement'">With movements</span>
|
|
||||||
<span t-if="data['display_account'] == 'not_zero'">With balance not equal to zero</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<p>
|
|
||||||
<t t-if="data['date_from']"><strong>Date from :</strong> <span t-esc="data['date_from']"/><br/></t>
|
|
||||||
<t t-if="data['date_to']"><strong>Date to :</strong> <span t-esc="data['date_to']"/></t>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-4">
|
|
||||||
<strong>Target Moves:</strong>
|
|
||||||
<p>
|
|
||||||
<span t-if="data['target_move'] == 'all'">All Entries</span>
|
|
||||||
<span t-if="data['target_move'] == 'posted'">All Posted Entries</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row mt32">
|
|
||||||
<div class="col-6">
|
|
||||||
<strong>Journals:</strong>
|
|
||||||
<p t-esc="', '.join([ lt or '' for lt in print_journal ])"/>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<t t-if="analytic_accounts">
|
|
||||||
<strong>Analytic Accounts:</strong>
|
|
||||||
<p t-esc="', '.join([ analytic_account or '' for analytic_account in analytic_accounts ])"/>
|
|
||||||
</t>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="table table-sm table-reports">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Code</th>
|
|
||||||
<th>Account</th>
|
|
||||||
<th class="text-end">Debit</th>
|
|
||||||
<th class="text-end">Credit</th>
|
|
||||||
<th class="text-end">Balance</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr t-foreach="Accounts" t-as="account">
|
|
||||||
<td>
|
|
||||||
<span t-att-style="style" t-esc="account['code']"/>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<span style="color: white;" t-esc="'..'"/>
|
|
||||||
<span t-att-style="style" t-esc="account['name']"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-att-style="style" t-esc="account['debit']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-att-style="style" t-esc="account['credit']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
<td class="text-end">
|
|
||||||
<span t-att-style="style" t-esc="account['balance']" t-options="{'widget': 'monetary', 'display_currency': res_company.currency_id}"/>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</t>
|
|
||||||
</t>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
|
||||||
access_account_financial_report_accountant,access.account.financial.report.manager,model_account_financial_report,account.group_account_user,1,1,1,1
|
|
||||||
access_account_report_general_ledger,access.account.report.general.ledger,model_account_report_general_ledger,account.group_account_user,1,1,1,1
|
|
||||||
access_account_balance_report,access.account.balance.report,model_account_balance_report,account.group_account_user,1,1,1,1
|
|
||||||
access_account_report_partner_ledger,access.account.report.partner.ledger,model_account_report_partner_ledger,account.group_account_invoice,1,1,1,1
|
|
||||||
access_accounting_report,access.accounting.report,model_accounting_report,account.group_account_user,1,1,1,1
|
|
||||||
access_account_aged_trial_balance,access.account.aged.trial.balance,model_account_aged_trial_balance,account.group_account_user,1,1,1,1
|
|
||||||
access_account_tax_report,access.account.tax.report.wizard,model_account_tax_report_wizard,account.group_account_user,1,1,1,1
|
|
||||||
|
|
||||||
access_account_financial_report_accountant_bm,access.account.financial.report.bmanager,model_account_financial_report,account.group_account_manager,1,1,1,1
|
|
||||||
access_account_report_general_ledger_bm,access.account.report.general.ledger.bmanager,model_account_report_general_ledger,account.group_account_manager,1,1,1,1
|
|
||||||
access_account_balance_report_bm,access.account.balance.report.bmanager,model_account_balance_report,account.group_account_manager,1,1,1,1
|
|
||||||
access_account_report_partner_ledger_bm,access.account.report.partner.ledger.bmanager,model_account_report_partner_ledger,account.group_account_manager,1,1,1,1
|
|
||||||
access_accounting_report_bm,access.accounting.report.bmanager,model_accounting_report,account.group_account_manager,1,1,1,1
|
|
||||||
access_account_aged_trial_balance_bm,access.account.aged.trial.balance.bmanager,model_account_aged_trial_balance,account.group_account_manager,1,1,1,1
|
|
||||||
access_account_tax_report_bm,access.account.tax.report.wizard.bmanager,model_account_tax_report_wizard,account.group_account_manager,1,1,1,1
|
|
||||||
access_account_print_journal_bm,access.account.account.print.journal.bmanager,model_account_print_journal,account.group_account_manager,1,1,1,1
|
|
||||||
|
|
||||||
access_account_common_journal_report,access.account.common.journal.report,model_account_common_journal_report,account.group_account_user,1,1,1,0
|
|
||||||
access_account_print_journal,access.account.print.journal,model_account_print_journal,account.group_account_user,1,1,1,0
|
|
||||||
|
|
||||||
access_account_common_account_report,access_account_common_account_report,model_account_common_account_report,base.group_user,1,0,0,0
|
|
||||||
access_account_common_partner_report,access_account_common_partner_report,model_account_common_partner_report,base.group_user,1,0,0,0
|
|
||||||
access_account_common_report,access_account_common_report,accounting_pdf_reports.model_account_common_report,base.group_user,1,0,0,0
|
|
||||||
access_account_account_type,access_account_account_type,accounting_pdf_reports.model_account_account_type,base.group_user,1,0,0,0
|
|
||||||
|
|
Before Width: | Height: | Size: 218 KiB |
|
Before Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 911 KiB |
|
Before Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@@ -1,155 +0,0 @@
|
|||||||
<section class="oe_container oe_dark">
|
|
||||||
<div class="col-md-12">
|
|
||||||
<h2 class="oe_slogan" style="font-size: 35px;color:#2C0091"><b>Accounting Reports Odoo 18</b></h2>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="oe_container">
|
|
||||||
<div class="oe_row oe_spaced">
|
|
||||||
<div style="align:center;">
|
|
||||||
<h1 style="text-align: center;">
|
|
||||||
<span align="center" style="color:#148963;">
|
|
||||||
<span class="fa fa-star fa-spin">
|
|
||||||
</span>
|
|
||||||
Added Financial Reports:</span>
|
|
||||||
</h1>
|
|
||||||
<div class="row" style="margin-top: 2rem;">
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="mt-3">
|
|
||||||
<p class="fa fa-check" style="color:green;font-size: 15px;">
|
|
||||||
<span style="color:#000000;font-size: 15px;">Partner Ledger Report.</span>
|
|
||||||
</p><br/>
|
|
||||||
<p class="fa fa-check" style="color:green;font-size: 15px;">
|
|
||||||
<span style="color:#000000;font-size: 15px;">Journals Audit.</span>
|
|
||||||
</p><br/>
|
|
||||||
<p class="fa fa-check" style="color:green;font-size: 15px;">
|
|
||||||
<span style="color:#000000;font-size: 15px;">General Ledger.</span>
|
|
||||||
</p><br/>
|
|
||||||
<p class="fa fa-check" style="color:green;font-size: 15px;">
|
|
||||||
<span style="color:#000000;font-size: 15px;">Trial Balance.</span>
|
|
||||||
</p><br/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-lg-12">
|
|
||||||
<div class="mt-3">
|
|
||||||
<p class="fa fa-check" style="color:green;font-size: 15px;">
|
|
||||||
<span style="color:#000000;font-size: 15px;">Aged Partner Balance.</span>
|
|
||||||
</p><br/>
|
|
||||||
<p class="fa fa-check" style="color:green;font-size: 15px;">
|
|
||||||
<span style="color:#000000;font-size: 15px;">Profit and Loss.</span>
|
|
||||||
</p><br/>
|
|
||||||
<p class="fa fa-check" style="color:green;font-size: 15px;">
|
|
||||||
<span style="color:#000000;font-size: 15px;">Balance Sheet.</span>
|
|
||||||
</p><br/>
|
|
||||||
<p class="fa fa-check" style="color:green;font-size: 15px;">
|
|
||||||
<span style="color:#000000;font-size: 15px;">Tax Report.</span>
|
|
||||||
</p><br/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<br/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<section class="oe_container">
|
|
||||||
<div class="oe_row oe_spaced">
|
|
||||||
<div class="oe_centeralign oe_websiteonly">
|
|
||||||
<h4 class="oe_slogan"><a href="https://www.youtube.com/watch?v=yA4NLwOLZms" target="_blank" style="color: #FFFFFF !important; border-radius: 0; background-color: #9c676e; border-color: #005ca7; padding: 15px; font-weight: bold;">
|
|
||||||
<i class="fa fa-youtube">
|
|
||||||
Watch on YouTube
|
|
||||||
</i>
|
|
||||||
</a></h4>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="oe_container oe_dark">
|
|
||||||
<div class="oe_row oe_spaced">
|
|
||||||
<h2 class="oe_slogan" style="color:olive;">Accounting Reports</h2>
|
|
||||||
<h3 class="oe_slogan" style="color:#000066;font-size: 24px;">All in one financial reports for odoo community edition</h3>
|
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
|
||||||
<img src="account_reports.png" style="height:400px;">
|
|
||||||
</div>
|
|
||||||
<br/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
<section class="oe_container">
|
|
||||||
<div class="oe_row oe_spaced">
|
|
||||||
<h3 class="oe_slogan" style="color:#332c3c;font-size: 28px;">General Ledger</h3>
|
|
||||||
<h3 class="oe_slogan" style="color:#000066;font-size: 24px;">General ledger report with accounts, partners and analytic account filter</h3>
|
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
|
||||||
<img src="general_ledger_filter.png" style="height:400px;">
|
|
||||||
</div>
|
|
||||||
<br/>
|
|
||||||
<h4 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Report</h4>
|
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
|
||||||
<img src="general_ledger_report.png" style="height:400px;">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="oe_container oe_dark">
|
|
||||||
<div class="oe_row oe_spaced">
|
|
||||||
<h3 class="oe_slogan" style="color:#1b1d26;">Partner Ledger</h3>
|
|
||||||
<h3 class="oe_slogan" style="color:#000066;font-size: 24px;">Partner ledger report with partner filter.</h3>
|
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
|
||||||
<img src="partner_ledger_filter.png" style="height:400px;">
|
|
||||||
</div>
|
|
||||||
<br/>
|
|
||||||
<h4 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Report</h4>
|
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
|
||||||
<img src="partner_ledger_report.png" style="height:400px;">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="oe_container">
|
|
||||||
<div class="oe_row oe_spaced">
|
|
||||||
<h3 class="oe_slogan" style="color:#1b1d26;">Aged Partner Balance</h3>
|
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
|
||||||
<img src="aged_partner_balance_filter.png" style="height:400px;">
|
|
||||||
</div>
|
|
||||||
<br/>
|
|
||||||
<h4 class="oe_slogan" style="color:#332c3c;font-size: 28px;">Report</h4>
|
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
|
||||||
<img src="aged_partner_balance_report.png" style="height:400px;">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<hr style="width: 100%;height: 4px;background: #2C0091;margin: 0px 0px;">
|
|
||||||
<hr style="width: 100%;height: 4px;background: #148963;margin: 0px 0px;">
|
|
||||||
<section class="oe_container oe_dark">
|
|
||||||
<div class="oe_row ">
|
|
||||||
<div class="oe_slogan text-center">
|
|
||||||
<img src="odoo_mates.png"/>
|
|
||||||
<div style="color:#269900;">
|
|
||||||
<h3 style="color:#2C0091;font-size: 25px;">If you need any support or want more features, just contact us:</h3><br>
|
|
||||||
<h3 style="color:#2C0091;font-size: 20px;">Email: <a href="odoomates@gmail.com">odoomates@gmail.com</a> <br></h3>
|
|
||||||
</div>
|
|
||||||
<div class="oe_slogan">
|
|
||||||
<h2>
|
|
||||||
<a target="_blank" href="https://www.facebook.com/odoomate/" target="new">
|
|
||||||
<i class="fa fa-facebook-square" style="font-size:38px;"></i>
|
|
||||||
</a>
|
|
||||||
<a target="_blank" href="https://twitter.com/odoomates/" target="new">
|
|
||||||
<i class="fa fa-twitter" style="font-size:38px;"></i>
|
|
||||||
</a>
|
|
||||||
<a href="#" target="_blank">
|
|
||||||
<i class="fa fa-linkedin" style="font-size:38px;"></i>
|
|
||||||
</a>
|
|
||||||
<a target="_blank" href="https://www.youtube.com/channel/UCVKlUZP7HAhdQgs-9iTJklQ">
|
|
||||||
<i class="fa fa-youtube-play" style="font-size:38px;"></i>
|
|
||||||
</a>
|
|
||||||
</h2>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<hr style="width: 100%;height: 4px;background: #148963;margin: 0px 0px;">
|
|
||||||
<hr style="width: 100%;height: 4px;background: #2C0091;margin: 0px 0px;">
|
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 87 KiB |
@@ -1,98 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="view_account_financial_report_form" model="ir.ui.view">
|
|
||||||
<field name="name">account.financial.report.form</field>
|
|
||||||
<field name="model">account.financial.report</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form string="Account Report">
|
|
||||||
<sheet>
|
|
||||||
<group>
|
|
||||||
<group>
|
|
||||||
<field name="name"/>
|
|
||||||
<field name="parent_id"/>
|
|
||||||
<field name="sequence"/>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<field name="type"/>
|
|
||||||
<field name="sign"/>
|
|
||||||
<field name="style_overwrite"/>
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
<notebook>
|
|
||||||
<page string="Report"
|
|
||||||
invisible="type not in ['accounts', 'account_type', 'account_report']">
|
|
||||||
<group>
|
|
||||||
<field name="display_detail"
|
|
||||||
invisible="type not in ['accounts', 'account_type', 'account_report']"/>
|
|
||||||
<field name="account_report_id"
|
|
||||||
invisible="type != 'account_report'"/>
|
|
||||||
</group>
|
|
||||||
<field name="account_ids" invisible="type != 'accounts'"/>
|
|
||||||
<field name="account_type_ids" invisible="type != 'account_type'"/>
|
|
||||||
</page>
|
|
||||||
<page string="Childrens">
|
|
||||||
<field name="children_ids" nolabel="1">
|
|
||||||
</field>
|
|
||||||
</page>
|
|
||||||
</notebook>
|
|
||||||
</sheet>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="view_account_financial_report_tree" model="ir.ui.view">
|
|
||||||
<field name="name">account.financial.report.list</field>
|
|
||||||
<field name="model">account.financial.report</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<list string="Account Report">
|
|
||||||
<field name="name"/>
|
|
||||||
<field name="parent_id" invisible="1"/>
|
|
||||||
<field name="type"/>
|
|
||||||
<field name="account_report_id"/>
|
|
||||||
</list>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="view_account_financial_report_search" model="ir.ui.view">
|
|
||||||
<field name="name">account.financial.report.search</field>
|
|
||||||
<field name="model">account.financial.report</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<search string="Account Report">
|
|
||||||
<field name="name" string="Account Report"/>
|
|
||||||
<field name="type"/>
|
|
||||||
<field name="account_report_id"/>
|
|
||||||
<filter string="Reports" name="filter_parent_id" domain="[('parent_id','=', False)]"/>
|
|
||||||
<group>
|
|
||||||
<filter name="parent_report" string="Parent Report"
|
|
||||||
context="{'group_by':'parent_id'}"/>
|
|
||||||
<filter name="report_type" string="Report Type" context="{'group_by':'type'}"/>
|
|
||||||
</group>
|
|
||||||
</search>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_account_financial_report_tree" model="ir.actions.act_window">
|
|
||||||
<field name="name">Financial Reports</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="res_model">account.financial.report</field>
|
|
||||||
<field name="view_mode">list,form</field>
|
|
||||||
<field name="context">{'search_default_filter_parent_id': True}</field>
|
|
||||||
<field name="search_view_id" ref="view_account_financial_report_search"/>
|
|
||||||
<field name="view_id" ref="view_account_financial_report_tree"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_finance_reports_settings"
|
|
||||||
name="Financial Reports"
|
|
||||||
sequence="9"
|
|
||||||
groups="account.group_account_user,account.group_account_manager"
|
|
||||||
parent="account.menu_finance_configuration"/>
|
|
||||||
|
|
||||||
<menuitem id="menu_account_reports"
|
|
||||||
name="Account Reports"
|
|
||||||
action="action_account_financial_report_tree"
|
|
||||||
groups="account.group_account_user,account.group_account_manager"
|
|
||||||
parent="menu_finance_reports_settings"/>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="action_account_moves_ledger_general" model="ir.actions.act_window">
|
|
||||||
<field name="context">{'journal_type':'general', 'search_default_group_by_account': 1, 'search_default_posted':1}</field>
|
|
||||||
<field name="name">General Ledger</field>
|
|
||||||
<field name="res_model">account.move.line</field>
|
|
||||||
<field name="domain">[('display_type', 'not in', ('line_section', 'line_note'))]</field>
|
|
||||||
<field name="view_id" ref="account.view_move_line_tree_grouped_general"/>
|
|
||||||
<field name="search_view_id" ref="account.view_account_move_line_filter"/>
|
|
||||||
<field name="view_mode">list,pivot,graph</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_account_moves_ledger_partner" model="ir.actions.act_window">
|
|
||||||
<field name="context">{'journal_type':'general', 'search_default_group_by_partner': 1,
|
|
||||||
'search_default_posted':1, 'search_default_payable':1, 'search_default_receivable':1,
|
|
||||||
'search_default_unreconciled':1}
|
|
||||||
</field>
|
|
||||||
<field name="name">Partner Ledger</field>
|
|
||||||
<field name="res_model">account.move.line</field>
|
|
||||||
<field name="domain">[('display_type', 'not in', ('line_section', 'line_note'))]</field>
|
|
||||||
<field name="view_id" ref="account.view_move_line_tree_grouped_partner"/>
|
|
||||||
<field name="search_view_id" ref="account.view_account_move_line_filter"/>
|
|
||||||
<field name="view_mode">list,pivot,graph</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_finance_entries_accounting_ledgers" name="Ledgers" parent="account.menu_finance_entries"
|
|
||||||
sequence="3">
|
|
||||||
<menuitem id="menu_action_account_moves_ledger_general" action="action_account_moves_ledger_general"
|
|
||||||
groups="account.group_account_readonly" sequence="1"/>
|
|
||||||
<menuitem id="menu_action_account_moves_ledger_partner" action="action_account_moves_ledger_partner"
|
|
||||||
groups="account.group_account_readonly" sequence="2"/>
|
|
||||||
</menuitem>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<menuitem id="menu_finance_legal_statement"
|
|
||||||
name="Financial Reports"
|
|
||||||
sequence="10"
|
|
||||||
parent="account.menu_finance_reports"/>
|
|
||||||
|
|
||||||
<menuitem id="menu_finance_partner_reports"
|
|
||||||
name="Partner Reports"
|
|
||||||
sequence="20"
|
|
||||||
parent="account.menu_finance_reports"/>
|
|
||||||
|
|
||||||
<menuitem id="menu_finance_audit_reports"
|
|
||||||
name="Audit Reports"
|
|
||||||
sequence="30"
|
|
||||||
parent="account.menu_finance_reports"/>
|
|
||||||
|
|
||||||
<record id="account.account_reports_management_menu" model="ir.ui.menu">
|
|
||||||
<field name="sequence" eval="40"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="res_config_settings_view_form" model="ir.ui.view">
|
|
||||||
<field name="name">res.config.settings.view.form.inherit.accountant</field>
|
|
||||||
<field name="model">res.config.settings</field>
|
|
||||||
<field name="inherit_id" ref="account.res_config_settings_view_form"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<app name="account" position="inside">
|
|
||||||
<h2>Enhanced Financial Reports</h2>
|
|
||||||
<div>
|
|
||||||
<div class="row mt16 o_settings_container" name="report_setting_container">
|
|
||||||
<div class="col-6 col-lg-6 o_setting_box" id="enhanced_reports">
|
|
||||||
<div>
|
|
||||||
Preview financial reports without downloading
|
|
||||||
</div>
|
|
||||||
<div class="content-group">
|
|
||||||
<a target="_blank" href="https://apps.odoo.com/apps/modules/19.0/om_accounting_reports/"
|
|
||||||
style="text-decoration: underline;">Enhanced Financial Reports</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-6 col-lg-6 o_setting_box" id="excel_reports">
|
|
||||||
<div>
|
|
||||||
Financial Reports in Excel
|
|
||||||
</div>
|
|
||||||
<div class="content-group">
|
|
||||||
<a target="_blank" href="https://apps.odoo.com/apps/modules/19.0/accounting_excel_reports/"
|
|
||||||
style="text-decoration: underline;">Excel Reports</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</app>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
from . import account_report_common
|
|
||||||
from . import account_report_common_journal
|
|
||||||
from . import account_report_print_journal
|
|
||||||
from . import account_report
|
|
||||||
from . import account_report_common_partner
|
|
||||||
from . import account_report_common_account
|
|
||||||
from . import account_partner_ledger
|
|
||||||
from . import account_general_ledger
|
|
||||||
from . import account_trial_balance
|
|
||||||
from . import account_tax_report
|
|
||||||
from . import aged_partner
|
|
||||||
from . import account_journal_audit
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
from odoo import fields, models, api, _
|
|
||||||
from odoo.exceptions import UserError
|
|
||||||
|
|
||||||
|
|
||||||
class AccountReportGeneralLedger(models.TransientModel):
|
|
||||||
_name = "account.report.general.ledger"
|
|
||||||
_inherit = "account.common.account.report"
|
|
||||||
_description = "General Ledger Report"
|
|
||||||
|
|
||||||
initial_balance = fields.Boolean(
|
|
||||||
string='Include Initial Balances',
|
|
||||||
help='If you selected date, this field allow you to add a row '
|
|
||||||
'to display the amount of debit/credit/balance that precedes '
|
|
||||||
'the filter you have set.'
|
|
||||||
)
|
|
||||||
sortby = fields.Selection(
|
|
||||||
[('sort_date', 'Date'), ('sort_journal_partner', 'Journal & Partner')],
|
|
||||||
string='Sort by', required=True, default='sort_date'
|
|
||||||
)
|
|
||||||
journal_ids = fields.Many2many(
|
|
||||||
'account.journal', 'account_report_general_ledger_journal_rel',
|
|
||||||
'account_id', 'journal_id', string='Journals', required=True
|
|
||||||
)
|
|
||||||
|
|
||||||
def _get_report_data(self, data):
|
|
||||||
data = self.pre_print_report(data)
|
|
||||||
data['form'].update(self.read(['initial_balance', 'sortby'])[0])
|
|
||||||
if data['form'].get('initial_balance') and not data['form'].get('date_from'):
|
|
||||||
raise UserError(_("You must define a Start Date"))
|
|
||||||
records = self.env[data['model']].browse(data.get('ids', []))
|
|
||||||
return records, data
|
|
||||||
|
|
||||||
def _print_report(self, data):
|
|
||||||
records, data = self._get_report_data(data)
|
|
||||||
return self.env.ref('accounting_pdf_reports.action_report_general_ledger').with_context(landscape=True).report_action(records, data=data)
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
from odoo import fields, models, api
|
|
||||||
|
|
||||||
|
|
||||||
class AccountPrintJournal(models.TransientModel):
|
|
||||||
_name = "account.print.journal"
|
|
||||||
_inherit = "account.common.journal.report"
|
|
||||||
_description = "Account Print Journal"
|
|
||||||
|
|
||||||
sort_selection = fields.Selection([('date', 'Date'), ('move_name', 'Journal Entry Number')],
|
|
||||||
'Entries Sorted by', required=True, default='move_name')
|
|
||||||
journal_ids = fields.Many2many('account.journal', string='Journals', required=True,
|
|
||||||
default=lambda self: self.env['account.journal'].search([('type', 'in', ['sale', 'purchase'])]))
|
|
||||||
|
|
||||||
def _get_report_data(self, data):
|
|
||||||
data = self.pre_print_report(data)
|
|
||||||
data['form'].update({'sort_selection': self.sort_selection})
|
|
||||||
return data
|
|
||||||
|
|
||||||
def _print_report(self, data):
|
|
||||||
data = self._get_report_data(data)
|
|
||||||
return self.env.ref('accounting_pdf_reports.action_report_journal').with_context(landscape=True).report_action(self, data=data)
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
from odoo import fields, models, api, _
|
|
||||||
|
|
||||||
|
|
||||||
class AccountPartnerLedger(models.TransientModel):
|
|
||||||
_name = "account.report.partner.ledger"
|
|
||||||
_inherit = "account.common.partner.report"
|
|
||||||
_description = "Account Partner Ledger"
|
|
||||||
|
|
||||||
amount_currency = fields.Boolean("With Currency",
|
|
||||||
help="It adds the currency column on "
|
|
||||||
"report if the currency differs from "
|
|
||||||
"the company currency.")
|
|
||||||
reconciled = fields.Boolean('Reconciled Entries')
|
|
||||||
|
|
||||||
def _get_report_data(self, data):
|
|
||||||
data = self.pre_print_report(data)
|
|
||||||
data['form'].update({'reconciled': self.reconciled,
|
|
||||||
'amount_currency': self.amount_currency})
|
|
||||||
return data
|
|
||||||
|
|
||||||
def _print_report(self, data):
|
|
||||||
data = self._get_report_data(data)
|
|
||||||
return self.env.ref('accounting_pdf_reports.action_report_partnerledger').with_context(landscape=True).\
|
|
||||||
report_action(self, data=data)
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
from odoo import api, fields, models
|
|
||||||
|
|
||||||
|
|
||||||
class AccountingReport(models.TransientModel):
|
|
||||||
_name = "accounting.report"
|
|
||||||
_inherit = "account.common.report"
|
|
||||||
_description = "Accounting Report"
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _get_account_report(self):
|
|
||||||
reports = []
|
|
||||||
if self.env.context.get('active_id'):
|
|
||||||
menu = self.env['ir.ui.menu'].browse(self.env.context.get('active_id')).name
|
|
||||||
reports = self.env['account.financial.report'].search([('name', 'ilike', menu)])
|
|
||||||
return reports and reports[0] or False
|
|
||||||
|
|
||||||
enable_filter = fields.Boolean(string='Enable Comparison')
|
|
||||||
account_report_id = fields.Many2one('account.financial.report', string='Account Reports',
|
|
||||||
required=True, default=_get_account_report)
|
|
||||||
label_filter = fields.Char(string='Column Label', help="This label will be displayed on report to "
|
|
||||||
"show the balance computed for the given comparison filter.")
|
|
||||||
filter_cmp = fields.Selection([('filter_no', 'No Filters'), ('filter_date', 'Date')],
|
|
||||||
string='Filter by', required=True, default='filter_no')
|
|
||||||
date_from_cmp = fields.Date(string='Date From')
|
|
||||||
date_to_cmp = fields.Date(string='Date To')
|
|
||||||
debit_credit = fields.Boolean(string='Display Debit/Credit Columns',
|
|
||||||
help="This option allows you to get more details about "
|
|
||||||
"the way your balances are computed."
|
|
||||||
" Because it is space consuming, we do not allow to"
|
|
||||||
" use it while doing a comparison.")
|
|
||||||
|
|
||||||
def _build_comparison_context(self, data):
|
|
||||||
result = {}
|
|
||||||
result['journal_ids'] = 'journal_ids' in data['form'] and data['form']['journal_ids'] or False
|
|
||||||
result['state'] = 'target_move' in data['form'] and data['form']['target_move'] or ''
|
|
||||||
if data['form']['filter_cmp'] == 'filter_date':
|
|
||||||
result['date_from'] = data['form']['date_from_cmp']
|
|
||||||
result['date_to'] = data['form']['date_to_cmp']
|
|
||||||
result['strict_range'] = True
|
|
||||||
return result
|
|
||||||
|
|
||||||
def check_report(self):
|
|
||||||
res = super(AccountingReport, self).check_report()
|
|
||||||
data = {}
|
|
||||||
data['form'] = self.read(['account_report_id', 'date_from_cmp', 'date_to_cmp', 'journal_ids', 'filter_cmp', 'target_move'])[0]
|
|
||||||
for field in ['account_report_id']:
|
|
||||||
if isinstance(data['form'][field], tuple):
|
|
||||||
data['form'][field] = data['form'][field][0]
|
|
||||||
comparison_context = self._build_comparison_context(data)
|
|
||||||
res['data']['form']['comparison_context'] = comparison_context
|
|
||||||
return res
|
|
||||||
|
|
||||||
def _print_report(self, data):
|
|
||||||
data['form'].update(self.read(['date_from_cmp', 'debit_credit', 'date_to_cmp', 'filter_cmp', 'account_report_id', 'enable_filter', 'label_filter', 'target_move'])[0])
|
|
||||||
return self.env.ref('accounting_pdf_reports.action_report_financial').report_action(self, data=data, config=False)
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
from odoo import api, fields, models, _
|
|
||||||
from odoo.tools.misc import get_lang
|
|
||||||
|
|
||||||
|
|
||||||
class AccountCommonReport(models.TransientModel):
|
|
||||||
_name = "account.common.report"
|
|
||||||
_description = "Account Common Report"
|
|
||||||
|
|
||||||
company_id = fields.Many2one('res.company', string='Company', required=True, readonly=True, default=lambda self: self.env.company)
|
|
||||||
journal_ids = fields.Many2many(
|
|
||||||
comodel_name='account.journal',
|
|
||||||
string='Journals',
|
|
||||||
required=True,
|
|
||||||
default=lambda self: self.env['account.journal'].search([('company_id', '=', self.company_id.id)]),
|
|
||||||
domain="[('company_id', '=', company_id)]",
|
|
||||||
)
|
|
||||||
date_from = fields.Date(string='Start Date')
|
|
||||||
date_to = fields.Date(string='End Date')
|
|
||||||
target_move = fields.Selection([('posted', 'All Posted Entries'),
|
|
||||||
('all', 'All Entries'),
|
|
||||||
], string='Target Moves', required=True, default='posted')
|
|
||||||
|
|
||||||
@api.onchange('company_id')
|
|
||||||
def _onchange_company_id(self):
|
|
||||||
if self.company_id:
|
|
||||||
self.journal_ids = self.env['account.journal'].search(
|
|
||||||
[('company_id', '=', self.company_id.id)])
|
|
||||||
else:
|
|
||||||
self.journal_ids = self.env['account.journal'].search([])
|
|
||||||
|
|
||||||
def _build_contexts(self, data):
|
|
||||||
result = {}
|
|
||||||
result['journal_ids'] = 'journal_ids' in data['form'] and data['form']['journal_ids'] or False
|
|
||||||
result['state'] = 'target_move' in data['form'] and data['form']['target_move'] or ''
|
|
||||||
result['date_from'] = data['form']['date_from'] or False
|
|
||||||
result['date_to'] = data['form']['date_to'] or False
|
|
||||||
result['strict_range'] = True if result['date_from'] else False
|
|
||||||
result['company_id'] = data['form']['company_id'][0] or False
|
|
||||||
return result
|
|
||||||
|
|
||||||
def _print_report(self, data):
|
|
||||||
raise NotImplementedError()
|
|
||||||
|
|
||||||
def check_report(self):
|
|
||||||
self.ensure_one()
|
|
||||||
data = {}
|
|
||||||
data['ids'] = self.env.context.get('active_ids', [])
|
|
||||||
data['model'] = self.env.context.get('active_model', 'ir.ui.menu')
|
|
||||||
data['form'] = self.read(['date_from', 'date_to', 'journal_ids', 'target_move', 'company_id'])[0]
|
|
||||||
used_context = self._build_contexts(data)
|
|
||||||
data['form']['used_context'] = dict(used_context, lang=get_lang(self.env).code)
|
|
||||||
return self.with_context(discard_logo_check=True)._print_report(data)
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
from odoo import api, fields, models
|
|
||||||
|
|
||||||
|
|
||||||
class AccountCommonAccountReport(models.TransientModel):
|
|
||||||
_name = 'account.common.account.report'
|
|
||||||
_inherit = "account.common.report"
|
|
||||||
_description = 'Account Common Account Report'
|
|
||||||
|
|
||||||
display_account = fields.Selection([('all', 'All'),
|
|
||||||
('movement', 'With movements'),
|
|
||||||
('not_zero', 'With balance is not equal to 0'), ],
|
|
||||||
string='Display Accounts',
|
|
||||||
required=True, default='movement')
|
|
||||||
analytic_account_ids = fields.Many2many('account.analytic.account',
|
|
||||||
string='Analytic Accounts')
|
|
||||||
account_ids = fields.Many2many('account.account', string='Accounts')
|
|
||||||
partner_ids = fields.Many2many('res.partner', string='Partners')
|
|
||||||
|
|
||||||
def pre_print_report(self, data):
|
|
||||||
data['form'].update(self.read(['display_account'])[0])
|
|
||||||
data['form'].update({
|
|
||||||
'analytic_account_ids': self.analytic_account_ids.ids,
|
|
||||||
'partner_ids': self.partner_ids.ids,
|
|
||||||
'account_ids': self.account_ids.ids,
|
|
||||||
})
|
|
||||||
return data
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
from odoo import api, fields, models
|
|
||||||
|
|
||||||
|
|
||||||
class AccountCommonJournalReport(models.TransientModel):
|
|
||||||
_name = 'account.common.journal.report'
|
|
||||||
_description = 'Common Journal Report'
|
|
||||||
_inherit = "account.common.report"
|
|
||||||
|
|
||||||
amount_currency = fields.Boolean('With Currency', help="Print Report with the currency column if the currency differs from the company currency.")
|
|
||||||
|
|
||||||
def pre_print_report(self, data):
|
|
||||||
data['form'].update({'amount_currency': self.amount_currency})
|
|
||||||
return data
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
from odoo import fields, models
|
|
||||||
|
|
||||||
|
|
||||||
class AccountingCommonPartnerReport(models.TransientModel):
|
|
||||||
_name = 'account.common.partner.report'
|
|
||||||
_inherit = "account.common.report"
|
|
||||||
_description = 'Account Common Partner Report'
|
|
||||||
|
|
||||||
result_selection = fields.Selection([('customer', 'Receivable Accounts'),
|
|
||||||
('supplier', 'Payable Accounts'),
|
|
||||||
('customer_supplier', 'Receivable and Payable Accounts')
|
|
||||||
], string="Partner's", required=True, default='customer')
|
|
||||||
partner_ids = fields.Many2many('res.partner', string='Partners')
|
|
||||||
|
|
||||||
def pre_print_report(self, data):
|
|
||||||
data['form'].update(self.read(['result_selection'])[0])
|
|
||||||
data['form'].update({'partner_ids': self.partner_ids.ids})
|
|
||||||
return data
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="account_common_report_view" model="ir.ui.view">
|
|
||||||
<field name="name">Common Report</field>
|
|
||||||
<field name="model">account.common.report</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form string="Report Options">
|
|
||||||
<group col="4">
|
|
||||||
<field name="target_move" widget="radio"/>
|
|
||||||
<field name="date_from"/>
|
|
||||||
<field name="date_to"/>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<field name="journal_ids" widget="many2many_tags" options="{'no_create': True}"/>
|
|
||||||
<field name="company_id" invisible="1"/>
|
|
||||||
</group>
|
|
||||||
<footer>
|
|
||||||
<button name="check_report" string="Print" type="object" default_focus="1" class="oe_highlight" data-hotkey="q"/>
|
|
||||||
<button string="Cancel" class="btn btn-secondary" special="cancel" data-hotkey="z" />
|
|
||||||
</footer>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
from odoo import fields, models
|
|
||||||
|
|
||||||
|
|
||||||
class AccountPrintJournal(models.TransientModel):
|
|
||||||
_inherit = "account.common.journal.report"
|
|
||||||
_name = "account.print.journal"
|
|
||||||
_description = "Account Print Journal"
|
|
||||||
|
|
||||||
sort_selection = fields.Selection(
|
|
||||||
[('date', 'Date'), ('move_name', 'Journal Entry Number')],
|
|
||||||
'Entries Sorted by', required=True, default='move_name'
|
|
||||||
)
|
|
||||||
journal_ids = fields.Many2many(
|
|
||||||
'account.journal', string='Journals', required=True,
|
|
||||||
default=lambda self: self.env['account.journal'].search([('type', 'in', ['sale', 'purchase'])])
|
|
||||||
)
|
|
||||||
|
|
||||||
def _print_report(self, data):
|
|
||||||
data = self.pre_print_report(data)
|
|
||||||
data['form'].update({'sort_selection': self.sort_selection})
|
|
||||||
return self.env.ref('account.action_report_journal').with_context(landscape=True).report_action(self, data=data)
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
from odoo import models, api, fields
|
|
||||||
from datetime import date
|
|
||||||
|
|
||||||
|
|
||||||
class AccountTaxReport(models.TransientModel):
|
|
||||||
_name = 'account.tax.report.wizard'
|
|
||||||
_inherit = "account.common.report"
|
|
||||||
_description = 'Tax Report'
|
|
||||||
|
|
||||||
date_from = fields.Date(
|
|
||||||
string='Date From', required=True,
|
|
||||||
default=lambda self: fields.Date.to_string(date.today().replace(day=1))
|
|
||||||
)
|
|
||||||
date_to = fields.Date(
|
|
||||||
string='Date To', required=True,
|
|
||||||
default=lambda self: fields.Date.to_string(date.today())
|
|
||||||
)
|
|
||||||
|
|
||||||
def _print_report(self, data):
|
|
||||||
return self.env.ref('accounting_pdf_reports.action_report_account_tax').report_action(self, data=data)
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
from odoo import fields, models, api
|
|
||||||
|
|
||||||
|
|
||||||
class AccountBalanceReport(models.TransientModel):
|
|
||||||
_name = 'account.balance.report'
|
|
||||||
_inherit = "account.common.account.report"
|
|
||||||
_description = 'Trial Balance Report'
|
|
||||||
|
|
||||||
journal_ids = fields.Many2many(
|
|
||||||
'account.journal', 'account_balance_report_journal_rel',
|
|
||||||
'account_id', 'journal_id',
|
|
||||||
string='Journals', required=True, default=[]
|
|
||||||
)
|
|
||||||
analytic_account_ids = fields.Many2many(
|
|
||||||
'account.analytic.account',
|
|
||||||
'account_trial_balance_analytic_rel', string='Analytic Accounts'
|
|
||||||
)
|
|
||||||
|
|
||||||
def _get_report_data(self, data):
|
|
||||||
data = self.pre_print_report(data)
|
|
||||||
records = self.env[data['model']].browse(data.get('ids', []))
|
|
||||||
return records, data
|
|
||||||
|
|
||||||
def _print_report(self, data):
|
|
||||||
records, data = self._get_report_data(data)
|
|
||||||
return self.env.ref('accounting_pdf_reports.action_report_trial_balance').report_action(records, data=data)
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
import time
|
|
||||||
from dateutil.relativedelta import relativedelta
|
|
||||||
from odoo import api, fields, models, _
|
|
||||||
from odoo.exceptions import UserError
|
|
||||||
|
|
||||||
|
|
||||||
class AccountAgedTrialBalance(models.TransientModel):
|
|
||||||
_name = 'account.aged.trial.balance'
|
|
||||||
_inherit = 'account.common.partner.report'
|
|
||||||
_description = 'Account Aged Trial balance Report'
|
|
||||||
|
|
||||||
period_length = fields.Integer(string='Period Length (days)', required=True, default=30)
|
|
||||||
journal_ids = fields.Many2many('account.journal', string='Journals', required=True)
|
|
||||||
date_from = fields.Date(default=lambda *a: time.strftime('%Y-%m-%d'))
|
|
||||||
|
|
||||||
def _get_report_data(self, data):
|
|
||||||
res = {}
|
|
||||||
data = self.pre_print_report(data)
|
|
||||||
data['form'].update(self.read(['period_length'])[0])
|
|
||||||
period_length = data['form']['period_length']
|
|
||||||
if period_length <= 0:
|
|
||||||
raise UserError(_('You must set a period length greater than 0.'))
|
|
||||||
if not data['form']['date_from']:
|
|
||||||
raise UserError(_('You must set a start date.'))
|
|
||||||
start = data['form']['date_from']
|
|
||||||
for i in range(5)[::-1]:
|
|
||||||
stop = start - relativedelta(days=period_length - 1)
|
|
||||||
res[str(i)] = {
|
|
||||||
'name': (i != 0 and (str((5 - (i + 1)) * period_length) + '-' + str((5 - i) * period_length)) or (
|
|
||||||
'+' + str(4 * period_length))),
|
|
||||||
'stop': start.strftime('%Y-%m-%d'),
|
|
||||||
'start': (i != 0 and stop.strftime('%Y-%m-%d') or False),
|
|
||||||
}
|
|
||||||
start = stop - relativedelta(days=1)
|
|
||||||
data['form'].update(res)
|
|
||||||
return data
|
|
||||||
|
|
||||||
def _print_report(self, data):
|
|
||||||
data = self._get_report_data(data)
|
|
||||||
return self.env.ref('accounting_pdf_reports.action_report_aged_partner_balance').\
|
|
||||||
with_context(landscape=True).report_action(self, data=data)
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="account_aged_balance_view" model="ir.ui.view">
|
|
||||||
<field name="name">Aged Partner Balance</field>
|
|
||||||
<field name="model">account.aged.trial.balance</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form string="Report Options">
|
|
||||||
<group col="4">
|
|
||||||
<field name="date_from"/>
|
|
||||||
<field name="period_length"/>
|
|
||||||
<field name="company_id" invisible="1"/>
|
|
||||||
<newline/>
|
|
||||||
<field name="result_selection" widget="radio"
|
|
||||||
invisible="context.get('hide_result_selection')"/>
|
|
||||||
<field name="target_move" widget="radio"/>
|
|
||||||
</group>
|
|
||||||
<field name="journal_ids" required="0" invisible="1"/>
|
|
||||||
<xpath expr="//field[@name='journal_ids']" position="before">
|
|
||||||
<group>
|
|
||||||
<field name="partner_ids" widget="many2many_tags"
|
|
||||||
options="{'no_open': True, 'no_create': True}"/>
|
|
||||||
</group>
|
|
||||||
</xpath>
|
|
||||||
<footer>
|
|
||||||
<button name="check_report" class="oe_highlight"
|
|
||||||
string="Print" type="object"/>
|
|
||||||
<button string="Cancel" class="btn btn-default" special="cancel"/>
|
|
||||||
</footer>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_account_aged_balance_view" model="ir.actions.act_window">
|
|
||||||
<field name="name">Aged Partner Balance</field>
|
|
||||||
<field name="res_model">account.aged.trial.balance</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="view_mode">list,form</field>
|
|
||||||
<field name="view_id" ref="account_aged_balance_view"/>
|
|
||||||
<field name="context"></field>
|
|
||||||
<field name="target">new</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_aged_trial_balance"
|
|
||||||
name="Aged Partner Balance"
|
|
||||||
sequence="10"
|
|
||||||
action="action_account_aged_balance_view"
|
|
||||||
parent="menu_finance_partner_reports"/>
|
|
||||||
|
|
||||||
<record id="action_account_aged_receivable" model="ir.actions.act_window">
|
|
||||||
<field name="name">Aged Receivable</field>
|
|
||||||
<field name="res_model">account.aged.trial.balance</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="view_mode">list,form</field>
|
|
||||||
<field name="view_id" ref="account_aged_balance_view"/>
|
|
||||||
<field name="context">{'default_result_selection': 'customer',
|
|
||||||
'hide_result_selection': 1}</field>
|
|
||||||
<field name="target">new</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_aged_receivable"
|
|
||||||
name="Aged Receivable"
|
|
||||||
sequence="20"
|
|
||||||
action="action_account_aged_receivable"
|
|
||||||
parent="menu_finance_partner_reports"/>
|
|
||||||
|
|
||||||
|
|
||||||
<record id="action_account_aged_payable" model="ir.actions.act_window">
|
|
||||||
<field name="name">Aged Payable</field>
|
|
||||||
<field name="res_model">account.aged.trial.balance</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="view_mode">list,form</field>
|
|
||||||
<field name="view_id" ref="account_aged_balance_view"/>
|
|
||||||
<field name="context">{'default_result_selection': 'supplier',
|
|
||||||
'hide_result_selection': 1}</field>
|
|
||||||
<field name="target">new</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_aged_payable"
|
|
||||||
name="Aged Payable"
|
|
||||||
sequence="30"
|
|
||||||
action="action_account_aged_payable"
|
|
||||||
parent="menu_finance_partner_reports"/>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="account_financial_report_profitandloss0" model="account.financial.report">
|
|
||||||
<field name="name">Profit and Loss</field>
|
|
||||||
<field name="sign">-1</field>
|
|
||||||
<field name="type">sum</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="account_financial_report_income0" model="account.financial.report">
|
|
||||||
<field name="name">Income</field>
|
|
||||||
<field name="sign">-1</field>
|
|
||||||
<field name="parent_id" ref="account_financial_report_profitandloss0"/>
|
|
||||||
<field name="display_detail">detail_with_hierarchy</field>
|
|
||||||
<field name="type">account_type</field>
|
|
||||||
<field name="account_type_ids" eval="[(4,ref('accounting_pdf_reports.data_account_type_other_income')), (4,ref('accounting_pdf_reports.data_account_type_revenue'))]"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="account_financial_report_expense0" model="account.financial.report">
|
|
||||||
<field name="name">Expense</field>
|
|
||||||
<field name="sign">-1</field>
|
|
||||||
<field name="parent_id" ref="account_financial_report_profitandloss0"/>
|
|
||||||
<field name="display_detail">detail_with_hierarchy</field>
|
|
||||||
<field name="type">account_type</field>
|
|
||||||
<field name="account_type_ids" eval="[(4,ref('accounting_pdf_reports.data_account_type_expenses')),(4,ref('accounting_pdf_reports.data_account_type_direct_costs')), (4,ref('accounting_pdf_reports.data_account_type_depreciation'))]"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="account_financial_report_balancesheet0" model="account.financial.report">
|
|
||||||
<field name="name">Balance Sheet</field>
|
|
||||||
<field name="type">sum</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="account_financial_report_assets0" model="account.financial.report">
|
|
||||||
<field name="name">Assets</field>
|
|
||||||
<field name="parent_id" ref="account_financial_report_balancesheet0"/>
|
|
||||||
<field name="display_detail">detail_with_hierarchy</field>
|
|
||||||
<field name="type">account_type</field>
|
|
||||||
<field name="account_type_ids" eval="[(4,ref('accounting_pdf_reports.data_account_type_receivable')),
|
|
||||||
(4,ref('accounting_pdf_reports.data_account_type_liquidity')), (4,ref('accounting_pdf_reports.data_account_type_current_assets')),
|
|
||||||
(4,ref('accounting_pdf_reports.data_account_type_non_current_assets'), (4,ref('accounting_pdf_reports.data_account_type_prepayments'))),
|
|
||||||
(4,ref('accounting_pdf_reports.data_account_type_fixed_assets'))]"/>
|
|
||||||
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="account_financial_report_liabilitysum0" model="account.financial.report">
|
|
||||||
<field name="name">Liability</field>
|
|
||||||
<field name="parent_id" ref="account_financial_report_balancesheet0"/>
|
|
||||||
<field name="display_detail">no_detail</field>
|
|
||||||
<field name="type">sum</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="account_financial_report_liability0" model="account.financial.report">
|
|
||||||
<field name="name">Liability</field>
|
|
||||||
<field name="parent_id" ref="account_financial_report_liabilitysum0"/>
|
|
||||||
<field name="display_detail">detail_with_hierarchy</field>
|
|
||||||
<field name="type">account_type</field>
|
|
||||||
<field name="account_type_ids" eval="[(4,ref('accounting_pdf_reports.data_account_type_payable')),
|
|
||||||
(4,ref('accounting_pdf_reports.data_account_type_equity')), (4,ref('accounting_pdf_reports.data_account_type_current_liabilities')),
|
|
||||||
(4,ref('accounting_pdf_reports.data_account_type_non_current_liabilities'))]"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="account_financial_report_profitloss_toreport0" model="account.financial.report">
|
|
||||||
<field name="name">Profit (Loss) to report</field>
|
|
||||||
<field name="parent_id" ref="account_financial_report_liabilitysum0"/>
|
|
||||||
<field name="display_detail">no_detail</field>
|
|
||||||
<field name="type">account_report</field>
|
|
||||||
<field name="account_report_id" ref="account_financial_report_profitandloss0"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="accounting_report_view" model="ir.ui.view">
|
|
||||||
<field name="name">Accounting Report</field>
|
|
||||||
<field name="model">accounting.report</field>
|
|
||||||
<field name="inherit_id" ref="accounting_pdf_reports.account_common_report_view"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<field name="target_move" position="before">
|
|
||||||
<field name="account_report_id" domain="[('parent_id','=',False)]"/>
|
|
||||||
</field>
|
|
||||||
<field name="target_move" position="after">
|
|
||||||
<field name="enable_filter"/>
|
|
||||||
<field name="debit_credit" invisible="enable_filter == True"/>
|
|
||||||
</field>
|
|
||||||
<field name="journal_ids" position="after">
|
|
||||||
<notebook tabpos="up" colspan="4">
|
|
||||||
<page string="Comparison" name="comparison" invisible="enable_filter == False">
|
|
||||||
<group>
|
|
||||||
<field name="label_filter" required="enable_filter == True"/>
|
|
||||||
<field name="filter_cmp"/>
|
|
||||||
</group>
|
|
||||||
<group string="Dates" invisible="filter_cmp != 'filter_date'">
|
|
||||||
<field name="date_from_cmp" required="filter_cmp == 'filter_date'"/>
|
|
||||||
<field name="date_to_cmp" required="filter_cmp == 'filter_date'"/>
|
|
||||||
</group>
|
|
||||||
</page>
|
|
||||||
</notebook>
|
|
||||||
</field>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_account_report_bs" model="ir.actions.act_window">
|
|
||||||
<field name="name">Balance Sheet</field>
|
|
||||||
<field name="res_model">accounting.report</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="view_id" ref="accounting_report_view"/>
|
|
||||||
<field name="target">new</field>
|
|
||||||
<field name="context" eval="{'default_account_report_id':ref('accounting_pdf_reports.account_financial_report_balancesheet0')}"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_account_report_bs"
|
|
||||||
name="Balance Sheet"
|
|
||||||
sequence="5"
|
|
||||||
action="action_account_report_bs"
|
|
||||||
parent="menu_finance_legal_statement"
|
|
||||||
groups="account.group_account_user,account.group_account_manager"/>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="account_report_general_ledger_view" model="ir.ui.view">
|
|
||||||
<field name="name">General Ledger</field>
|
|
||||||
<field name="model">account.report.general.ledger</field>
|
|
||||||
<field name="inherit_id" ref="accounting_pdf_reports.account_common_report_view"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<data>
|
|
||||||
<xpath expr="//field[@name='journal_ids']" position="after">
|
|
||||||
<field name="analytic_account_ids" widget="many2many_tags"
|
|
||||||
options="{'no_open': True, 'no_create': True}"
|
|
||||||
invisible="1"
|
|
||||||
groups="analytic.group_analytic_accounting"/>
|
|
||||||
<field name="account_ids" widget="many2many_tags"
|
|
||||||
options="{'no_open': True, 'no_create': True}"/>
|
|
||||||
<field name="partner_ids" widget="many2many_tags"
|
|
||||||
options="{'no_open': True, 'no_create': True}"/>
|
|
||||||
</xpath>
|
|
||||||
<xpath expr="//field[@name='target_move']" position="after">
|
|
||||||
<field name="sortby" widget="radio"/>
|
|
||||||
<field name="display_account" widget="radio"/>
|
|
||||||
<field name="initial_balance"/>
|
|
||||||
<newline/>
|
|
||||||
</xpath>
|
|
||||||
</data>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_account_general_ledger_menu" model="ir.actions.act_window">
|
|
||||||
<field name="name">General Ledger</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="res_model">account.report.general.ledger</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="view_id" ref="account_report_general_ledger_view"/>
|
|
||||||
<field name="target">new</field>
|
|
||||||
<field name="binding_model_id" ref="account.model_account_account" />
|
|
||||||
<field name="binding_type">report</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_general_ledger"
|
|
||||||
name="General Ledger"
|
|
||||||
sequence="10"
|
|
||||||
parent="menu_finance_audit_reports"
|
|
||||||
action="action_account_general_ledger_menu"
|
|
||||||
groups="account.group_account_user,account.group_account_manager"/>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="account_report_print_journal_view" model="ir.ui.view">
|
|
||||||
<field name="name">Journals Audit</field>
|
|
||||||
<field name="model">account.print.journal</field>
|
|
||||||
<field name="inherit_id" ref="accounting_pdf_reports.account_common_report_view"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<data>
|
|
||||||
<xpath expr="//field[@name='target_move']" position="after">
|
|
||||||
<field name="amount_currency" groups="base.group_multi_currency"/>
|
|
||||||
<field name="sort_selection" widget="radio"/>
|
|
||||||
<newline/>
|
|
||||||
</xpath>
|
|
||||||
</data>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_account_print_journal_menu" model="ir.actions.act_window">
|
|
||||||
<field name="name">Journals Audit</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="res_model">account.print.journal</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="view_id" ref="account_report_print_journal_view"/>
|
|
||||||
<field name="target">new</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_print_journal"
|
|
||||||
name="Journals Audit"
|
|
||||||
sequence="40"
|
|
||||||
parent="menu_finance_audit_reports"
|
|
||||||
action="action_account_print_journal_menu"
|
|
||||||
groups="account.group_account_manager,account.group_account_user"/>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="account_report_partner_ledger_view" model="ir.ui.view">
|
|
||||||
<field name="name">Partner Ledger</field>
|
|
||||||
<field name="model">account.report.partner.ledger</field>
|
|
||||||
<field name="inherit_id" ref="accounting_pdf_reports.account_common_report_view"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<data>
|
|
||||||
<xpath expr="//field[@name='journal_ids']" position="before">
|
|
||||||
<field name="partner_ids" widget="many2many_tags"
|
|
||||||
options="{'no_open': True, 'no_create': True}"/>
|
|
||||||
</xpath>
|
|
||||||
<xpath expr="//field[@name='target_move']" position="after">
|
|
||||||
<field name="result_selection"/>
|
|
||||||
<field name="amount_currency" groups="base.group_multi_currency"/>
|
|
||||||
<newline/>
|
|
||||||
<field name="reconciled"/>
|
|
||||||
<newline/>
|
|
||||||
</xpath>
|
|
||||||
</data>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_account_partner_ledger_menu" model="ir.actions.act_window">
|
|
||||||
<field name="name">Partner Ledger</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="res_model">account.report.partner.ledger</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="view_id" ref="account_report_partner_ledger_view"/>
|
|
||||||
<field name="target">new</field>
|
|
||||||
<field name="binding_model_id" ref="account.model_account_account" />
|
|
||||||
<field name="binding_type">report</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_partner_ledger"
|
|
||||||
name="Partner Ledger"
|
|
||||||
sequence="5"
|
|
||||||
parent="menu_finance_partner_reports"
|
|
||||||
action="action_account_partner_ledger_menu"
|
|
||||||
groups="account.group_account_invoice"/>
|
|
||||||
|
|
||||||
<!-- Add to Partner Print button -->
|
|
||||||
<record id="action_partner_report_partnerledger" model="ir.actions.act_window">
|
|
||||||
<field name="name">Balance Statement (Partner Ledger)</field>
|
|
||||||
<field name="res_model">account.report.partner.ledger</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="view_id" ref="account_report_partner_ledger_view" />
|
|
||||||
<field name="target">new</field>
|
|
||||||
<field name="binding_model_id" ref="base.model_res_partner" />
|
|
||||||
<field name="binding_type">report</field>
|
|
||||||
<field name="context">{
|
|
||||||
'default_partner_ids':active_ids,
|
|
||||||
'default_target_move': 'posted',
|
|
||||||
'default_result_selection': 'customer_supplier',
|
|
||||||
'default_reconciled': True,
|
|
||||||
'hide_partner':1,
|
|
||||||
}</field>
|
|
||||||
<field name="group_ids" eval="[(4, ref('account.group_account_invoice'))]"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="action_account_report_pl" model="ir.actions.act_window">
|
|
||||||
<field name="name">Profit and Loss</field>
|
|
||||||
<field name="res_model">accounting.report</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="view_id" ref="accounting_report_view"/>
|
|
||||||
<field name="target">new</field>
|
|
||||||
<field name="context" eval="{'default_account_report_id':ref('accounting_pdf_reports.account_financial_report_profitandloss0')}"/>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_account_report_pl"
|
|
||||||
name="Profit and Loss"
|
|
||||||
sequence="6"
|
|
||||||
action="action_account_report_pl"
|
|
||||||
parent="accounting_pdf_reports.menu_finance_legal_statement"
|
|
||||||
groups="account.group_account_user,account.group_account_manager"/>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="accounting_tax_report_view" model="ir.ui.view">
|
|
||||||
<field name="name">Tax Reports</field>
|
|
||||||
<field name="model">account.tax.report.wizard</field>
|
|
||||||
<field name="inherit_id" eval="False"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<form string="Report Options">
|
|
||||||
<group>
|
|
||||||
<group>
|
|
||||||
<field name="target_move" widget="radio"/>
|
|
||||||
<field name="date_from"/>
|
|
||||||
</group>
|
|
||||||
<group>
|
|
||||||
<field name="company_id" invisible="1"/>
|
|
||||||
<field name="date_to" />
|
|
||||||
</group>
|
|
||||||
</group>
|
|
||||||
<footer>
|
|
||||||
<button name="check_report" string="Print" type="object" default_focus="1" class="oe_highlight" data-hotkey="q"/>
|
|
||||||
<button string="Cancel" class="btn btn-secondary" special="cancel" data-hotkey="z"/>
|
|
||||||
</footer>
|
|
||||||
</form>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_account_tax_report" model="ir.actions.act_window">
|
|
||||||
<field name="name">Tax Reports</field>
|
|
||||||
<field name="res_model">account.tax.report.wizard</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="view_id" ref="accounting_tax_report_view"/>
|
|
||||||
<field name="context">{}</field>
|
|
||||||
<field name="target">new</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_account_report"
|
|
||||||
name="Tax Report"
|
|
||||||
sequence="30"
|
|
||||||
action="action_account_tax_report"
|
|
||||||
parent="menu_finance_audit_reports"
|
|
||||||
groups="account.group_account_manager,account.group_account_user"/>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="account_report_balance_view" model="ir.ui.view">
|
|
||||||
<field name="name">Trial Balance</field>
|
|
||||||
<field name="model">account.balance.report</field>
|
|
||||||
<field name="inherit_id" ref="accounting_pdf_reports.account_common_report_view"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<data>
|
|
||||||
<xpath expr="//field[@name='target_move']" position="after">
|
|
||||||
<field name="display_account" widget="radio"/>
|
|
||||||
<newline/>
|
|
||||||
</xpath>
|
|
||||||
<xpath expr="//field[@name='journal_ids']" position="after">
|
|
||||||
<field name="analytic_account_ids" widget="many2many_tags"
|
|
||||||
invisible="1"
|
|
||||||
options="{'no_open': True, 'no_create': True}"/>
|
|
||||||
</xpath>
|
|
||||||
</data>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="action_account_balance_menu" model="ir.actions.act_window">
|
|
||||||
<field name="name">Trial Balance</field>
|
|
||||||
<field name="type">ir.actions.act_window</field>
|
|
||||||
<field name="res_model">account.balance.report</field>
|
|
||||||
<field name="view_mode">form</field>
|
|
||||||
<field name="view_id" ref="account_report_balance_view"/>
|
|
||||||
<field name="target">new</field>
|
|
||||||
<field name="binding_model_id" ref="account.model_account_account" />
|
|
||||||
<field name="binding_type">report</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<menuitem id="menu_general_balance_report"
|
|
||||||
name="Trial Balance"
|
|
||||||
sequence="20"
|
|
||||||
parent="menu_finance_audit_reports"
|
|
||||||
action="action_account_balance_menu"
|
|
||||||
groups="account.group_account_user,account.group_account_manager"/>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
==================
|
|
||||||
Odoo 18 Accounting
|
|
||||||
==================
|
|
||||||
|
|
||||||
This Module will adds following accounting features to Odoo 19 community edition:
|
|
||||||
Financial Reports, Asset Management, Budget Management, Bank Statement Import,
|
|
||||||
Daily Reports, Customer Follow Ups and Recurring Payments
|
|
||||||
|
|
||||||
|
|
||||||
Common FAQ
|
|
||||||
==========
|
|
||||||
1. How to skip in payment status and directly move to paid status ?
|
|
||||||
a) https://www.youtube.com/watch?v=eWxfy86Byog
|
|
||||||
|
|
||||||
Installation
|
|
||||||
============
|
|
||||||
|
|
||||||
To install this module, you need to:
|
|
||||||
|
|
||||||
Download the module and add it to your Odoo addons folder. Afterward, log on to
|
|
||||||
your Odoo server and go to the Apps menu. Trigger the debug mode and update the
|
|
||||||
list by clicking on the "Update Apps List" link. Now install the module by
|
|
||||||
clicking on the install button.
|
|
||||||
|
|
||||||
Upgrade
|
|
||||||
============
|
|
||||||
|
|
||||||
To upgrade this module, you need to:
|
|
||||||
|
|
||||||
Download the module and add it to your Odoo addons folder. Restart the server
|
|
||||||
and log on to your Odoo server. Select the Apps menu and upgrade the module by
|
|
||||||
clicking on the upgrade button.
|
|
||||||
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
=============
|
|
||||||
|
|
||||||
There is Nothing to Configure
|
|
||||||
|
|
||||||
|
|
||||||
Credits
|
|
||||||
=======
|
|
||||||
|
|
||||||
Contributors
|
|
||||||
------------
|
|
||||||
|
|
||||||
* Odoo Mates <odoomates@gmail.com>
|
|
||||||
* Walnut Software Solutions <info@walnutit.com>
|
|
||||||
|
|
||||||
|
|
||||||
Author & Maintainer
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
This module is maintained by the Odoo Mates
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
from . import models
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
{
|
|
||||||
'name': 'Odoo 19 Accounting Community',
|
|
||||||
'version': '19.0.1.0.3', # __odoosky_original_version__: '1.0.3'
|
|
||||||
'category': 'Accounting',
|
|
||||||
'summary': 'Accounting Reports, Asset Management and Budget, Recurring Payments, '
|
|
||||||
'Lock Dates, Fiscal Year, Accounting Dashboard, Financial Reports, '
|
|
||||||
'Customer Follow up Management, Bank Statement Import',
|
|
||||||
'description': 'Odoo 19 Financial Reports, Asset Management and '
|
|
||||||
'Budget, Financial Reports, Recurring Payments, '
|
|
||||||
'Bank Statement Import, Customer Follow Up Management,'
|
|
||||||
'Account Lock Date, Accounting Dashboard',
|
|
||||||
'live_test_url': 'https://www.youtube.com/c/OdooMates',
|
|
||||||
'sequence': '1',
|
|
||||||
'sequence': '1',
|
|
||||||
'website': 'https://www.walnutit.com',
|
|
||||||
'author': 'Odoo Mates, Walnut Software Solutions, Odoo SA',
|
|
||||||
'maintainer': 'Odoo Mates, Walnut Software Solutions',
|
|
||||||
'license': 'LGPL-3',
|
|
||||||
'support': 'odoomates@gmail.com',
|
|
||||||
'depends': [
|
|
||||||
'accounting_pdf_reports',
|
|
||||||
'om_account_asset',
|
|
||||||
'om_account_budget',
|
|
||||||
'om_fiscal_year',
|
|
||||||
'om_recurring_payments',
|
|
||||||
'om_account_daily_reports',
|
|
||||||
'om_account_followup',
|
|
||||||
],
|
|
||||||
'data': [
|
|
||||||
'security/group.xml',
|
|
||||||
'views/menu.xml',
|
|
||||||
'views/settings.xml',
|
|
||||||
'views/account_group.xml',
|
|
||||||
'views/account_tag.xml',
|
|
||||||
'views/res_partner.xml',
|
|
||||||
'views/account_bank_statement.xml',
|
|
||||||
'views/payment_method.xml',
|
|
||||||
'views/reconciliation.xml',
|
|
||||||
'views/account_journal.xml',
|
|
||||||
],
|
|
||||||
'application': True,
|
|
||||||
'images': ['static/description/banner.gif'],
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
==================
|
|
||||||
Odoo 19 Accounting
|
|
||||||
==================
|
|
||||||
|
|
||||||
This Module will adds following accounting features to Odoo 19 community edition:
|
|
||||||
Financial Reports, Asset Management, Budget Management, Bank Statement Import,
|
|
||||||
Daily Reports, Customer Follow Ups and Recurring Payments
|
|
||||||
|
|
||||||
Common FAQ
|
|
||||||
==========
|
|
||||||
1. How to skip in payment status and directly move to paid status ?
|
|
||||||
a) https://www.youtube.com/watch?v=eWxfy86Byog
|
|
||||||
|
|
||||||
Installation
|
|
||||||
============
|
|
||||||
|
|
||||||
To install this module, you need to:
|
|
||||||
|
|
||||||
Download the module and add it to your Odoo addons folder. Afterward, log on to
|
|
||||||
your Odoo server and go to the Apps menu. Trigger the debug mode and update the
|
|
||||||
list by clicking on the "Update Apps List" link. Now install the module by
|
|
||||||
clicking on the install button.
|
|
||||||
|
|
||||||
|
|
||||||
Upgrade
|
|
||||||
============
|
|
||||||
|
|
||||||
To upgrade this module, you need to:
|
|
||||||
|
|
||||||
Download the module and add it to your Odoo addons folder. Restart the server
|
|
||||||
and log on to your Odoo server. Select the Apps menu and upgrade the module by
|
|
||||||
clicking on the upgrade button.
|
|
||||||
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
=============
|
|
||||||
|
|
||||||
There is Nothing to Configure
|
|
||||||
|
|
||||||
|
|
||||||
Credits
|
|
||||||
=======
|
|
||||||
|
|
||||||
Contributors
|
|
||||||
------------
|
|
||||||
|
|
||||||
* Odoo Mates <odoomates@gmail.com>
|
|
||||||
* Walnut Software Solutions <info@walnutit.com>
|
|
||||||
|
|
||||||
|
|
||||||
Author & Maintainer
|
|
||||||
-------------------
|
|
||||||
|
|
||||||
This module is maintained by the Odoo Mates
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
##Turkish - Alaattin Kahramanlar
|
|
||||||
##Spanish MX - Alfonso González
|
|
||||||
##French - Sylvain LC
|
|
||||||
@@ -1,133 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * om_account_accountant
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 15.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2022-04-15 18:15+0000\n"
|
|
||||||
"PO-Revision-Date: 2022-04-15 18:15+0000\n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
|
|
||||||
msgid "Account Groups"
|
|
||||||
msgstr "مجموعات الحساب\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
|
|
||||||
msgid "Account Tags"
|
|
||||||
msgstr "علامات تصنيف الحساب "
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
|
|
||||||
msgid "Account Types"
|
|
||||||
msgstr "أنواع الحسابات\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
|
|
||||||
msgid "Accounting"
|
|
||||||
msgstr "محاسبة\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Anglo-Saxon Accounting"
|
|
||||||
msgstr "المحاسبة الأنجلو سكسونية\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
|
|
||||||
msgid "Bank Statements"
|
|
||||||
msgstr "البيانات المصرفية\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
|
|
||||||
msgid "Bank and Cash"
|
|
||||||
msgstr "البنك والنقد "
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
|
|
||||||
msgid "Cash Registers"
|
|
||||||
msgstr "آلات تسجيل النقد "
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
|
|
||||||
msgid "Chart of Accounts Templates"
|
|
||||||
msgstr "قوالب مخطط الحسابات "
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_res_config_settings
|
|
||||||
msgid "Config Settings"
|
|
||||||
msgstr "ضبط الاعدادات"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
|
|
||||||
msgid "Fiscal Position Templates"
|
|
||||||
msgstr "قوالب المركز المالي\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr "مجموعة من\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Method"
|
|
||||||
msgstr "طرق السداد"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
|
|
||||||
msgid "Payment Methods"
|
|
||||||
msgstr "طرق السداد"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Type"
|
|
||||||
msgstr "نوع الدفع\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
|
|
||||||
msgid "Reconcile"
|
|
||||||
msgstr "التصالح\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is\n"
|
|
||||||
" invoiced to a final customer (instead of recording the cost as soon\n"
|
|
||||||
" as the product is received in stock)."
|
|
||||||
msgstr ""
|
|
||||||
"سجل تكلفة سلعة كمصروف عندما تكون هذه السلعة\n"
|
|
||||||
" إصدار فاتورة للعميل النهائي (بدلاً من تسجيل التكلفة في أقرب وقت\n"
|
|
||||||
" كما يتم استلام المنتج في المخزون)."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is invoiced to a "
|
|
||||||
"final customer."
|
|
||||||
msgstr ""
|
|
||||||
"سجل تكلفة سلعة كمصروف عندما يتم إصدار فاتورة بهذه السلعة للعميل النهائي.\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
|
|
||||||
msgid "Templates"
|
|
||||||
msgstr "القوالب "
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid "Use anglo-saxon accounting"
|
|
||||||
msgstr "استخدام طريقة المحاسبة الأنجلو-ساكسونية"
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * om_account_accountant
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 15.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2022-07-06 02:59+0000\n"
|
|
||||||
"PO-Revision-Date: 2022-07-06 02:59+0000\n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
|
|
||||||
msgid "Account Groups"
|
|
||||||
msgstr "مجموعات الحساب\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
|
|
||||||
msgid "Account Tags"
|
|
||||||
msgstr "علامات الحساب\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
|
|
||||||
msgid "Account Types"
|
|
||||||
msgstr "أنواع الحسابات\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
|
|
||||||
msgid "Accounting"
|
|
||||||
msgstr "محاسبة\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Anglo-Saxon Accounting"
|
|
||||||
msgstr "المحاسبة الأنجلو سكسونية\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
|
|
||||||
msgid "Bank Statements"
|
|
||||||
msgstr "البيانات المصرفية\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
|
|
||||||
msgid "Bank and Cash"
|
|
||||||
msgstr "البنك والنقد\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
|
|
||||||
msgid "Cash Registers"
|
|
||||||
msgstr "الات المحاسبه\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
|
|
||||||
msgid "Chart of Accounts Templates"
|
|
||||||
msgstr "نماذج مخطط الحسابات\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_res_config_settings
|
|
||||||
msgid "Config Settings"
|
|
||||||
msgstr "ضبط الاعدادات"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
|
|
||||||
msgid "Fiscal Position Templates"
|
|
||||||
msgstr "قوالب المركز المالي\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr "مجموعة من\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_account_move
|
|
||||||
msgid "Journal Entry"
|
|
||||||
msgstr "قيد اليومية"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Method"
|
|
||||||
msgstr "طريقة الدفع او السداد\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
|
|
||||||
msgid "Payment Methods"
|
|
||||||
msgstr "طرق الدفع\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Type"
|
|
||||||
msgstr "نوع الدفع\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
|
|
||||||
msgid "Reconcile"
|
|
||||||
msgstr "التصالح"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is\n"
|
|
||||||
" invoiced to a final customer (instead of recording the cost as soon\n"
|
|
||||||
" as the product is received in stock)."
|
|
||||||
msgstr ""
|
|
||||||
"سجل تكلفة سلعة كمصروف عند إصدار فاتورة بهذه السلعة للعميل النهائي (بدلاً من "
|
|
||||||
"تسجيل التكلفة بمجرد استلام المنتج في المخزون)."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is invoiced to a "
|
|
||||||
"final customer."
|
|
||||||
msgstr ""
|
|
||||||
"سجل تكلفة سلعة كمصروف عندما يتم إصدار فاتورة بهذه السلعة للعميل النهائي.\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
|
|
||||||
msgid "Templates"
|
|
||||||
msgstr "القوالب"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid "Use anglo-saxon accounting"
|
|
||||||
msgstr "استخدم محاسبة الأنجلو ساكسون\n"
|
|
||||||
@@ -1,144 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * om_account_accountant
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 19.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2024-03-21 19:42+0000\n"
|
|
||||||
"PO-Revision-Date: 2024-03-21 19:42+0000\n"
|
|
||||||
"Last-Translator: Sergio Ariel Ameghino <ariel.ameghino@gmail.com>\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
|
|
||||||
msgid "Account Groups"
|
|
||||||
msgstr "Grupos de cuentas"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
|
|
||||||
msgid "Account Tags"
|
|
||||||
msgstr "Etiquetas de cuenta"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
|
|
||||||
msgid "Accounting"
|
|
||||||
msgstr "Contabilidad"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Anglo-Saxon Accounting"
|
|
||||||
msgstr "Contabilidad Anglosajona"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
|
|
||||||
msgid "Bank Statements"
|
|
||||||
msgstr "Extracto bancario"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_bank_cash
|
|
||||||
msgid "Bank and Cash"
|
|
||||||
msgstr "Banco y Efectivo"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
|
|
||||||
msgid "Cash Registers"
|
|
||||||
msgstr "Cajas Registradoras"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_res_config_settings
|
|
||||||
msgid "Config Settings"
|
|
||||||
msgstr "Ajustes de configuración"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr "Agrupar por"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_account_move
|
|
||||||
msgid "Journal Entry"
|
|
||||||
msgstr "Asiento contable"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_finance_entries_accounting_journals
|
|
||||||
msgid "Journals"
|
|
||||||
msgstr "Diarios"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_misc
|
|
||||||
msgid "Miscellaneous"
|
|
||||||
msgstr "Misceláneas"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Method"
|
|
||||||
msgstr "Método de pago"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
|
|
||||||
msgid "Payment Methods"
|
|
||||||
msgstr "Métodos de pago"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Type"
|
|
||||||
msgstr "Tipos de pago"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_purchase
|
|
||||||
msgid "Purchases"
|
|
||||||
msgstr "Compras"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
|
|
||||||
msgid "Reconcile"
|
|
||||||
msgstr "Conciliación"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is\n"
|
|
||||||
" invoiced to a final customer (instead of recording the cost as soon\n"
|
|
||||||
" as the product is received in stock)."
|
|
||||||
msgstr ""
|
|
||||||
"Registrar el costo de un bien como gasto cuando este bien se\n"
|
|
||||||
"\t\t\t\t facture a un cliente final (en lugar de registrar el costo tan pronto\n"
|
|
||||||
"\t\t\t\t como el producto se recibe en stock)."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is invoiced to a "
|
|
||||||
"final customer."
|
|
||||||
msgstr ""
|
|
||||||
"Registrar el costo de un bien como gasto cuando este bien se factura a "
|
|
||||||
"cliente final."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_sales
|
|
||||||
msgid "Sales"
|
|
||||||
msgstr "Ventas"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
|
|
||||||
msgid "Templates"
|
|
||||||
msgstr "Plantillas"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid "Use anglo-saxon accounting"
|
|
||||||
msgstr "Usar Contabilidad Anglosajona"
|
|
||||||
@@ -1,139 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * om_account_accountant
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 15.0-20220319\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2022-06-12 03:13+0000\n"
|
|
||||||
"PO-Revision-Date: 2022-06-12 03:13+0000\n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
|
|
||||||
msgid "Account Groups"
|
|
||||||
msgstr "Grupos de cuentas"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
|
|
||||||
msgid "Account Tags"
|
|
||||||
msgstr "Etiquetas de cuenta"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
|
|
||||||
msgid "Account Types"
|
|
||||||
msgstr "Tipos de cuentas"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
|
|
||||||
msgid "Accounting"
|
|
||||||
msgstr "Contabilidad"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Anglo-Saxon Accounting"
|
|
||||||
msgstr "Contabilidad anglo-sajona"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
|
|
||||||
msgid "Bank Statements"
|
|
||||||
msgstr "Extractos bancarios"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
|
|
||||||
msgid "Bank and Cash"
|
|
||||||
msgstr "Banco y efectivo"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
|
|
||||||
msgid "Cash Registers"
|
|
||||||
msgstr "Registros de caja"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
|
|
||||||
msgid "Chart of Accounts Templates"
|
|
||||||
msgstr "Plantilla de Plan Contable"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_res_config_settings
|
|
||||||
msgid "Config Settings"
|
|
||||||
msgstr "Opciones de configuración"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
|
|
||||||
msgid "Fiscal Position Templates"
|
|
||||||
msgstr "Plantillas de posición fiscal"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr "Agrupar por"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_account_move
|
|
||||||
msgid "Journal Entry"
|
|
||||||
msgstr "Asiento de diario"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Method"
|
|
||||||
msgstr "Método de pago"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
|
|
||||||
msgid "Payment Methods"
|
|
||||||
msgstr "Métodos de pago"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Type"
|
|
||||||
msgstr "Tipo de pago"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
|
|
||||||
msgid "Reconcile"
|
|
||||||
msgstr "Conciliación"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is\n"
|
|
||||||
" invoiced to a final customer (instead of recording the cost as soon\n"
|
|
||||||
" as the product is received in stock)."
|
|
||||||
msgstr ""
|
|
||||||
"Registrar el costo de un bien como gasto cuando este bien se\n"
|
|
||||||
" facturado a un cliente final (en lugar de registrar el costo tan pronto\n"
|
|
||||||
" como el producto se recibe en stock)."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is invoiced to a "
|
|
||||||
"final customer."
|
|
||||||
msgstr ""
|
|
||||||
"Registre el costo de un bien como un gasto cuando este bien se facture a un "
|
|
||||||
"cliente final."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
|
|
||||||
msgid "Templates"
|
|
||||||
msgstr "Plantillas"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid "Use anglo-saxon accounting"
|
|
||||||
msgstr "Utilizar contabilidad anglo-sajona"
|
|
||||||
@@ -1,144 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * om_account_accountant
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 15.0-20220319\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2022-06-12 03:13+0000\n"
|
|
||||||
"PO-Revision-Date: 2022-07-05 23:59+0200\n"
|
|
||||||
"Last-Translator: Sylvain Lc\n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: fr\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
"X-Generator: Poedit 3.1\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
|
|
||||||
msgid "Account Groups"
|
|
||||||
msgstr "Groupes de comptes"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
|
|
||||||
msgid "Account Tags"
|
|
||||||
msgstr "Balises de compte"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
|
|
||||||
msgid "Account Types"
|
|
||||||
msgstr "Types de compte"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
|
|
||||||
msgid "Accounting"
|
|
||||||
msgstr "Comptabilité"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Anglo-Saxon Accounting"
|
|
||||||
msgstr "Comptabilité anglo-saxone"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
|
|
||||||
msgid "Bank Statements"
|
|
||||||
msgstr "Relevés bancaires"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
|
|
||||||
msgid "Bank and Cash"
|
|
||||||
msgstr "Banque et liquidités"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
|
|
||||||
msgid "Cash Registers"
|
|
||||||
msgstr "Caisses"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
|
|
||||||
msgid "Chart of Accounts Templates"
|
|
||||||
msgstr "Modèles de plans de comptes"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_res_config_settings
|
|
||||||
msgid "Config Settings"
|
|
||||||
msgstr "Paramètres de Configuration"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
|
|
||||||
msgid "Fiscal Position Templates"
|
|
||||||
msgstr "Modèles de situation financière"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr "Grouper par"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_account_move
|
|
||||||
msgid "Journal Entry"
|
|
||||||
msgstr "Pièce comptable"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Method"
|
|
||||||
msgstr "Moyen de paiement"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
|
|
||||||
msgid "Payment Methods"
|
|
||||||
msgstr "Méthodes de paiement"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Type"
|
|
||||||
msgstr "Type de paiement"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
|
|
||||||
msgid "Reconcile"
|
|
||||||
msgstr "Lettrer"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is\n"
|
|
||||||
" invoiced to a final customer (instead of "
|
|
||||||
"recording the cost as soon\n"
|
|
||||||
" as the product is received in stock)."
|
|
||||||
msgstr ""
|
|
||||||
"Enregistrer le coût d’un bien comme une dépense lorsque ce bien est\n"
|
|
||||||
" facturé à un client final (au lieu "
|
|
||||||
"d’enregistrer le coût dès que possible)\n"
|
|
||||||
" au fur et à mesure que le produit est reçu "
|
|
||||||
"en stock)."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is invoiced to a "
|
|
||||||
"final customer."
|
|
||||||
msgstr ""
|
|
||||||
"Enregistrez le coût d’un bien comme une dépense lorsque ce bien est facturé "
|
|
||||||
"à un client final."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
|
|
||||||
msgid "Templates"
|
|
||||||
msgstr "Modèles"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid "Use anglo-saxon accounting"
|
|
||||||
msgstr "Utiliser la comptabilité anglo-saxone"
|
|
||||||
@@ -1,144 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * om_account_accountant
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 18.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2024-11-09 12:27+0000\n"
|
|
||||||
"PO-Revision-Date: 2024-11-09 12:27+0000\n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
|
|
||||||
msgid "Account Groups"
|
|
||||||
msgstr "Grup Akun"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
|
|
||||||
msgid "Account Tags"
|
|
||||||
msgstr "Tag Akun"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
|
|
||||||
msgid "Accounting"
|
|
||||||
msgstr "Akuntansi"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Anglo-Saxon Accounting"
|
|
||||||
msgstr "Akuntansi Anglo-Saxon"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
|
|
||||||
msgid "Bank Statements"
|
|
||||||
msgstr "Laporan Bank"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_bank_cash
|
|
||||||
msgid "Bank and Cash"
|
|
||||||
msgstr "Bank dan Uang Tunai"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
|
|
||||||
msgid "Cash Registers"
|
|
||||||
msgstr "Mesin Kasir"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_res_config_settings
|
|
||||||
msgid "Config Settings"
|
|
||||||
msgstr "Pengaturan Konfigurasi"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr "Kelompokkan Berdasarkan"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_account_move
|
|
||||||
msgid "Journal Entry"
|
|
||||||
msgstr "Entri Jurnal"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_finance_entries_accounting_journals
|
|
||||||
msgid "Journals"
|
|
||||||
msgstr "Jurnal"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_misc
|
|
||||||
msgid "Miscellaneous"
|
|
||||||
msgstr "Lain-Lain"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Method"
|
|
||||||
msgstr "Metode Pembayaran"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
|
|
||||||
msgid "Payment Methods"
|
|
||||||
msgstr "Metode Pembayaran"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Type"
|
|
||||||
msgstr "Tipe Pembayaran"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_purchase
|
|
||||||
msgid "Purchases"
|
|
||||||
msgstr "Pembelian"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
|
|
||||||
msgid "Reconcile"
|
|
||||||
msgstr "Penyesuaian"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is\n"
|
|
||||||
" invoiced to a final customer (instead of recording the cost as soon\n"
|
|
||||||
" as the product is received in stock)."
|
|
||||||
msgstr ""
|
|
||||||
"Catat harga pokok suatu barang sebagai pengeluaran ketika barang tersebut\n"
|
|
||||||
" ditagihkan ke pelanggan akhir (alih-alih mencatat biayanya\n"
|
|
||||||
" segera setelah produk diterima dalam stok)."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is invoiced to a "
|
|
||||||
"final customer."
|
|
||||||
msgstr ""
|
|
||||||
"Catat harga suatu barang sebagai beban ketika barang tersebut ditagihkan "
|
|
||||||
"ke pelanggan akhir."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_sales
|
|
||||||
msgid "Sales"
|
|
||||||
msgstr "Penjualan"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
|
|
||||||
msgid "Templates"
|
|
||||||
msgstr "Templat"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid "Use anglo-saxon accounting"
|
|
||||||
msgstr "Gunakan akuntansi Anglo-Saxon"
|
|
||||||
@@ -1,133 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * om_account_accountant
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 15.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2022-04-15 06:40+0000\n"
|
|
||||||
"PO-Revision-Date: 2022-04-15 06:40+0000\n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
|
|
||||||
msgid "Account Groups"
|
|
||||||
msgstr "Hesap Grupları"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
|
|
||||||
msgid "Account Tags"
|
|
||||||
msgstr "Hesap Etiketleri"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
|
|
||||||
msgid "Account Types"
|
|
||||||
msgstr "Hesap Tipleri"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
|
|
||||||
msgid "Accounting"
|
|
||||||
msgstr "Muhasebe"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Anglo-Saxon Accounting"
|
|
||||||
msgstr "Anglo-Sakson Muhasebesi"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
|
|
||||||
msgid "Bank Statements"
|
|
||||||
msgstr "Banka Hesap Özetleri"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
|
|
||||||
msgid "Bank and Cash"
|
|
||||||
msgstr "Banka ve Nakit"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
|
|
||||||
msgid "Cash Registers"
|
|
||||||
msgstr "Yazar Kasa"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
|
|
||||||
msgid "Chart of Accounts Templates"
|
|
||||||
msgstr "Hesap Planı Şablonları"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_res_config_settings
|
|
||||||
msgid "Config Settings"
|
|
||||||
msgstr "Yapılandırma Ayarları"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
|
|
||||||
msgid "Fiscal Position Templates"
|
|
||||||
msgstr "Mali Pozisyon Şablonları"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr "Gruplama"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Method"
|
|
||||||
msgstr "Ödeme Metodu"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
|
|
||||||
msgid "Payment Methods"
|
|
||||||
msgstr "Ödeme Metotları"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Type"
|
|
||||||
msgstr "Ödeme Tipi"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
|
|
||||||
msgid "Reconcile"
|
|
||||||
msgstr "Mutabakat"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is\n"
|
|
||||||
" invoiced to a final customer (instead of recording the cost as soon\n"
|
|
||||||
" as the product is received in stock)."
|
|
||||||
msgstr ""
|
|
||||||
"Bir ürünün bedelini, o ürün son tüketiciye faturalandıktan sonra gider "
|
|
||||||
"olarak kayda gir. (Ürün stoğu geldiği anda gider olarak kaydetmek yerine)"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is invoiced to a "
|
|
||||||
"final customer."
|
|
||||||
msgstr ""
|
|
||||||
"Ürünün bedelini, ürün son tüketiciye faturalandıktan sonra gider olarak "
|
|
||||||
"kayda gir."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
|
|
||||||
msgid "Templates"
|
|
||||||
msgstr "Şablonlar"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid "Use anglo-saxon accounting"
|
|
||||||
msgstr "Anglo-Sakson muhasebesi kullan"
|
|
||||||
@@ -1,369 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * om_account_accountant
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 14.0\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2022-07-07 07:33+0000\n"
|
|
||||||
"PO-Revision-Date: 2022-07-07 07:33+0000\n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: \n"
|
|
||||||
"Plural-Forms: \n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
|
|
||||||
msgid "Account Groups"
|
|
||||||
msgstr "Групи рахунків"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
|
|
||||||
msgid "Account Tags"
|
|
||||||
msgstr "Теги рахунків"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.account_type_menu
|
|
||||||
msgid "Account Types"
|
|
||||||
msgstr "Типи рахунків"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
|
|
||||||
msgid "Accounting"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:res.groups,name:om_account_accountant.group_fiscal_year
|
|
||||||
msgid "Allow to define fiscal years of more or less than a year"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Anglo-Saxon Accounting"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
|
|
||||||
msgid "Bank Statements"
|
|
||||||
msgstr "Банківські виписки"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
|
|
||||||
msgid "Bank and Cash"
|
|
||||||
msgstr "Банк та каса"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_change_lock_date
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr "Скасувати"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
|
|
||||||
msgid "Cash Registers"
|
|
||||||
msgstr "Касові апарати"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_change_lock_date
|
|
||||||
msgid "Change Lock Date"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_coa_template
|
|
||||||
msgid "Chart of Accounts Templates"
|
|
||||||
msgstr "Шаблони планів рахунків"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.actions.act_window,help:om_account_accountant.actions_account_fiscal_year
|
|
||||||
msgid "Click here to create a new fiscal year."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__company_id
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__company_id
|
|
||||||
msgid "Company"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_res_config_settings
|
|
||||||
msgid "Config Settings"
|
|
||||||
msgstr "Налаштування"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__create_uid
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__create_uid
|
|
||||||
msgid "Created by"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__create_date
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__create_date
|
|
||||||
msgid "Created on"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Define fiscal years of more or less than one year"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__display_name
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_move__display_name
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__display_name
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__display_name
|
|
||||||
msgid "Display Name"
|
|
||||||
msgstr "Відобразити назву"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__date_to
|
|
||||||
msgid "End Date"
|
|
||||||
msgstr "Дата закінчення"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_account_fiscal_year__date_to
|
|
||||||
msgid "Ending Date, included in the fiscal year."
|
|
||||||
msgstr "Кінцева дата, яка входиь до фіскального року."
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Fiscal Period Closing"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_fiscal_position_template
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_fiscal_position_template
|
|
||||||
msgid "Fiscal Position Templates"
|
|
||||||
msgstr "Шаблони схем оподаткування"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_account_fiscal_year
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_fiscal_year
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Fiscal Year"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.actions_account_fiscal_year
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__group_fiscal_year
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Fiscal Years"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__fiscalyear_last_day
|
|
||||||
msgid "Fiscalyear Last Day"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__fiscalyear_last_month
|
|
||||||
msgid "Fiscalyear Last Month"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__id
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_move__id
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__id
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__id
|
|
||||||
msgid "ID"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_account_move
|
|
||||||
msgid "Journal Entry"
|
|
||||||
msgstr "Запис у журналі"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Last Day"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year____last_update
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_move____last_update
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date____last_update
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings____last_update
|
|
||||||
msgid "Last Modified on"
|
|
||||||
msgstr "Останні зміни"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__write_uid
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__write_uid
|
|
||||||
msgid "Last Updated by"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__write_date
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__write_date
|
|
||||||
msgid "Last Updated on"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__fiscalyear_lock_date
|
|
||||||
msgid "Lock Date"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__fiscalyear_lock_date
|
|
||||||
msgid "Lock Date for All Users"
|
|
||||||
msgstr "Дата закриття для всіх користувачів"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__period_lock_date
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__period_lock_date
|
|
||||||
msgid "Lock Date for Non-Advisers"
|
|
||||||
msgstr "Дата закриття для користувачів без ролі Консультант"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_change_lock_date
|
|
||||||
msgid "Lock Dates"
|
|
||||||
msgstr "Дати закриття періодів"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_view_change_lock_date
|
|
||||||
msgid "Lock your Fiscal Period"
|
|
||||||
msgstr "Закрийте свій податковий період"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Lock your fiscal period"
|
|
||||||
msgstr "Закрийте свій податковий період"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__name
|
|
||||||
msgid "Name"
|
|
||||||
msgstr "Назва"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_change_lock_date__tax_lock_date
|
|
||||||
msgid ""
|
|
||||||
"No users can edit journal entries related to a tax prior and inclusive of "
|
|
||||||
"this date."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__fiscalyear_lock_date
|
|
||||||
msgid ""
|
|
||||||
"No users, including Advisers, can edit accounts prior to and inclusive of "
|
|
||||||
"this date. Use it for fiscal year locking for example."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_change_lock_date__fiscalyear_lock_date
|
|
||||||
msgid ""
|
|
||||||
"No users, including Advisers, can edit accounts prior to and inclusive of "
|
|
||||||
"this date. Use it for fiscal year locking."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__period_lock_date
|
|
||||||
msgid ""
|
|
||||||
"Only users with the 'Adviser' role can edit accounts prior to and inclusive "
|
|
||||||
"of this date. Use it for period locking inside an open fiscal year, for "
|
|
||||||
"example."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_change_lock_date__period_lock_date
|
|
||||||
msgid ""
|
|
||||||
"Only users with the Adviser role can edit accounts prior to and inclusive of"
|
|
||||||
" this date. Use it for period locking inside an open fiscal year."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Method"
|
|
||||||
msgstr "Спосіб оплати"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
|
|
||||||
msgid "Payment Methods"
|
|
||||||
msgstr "Спосіб оплати"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Type"
|
|
||||||
msgstr "Тип оплати"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
|
|
||||||
msgid "Reconcile"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is\n"
|
|
||||||
" invoiced to a final customer (instead of recording the cost as soon\n"
|
|
||||||
" as the product is received in stock)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is invoiced to a "
|
|
||||||
"final customer."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_change_lock_date
|
|
||||||
msgid "Save"
|
|
||||||
msgstr "Зберегти"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_account_fiscal_year__date_from
|
|
||||||
msgid "Start Date"
|
|
||||||
msgstr "Дата початку"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_account_fiscal_year__date_from
|
|
||||||
msgid "Start Date, included in the fiscal year."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_change_lock_date__tax_lock_date
|
|
||||||
msgid "Tax Lock Date"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
|
|
||||||
msgid "Templates"
|
|
||||||
msgstr "Шаблони"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: code:addons/om_account_accountant/models/account_fiscal_year.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "The ending date must not be prior to the starting date."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid "Use anglo-saxon accounting"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: code:addons/om_account_accountant/wizard/change_lock_date.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid "You Are Not Allowed To Perform This Operation"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: code:addons/om_account_accountant/models/account_fiscal_year.py:0
|
|
||||||
#, python-format
|
|
||||||
msgid ""
|
|
||||||
"You can not have an overlap between two fiscal years, please correct the "
|
|
||||||
"start and/or end dates of your fiscal years."
|
|
||||||
msgstr ""
|
|
||||||
@@ -1,146 +0,0 @@
|
|||||||
# Translation of Odoo Server.
|
|
||||||
# This file contains the translation of the following modules:
|
|
||||||
# * om_account_accountant
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Project-Id-Version: Odoo Server 18.0-20231105\n"
|
|
||||||
"Report-Msgid-Bugs-To: \n"
|
|
||||||
"POT-Creation-Date: 2023-11-23 21:28+0000\n"
|
|
||||||
"PO-Revision-Date: 2023-11-24 06:08+0800\n"
|
|
||||||
"Last-Translator: \n"
|
|
||||||
"Language-Team: \n"
|
|
||||||
"Language: zh_TW\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
"X-Generator: Poedit 3.4.1\n"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_group_action
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_group
|
|
||||||
msgid "Account Groups"
|
|
||||||
msgstr "帳戶組別"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_account_tag
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_tag
|
|
||||||
msgid "Account Tags"
|
|
||||||
msgstr "帳戶標籤"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_partner_property_form
|
|
||||||
msgid "Accounting"
|
|
||||||
msgstr "會計"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid "Anglo-Saxon Accounting"
|
|
||||||
msgstr "Anglo-Saxon會計"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_bank
|
|
||||||
msgid "Bank Statements"
|
|
||||||
msgstr "銀行對帳單"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_bank_and_cash
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_bank_cash
|
|
||||||
msgid "Bank and Cash"
|
|
||||||
msgstr "銀行和現金"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_accounting_statement_cash
|
|
||||||
msgid "Cash Registers"
|
|
||||||
msgstr "現金出納"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_res_config_settings
|
|
||||||
msgid "Config Settings"
|
|
||||||
msgstr "設置"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Group By"
|
|
||||||
msgstr "分組按"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model,name:om_account_accountant.model_account_move
|
|
||||||
msgid "Journal Entry"
|
|
||||||
msgstr "日記帳分錄"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_finance_entries_accounting_journals
|
|
||||||
msgid "Journals"
|
|
||||||
msgstr "日記帳"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_misc
|
|
||||||
msgid "Miscellaneous"
|
|
||||||
msgstr "一般"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Method"
|
|
||||||
msgstr "付款方式"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.act_window,name:om_account_accountant.action_account_payment_method
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_payment_method
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_form
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_tree
|
|
||||||
msgid "Payment Methods"
|
|
||||||
msgstr "付款方法"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.view_account_payment_method_search
|
|
||||||
msgid "Payment Type"
|
|
||||||
msgstr "付款類型"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_purchase
|
|
||||||
msgid "Purchases"
|
|
||||||
msgstr "採購"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.actions.server,name:om_account_accountant.action_account_reconciliation
|
|
||||||
msgid "Reconcile"
|
|
||||||
msgstr "沖帳"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model_terms:ir.ui.view,arch_db:om_account_accountant.res_config_settings_view_form
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is\n"
|
|
||||||
" invoiced to a final customer (instead of "
|
|
||||||
"recording the cost as soon\n"
|
|
||||||
" as the product is received in stock)."
|
|
||||||
msgstr ""
|
|
||||||
"當商品是\n"
|
|
||||||
" 向最終客戶開具發票(而不是儘快記錄成"
|
|
||||||
"本)\n"
|
|
||||||
" 因為產品有庫存)。"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,help:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid ""
|
|
||||||
"Record the cost of a good as an expense when this good is invoiced to a "
|
|
||||||
"final customer."
|
|
||||||
msgstr "當向最終客戶開立發票時,將商品成本記錄為費用。"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_action_account_moves_journal_sales
|
|
||||||
msgid "Sales"
|
|
||||||
msgstr "銷售"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.ui.menu,name:om_account_accountant.menu_account_templates
|
|
||||||
msgid "Templates"
|
|
||||||
msgstr "模板"
|
|
||||||
|
|
||||||
#. module: om_account_accountant
|
|
||||||
#: model:ir.model.fields,field_description:om_account_accountant.field_res_config_settings__anglo_saxon_accounting
|
|
||||||
msgid "Use anglo-saxon accounting"
|
|
||||||
msgstr "使用盎格魯-撒克遜會計"
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
from . import account_move
|
|
||||||
from . import settings
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
from odoo import fields, models, api
|
|
||||||
|
|
||||||
|
|
||||||
class AccountMove(models.Model):
|
|
||||||
_inherit = "account.move"
|
|
||||||
|
|
||||||
@api.model
|
|
||||||
def _get_invoice_in_payment_state(self):
|
|
||||||
return 'in_payment'
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
from odoo import fields, models
|
|
||||||
|
|
||||||
|
|
||||||
class ResConfigSettings(models.TransientModel):
|
|
||||||
_inherit = "res.config.settings"
|
|
||||||
|
|
||||||
anglo_saxon_accounting = fields.Boolean(
|
|
||||||
related="company_id.anglo_saxon_accounting",
|
|
||||||
readonly=False, string="Use anglo-saxon accounting",
|
|
||||||
help="Record the cost of a good as an expense when this good is invoiced to a final customer."
|
|
||||||
)
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<odoo>
|
|
||||||
|
|
||||||
<record id="base.module_category_accounting_accounting" model="ir.module.category">
|
|
||||||
<field name="name">Accounting</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="account.group_account_user" model="res.groups">
|
|
||||||
<field name="name">Accountant</field>
|
|
||||||
<field name="implied_ids" eval="[(4, ref('account.group_account_invoice'))]" />
|
|
||||||
<field name="user_ids" eval="[(4, ref('base.user_admin')), (4, ref('base.user_root'))]" />
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="account.group_account_manager" model="res.groups">
|
|
||||||
<field name="implied_ids" eval="[(4, ref('account.group_account_user')), (3, ref('account.group_account_invoice'))]" />
|
|
||||||
<field name="name">Advisor</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record id="account.group_account_readonly" model="res.groups">
|
|
||||||
<field name="name">Auditor</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
</odoo>
|
|
||||||
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 742 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 159 KiB |