forked from Yaltik/golem
Compare commits
877 Commits
Author | SHA1 | Date | |
---|---|---|---|
b00598eaaa | |||
ab07a57270 | |||
c441499d9d | |||
301f88f537 | |||
f695e36811 | |||
0434781cd0 | |||
4a27a16c90 | |||
06f04b5f82 | |||
f34787e46b | |||
5ad4ee5e70 | |||
5e7a418848 | |||
71f933fdb3 | |||
e0901a879e | |||
51b88463bb | |||
fab585d247 | |||
dfd4b97f84 | |||
2201a3b87f | |||
adc449fca5 | |||
60d9e37d9b | |||
7147abcc50 | |||
dec23148ae | |||
c95a54bd6c | |||
3ad9263f68 | |||
73f53fdec3 | |||
a73eafbc02 | |||
165830363a | |||
d0d8d15799 | |||
17ddecbbfb | |||
3c4ba1beae | |||
9f36b0a365 | |||
481ca0994d | |||
cd2afd3b22 | |||
cbb4c92b5a | |||
e3f7a6c626 | |||
1561a47a83 | |||
a533a6b7f8 | |||
5a4e46f9a5 | |||
e1ff683494 | |||
4898a0d93d | |||
1c3f10ad0a | |||
9705eb0f5a | |||
d895203d1a | |||
9bc6ffd6bb | |||
fed5da9535 | |||
7254c2f737 | |||
408dc00e1b | |||
6482489aa9 | |||
48507f10d6 | |||
f1725b2096 | |||
953d0bca3d | |||
5318431970 | |||
0d5238fca8 | |||
e63feb99c9 | |||
00eafb7837 | |||
6e81fd3026 | |||
58717a8e79 | |||
c46d91bc50 | |||
06e0116283 | |||
89eb287ee1 | |||
cfd6eca541 | |||
fecb1df3e2 | |||
d6320b7b1a | |||
e00dccf50e | |||
9c3dd1c421 | |||
761370b0ca | |||
56a48a311d | |||
c2e6476a2e | |||
07c345f67c | |||
c06eda9a63 | |||
af1bb8966c | |||
703c51c03e | |||
bf088d413e | |||
2c237ce6db | |||
5b338e0704 | |||
3277a0c476 | |||
4a762f83e9 | |||
fc943bf71e | |||
3764bb0f9e | |||
6a7c9beee9 | |||
3bdc141dad | |||
78238bd562 | |||
1c156fe667 | |||
596ec855e8 | |||
f7ceab753f | |||
a11675fe35 | |||
c8ccf3e4fa | |||
41cd2e863a | |||
92370db734 | |||
9390ad88ce | |||
e68bd4c5b2 | |||
6bab130eff | |||
6038b5c807 | |||
7911a9c630 | |||
95426c0e90 | |||
2ae88b9905 | |||
88a28b0091 | |||
96b844b6af | |||
8fa32e185e | |||
5cc81003da | |||
51ab81f916 | |||
a9888427ec | |||
5ca2a14e64 | |||
34a697d5dc | |||
a8807a9798 | |||
2599eb55fb | |||
e3d2c63402 | |||
3dcdd23d90 | |||
d057579378 | |||
55cf4080fb | |||
e146cab234 | |||
0a035ce504 | |||
da07c202f3 | |||
aa9eb113f1 | |||
d78bac1c83 | |||
9fec3aeaef | |||
7b9cbb4145 | |||
64a1fac6c8 | |||
b9639ebef6 | |||
9deb04a196 | |||
41c7339221 | |||
353a920ee0 | |||
473e3da65d | |||
e5285ecebc | |||
519d0ef2ea | |||
452867d084 | |||
5363078872 | |||
b288d83fc0 | |||
c966acc556 | |||
04f383a951 | |||
9735571967 | |||
66b851692e | |||
a0fbf3ac31 | |||
cc479d3908 | |||
0bdf720b02 | |||
4c61b8c342 | |||
942414eaac | |||
6780f279ce | |||
97f5b25534 | |||
45ef7f483f | |||
759a9c957d | |||
c891152b2c | |||
850aeb51ce | |||
35ac9babf0 | |||
44fca4bd4f | |||
1d66f540d0 | |||
201109021d | |||
1bcb4ff5bb | |||
ace87392db | |||
71f7299aaf | |||
03819f5f3c | |||
35c54abc15 | |||
2eda76a20d | |||
6d8863565e | |||
61411705eb | |||
667de88bd8 | |||
0d24d6d69d | |||
561786430a | |||
6307329e98 | |||
5ac1331652 | |||
afddb3c58d | |||
841d91bb41 | |||
9a36a90c80 | |||
3793e1dda3 | |||
ec2b1c5c49 | |||
f82ffa68dd | |||
17eb52ac28 | |||
d0a5bbe6a0 | |||
a0f56faac4 | |||
722756b2a1 | |||
9af857a553 | |||
308ee2e7bd | |||
eaf48497b2 | |||
709f73a7d1 | |||
265f817f90 | |||
a2ac0fbb79 | |||
b87a4d57ae | |||
61eaea0ea6 | |||
f63264fe62 | |||
f69c1f4951 | |||
a58caf5b83 | |||
f864d4a5ca | |||
8a5d18c2f0 | |||
66b5057709 | |||
459972669c | |||
4c9bfe446a | |||
6105d2d8c0 | |||
3bcba79dbb | |||
a907c23e06 | |||
5e983043e5 | |||
429302448f | |||
6cb4d02808 | |||
18957c4568 | |||
661aabcfe8 | |||
223bc581fd | |||
08927bba53 | |||
87e7bccb57 | |||
4d889a3eba | |||
ba375e62dd | |||
0f07bb09eb | |||
0f92e44b5c | |||
d00462aa41 | |||
518749b78f | |||
e8c38a09ef | |||
206041d3be | |||
59d8b897f6 | |||
425ddd4f02 | |||
cbfccd5515 | |||
0c3a62cac8 | |||
85a734f9c2 | |||
0924ac6437 | |||
2c9e7f2442 | |||
20919252d1 | |||
6dd9652dc1 | |||
ab3c97143e | |||
2720d50099 | |||
fdbae8aa3b | |||
c1116fa129 | |||
4e33afff0b | |||
a4ae56277a | |||
fdf95b6aa5 | |||
6949825e01 | |||
fb626e4885 | |||
656ffd6aa2 | |||
cdefa64770 | |||
6054b3ac87 | |||
db0b9f3c34 | |||
66567045c6 | |||
29792a7712 | |||
27235e0b3f | |||
64c1fd4773 | |||
8318ac4fcf | |||
150cb1ac39 | |||
063da04cf0 | |||
164be1025e | |||
9d66afb2e2 | |||
09017b13e9 | |||
d6e3da556a | |||
cc12c13170 | |||
390bcb18f1 | |||
3676634790 | |||
eb5e82bfa7 | |||
b30d5cb2b8 | |||
a52ccbcd20 | |||
047d57ad5d | |||
9e940ce4ff | |||
12f5a08bfc | |||
0249a1c50f | |||
301cabfa07 | |||
c1e370281e | |||
c5ce18361d | |||
a4d6becaaa | |||
2f97fa9c40 | |||
a13f8cacf3 | |||
363768f901 | |||
78164bd55c | |||
e5fefa2e9d | |||
3ccce89bf1 | |||
5ca67d5a48 | |||
970fa991b5 | |||
2ce0ddfc8c | |||
46605a8227 | |||
56f6bd9615 | |||
8b40f33a9d | |||
f1aa568e78 | |||
39a2565d07 | |||
e2d72cb4ab | |||
9307ece7d1 | |||
233e4a268e | |||
757089762f | |||
8060d261e3 | |||
fa539c29dd | |||
cf4a804038 | |||
26d8e1c5f4 | |||
22df2eea36 | |||
569c167e36 | |||
e6e15bf66c | |||
037a69d09e | |||
245ef22c80 | |||
cd4c0fc872 | |||
cce4cbccfc | |||
7b022c6623 | |||
6e778399ef | |||
d82babaa25 | |||
00451b4f9f | |||
33ded22f1b | |||
84c8166294 | |||
4a2de70755 | |||
ce55580bf7 | |||
893bfcd79b | |||
d070acfbe0 | |||
189eccba41 | |||
776371e6db | |||
04cfcf43e4 | |||
bb51ff6c25 | |||
69d4cfcf00 | |||
244ee83487 | |||
3270ceab13 | |||
9b2462a132 | |||
1829c62879 | |||
410ef7c0eb | |||
44dde64e36 | |||
5746a30a62 | |||
621f6efb27 | |||
25d2f6ac62 | |||
ad003e27f5 | |||
c18b0a20a7 | |||
824f187fce | |||
81f2b0d03b | |||
fa94b26859 | |||
ad0d5b0ff6 | |||
601971cd92 | |||
2f297f4db0 | |||
06618da5f1 | |||
3fd0b457c3 | |||
c683931250 | |||
7c51acbfc9 | |||
5006d2d2b4 | |||
61b2e06bae | |||
2d6bdcdab8 | |||
619605da67 | |||
151fa26e6e | |||
bf050e225f | |||
7439bea559 | |||
97fcfa6cb1 | |||
3171e3c42d | |||
5175f03f4f | |||
0421f494bc | |||
e76a516177 | |||
392c195b42 | |||
8ff013c485 | |||
1a66cbd81c | |||
c89cc9a2ed | |||
41633d574f | |||
3353db163f | |||
b820207d67 | |||
ff8a4df86a | |||
654d2de6b4 | |||
66a46d65f6 | |||
704e2809c2 | |||
a39e8a3957 | |||
d86c482a03 | |||
0d34421f4d | |||
42bbe74fab | |||
|
0b97623c02 | ||
|
1b6a3c674e | ||
460d138730 | |||
0e20503a8b | |||
e8d6336bca | |||
fb51cf9dc0 | |||
6ccf24e485 | |||
b855e1436e | |||
21f5b6789a | |||
d19e650158 | |||
28a3e84105 | |||
95cc14a4ee | |||
c446fccd03 | |||
3ce2f43b35 | |||
|
7e845ae932 | ||
|
b584cf8bef | ||
|
482e4c0b69 | ||
07e2291189 | |||
988e53bc50 | |||
4104fbace9 | |||
|
b105d87745 | ||
5e27186939 | |||
6d163a7a93 | |||
|
e7464a62b3 | ||
|
1398cb945d | ||
720500a4f7 | |||
408ae9a8c3 | |||
6b9731335e | |||
|
ce325aa054 | ||
|
94bdd6240a | ||
|
01a34e0e3b | ||
|
c669ddae2f | ||
|
2abaabc002 | ||
|
3c2ce0ceba | ||
|
53e28fec61 | ||
|
4712b3e689 | ||
|
08eb3ecb4b | ||
|
7223afa486 | ||
|
9961933f96 | ||
|
66c01206f0 | ||
|
a0fc41cbcc | ||
|
1415b0306f | ||
|
fdf556a8d8 | ||
|
36058fe141 | ||
|
1afbe75845 | ||
|
a0721e6a1c | ||
|
e738473b53 | ||
fa635b496e | |||
0cbf3719f2 | |||
|
0a4abc795f | ||
f710947771 | |||
350ff3e52a | |||
ced4cbf42a | |||
0bb22d7b1b | |||
8ea116675e | |||
0e250ea075 | |||
e7fad86347 | |||
7b390534f2 | |||
|
24d08c0774 | ||
|
e36c9b537c | ||
6b3942389d | |||
5e557edf22 | |||
ffa453d2c8 | |||
f3e45b885d | |||
671cb68b86 | |||
|
1e78c30604 | ||
|
2353ffeeeb | ||
|
b8f477ffc4 | ||
|
73e92ca551 | ||
96b29fdc9f | |||
24f403f84e | |||
068cb73c94 | |||
3050e554b9 | |||
66601c03b9 | |||
1d19c17f4a | |||
cdf468786e | |||
00d2eccf74 | |||
3e583beb54 | |||
2eb4845dfa | |||
cb33dda359 | |||
bd7a873b21 | |||
d7772228c6 | |||
a476e7ec04 | |||
55f8818b9f | |||
89050d8920 | |||
f25e69040a | |||
2336614701 | |||
7c4bc395a3 | |||
237ce73198 | |||
9b25450a4a | |||
a5c51123f3 | |||
464a56fa1e | |||
b08d7eb09e | |||
abcdcb1748 | |||
471e9f35c7 | |||
5307ae37c0 | |||
6dc7c671e5 | |||
4fc04548a6 | |||
942975e187 | |||
64607e5758 | |||
476c1b25b8 | |||
ba7ab02084 | |||
1957dd8ca2 | |||
b745669e40 | |||
8b85c634a1 | |||
e02b9b052b | |||
eeb07b5e65 | |||
|
991e5bc39a | ||
|
79c8d501a0 | ||
|
4cd64ef8aa | ||
|
1f295ec9c7 | ||
|
1967ab5ced | ||
|
7af41f07c7 | ||
|
93ff8cd802 | ||
|
18c3c58d8a | ||
|
c67565b57b | ||
|
bc8c6dbd58 | ||
|
9b086fef97 | ||
|
aad88c2fed | ||
|
7168052703 | ||
82d0df92b4 | |||
1886ab9828 | |||
1948f16110 | |||
39256ec70d | |||
9e3fb079b3 | |||
545235d71a | |||
36124d4ac4 | |||
|
d620fb18b8 | ||
|
5caa210dcc | ||
4fada24ac7 | |||
2a3b17d354 | |||
8d80c1d5b3 | |||
4cd882e5e6 | |||
df6f3c60e8 | |||
bdbc7177e8 | |||
a3807d0354 | |||
da00acea29 | |||
398a3e7f63 | |||
d5cc394967 | |||
|
4aea2c069f | ||
|
5b7627f667 | ||
|
c3f7ee1bb4 | ||
|
72739a2df6 | ||
|
ff70e46612 | ||
|
0dda362d78 | ||
|
41876e19c0 | ||
|
2a5c426bb2 | ||
|
e52c9028fa | ||
1004254314 | |||
7dac90da95 | |||
9a436aa264 | |||
0f1043a2fc | |||
57012084fc | |||
ac9b1fa4e0 | |||
7f19960a43 | |||
465a25de6e | |||
|
b3705b95ef | ||
|
5163b7535c | ||
|
b895de05ba | ||
|
8e51e46a0b | ||
dfe47d1d96 | |||
f8bf3db588 | |||
75726a8302 | |||
f9067e578f | |||
027eaf0a9b | |||
9898a98da1 | |||
8ee4aca5f4 | |||
e7c8a4d5e4 | |||
e98cf57228 | |||
e5a9f4cd91 | |||
9c241f4078 | |||
d0f2d9eb89 | |||
da04cd5329 | |||
5f2da1db97 | |||
15019ad0f2 | |||
21e7ed9b5c | |||
22fbbe4d11 | |||
2f5b1a776b | |||
225ea78f4c | |||
b5e7a52789 | |||
963bfa7cb1 | |||
bcfb01e5b0 | |||
c3b21987c9 | |||
80ef3f26a6 | |||
b094dcee19 | |||
b717c8fbf5 | |||
23a52fe1ea | |||
61035a9fb2 | |||
4dcfd11a55 | |||
a7173cdb22 | |||
|
faee2e5e27 | ||
|
cc929e73a9 | ||
|
0a99877589 | ||
cf5ded7e45 | |||
|
3f3bdcdb0d | ||
|
a52a5d3901 | ||
|
03cd05762a | ||
|
8dcc29e578 | ||
|
afc3c3acf9 | ||
|
1faad1bf15 | ||
|
375fe6b552 | ||
|
e80facbff8 | ||
|
4fda12364f | ||
|
5d6c4415cf | ||
|
80ac172d62 | ||
d701da0c4e | |||
0e7e33bada | |||
|
e4596cbda0 | ||
|
3ab701c8d4 | ||
209013864e | |||
021d70e828 | |||
|
17cc3dd906 | ||
|
1b3a187543 | ||
|
08c949d6e2 | ||
|
533bb81fb9 | ||
|
0dc0ab06e4 | ||
|
f02a2eb912 | ||
|
4d0909bcbf | ||
|
ec433ad867 | ||
|
b3e32f1cd5 | ||
|
9dcb1fec3f | ||
|
e2fe375869 | ||
|
7bf11db34a | ||
|
c4f01dee5e | ||
|
c9a4cc5950 | ||
|
d479a0ca45 | ||
|
c176c4aff2 | ||
|
0d4e819e5d | ||
|
399e55875f | ||
|
9d0ef62c0e | ||
|
83221ec706 | ||
|
9c7f5d9502 | ||
|
03c7ebc3d5 | ||
|
3cc4ec92f0 | ||
|
54697f78bf | ||
|
9fc3922ba1 | ||
|
b9eeb3a170 | ||
|
98cd54a8f0 | ||
|
d5af8e87f6 | ||
|
a0af3a680a | ||
|
98c8ad3767 | ||
|
ca326c9ded | ||
|
5a4cbc54e1 | ||
|
9d36047122 | ||
|
f77a93a1a2 | ||
|
76315c1d15 | ||
|
d2d752992c | ||
|
321b25661a | ||
|
0228a3535b | ||
|
1a71c21e5b | ||
|
78687127f0 | ||
|
20c57c5e57 | ||
|
07b4ed3d8e | ||
|
73f79ca8c2 | ||
|
9fdb1cbddc | ||
|
a64d865648 | ||
|
cc23e92232 | ||
|
e90da41656 | ||
|
0b6b8e0cfb | ||
|
f15fcbd222 | ||
|
5a93c3c0bd | ||
211a44ab4e | |||
2f22a7c6d7 | |||
8490e89959 | |||
896259dd7f | |||
94f905b90e | |||
cb74acb4e6 | |||
aeefceb970 | |||
4c9921c8d8 | |||
05d5cc5cda | |||
518d2c8348 | |||
977e817326 | |||
a5d4e5feb3 | |||
6933755fdd | |||
5c87abbbbc | |||
bf5314f54f | |||
1182d1299b | |||
3fbb3fe187 | |||
8c59738e3b | |||
d1c178aa8c | |||
2223b88930 | |||
fb89650aa1 | |||
14729e73f1 | |||
2c7fb63984 | |||
e1f2a2a47a | |||
fe0d57dffc | |||
2b70d2c1b0 | |||
661c7fecfe | |||
89319bd7e5 | |||
9f9459df45 | |||
55575baa21 | |||
|
01bf414187 | ||
|
779405e492 | ||
|
6accf16b78 | ||
|
21b16ad08f | ||
|
d6d265e7c5 | ||
|
6e30c39569 | ||
|
26c592204b | ||
|
6043beb577 | ||
|
02aef2093a | ||
|
cccd4dfce0 | ||
|
cec41edc7f | ||
|
f3260ca757 | ||
|
680604aecc | ||
|
eccc217882 | ||
|
b389be7bbc | ||
|
602a6a778d | ||
|
af14fb6dd0 | ||
bf8fc34b6b | |||
|
bfa9298cef | ||
|
d53231739d | ||
|
624181c903 | ||
|
6e4cae64f4 | ||
|
e4ea0a3187 | ||
|
c296a75bb4 | ||
|
1ef8c5a6aa | ||
|
3766f49805 | ||
|
c844cf732f | ||
|
30d218c64e | ||
|
a36a3952d0 | ||
|
1531a3c7b8 | ||
|
7dc2213593 | ||
|
5f8433e112 | ||
|
e26cd1c149 | ||
|
15a23e460f | ||
|
3a42ea0a54 | ||
|
8c102ff103 | ||
|
7e236226b7 | ||
|
4cec863372 | ||
|
25acf52d5e | ||
|
7eda2d4a98 | ||
|
d814343758 | ||
|
293109fe3c | ||
|
4d01b8d074 | ||
|
edd333f0ae | ||
|
68480e421d | ||
|
ee432805c4 | ||
|
df9cdede2d | ||
|
a4237fd1c9 | ||
|
d53795aad4 | ||
|
8b9eb0150f | ||
|
23caebbce9 | ||
|
197e9705e0 | ||
|
66208d8ca4 | ||
|
fdecad9b99 | ||
|
503d482c25 | ||
|
1307a5458b | ||
|
f314c3a76f | ||
|
52ef7282d6 | ||
|
797461ab9e | ||
|
d2f379aeef | ||
|
2310a56a1b | ||
|
8333992f1a | ||
|
dc88b0d9c4 | ||
|
22118011ce | ||
|
f8fb3b914d | ||
|
31632cad9b | ||
|
163e4d2d1c | ||
|
03e56bd8e3 | ||
|
ddfedce0cf | ||
05c11c52cd | |||
4e2cee7d05 | |||
f30bd35a81 | |||
|
2c5ea62f0e | ||
|
f033db0e1b | ||
|
36b0440dd6 | ||
|
213fe4005c | ||
|
cc0c6b9b61 | ||
|
ed34d84a18 | ||
|
08510d0762 | ||
|
d69f8f7a10 | ||
|
4232d3da73 | ||
|
3b300442b2 | ||
|
79222a4b94 | ||
|
6d206e0795 | ||
|
ff6b67e27b | ||
|
5714cab5ad | ||
|
1a57c993e1 | ||
|
94df44087b | ||
|
1f974cc217 | ||
|
79c683b047 | ||
|
57c206039e | ||
|
e5cf4ad9d4 | ||
|
3c795728b5 | ||
14220f938b | |||
|
30dad99689 | ||
|
c5b86c609e | ||
|
39fc7085b2 | ||
|
de2ac3d99b | ||
|
9bef8ef4ca | ||
|
e7ba4b91f8 | ||
|
8cf4a1f07f | ||
|
409cf1e04a | ||
|
6bc231fd1e | ||
|
5442ab5af3 | ||
|
0841d1de36 | ||
28407b4acf | |||
|
5143c1d985 | ||
|
126509768d | ||
|
7c0746f98d | ||
|
96d84546c2 | ||
|
a0cc9dcb48 | ||
|
0bc3ea6ca3 | ||
|
f21a7b303c | ||
|
985b5ec055 | ||
|
85d545d530 | ||
|
ec24ee4a48 | ||
|
0e6efdaf46 | ||
|
0bc15f059e | ||
|
5197aa9935 | ||
|
f1a4380a85 | ||
|
6eb8b69ad9 | ||
|
485a45f217 | ||
|
a3ea12191f | ||
|
52137f3829 | ||
|
66c4f8f75a | ||
|
1d2b6d5123 | ||
4e97801780 | |||
1b389a3670 | |||
a6b65dfa53 | |||
13a7785fe5 | |||
dcefa1dda6 | |||
a77b38b74e | |||
444bc1fbf6 | |||
7421b88b1e | |||
112902d82e | |||
1fbfbb24ac | |||
58f71503e5 | |||
9660aba19e | |||
94dcc2aa7d | |||
d37b6c3147 | |||
0b3c3297da | |||
8a1f8dcc48 | |||
b51dbb2df7 | |||
97d7702e2d | |||
415fcbf64c | |||
7dfb07b48c | |||
2925c26369 | |||
96dce9d261 | |||
c6cc973489 | |||
67c428d4dd | |||
775fef939b | |||
30e0e4fa31 | |||
3ef8132f3d | |||
4d99cd527f | |||
203e6434aa | |||
193c24e2b7 | |||
068c327efd | |||
438ec5ccac | |||
11b8643d21 | |||
49c5c7481a | |||
698efaea53 | |||
5c6d11526e | |||
ad2afa09dc | |||
5ddb5a91e7 | |||
e0f517fb45 | |||
f89074e257 | |||
ec9b16c1eb | |||
7f6920b78b | |||
6c2cd40020 | |||
dd2802da24 | |||
4a9cec73c9 | |||
a955633375 | |||
c4d8c5f334 | |||
9e7fc9b1a3 | |||
96822910a1 | |||
bccf22aa3f | |||
4162f2c259 | |||
657a3da259 | |||
13f1db24d9 | |||
4072ae829e | |||
756017a697 | |||
cbec4b22a6 | |||
be30d16435 | |||
d8f05b2b11 | |||
48c081d16f | |||
8efabe7ec8 | |||
e87e69f951 | |||
d21083f808 | |||
1b1609687f | |||
8245c63761 | |||
2a0d7abc6a | |||
176a8ec377 | |||
69f970b115 | |||
5eccb41829 | |||
368d11b23e | |||
1101211d7a | |||
2df15cae29 | |||
1328a5b303 | |||
c98e9331db | |||
4fdbfb8638 | |||
986c445080 | |||
90967da7de | |||
dcab17ebaa | |||
0958c7777f | |||
053f58891e | |||
c9820c38d8 | |||
527bbfd01e | |||
dc37909b19 | |||
d1db9ae3b6 | |||
22d3f91e0c | |||
56721a1008 | |||
6925575c30 | |||
bd9b795c4f | |||
9dc2228bc4 | |||
30ddbbccc2 | |||
d13f19aed9 | |||
ba7aa76952 | |||
fea7494efc | |||
c2d2b0481e | |||
150dcec468 | |||
ebe3c9bde5 | |||
eb062cae35 | |||
3485948978 | |||
2cef0be513 | |||
a36c88a113 | |||
7ea95dbac8 | |||
65898e80b7 | |||
5b233e19ee | |||
0608acf109 | |||
f29c78aa71 | |||
2359854ba8 | |||
419feb58c5 | |||
93d9b235e5 | |||
aa11f6d09f | |||
c1568a15af | |||
30a3da45dc | |||
6091683c75 | |||
a292fd13b0 | |||
d135d09661 | |||
082b450b19 | |||
5950846e1e | |||
b62da94ded | |||
f891024ce0 |
@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2016-2020 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
@ -18,15 +18,16 @@
|
||||
{
|
||||
'name': 'GOLEM activities',
|
||||
'summary': 'Extends Odoo products for multi-activity',
|
||||
'description': 'Multi-activities management',
|
||||
'version': '0.1',
|
||||
'description': 'Extends Odoo products for multi-activity',
|
||||
'version': '10.0.2.8.2',
|
||||
'category': 'GOLEM',
|
||||
'author': 'Fabien Bourgeois',
|
||||
'author': 'Fabien Bourgeois, Michel Dessenne',
|
||||
'license': 'AGPL-3',
|
||||
'application': True,
|
||||
'installable': True,
|
||||
'depends': ['product', 'golem_base', 'golem_season'],
|
||||
'depends': ['product', 'account', 'golem_base', 'golem_season'],
|
||||
'data': ['security/ir.model.access.csv',
|
||||
'data/golem_activity_data.xml',
|
||||
'views/golem_activity_view.xml']
|
||||
'views/golem_activity_views.xml',
|
||||
'report/golem_activity_report_templates.xml']
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
|
||||
Copyright 2016-2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
@ -17,30 +17,55 @@ You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<openerp>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Base data for activities -->
|
||||
<record model="product.category" id="golem_product_category_activities">
|
||||
<field name="name">Activités</field>
|
||||
<field name="property_account_income_categ"
|
||||
search="[('code', '=', '706000')]" />
|
||||
<field name="property_account_expense_categ"
|
||||
search="[('code', '=', '604000')]" />
|
||||
<record model="golem.activity.audience" id="golem_activity_audience_adults">
|
||||
<field name="name">Adults</field>
|
||||
</record>
|
||||
<record model="golem.activity.audience" id="golem_activity_audience_children">
|
||||
<field name="name">Childrens</field>
|
||||
</record>
|
||||
<record model="golem.activity.type" id="golem_activity_type_activity">
|
||||
<field name="name">Activity</field>
|
||||
<field name="is_recurrent">1</field>
|
||||
</record>
|
||||
<record model="golem.activity.type" id="golem_activity_type_workshop">
|
||||
<field name="name">Workshop</field>
|
||||
<field name="is_recurrent">0</field>
|
||||
</record>
|
||||
<record model="golem.activity.type" id="golem_activity_type_training">
|
||||
<field name="name">Training</field>
|
||||
<field name="is_recurrent">0</field>
|
||||
</record>
|
||||
|
||||
<record model="product.category" id="golem_product_category_wellbeing">
|
||||
<field name="name">Bien-Être</field>
|
||||
<field name="parent_id"
|
||||
eval="ref('golem_activity.golem_product_category_activities')" />
|
||||
eval="ref('product.product_category_all')" />
|
||||
<field name="property_account_income_categ_id"
|
||||
search="[('code', '=', '706000')]" />
|
||||
<field name="property_account_expense_categ_id"
|
||||
search="[('code', '=', '604000')]" />
|
||||
</record>
|
||||
<record model="product.category" id="golem_product_category_martial">
|
||||
<field name="name">Arts martiaux</field>
|
||||
<field name="parent_id"
|
||||
eval="ref('golem_activity.golem_product_category_activities')" />
|
||||
eval="ref('product.product_category_all')" />
|
||||
<field name="property_account_income_categ_id"
|
||||
search="[('code', '=', '706000')]" />
|
||||
<field name="property_account_expense_categ_id"
|
||||
search="[('code', '=', '604000')]" />
|
||||
</record>
|
||||
<record model="product.category" id="golem_product_category_dance">
|
||||
<field name="name">Danse</field>
|
||||
<field name="parent_id"
|
||||
eval="ref('golem_activity.golem_product_category_activities')" />
|
||||
eval="ref('product.product_category_all')" />
|
||||
<field name="property_account_income_categ_id"
|
||||
search="[('code', '=', '706000')]" />
|
||||
<field name="property_account_expense_categ_id"
|
||||
search="[('code', '=', '604000')]" />
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
</odoo>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,10 +4,10 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 8.0\n"
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-07-11 10:05+0000\n"
|
||||
"PO-Revision-Date: 2016-07-11 10:05+0000\n"
|
||||
"POT-Creation-Date: 2018-11-01 15:16+0000\n"
|
||||
"PO-Revision-Date: 2018-11-01 15:16+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -16,78 +16,393 @@ msgstr ""
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.menu,name:golem_activity.activity_menu
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_product_variant_count
|
||||
msgid "# Product Variants"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Animator : </strong>>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Category : </strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Date Start : </strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Date Stop : </strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Is Full Season : </strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Is Recurrent : </strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Places : </strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Price : </strong>>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Reference : </strong>>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Season : </strong>>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Start Hour : </strong>>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Stop Hour : </strong>>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Type : </strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "<strong>Weekday : </strong>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_description_sale
|
||||
msgid "A description of the Product that you want to communicate to your customers. This description will be copied to every Sale Order, Delivery Order and Customer Invoice/Refund"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_description_purchase
|
||||
msgid "A description of the Product that you want to communicate to your vendors. This description will be copied to every Purchase Order, Receipt and Vendor Bill/Refund."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_description
|
||||
msgid "A precise description of the Product, used only for internal information purposes."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_type
|
||||
msgid "A stockable product is a product for which you manage stock. The \"Inventory\" app has to be installed.\n"
|
||||
"A consumable product, on the other hand, is a product for which stock is not managed.\n"
|
||||
"A service is a non-material product you provide.\n"
|
||||
"A digital content is a non-material product you sell online. The files attached to the products are the one that are sold on the e-commerce such as e-books, music, pictures,... The \"Digital Product\" module has to be installed."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_active
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.menu,name:golem_activity.golem_activity_menu
|
||||
#: model:ir.ui.menu,name:golem_activity.golem_activity_menu_list
|
||||
msgid "Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: view:golem.activity:golem_activity.view_form
|
||||
#: model:ir.actions.act_window,name:golem_activity.product_category_action
|
||||
msgid "Activities Categories"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:golem.activity.type,name:golem_activity.golem_activity_type_activity
|
||||
msgid "Activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "Activity :"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.menu,name:golem_activity.golem_activity_audience_menu_list
|
||||
msgid "Activity Audiences"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
|
||||
msgid "Activity Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:product.category,name:golem_activity.golem_product_category_activities
|
||||
msgid "Activités"
|
||||
#: model:ir.actions.report.xml,name:golem_activity.golem_activity_report_html
|
||||
msgid "Activity Report [HTML]"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,animator_id:0
|
||||
#: model:ir.actions.report.xml,name:golem_activity.golem_activity_report_pdf
|
||||
msgid "Activity Report [PDF]"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.menu,name:golem_activity.golem_activity_type_menu_list
|
||||
msgid "Activity Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_name
|
||||
msgid "Activity audience"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: code:addons/golem_activity/models/golem_activity.py:167
|
||||
#, python-format
|
||||
msgid "Activity end date can not be set after linked season end."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: code:addons/golem_activity/models/golem_activity.py:163
|
||||
#, python-format
|
||||
msgid "Activity start date can not be set before linked season start."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_name
|
||||
msgid "Activity type"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:golem.activity.audience,name:golem_activity.golem_activity_audience_adults
|
||||
msgid "Adults"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_res_partner_animator_activity_ids
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_res_users_animator_activity_ids
|
||||
msgid "Animated activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_animator_id
|
||||
msgid "Animator"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:product.category,name:golem_activity.golem_product_category_workshops
|
||||
msgid "Ateliers"
|
||||
#: model:product.category,name:golem_activity.golem_product_category_martial
|
||||
msgid "Arts martiaux"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,create_uid:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_id_4022
|
||||
msgid "Audience"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_barcode
|
||||
msgid "Barcode"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_list_price
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_lst_price
|
||||
msgid "Base price to compute the customer price. Sometimes called the catalog price."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:product.category,name:golem_activity.golem_product_category_wellbeing
|
||||
msgid "Bien-Être"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
|
||||
msgid "By animator"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
|
||||
msgid "By category"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
|
||||
msgid "By type"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
|
||||
msgid "By weekday"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_purchase_ok
|
||||
msgid "Can be Purchased"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_rental
|
||||
msgid "Can be Rent"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_sale_ok
|
||||
msgid "Can be Sold"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.menu,name:golem_activity.product_category_menu
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_membership
|
||||
msgid "Check if the product is eligible for membership."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:golem.activity.audience,name:golem_activity.golem_activity_audience_children
|
||||
msgid "Childrens"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_color
|
||||
msgid "Color Index"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_company_id
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.menu,name:golem_activity.golem_activity_menu_configuration
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_standard_price
|
||||
msgid "Cost"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_standard_price
|
||||
msgid "Cost of the product, in the default unit of measure of the product."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_create_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_create_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,create_date:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_create_date
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_create_date
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,is_current:0
|
||||
msgid "Current season?"
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_currency_id
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: help:golem.activity,message_last_post:0
|
||||
msgid "Date of the last message posted on the record."
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_taxes_id
|
||||
msgid "Customer Taxes"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: view:golem.activity:golem_activity.view_filter
|
||||
#: model:product.category,name:golem_activity.golem_product_category_dance
|
||||
msgid "Danse"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_tree
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_membership_date_from
|
||||
msgid "Date from which membership becomes active."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_membership_date_to
|
||||
msgid "Date until which membership remains active."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_tree
|
||||
msgid "Day"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_uom_id
|
||||
msgid "Default Unit of Measure used for all stock operation."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_uom_po_id
|
||||
msgid "Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
|
||||
msgid "Default season"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: view:golem.activity:golem_activity.view_form
|
||||
msgid "Details"
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_is_default
|
||||
msgid "Default season?"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,display_name:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_description
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_display_name
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_display_name
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,date_end:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_date_stop
|
||||
msgid "End date"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,message_follower_ids:0
|
||||
msgid "Followers"
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_property_account_expense_id
|
||||
msgid "Expense Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: view:golem.activity:golem_activity.view_tree
|
||||
#: model:ir.actions.act_window,name:golem_activity.action
|
||||
#: code:addons/golem_activity/models/golem_activity.py:185
|
||||
#: selection:golem.activity,weekday:0
|
||||
#, python-format
|
||||
msgid "Friday"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.actions.act_window,name:golem_activity.golem_activity_action
|
||||
msgid "GOLEM Activities"
|
||||
msgstr ""
|
||||
|
||||
@ -97,83 +412,220 @@ msgid "GOLEM Activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: help:golem.activity,message_summary:0
|
||||
msgid "Holds the Chatter summary (number of messages, ...). This summary is directly in html format in order to be inserted in kanban views."
|
||||
#: model:ir.model,name:golem_activity.model_golem_activity_audience
|
||||
msgid "GOLEM Activity Audience"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,id:0
|
||||
#: model:ir.actions.act_window,name:golem_activity.golem_activity_audience_action
|
||||
msgid "GOLEM Activity Audiences"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model,name:golem_activity.model_golem_activity_type
|
||||
msgid "GOLEM Activity Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.actions.act_window,name:golem_activity.golem_activity_type_action
|
||||
msgid "GOLEM Activity Types"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "General Information"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_packaging_ids
|
||||
msgid "Gives the different ways to package the same product. This has no impact on the picking order and is mainly used if you use the EDI module."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_sequence
|
||||
msgid "Gives the sequence order when displaying a product list"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_search
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_tree
|
||||
msgid "Hour"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_hour_start_display
|
||||
msgid "Hour start"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_id
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_id
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: help:golem.activity,message_unread:0
|
||||
msgid "If checked new messages require your attention."
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_active
|
||||
msgid "If unchecked, it will allow you to hide the product without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,image:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_image
|
||||
msgid "Image"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: view:golem.activity:golem_activity.view_form
|
||||
msgid "Information"
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_property_account_income_id
|
||||
msgid "Income Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,categ_id:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_categ_id
|
||||
msgid "Internal Category"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,message_is_follower:0
|
||||
msgid "Is a Follower"
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_default_code
|
||||
msgid "Internal Reference"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,message_last_post:0
|
||||
msgid "Last Message Date"
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_barcode
|
||||
msgid "International Article Number used for product identification."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,__last_update:0
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
|
||||
msgid "Invoicing"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_is_fullseason
|
||||
msgid "Is full season?"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_is_recurrent
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_is_recurrent
|
||||
msgid "Is recurrent?"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity___last_update
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience___last_update
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,write_uid:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_write_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_write_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,write_date:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_audience_write_date
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_write_date
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.menu,name:golem_activity.activity_list
|
||||
msgid "List"
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_membership_season_id
|
||||
msgid "Linked season"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,message_ids:0
|
||||
msgid "Messages"
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_location
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: help:golem.activity,message_ids:0
|
||||
msgid "Messages and communication history"
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_packaging_ids
|
||||
msgid "Logistical Units"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,name:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_image_medium
|
||||
msgid "Medium-sized image"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_image_medium
|
||||
msgid "Medium-sized image of the product. It is automatically resized as a 128x128px image, with aspect ratio preserved, only when the image exceeds one of those sizes. Use this field in form views or some kanban views."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_membership
|
||||
msgid "Membership"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_membership_date_to
|
||||
msgid "Membership End Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_membership_date_from
|
||||
msgid "Membership Start Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: code:addons/golem_activity/models/golem_activity.py:181
|
||||
#: selection:golem.activity,weekday:0
|
||||
#, python-format
|
||||
msgid "Monday"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_full_name
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_name
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,note:0
|
||||
msgid "Note"
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
|
||||
msgid "Others"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model,name:golem_activity.model_res_partner
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_price
|
||||
msgid "Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_pricelist_id
|
||||
msgid "Pricelist"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_item_ids
|
||||
msgid "Pricelist Items"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_product_variant_id
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_attribute_line_ids
|
||||
msgid "Product Attributes"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model,name:golem_activity.model_product_category
|
||||
msgid "Product Category"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
@ -182,53 +634,251 @@ msgid "Product Template"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,season_id:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type
|
||||
msgid "Product Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_product_id
|
||||
msgid "Product id"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_product_variant_ids
|
||||
msgid "Products"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_lst_price
|
||||
msgid "Public Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_description_purchase
|
||||
msgid "Purchase Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_uom_po_id
|
||||
msgid "Purchase Unit of Measure"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_description_sale
|
||||
msgid "Sale Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_list_price
|
||||
msgid "Sale Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: code:addons/golem_activity/models/golem_activity.py:186
|
||||
#: selection:golem.activity,weekday:0
|
||||
#, python-format
|
||||
msgid "Saturday"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_season_id
|
||||
msgid "Season"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: help:golem.activity,categ_id:0
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
|
||||
msgid "Select category for the current activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:product.category,name:golem_activity.golem_product_category_trainings
|
||||
msgid "Stages"
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_categ_id
|
||||
msgid "Select category for the current product"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,date_start:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_sequence
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "Session"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_image_small
|
||||
msgid "Small-sized image"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_image_small
|
||||
msgid "Small-sized image of the product. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_sale_ok
|
||||
msgid "Specify if the product can be selected in a sales order line."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_date_start
|
||||
msgid "Start date"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: code:addons/golem_activity/models/golem_activity.py:53
|
||||
#: code:addons/golem_activity/models/golem_activity.py:160
|
||||
#: code:addons/golem_activity/models/golem_activity.py:212
|
||||
#, python-format
|
||||
msgid "Start of the period cannot be after end of the period."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,message_summary:0
|
||||
msgid "Summary"
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_hour_start
|
||||
msgid "Start time"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: help:golem.activity,image:0
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_hour_stop
|
||||
msgid "Stop time"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: code:addons/golem_activity/models/golem_activity.py:187
|
||||
#: selection:golem.activity,weekday:0
|
||||
#, python-format
|
||||
msgid "Sunday"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_pricelist_id
|
||||
msgid "Technical field. Used for searching on pricelists, not stored in database."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_volume
|
||||
msgid "The volume in m3."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_weight
|
||||
msgid "The weight of the contents in Kg, not including any packaging, etc."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_property_account_expense_id
|
||||
msgid "This account will be used for invoices instead of the default one to value expenses for the current product."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_property_account_income_id
|
||||
msgid "This account will be used for invoices instead of the default one to value sales for the current product."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: code:addons/golem_activity/models/golem_activity.py:42
|
||||
#: sql_constraint:golem.activity.audience:0
|
||||
#, python-format
|
||||
msgid "This activity audience name has already been used."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: code:addons/golem_activity/models/golem_activity.py:30
|
||||
#: sql_constraint:golem.activity.type:0
|
||||
#, python-format
|
||||
msgid "This activity type name has already been used."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,help:golem_activity.field_golem_activity_image
|
||||
msgid "This field holds the image used as image for the activity."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:product.category,name:golem_activity.golem_product_category_all_activities
|
||||
msgid "Toutes les activités"
|
||||
#: code:addons/golem_activity/models/golem_activity.py:184
|
||||
#: selection:golem.activity,weekday:0
|
||||
#, python-format
|
||||
msgid "Thursday"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: field:golem.activity,message_unread:0
|
||||
msgid "Unread Messages"
|
||||
#: model:golem.activity.type,name:golem_activity.golem_activity_type_training
|
||||
msgid "Training"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: view:golem.activity:golem_activity.view_form
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_tree
|
||||
msgid "True"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: code:addons/golem_activity/models/golem_activity.py:182
|
||||
#: selection:golem.activity,weekday:0
|
||||
#, python-format
|
||||
msgid "Tuesday"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_type_id_3987
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_uom_id
|
||||
msgid "Unit of Measure"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: code:addons/golem_activity/models/golem_activity.py:126
|
||||
#, python-format
|
||||
msgid "Unsupported operator for defautl season search"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_supplier_taxes_id
|
||||
msgid "Vendor Taxes"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_seller_ids
|
||||
msgid "Vendors"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_volume
|
||||
msgid "Volume"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_warranty
|
||||
msgid "Warranty"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: code:addons/golem_activity/models/golem_activity.py:183
|
||||
#: selection:golem.activity,weekday:0
|
||||
#, python-format
|
||||
msgid "Wednesday"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_weekday
|
||||
msgid "Weekday"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity.field_golem_activity_weight
|
||||
msgid "Weight"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:golem.activity.type,name:golem_activity.golem_activity_type_workshop
|
||||
msgid "Workshop"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_form
|
||||
msgid "describe the activity characteristics..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2016-2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
@ -15,4 +15,4 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import golem_activity
|
||||
from . import golem_activity, golem_season
|
||||
|
@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2017-2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
@ -15,61 +15,204 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from openerp import models, fields, api, _
|
||||
""" GOLEM activities related models """
|
||||
|
||||
import logging
|
||||
from odoo import models, fields, api, _
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
class GolemActivityType(models.Model):
|
||||
""" GOLEM Activity Type """
|
||||
_name = 'golem.activity.type'
|
||||
_description = 'GOLEM Activity Type'
|
||||
|
||||
_sql_constraints = [('golem_activity_type_name_uniq', 'UNIQUE (name)',
|
||||
_('This activity type name has already been used.'))]
|
||||
|
||||
name = fields.Char('Activity type', required=True, translate=True)
|
||||
is_recurrent = fields.Boolean('Is recurrent?')
|
||||
|
||||
|
||||
class GolemActivityAudience(models.Model):
|
||||
""" GOLEM Activity Audience """
|
||||
_name = 'golem.activity.audience'
|
||||
_description = 'GOLEM Activity Audience'
|
||||
|
||||
_sql_constraints = [('golem_activity_audience_name_uniq', 'UNIQUE (name)',
|
||||
_('This activity audience name has already been used.'))]
|
||||
|
||||
name = fields.Char('Activity audience', required=True, translate=True)
|
||||
|
||||
|
||||
class GolemActivity(models.Model):
|
||||
""" GOLEM Activity """
|
||||
_name = 'golem.activity'
|
||||
_description = 'GOLEM Activity'
|
||||
_inherit = 'mail.thread'
|
||||
_inherits = {'product.template': 'product_id'}
|
||||
_order = 'default_code, name, id'
|
||||
_rec_name = 'full_name'
|
||||
|
||||
name = fields.Char('Name', index=True, required=True)
|
||||
default_code = fields.Char('Internal Reference', index=True)
|
||||
image = fields.Binary('Image', help='This field holds the image used as '
|
||||
'image for the activity.')
|
||||
note = fields.Text('Note')
|
||||
product_id = fields.Many2one('product.template', required=True,
|
||||
ondelete='cascade')
|
||||
|
||||
image = fields.Binary(help='This field holds the image used as image for '
|
||||
'the activity.')
|
||||
|
||||
full_name = fields.Char('Name', compute='_compute_full_name', store=True,
|
||||
index=True)
|
||||
is_fullseason = fields.Boolean('Is full season?',
|
||||
compute='_compute_is_full_season')
|
||||
location = fields.Char()
|
||||
audience_id = fields.Many2one('golem.activity.audience', string='Audience',
|
||||
index=True, auto_join=True)
|
||||
|
||||
@api.onchange('is_fullseason')
|
||||
def onchange_fullseason(self):
|
||||
""" Sets dates as season ones if needed """
|
||||
for activity in self:
|
||||
if activity.is_fullseason:
|
||||
if activity.season_id.date_start:
|
||||
activity.date_start = activity.season_id.date_start
|
||||
if activity.season_id.date_end:
|
||||
activity.date_stop = activity.season_id.date_end
|
||||
|
||||
@api.depends('date_start', 'date_stop')
|
||||
def _compute_is_full_season(self):
|
||||
""" Display date for is full season """
|
||||
for activity in self:
|
||||
if activity.date_start == activity.season_id.date_start and \
|
||||
activity.date_stop == activity.season_id.date_end:
|
||||
activity.is_fullseason = True
|
||||
|
||||
@api.depends('name', 'default_code')
|
||||
def _compute_full_name(self):
|
||||
""" Provide a better displayed name """
|
||||
for activity in self:
|
||||
full_name = unicode(activity.name)
|
||||
if activity.default_code:
|
||||
full_name = u'[{}] {}'.format(activity.default_code, full_name)
|
||||
activity.full_name = full_name
|
||||
|
||||
@api.model
|
||||
def _default_season(self):
|
||||
def default_season(self):
|
||||
""" Get default season """
|
||||
domain = [('is_default', '=', True)]
|
||||
return self.env['golem.season'].search(domain)
|
||||
|
||||
season_id = fields.Many2one('golem.season', string='Season', copy=False,
|
||||
required=True, default=_default_season,
|
||||
required=True, default=default_season,
|
||||
index=True, auto_join=True,
|
||||
ondelete='restrict')
|
||||
animator_id = fields.Many2one('res.partner', string='Animator',
|
||||
domain=[('is_company', '=', False)])
|
||||
categ_id = fields.Many2one('product.category', 'Internal Category',
|
||||
required=True,
|
||||
help='Select category for the current activity')
|
||||
date_start = fields.Date('Start date', copy=False)
|
||||
date_end = fields.Date('End date', copy=False)
|
||||
is_default = fields.Boolean('Default season?',
|
||||
compute='_compute_is_default', store=True)
|
||||
|
||||
@api.constrains('date_start', 'date_end')
|
||||
@api.depends('season_id')
|
||||
def _compute_is_default(self):
|
||||
""" Checks if activity is active for default season """
|
||||
default_season = self.default_season()
|
||||
for activity in self:
|
||||
activity.is_default = (default_season == activity.season_id)
|
||||
|
||||
animator_id = fields.Many2one('res.partner', string='Animator',
|
||||
index=True, auto_join=True,
|
||||
domain=[('is_company', '=', False)])
|
||||
type_id = fields.Many2one('golem.activity.type', required=True, index=True,
|
||||
auto_join=True, string='Type')
|
||||
is_recurrent = fields.Boolean(related='type_id.is_recurrent')
|
||||
date_start = fields.Date('Start date', copy=False)
|
||||
date_stop = fields.Date('End date', copy=False)
|
||||
|
||||
@api.onchange('date_start')
|
||||
def _onchange_date_start(self):
|
||||
""" Sets end date to start date if no start date """
|
||||
for activity in self:
|
||||
if not activity.date_stop:
|
||||
activity.date_stop = activity.date_start
|
||||
|
||||
@api.constrains('date_start', 'date_stop')
|
||||
def _check_period(self):
|
||||
""" Check if end date if after start date """
|
||||
for a in self:
|
||||
if a.date_start and a.date_end and a.date_start > a.date_end:
|
||||
""" Checks if end date if after start date """
|
||||
for activity in self:
|
||||
season = activity.season_id
|
||||
if activity.date_start and activity.date_stop and \
|
||||
activity.date_start > activity.date_stop:
|
||||
raise models.ValidationError(_('Start of the period cannot be '
|
||||
'after end of the period.'))
|
||||
if season.date_start and season.date_start > activity.date_start:
|
||||
msg = _(u'Activity start date can not be set before '
|
||||
'linked season start.')
|
||||
raise models.ValidationError(msg)
|
||||
if season.date_end and season.date_end < activity.date_stop:
|
||||
msg = _(u'Activity end date can not be set after '
|
||||
'linked season end.')
|
||||
raise models.ValidationError(msg)
|
||||
|
||||
@api.onchange('season_id')
|
||||
def _onchange_season_dates(self):
|
||||
""" Sets defaults dates according to season """
|
||||
for activity in self:
|
||||
if activity.season_id:
|
||||
if not activity.date_start:
|
||||
activity.date_start = activity.season_id.date_start
|
||||
if not activity.date_stop:
|
||||
activity.date_stop = activity.season_id.date_end
|
||||
|
||||
weekday = fields.Selection([('mon', _('Monday')),
|
||||
('tue', _('Tuesday')),
|
||||
('wed', _('Wednesday')),
|
||||
('thu', _('Thursday')),
|
||||
('fri', _('Friday')),
|
||||
('sat', _('Saturday')),
|
||||
('sun', _('Sunday'))], copy=False)
|
||||
hour_start = fields.Float('Start time', copy=False)
|
||||
hour_stop = fields.Float('Stop time', copy=False)
|
||||
hour_start_display = fields.Char('Hour start',
|
||||
compute='_compute_hour_start_display')
|
||||
|
||||
@api.depends('hour_start')
|
||||
def _compute_hour_start_display(self):
|
||||
""" Computes datetime from day hour start """
|
||||
for activity in self:
|
||||
activity.hour_start_display = (activity.hour_start if
|
||||
activity.hour_start else u'')
|
||||
|
||||
@api.onchange('hour_start')
|
||||
def _onchange_hour_start(self):
|
||||
""" Sets end hour to start hour if no start hour """
|
||||
for activity in self:
|
||||
if activity.hour_start and not activity.hour_stop:
|
||||
activity.hour_stop = activity.hour_start + 1
|
||||
|
||||
@api.constrains('hour_start', 'hour_stop')
|
||||
def _check_hour_period(self):
|
||||
""" Check if end hour if after start hour """
|
||||
for activity in self:
|
||||
if activity.hour_start > activity.hour_stop:
|
||||
raise models.ValidationError(_('Start of the period cannot be '
|
||||
'after end of the period.'))
|
||||
|
||||
@api.onchange('season_id')
|
||||
def onchange_season_dates(self):
|
||||
""" Sets defaults dates according to season """
|
||||
for a in self:
|
||||
if a.season_id:
|
||||
if not a.date_start:
|
||||
a.date_start = a.season_id.date_start
|
||||
if not a.date_end:
|
||||
a.date_end = a.season_id.date_end
|
||||
|
||||
is_current = fields.Boolean('Current season?', store=True, default=False,
|
||||
compute='_compute_is_current')
|
||||
class ProductTemplate(models.Model):
|
||||
""" GOLEM Activity Product adaptations """
|
||||
_inherit = 'product.template'
|
||||
|
||||
@api.one
|
||||
@api.depends('season_id')
|
||||
def _compute_is_current(self):
|
||||
""" Checks if activity is active for current season """
|
||||
default_season = self._default_season()
|
||||
self.is_current = (default_season == self.season_id)
|
||||
type = fields.Selection(default='service')
|
||||
default_code = fields.Char(copy=True)
|
||||
categ_id = fields.Many2one(copy=True)
|
||||
|
||||
|
||||
class ProductCategory(models.Model):
|
||||
""" Product Category adaptations """
|
||||
_inherit = 'product.category'
|
||||
|
||||
property_account_income_categ_id = fields.Many2one(required=True)
|
||||
property_account_expense_categ_id = fields.Many2one(required=True)
|
||||
|
||||
class ResPartner(models.Model):
|
||||
""" GOLEM Member partner adaptations """
|
||||
_inherit = 'res.partner'
|
||||
|
||||
animator_activity_ids = fields.One2many('golem.activity', 'animator_id',
|
||||
string='Animated activities',
|
||||
auto_join=True)
|
||||
|
34
golem_activity/models/golem_season.py
Normal file
34
golem_activity/models/golem_season.py
Normal file
@ -0,0 +1,34 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Season adaptations """
|
||||
|
||||
from odoo import models, api
|
||||
|
||||
|
||||
class GolemSeason(models.Model):
|
||||
""" GOLEM Season adaptations """
|
||||
_inherit = 'golem.season'
|
||||
|
||||
@api.multi
|
||||
def do_default_season(self):
|
||||
""" Regenerates is_default when season changes """
|
||||
self.ensure_one()
|
||||
res = super(GolemSeason, self).do_default_season()
|
||||
all_activities = self.env['golem.activity'].search([])
|
||||
all_activities._compute_is_default()
|
||||
return res
|
137
golem_activity/report/golem_activity_report_templates.xml
Normal file
137
golem_activity/report/golem_activity_report_templates.xml
Normal file
@ -0,0 +1,137 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
|
||||
<report id="golem_activity_report_pdf" model="golem.activity"
|
||||
string="Activity Report [PDF]" report_type="qweb-pdf"
|
||||
name="golem_activity.golem_activity_report_template"
|
||||
file="golem_activity.golem_activity_report_template"
|
||||
attachment="(object.name + '.pdf')" />
|
||||
|
||||
<report id="golem_activity_report_html" model="golem.activity"
|
||||
string="Activity Report [HTML]" report_type="qweb-html"
|
||||
name="golem_activity.golem_activity_report_template"
|
||||
file="golem_activity.golem_activity_report_template"
|
||||
attachment="(object.name + '.html')" />
|
||||
|
||||
<template id="golem_activity_report_template">
|
||||
<t t-call="report.html_container">
|
||||
<t t-set="season" t-value="docs.default_season()" />
|
||||
<t t-foreach="docs" t-as="activity" id="foreach_activity">
|
||||
<t t-call="report.external_layout">
|
||||
<div id='page_report_activity' class="page">
|
||||
<div class="row">
|
||||
<div class="col-xs-12" id="activity_title">
|
||||
<h2 class="golem_report_title">
|
||||
Activity : <span t-field="activity.name" />
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12" style="margin-top: 40px;" >
|
||||
<div class="col-xs-4" id="activity_info_left">
|
||||
<h4 style="font-weight: bold;">General Information</h4>
|
||||
</div>
|
||||
<div class="col-xs-4" id="activity_info_middle">
|
||||
<h4 style="font-weight: bold;">Type</h4>
|
||||
</div>
|
||||
<div class="col-xs-4" id="activity_info_right">
|
||||
<h4 style="font-weight: bold;">Session</h4>
|
||||
</div>
|
||||
</div>
|
||||
<div id="activity_info" class="col-xs-12" >
|
||||
<div class="col-xs-4" id="activity_info_left">
|
||||
<div t-if="activity.season_id">
|
||||
<strong>Season : </strong>>
|
||||
<span t-field="activity.season_id"/>
|
||||
</div>
|
||||
<div t-if="activity.animator_id">
|
||||
<strong>Animator : </strong>>
|
||||
<span t-field="activity.animator_id"/>
|
||||
</div>
|
||||
<div t-if="activity.list_price">
|
||||
<strong>Price : </strong>>
|
||||
<span t-field="activity.list_price"/>
|
||||
</div>
|
||||
<div t-if="activity.default_code">
|
||||
<strong>Reference : </strong>>
|
||||
<span t-field="activity.default_code"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4" id="activity_info_middle">
|
||||
<div t-if="activity.type_id">
|
||||
<strong>Type : </strong><span t-field="activity.type_id"/>
|
||||
</div>
|
||||
<div t-if="activity.categ_id">
|
||||
<strong>Category : </strong><span t-field="activity.categ_id"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-4" id="activity_info_right">
|
||||
<div t-if="activity.places">
|
||||
<strong>Places : </strong><span t-field="activity.places"/>
|
||||
</div>
|
||||
<t t-if="activity.is_recurrent">
|
||||
<div>
|
||||
<strong>Is Recurrent : </strong>
|
||||
<span t-field="activity.is_recurrent"/>
|
||||
</div>
|
||||
<t t-if="activity.is_fullseason">
|
||||
<div><strong>Is Full Season : </strong>
|
||||
<span t-field="activity.is_fullseason"/></div>
|
||||
<div t-if="activity.weekday">
|
||||
<strong>Weekday : </strong>
|
||||
<span t-field="activity.weekday"/>
|
||||
</div>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<div t-if="activity.date_start">
|
||||
<strong>Date Start : </strong><span t-field="activity.date_start"/>
|
||||
</div>
|
||||
<div t-if="activity.date_stop">
|
||||
<strong>Date Stop : </strong><span t-field="activity.date_stop"/>
|
||||
</div>
|
||||
</t>
|
||||
<div t-if="activity.hour_start">
|
||||
<strong>Start Hour : </strong>>
|
||||
<span t-esc="'%02d:%02d' % (int(activity.hour_start), round(activity.hour_start % 1 * 60))" />
|
||||
</div>
|
||||
<div t-if="activity.hour_stop">
|
||||
<strong>Stop Hour : </strong>>
|
||||
<span t-esc="'%02d:%02d' % (int(activity.hour_stop), round(activity.hour_stop % 1 * 60))" />
|
||||
</div>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<div t-if="activity.date_start">
|
||||
<strong>Date Start : </strong>
|
||||
<span t-field="activity.date_start"/>
|
||||
</div>
|
||||
<div t-if="activity.date_stop">
|
||||
<strong>Date Stop : </strong>
|
||||
<span t-field="activity.date_stop"/>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</t>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
</odoo>
|
@ -1,3 +1,22 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_product_template_auditor,Access Product Template Auditor,product.model_product_template,golem_base.group_golem_auditor,1,0,0,0
|
||||
access_product_template_user,Access Product Template User,product.model_product_template,golem_base.group_golem_user,1,1,1,0
|
||||
access_product_template_manager,Access Product Template Manager,product.model_product_template,golem_base.group_golem_manager,1,1,1,1
|
||||
access_product_product_auditor,Access Product Product Auditor,product.model_product_product,golem_base.group_golem_auditor,1,0,0,0
|
||||
access_product_product_user,Access Product Product User,product.model_product_product,golem_base.group_golem_user,1,1,1,0
|
||||
access_product_product_manager,Access Product Product Manager,product.model_product_product,golem_base.group_golem_manager,1,1,1,1
|
||||
access_product_price_history_auditor,Access Product Price History Auditor,product.model_product_price_history,golem_base.group_golem_auditor,1,0,0,0
|
||||
access_product_price_history_user,Access Product Price History User,product.model_product_price_history,golem_base.group_golem_user,1,1,1,0
|
||||
access_product_price_history_manager,Access Product Price History Manager,product.model_product_price_history,golem_base.group_golem_manager,1,1,1,1
|
||||
access_product_category_auditor,Access Product Category Auditor,product.model_product_category,golem_base.group_golem_auditor,1,0,0,0
|
||||
access_product_category_user,Access Product Category User,product.model_product_category,golem_base.group_golem_user,1,0,0,0
|
||||
access_product_category_manager,Access Product Category Manager,product.model_product_category,golem_base.group_golem_manager,1,1,1,1
|
||||
access_golem_activity_auditor,Access GOLEM Activity Auditor,model_golem_activity,golem_base.group_golem_auditor,1,0,0,0
|
||||
access_golem_activity_user,Access GOLEM Activity User,model_golem_activity,golem_base.group_golem_user,1,1,1,0
|
||||
access_golem_activity_manager,Access GOLEM Activity Manager,model_golem_activity,golem_base.group_golem_manager,1,1,1,1
|
||||
access_golem_activity_type_auditor,Access GOLEM Activity Type Auditor,model_golem_activity_type,golem_base.group_golem_auditor,1,0,0,0
|
||||
access_golem_activity_type_user,Access GOLEM Activity Type User,model_golem_activity_type,golem_base.group_golem_user,1,1,1,0
|
||||
access_golem_activity_type_manager,Access GOLEM Activity Type Manager,model_golem_activity_type,golem_base.group_golem_manager,1,1,1,1
|
||||
access_golem_activity_audience_auditor,Access GOLEM Activity Audience Auditor,model_golem_activity_audience,golem_base.group_golem_auditor,1,0,0,0
|
||||
access_golem_activity_audience_user,Access GOLEM Activity Audience User,model_golem_activity_audience,golem_base.group_golem_user,1,1,1,0
|
||||
access_golem_activity_audience_manager,Access GOLEM Activity Audience Manager,model_golem_activity_audience,golem_base.group_golem_manager,1,1,1,1
|
||||
|
|
BIN
golem_activity/static/description/icon.png
Normal file
BIN
golem_activity/static/description/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.3 KiB |
@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2016-2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
@ -15,8 +15,8 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from openerp.tests.common import TransactionCase
|
||||
from openerp.models import ValidationError
|
||||
from odoo.tests.common import TransactionCase
|
||||
from odoo.models import ValidationError
|
||||
|
||||
|
||||
class GolemActivityTestCase(TransactionCase):
|
||||
@ -40,7 +40,7 @@ class GolemActivityTestCase(TransactionCase):
|
||||
self.assertEqual(a1.name, 'a1')
|
||||
self.assertEqual(a1.date_start, self.season_current.date_start)
|
||||
self.assertEqual(a1.date_end, self.season_current.date_end)
|
||||
self.assertTrue(a1.is_current)
|
||||
self.assertTrue(a1.is_default)
|
||||
adata.update({'name': 'a2', 'date_start': '2010-01-01',
|
||||
'date_end': '2009-12-01'})
|
||||
with self.assertRaises(ValidationError):
|
||||
|
@ -1,108 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!-- Forms -->
|
||||
<record id="view_form" model="ir.ui.view">
|
||||
<field name="name">GOLEM Activity Form</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<div class="oe_right oe_button_box" style="width: 300px;"
|
||||
name="buttons"></div>
|
||||
<div class="oe_left" style="width: 500px;">
|
||||
<field name="image" widget="image" class="oe_avatar oe_left"/>
|
||||
<div class="oe_title" style="width: 390px;">
|
||||
<label class="oe_edit_only" for="name" string="Activity Name"/>
|
||||
<h1><field name="name" class="oe_inline"/></h1>
|
||||
</div>
|
||||
</div>
|
||||
<group>
|
||||
<field name="season_id" />
|
||||
<field name="default_code" />
|
||||
</group>
|
||||
<group string="Details">
|
||||
<group>
|
||||
<field name="categ_id" />
|
||||
<field name="animator_id" />
|
||||
</group>
|
||||
<group>
|
||||
<field name="date_start" />
|
||||
<field name="date_end" />
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="activity_info" string="Information">
|
||||
<group>
|
||||
<field name="note"
|
||||
placeholder="describe the activity characteristics..."/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" widget="mail_followers" />
|
||||
<field name="message_ids" widget="mail_thread" />
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Trees -->
|
||||
<record model="ir.ui.view" id="view_tree">
|
||||
<field name="name">GOLEM Activity Tree/List</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="GOLEM Activities">
|
||||
<field name="season_id" />
|
||||
<field name="name" />
|
||||
<field name="animator_id" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Searches -->
|
||||
<record id="view_filter" model="ir.ui.view">
|
||||
<field name="name">GOLEM Activity Filters</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name" />
|
||||
<field name="season_id" widget="many2one" />
|
||||
<filter name="season_default" string="Default season"
|
||||
domain="[('is_current', '=', True)]" />
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Actions -->
|
||||
<act_window id="action" name="GOLEM Activities" res_model="golem.activity"
|
||||
context="{'search_default_season_default': True, 'default_categ_id': ref('golem_activity.golem_product_category_activities')}" />
|
||||
|
||||
<!-- Menus -->
|
||||
<menuitem id="activity_menu" name="Activities"
|
||||
parent="base.menu_association" sequence="5"
|
||||
groups="golem_base.group_golem_user" />
|
||||
<menuitem id="activity_list" name="List"
|
||||
groups="golem_base.group_golem_user"
|
||||
parent="activity_menu" sequence="0" action="action" />
|
||||
|
||||
</data>
|
||||
</openerp>
|
228
golem_activity/views/golem_activity_views.xml
Normal file
228
golem_activity/views/golem_activity_views.xml
Normal file
@ -0,0 +1,228 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2017-2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
Copyright 2020 Youssef El Ouahby <youssef@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Forms -->
|
||||
<record id="golem_activity_form" model="ir.ui.view">
|
||||
<field name="name">GOLEM Activity Form</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header />
|
||||
<sheet>
|
||||
<div class="oe_clear oe_right oe_button_box"
|
||||
style="width: 300px;"
|
||||
name="buttons"></div>
|
||||
<div class="oe_left" style="width: 500px;">
|
||||
<field name="image" widget="image" class="oe_avatar oe_left"/>
|
||||
<div class="oe_title" style="width: 390px;">
|
||||
<label class="oe_edit_only" for="name" string="Activity Name"/>
|
||||
<h1><field name="name" required="True" class="oe_inline"/></h1>
|
||||
</div>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="season_id" required="True"
|
||||
options="{'no_create': True}" />
|
||||
<field name="animator_id" />
|
||||
<field name="type_id" required="True"
|
||||
options="{'no_create': True}" />
|
||||
<field name="audience_id" />
|
||||
</group>
|
||||
<group>
|
||||
<field name="categ_id" required="True"
|
||||
help="Select category for the current activity" />
|
||||
<field name="default_code" />
|
||||
<field name="list_price" />
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page name="session" string="Session">
|
||||
<group>
|
||||
<group name="dates">
|
||||
<field name="is_recurrent" />
|
||||
<field name="weekday"
|
||||
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
|
||||
<field name="hour_start" widget="float_time"
|
||||
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
|
||||
<field name="hour_stop" widget="float_time"
|
||||
attrs="{'invisible': [('is_recurrent', '=', False)]}" />
|
||||
|
||||
<field name="is_fullseason" readonly="False"
|
||||
attrs="{'invisible':[('is_recurrent', '=', False)]}" />
|
||||
<field name="date_start"
|
||||
attrs="{'invisible':[('is_recurrent', '=', True),
|
||||
('is_fullseason', '=', True)]}" />
|
||||
<field name="date_stop"
|
||||
attrs="{'invisible':[('is_recurrent', '=', True),
|
||||
('is_fullseason', '=', True)]}" />
|
||||
<field name="location" />
|
||||
</group>
|
||||
<group name="places">
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Invoicing" name="invoicing"
|
||||
groups="account.group_account_invoice">
|
||||
<group name="properties">
|
||||
<field name="property_account_income_id"
|
||||
domain="[('internal_type','=','other'),('deprecated','=',False)]"
|
||||
groups="account.group_account_user"/>
|
||||
<field name="taxes_id" widget="many2many_tags"/>
|
||||
<field name="property_account_expense_id"
|
||||
domain="[('internal_type','=','other'),('deprecated','=',False)]"
|
||||
groups="account.group_account_user"/>
|
||||
<field name="supplier_taxes_id" widget="many2many_tags"/>
|
||||
</group>
|
||||
</page>
|
||||
<page name="activity_others" string="Others">
|
||||
<group>
|
||||
<field name="description"
|
||||
placeholder="describe the activity characteristics..." />
|
||||
<field name="active" />
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" widget="mail_followers" />
|
||||
<field name="message_ids" widget="mail_thread" />
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Trees -->
|
||||
<record model="ir.ui.view" id="golem_activity_tree">
|
||||
<field name="name">GOLEM Activity Tree/List</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="is_recurrent" invisible="True" />
|
||||
<field name="season_id" />
|
||||
<field name="type_id" />
|
||||
<field name="full_name" />
|
||||
<field name="animator_id" />
|
||||
<field name="weekday" string="Day" />
|
||||
<field name="date_start" string="Date" />
|
||||
<field name="hour_start_display" string="Hour" widget="float_time" />
|
||||
<field name="list_price" sum="True" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="golem_activity_type_tree">
|
||||
<field name="name">GOLEM Activity Type Tree/List</field>
|
||||
<field name="model">golem.activity.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="top">
|
||||
<field name="name" />
|
||||
<field name="is_recurrent" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="golem_activity_audience_tree">
|
||||
<field name="name">GOLEM Activity Audience Tree/List</field>
|
||||
<field name="model">golem.activity.audience</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="top">
|
||||
<field name="name" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Calendars -->
|
||||
<record id="golem_activity_calendar" model="ir.ui.view">
|
||||
<field name="name">Activity calendar view</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="arch" type="xml">
|
||||
<calendar date_start="date_start" date_stop="date_stop"
|
||||
color="categ_id" display="[name]">
|
||||
<field name="name" />
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Searches -->
|
||||
<record id="golem_activity_search" model="ir.ui.view">
|
||||
<field name="name">GOLEM Activity Filters</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="full_name" />
|
||||
<field name="animator_id" />
|
||||
<field name="type_id" />
|
||||
<field name="categ_id" />
|
||||
<field name="season_id" />
|
||||
<filter name="season_default" string="Default season"
|
||||
domain="[('is_default', '=', True)]" />
|
||||
<group string="Group By">
|
||||
<filter name="group_type_id" string="By type"
|
||||
context="{'group_by': 'type_id'}" />
|
||||
<filter name="group_category" string="By category"
|
||||
context="{'group_by': 'categ_id'}"/>
|
||||
<filter name="group_weekday" string="By weekday"
|
||||
context="{'group_by': 'weekday'}" />
|
||||
<filter name="group_animator" string="By animator"
|
||||
context="{'group_by': 'animator_id'}" />
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Actions -->
|
||||
<act_window id="golem_activity_action" name="GOLEM Activities"
|
||||
res_model="golem.activity" view_mode="tree,form,calendar"
|
||||
context="{'search_default_season_default': 1}"/>
|
||||
<act_window id="golem_activity_type_action" name="GOLEM Activity Types"
|
||||
res_model="golem.activity.type" view_mode="tree" />
|
||||
<act_window id="golem_activity_audience_action" name="GOLEM Activity Audiences"
|
||||
res_model="golem.activity.audience" view_mode="tree" />
|
||||
<record id="product_category_action" model="ir.actions.act_window">
|
||||
<field name="name">Activities Categories</field>
|
||||
<field name="res_model">product.category</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="product.product_category_list_view" />
|
||||
</record>
|
||||
|
||||
<!-- Menus -->
|
||||
<menuitem id="golem_activity_menu" name="Activities" sequence="30"
|
||||
groups="golem_base.group_golem_user,golem_base.group_golem_auditor"
|
||||
web_icon="golem_activity,static/description/icon.png" />
|
||||
<menuitem id="golem_activity_menu_list" name="Activities"
|
||||
groups="golem_base.group_golem_user,golem_base.group_golem_auditor"
|
||||
parent="golem_activity_menu" sequence="1" action="golem_activity_action" />
|
||||
<menuitem id="golem_activity_menu_configuration" name="Configuration"
|
||||
parent="golem_activity_menu" sequence="90"
|
||||
groups="golem_base.group_golem_manager,golem_base.group_golem_auditor" />
|
||||
<menuitem id="golem_activity_type_menu_list" name="Activity Types"
|
||||
groups="golem_base.group_golem_manager,golem_base.group_golem_auditor"
|
||||
parent="golem_activity_menu_configuration" sequence="5"
|
||||
action="golem_activity_type_action" />
|
||||
<menuitem id="golem_activity_audience_menu_list" name="Activity Audiences"
|
||||
groups="golem_base.group_golem_manager,golem_base.group_golem_auditor"
|
||||
parent="golem_activity_menu_configuration" sequence="7"
|
||||
action="golem_activity_audience_action" />
|
||||
<menuitem id="product_category_menu" name="Categories"
|
||||
parent="golem_activity_menu_configuration" sequence="10"
|
||||
groups="golem_base.group_golem_manager,golem_base.group_golem_auditor"
|
||||
action="product_category_action" />
|
||||
|
||||
</data>
|
||||
</odoo>
|
@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2017 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
@ -16,17 +16,15 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
{
|
||||
'name': 'GOLEM Activity Sessions Places',
|
||||
'summary': 'GOLEM Activities Session avdanced places management',
|
||||
'description': ''' Management of minimum places, overbook and max
|
||||
overbook... ''',
|
||||
'version': '0.1',
|
||||
'name': 'GOLEM Activity Places',
|
||||
'summary': 'GOLEM Activity avdanced places management',
|
||||
'version': '10.0.2.0.0',
|
||||
'category': 'GOLEM',
|
||||
'author': 'Fabien Bourgeois',
|
||||
'license': 'AGPL-3',
|
||||
'application': False,
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'depends': ['golem_activity_session'],
|
||||
'data': ['views/golem_activity_view.xml']
|
||||
'depends': ['golem_activity_registration'],
|
||||
'data': ['views/golem_activity_views.xml']
|
||||
}
|
53
golem_activity_place/i18n/fr.po
Normal file
53
golem_activity_place/i18n/fr.po
Normal file
@ -0,0 +1,53 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_place
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-05-01 22:35+0000\n"
|
||||
"PO-Revision-Date: 2017-05-01 22:35+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: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_is_overbooked
|
||||
msgid "Allow overbook?"
|
||||
msgstr "Autoriser la surcharge ?"
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: model:ir.model,name:golem_activity_place.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr "Activité"
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_places_min
|
||||
msgid "Minimum places"
|
||||
msgstr "Places minimum"
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: model:ir.model.fields,help:golem_activity_place.field_golem_activity_places_min
|
||||
msgid "Minimum places to maintain the activity"
|
||||
msgstr "Nombre de places minimales pour maintenir l'activité"
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: code:addons/golem_activity_place/models/golem_activity.py:57
|
||||
#, python-format
|
||||
msgid "Number of places cannot be negative."
|
||||
msgstr "Le nombre de places ne peut pas être négatif"
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: code:addons/golem_activity_place/models/golem_activity.py:61
|
||||
#, python-format
|
||||
msgid "Overbooked places cannot be inferior than places"
|
||||
msgstr "Le nombre de places avec surcharge ne peut être inférieur aux places"
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_places_overbooked
|
||||
msgid "Places with overbook"
|
||||
msgstr "Places avec surcharge"
|
54
golem_activity_place/i18n/golem_activity_place.pot
Normal file
54
golem_activity_place/i18n/golem_activity_place.pot
Normal file
@ -0,0 +1,54 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_place
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-05-01 22:34+0000\n"
|
||||
"PO-Revision-Date: 2017-05-01 22:34+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: golem_activity_place
|
||||
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_is_overbooked
|
||||
msgid "Allow overbook?"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: model:ir.model,name:golem_activity_place.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_places_min
|
||||
msgid "Minimum places"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: model:ir.model.fields,help:golem_activity_place.field_golem_activity_places_min
|
||||
msgid "Minimum places to maintain the activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: code:addons/golem_activity_place/models/golem_activity.py:57
|
||||
#, python-format
|
||||
msgid "Number of places cannot be negative."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: code:addons/golem_activity_place/models/golem_activity.py:61
|
||||
#, python-format
|
||||
msgid "Overbooked places cannot be inferior than places"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_place
|
||||
#: model:ir.model.fields,field_description:golem_activity_place.field_golem_activity_places_overbooked
|
||||
msgid "Places with overbook"
|
||||
msgstr ""
|
||||
|
@ -14,3 +14,5 @@
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import golem_activity
|
@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# copyright 2016 fabien bourgeois <fabien@yaltik.com>
|
||||
# copyright 2017 fabien bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# this program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the gnu affero general public license as
|
||||
@ -15,42 +15,48 @@
|
||||
# you should have received a copy of the gnu affero general public license
|
||||
# along with this program. if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from openerp import models, fields, api, _
|
||||
""" GOLEM Activity Advanced Places management """
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
|
||||
class GolemActivitySession(models.Model):
|
||||
_inherit = 'golem.activity.session'
|
||||
class GolemActivity(models.Model):
|
||||
""" GOLEM Activity Advanced Places management """
|
||||
_inherit = 'golem.activity'
|
||||
|
||||
places_min = fields.Integer('Minimum places', default=0,
|
||||
help='Minimum places to maintain the session')
|
||||
help='Minimum places to maintain the activity')
|
||||
is_overbooked = fields.Boolean('Allow overbook?', default=False)
|
||||
places_overbooked = fields.Integer('Places with overbook', default=0)
|
||||
|
||||
@api.one
|
||||
@api.depends('places', 'is_overbooked', 'places_overbooked', 'member_ids')
|
||||
@api.multi
|
||||
@api.depends('places', 'is_overbooked', 'places_overbooked', 'places_used')
|
||||
def _compute_places_remain(self):
|
||||
used = len(self.member_ids)
|
||||
if not self.is_overbooked:
|
||||
self.places_remain = self.places - used
|
||||
else:
|
||||
self.places_remain = self.places_overbooked - used
|
||||
""" Overwrite : computes remaining places """
|
||||
for activity in self:
|
||||
if not activity.is_overbooked:
|
||||
activity.places_remain = activity.places - activity.places_used
|
||||
else:
|
||||
activity.places_remain = activity.places_overbooked - activity.places_used
|
||||
|
||||
@api.onchange('is_overbooked', 'places')
|
||||
def onchange_is_overbooked(self):
|
||||
for s in self:
|
||||
if s.places and s.is_overbooked:
|
||||
if not s.places_overbooked or (s.places_overbooked < s.places):
|
||||
s.places_overbooked = s.places + 1
|
||||
""" Realtime display for places and overbooked """
|
||||
for activity in self:
|
||||
if activity.places and activity.is_overbooked:
|
||||
if not activity.places_overbooked or \
|
||||
(activity.places_overbooked < activity.places):
|
||||
activity.places_overbooked = activity.places + 1
|
||||
|
||||
@api.constrains('places', 'places_overbooked')
|
||||
def _check_places(self):
|
||||
""" Check integers are signed and overbooked to be superior than
|
||||
normal places """
|
||||
for v in self:
|
||||
for f in ['places', 'places_overbooked']:
|
||||
if v[f] < 0:
|
||||
for activity in self:
|
||||
for field in ['places', 'places_overbooked']:
|
||||
if activity[field] < 0:
|
||||
emsg = _('Number of places cannot be negative.')
|
||||
raise models.ValidationError(emsg)
|
||||
if v.is_overbooked and (v.places_overbooked <= v.places):
|
||||
if activity.is_overbooked and \
|
||||
(activity.places_overbooked <= activity.places):
|
||||
emsg = _('Overbooked places cannot be inferior than places')
|
||||
raise models.ValidationError(emsg)
|
@ -15,4 +15,4 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import golem_activity_session
|
||||
from . import test_golem_activity
|
@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2017 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
@ -15,11 +15,14 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from openerp.tests.common import TransactionCase
|
||||
from openerp.models import ValidationError
|
||||
""" GOLEM Activity Places Tests """
|
||||
|
||||
from odoo.tests.common import TransactionCase
|
||||
from odoo.models import ValidationError
|
||||
|
||||
|
||||
class GolemActivitySessionTestCase(TransactionCase):
|
||||
""" GOLEM Activity Places Tests """
|
||||
|
||||
def setUp(self):
|
||||
super(GolemActivitySessionTestCase, self).setUp()
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
|
||||
Copyright 2017 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
@ -15,14 +15,15 @@ GNU Affero General Public License for more details.
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<openerp>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Form -->
|
||||
<record id="view_form" model="ir.ui.view">
|
||||
<field name="name">GOLEM Activity Sessions Places Form additions</field>
|
||||
<field name="model">golem.activity.session</field>
|
||||
<field name="inherit_id" ref="golem_activity_session.view_form" />
|
||||
<record id="golem_activity_registration_form_inherit_place" model="ir.ui.view">
|
||||
<field name="name">GOLEM Activity Places Form additions</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="inherit_id"
|
||||
ref="golem_activity_registration.golem_activity_form_inherit_registration" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="places" position="after">
|
||||
<field name="places_min" />
|
||||
@ -34,10 +35,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
</record>
|
||||
|
||||
<!-- Tree -->
|
||||
<record id="session_tree" model="ir.ui.view">
|
||||
<field name="name">Session list places adaptations</field>
|
||||
<field name="model">golem.activity.session</field>
|
||||
<field name="inherit_id" ref="golem_activity_session.session_tree" />
|
||||
<record id="golem_activity_registration_tree_inherit_place" model="ir.ui.view">
|
||||
<field name="name">Activity list places adaptations</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="inherit_id"
|
||||
ref="golem_activity_registration.golem_activity_tree_inherit_registration" />
|
||||
<field name="arch" type="xml">
|
||||
<tree position="attributes">
|
||||
<attribute name="colors">darkgrey: places_used < places_min; red: places_remain == 0; orange: places_remain <= 4;</attribute>
|
||||
@ -49,17 +51,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Searches -->
|
||||
<record id="searches" model="ir.ui.view">
|
||||
<field name="name">GOLEM Activity Sessions Searches</field>
|
||||
<field name="model">golem.activity.session</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<filter name="full_session" string="Full"
|
||||
domain="[('places_remain', '=', 0)]" />
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
</odoo>
|
19
golem_activity_queue/__init__.py
Normal file
19
golem_activity_queue/__init__.py
Normal file
@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import models, wizard
|
37
golem_activity_queue/__manifest__.py
Normal file
37
golem_activity_queue/__manifest__.py
Normal file
@ -0,0 +1,37 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
{
|
||||
'name': 'GOLEM activity queues',
|
||||
'summary': 'GOLEM activity queues',
|
||||
'description': ''' GOLEM activity queue management ''',
|
||||
'version': '10.0.1.3.0',
|
||||
'category': 'GOLEM',
|
||||
'author': 'Youssef El Ouahby, Fabien Bourgeois',
|
||||
'license': 'AGPL-3',
|
||||
'application': True,
|
||||
'installable': True,
|
||||
'depends': ['golem_activity', 'golem_activity_registration'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'views/golem_activity_queue_views.xml',
|
||||
'views/golem_activity_views.xml',
|
||||
'views/golem_member_views.xml',
|
||||
'wizard/golem_activity_automated_queue_activate_views.xml'
|
||||
]
|
||||
}
|
292
golem_activity_queue/i18n/fr.po
Normal file
292
golem_activity_queue/i18n/fr.po
Normal file
@ -0,0 +1,292 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_queue
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-07-20 07:46+0000\n"
|
||||
"PO-Revision-Date: 2018-07-20 17:06+0200\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: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_activity_id
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Activity"
|
||||
msgstr "Activité"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_activity_id
|
||||
msgid "Activity id"
|
||||
msgstr "Activité liée"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.actions.act_window,name:golem_activity_queue.golem_activity_queue_action
|
||||
#: model:ir.ui.menu,name:golem_activity_queue.golem_activity_queue_menu
|
||||
msgid "Activity queue"
|
||||
msgstr "Liste d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Add Queue"
|
||||
msgstr "Ajouter une liste d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Add from queue"
|
||||
msgstr "Ajouter depuis la liste d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
|
||||
msgid "Are you sure you want to Add queue to this activity ?<br/>\n"
|
||||
" If yes please confirm if you want automated registration from queue to activity."
|
||||
msgstr "Êtes-vous sûr de vouloir ajouter une liste d'attente à cette activité ?<br/>\n"
|
||||
" Si oui, merci de confirmer si vous souhaitez une inscription automatique depuis la liste d'attente."
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Are you sure you want to remove queue from this activity ? This will delete all elements currently registred in"
|
||||
msgstr "Êtes-vous sûr de vouloir supprimer la liste d'attente pour cette activité ? Cela supprimera tous les usagers inscrits dessus."
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Are you sure you want to switch to automated registration from queue mode ?"
|
||||
msgstr "Êtes-vous sûr de vouloir passer à une inscription automatique depuis la liste d'attente ?"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Are you sure you want to switch to manual registration from queue mode ?"
|
||||
msgstr "Êtes-vous sûr de vouloir passer à une inscription manuelle depuis la liste d'attente ?"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_auto_registration_from_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_auto_registration_from_queue
|
||||
msgid "Auto registration from queue"
|
||||
msgstr "Inscription automatique depuis la liste d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:52
|
||||
#, python-format
|
||||
msgid "Choose the activity to register in"
|
||||
msgstr "Choisissez l'activité sur laquelle inscrire"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmer"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_create_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Créé par"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_create_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Créé le"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Default season"
|
||||
msgstr "Saison par défaut"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_is_default
|
||||
msgid "Default season?"
|
||||
msgstr "Saison par défaut?"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_display_name
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nom affiché"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Full Activity"
|
||||
msgstr "Activité complète"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model,name:golem_activity_queue.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr "Activité"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model,name:golem_activity_queue.model_golem_activity_queue
|
||||
msgid "GOLEM Activity Queue"
|
||||
msgstr "Liste d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model,name:golem_activity_queue.model_golem_member
|
||||
msgid "GOLEM Member"
|
||||
msgstr "Adhérent"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Group By"
|
||||
msgstr "Grouper par"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard___last_update
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Dernière Modification le"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_write_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Dernière mise à jour par"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_write_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Dernière mise à jour le"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_member_id
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Member"
|
||||
msgstr "Adhérent"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:108
|
||||
#, python-format
|
||||
msgid "No remaining place for the activity : {}, please discard changes and register in the queue."
|
||||
msgstr "Plus de place disponible pour l'activité {}, veuillez annuler vos modifications et utiliser la liste d'attente."
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Not Full Activity"
|
||||
msgstr "Activité disponible"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_activity_queue_ids
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_member_activity_queue_ids
|
||||
msgid "Pending registration"
|
||||
msgstr "Inscriptions en attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_activity_number
|
||||
msgid "Pending registration number"
|
||||
msgstr "Numéro de l'inscription en attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Queue"
|
||||
msgstr "File d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_allowed
|
||||
msgid "Queue allowed"
|
||||
msgstr "Liste d'attente activée"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_member_form_inherit_golem_activity_queue
|
||||
msgid "Queue list"
|
||||
msgstr "Listes d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Register from Queue"
|
||||
msgstr "Inscrire depuis la liste d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
|
||||
msgid "Rejection reason"
|
||||
msgstr "Motif du rejet"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_places_remain
|
||||
msgid "Remaining places"
|
||||
msgstr "Places restantes"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Remove Queue"
|
||||
msgstr "Supprimer la liste d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_season_id
|
||||
msgid "Season"
|
||||
msgstr "Saison"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_sequence
|
||||
msgid "Sequence"
|
||||
msgstr "Séquence"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Switch to automated registration from queue"
|
||||
msgstr "Passer à une inscription automatique depuis la liste d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Switch to manual registration from queue"
|
||||
msgstr "Passer à une inscription manuelle depuis la liste d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity_queue.py:51
|
||||
#, python-format
|
||||
msgid "The member your trying to add to the queue is already registered for this activity"
|
||||
msgstr "L'adhérent que vous essayez d'ajouter à la liste d'attente est déjà inscrit à cette activité"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:118
|
||||
#, python-format
|
||||
msgid "There is a free place for the activity : {}, once you save it will be filled by the first member from queue"
|
||||
msgstr "Il y a une place disponible sur l'activité {}, une fois sauvegardée un usager de la liste d'attente sera automatiquement inscrit"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:122
|
||||
#, python-format
|
||||
msgid "There is a free place for the activity : {}, you may fill it manually from the queue"
|
||||
msgstr "Il y a une place disponible sur l'activité {}, vous pouvez inscrire un usager depuis la liste d'attente"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_member.py:39
|
||||
#, python-format
|
||||
msgid "This activity : {} is already full, please discard changes and register in the queue."
|
||||
msgstr "L'activité {} est complète, veuillez annuler vos modifications et enregistrer l'usager dans la liste d'attente."
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity_queue.py:30
|
||||
#: sql_constraint:golem.activity.queue:0
|
||||
#, python-format
|
||||
msgid "This member has already been registered for the queue."
|
||||
msgstr "L'usager a déjà été inscrit sur la liste d'attente."
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:112
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:127
|
||||
#: code:addons/golem_activity_queue/models/golem_member.py:43
|
||||
#, python-format
|
||||
msgid "Warning"
|
||||
msgstr "Attention"
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model,name:golem_activity_queue.model_golem_activity_automated_queue_activate_wizard
|
||||
msgid "golem.activity.automated.queue.activate.wizard"
|
||||
msgstr "golem.activity.automated.queue.activate.wizard"
|
||||
|
291
golem_activity_queue/i18n/golem_activity_queue.pot
Normal file
291
golem_activity_queue/i18n/golem_activity_queue.pot
Normal file
@ -0,0 +1,291 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_queue
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-07-20 07:46+0000\n"
|
||||
"PO-Revision-Date: 2018-07-20 07:46+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: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_activity_id
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_activity_id
|
||||
msgid "Activity id"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.actions.act_window,name:golem_activity_queue.golem_activity_queue_action
|
||||
#: model:ir.ui.menu,name:golem_activity_queue.golem_activity_queue_menu
|
||||
msgid "Activity queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Add Queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Add from queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
|
||||
msgid "Are you sure you want to Add queue to this activity ?<br/>\n"
|
||||
" If yes please confirm if you want automated registration from queue to activity."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Are you sure you want to remove queue from this activity ? This will delete all elements currently registred in"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Are you sure you want to switch to automated registration from queue mode ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Are you sure you want to switch to manual registration from queue mode ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_auto_registration_from_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_auto_registration_from_queue
|
||||
msgid "Auto registration from queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:52
|
||||
#, python-format
|
||||
msgid "Choose the activity to register in"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_create_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_create_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Default season"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_is_default
|
||||
msgid "Default season?"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_display_name
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Full Activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model,name:golem_activity_queue.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model,name:golem_activity_queue.model_golem_activity_queue
|
||||
msgid "GOLEM Activity Queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model,name:golem_activity_queue.model_golem_member
|
||||
msgid "GOLEM Member"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard___last_update
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_write_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_automated_queue_activate_wizard_write_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_member_id
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Member"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:108
|
||||
#, python-format
|
||||
msgid "No remaining place for the activity : {}, please discard changes and register in the queue."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_queue_view_search
|
||||
msgid "Not Full Activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_activity_queue_ids
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_member_activity_queue_ids
|
||||
msgid "Pending registration"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_activity_number
|
||||
msgid "Pending registration number"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_allowed
|
||||
msgid "Queue allowed"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_member_form_inherit_golem_activity_queue
|
||||
msgid "Queue list"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Register from Queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_automated_queue_actiave_wizard_view_form
|
||||
msgid "Rejection reason"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_places_remain
|
||||
msgid "Remaining places"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Remove Queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_season_id
|
||||
msgid "Season"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model.fields,field_description:golem_activity_queue.field_golem_activity_queue_sequence
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Switch to automated registration from queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.ui.view,arch_db:golem_activity_queue.golem_activity_form_inherit_golem_activity_queue
|
||||
msgid "Switch to manual registration from queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity_queue.py:51
|
||||
#, python-format
|
||||
msgid "The member your trying to add to the queue is already registered for this activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:118
|
||||
#, python-format
|
||||
msgid "There is a free place for the activity : {}, once you save it will be filled by the first member from queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:122
|
||||
#, python-format
|
||||
msgid "There is a free place for the activity : {}, you may fill it manually from the queue"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_member.py:39
|
||||
#, python-format
|
||||
msgid "This activity : {} is already full, please discard changes and register in the queue."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity_queue.py:30
|
||||
#: sql_constraint:golem.activity.queue:0
|
||||
#, python-format
|
||||
msgid "This member has already been registered for the queue."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:112
|
||||
#: code:addons/golem_activity_queue/models/golem_activity.py:127
|
||||
#: code:addons/golem_activity_queue/models/golem_member.py:43
|
||||
#, python-format
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_queue
|
||||
#: model:ir.model,name:golem_activity_queue.model_golem_activity_automated_queue_activate_wizard
|
||||
msgid "golem.activity.automated.queue.activate.wizard"
|
||||
msgstr ""
|
||||
|
19
golem_activity_queue/models/__init__.py
Normal file
19
golem_activity_queue/models/__init__.py
Normal file
@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import golem_activity_queue, golem_activity, golem_member
|
130
golem_activity_queue/models/golem_activity.py
Normal file
130
golem_activity_queue/models/golem_activity.py
Normal file
@ -0,0 +1,130 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity adaptations """
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
|
||||
class GolemActivity(models.Model):
|
||||
""" GOLEM Activity adaptations """
|
||||
_inherit = 'golem.activity'
|
||||
|
||||
activity_queue_ids = fields.One2many('golem.activity.queue',
|
||||
'activity_id', 'Pending registration')
|
||||
queue_allowed = fields.Boolean(default=True, readonly=True)
|
||||
auto_registration_from_queue = fields.Boolean(default=True, readonly=True)
|
||||
queue_activity_number = fields.Integer(compute="_compute_queue_activity_number",
|
||||
store=True, string='Pending registration number')
|
||||
|
||||
@api.multi
|
||||
def auto_registration_toggle(self):
|
||||
""" switch registration from queue mode """
|
||||
for activity in self:
|
||||
activity.auto_registration_from_queue = not activity.auto_registration_from_queue
|
||||
|
||||
@api.multi
|
||||
def queue_allowed_toggle(self):
|
||||
""" Toggle queue_alowed boolean """
|
||||
self.ensure_one()
|
||||
activity = self[0]
|
||||
if activity.queue_allowed:
|
||||
if len(activity.activity_queue_ids) > 0:
|
||||
activity.activity_queue_ids.unlink()
|
||||
activity.write({'queue_allowed': False,
|
||||
'auto_registration_from_queue': False})
|
||||
else:
|
||||
return {
|
||||
'name': _('Choose the activity to register in'),
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'golem.activity.automated.queue.activate.wizard',
|
||||
'view_mode': 'form',
|
||||
'context': {'default_activity_id' : activity.id},
|
||||
'target': 'new',
|
||||
}
|
||||
|
||||
@api.multi
|
||||
def register_from_queue(self):
|
||||
""" Registers from queue """
|
||||
for activity in self:
|
||||
queues = activity.activity_queue_ids
|
||||
if activity.queue_activity_number < activity.places_remain:
|
||||
queues = queues[0:activity.queue_activity_number]
|
||||
else:
|
||||
queues = queues[0:activity.places_remain]
|
||||
for queue in queues:
|
||||
values = {'activity_id' : queue.activity_id.id,
|
||||
'member_id' : queue.member_id.id}
|
||||
self.env['golem.activity.registration'].create(values)
|
||||
queue.unlink()
|
||||
|
||||
@api.constrains('activity_registration_ids')
|
||||
def handle_queue_at_register(self):
|
||||
""" Remove member from queue if he has been registered directly in
|
||||
activity (only for manual queue processing) """
|
||||
for activity in self:
|
||||
member_ids = activity.activity_registration_ids.mapped('member_id.id')
|
||||
queues_to_remove = activity.activity_queue_ids.filtered(
|
||||
lambda q: q.member_id.id in member_ids)
|
||||
queues_to_remove.unlink()
|
||||
|
||||
@api.constrains('activity_queue_ids', 'activity_registration_ids',
|
||||
'places_remain', 'queue_allowed', 'queue_activity_number',
|
||||
'auto_registration_from_queue')
|
||||
def automated_register_from_queue(self):
|
||||
"""automated registration from queue"""
|
||||
for activity in self:
|
||||
if (activity.places_remain and activity.queue_allowed and
|
||||
activity.queue_activity_number > 0 and
|
||||
activity.auto_registration_from_queue):
|
||||
activity.register_from_queue()
|
||||
|
||||
@api.depends('activity_queue_ids')
|
||||
def _compute_queue_activity_number(self):
|
||||
""" compute number of queue registration for activity"""
|
||||
for activity in self:
|
||||
activity.queue_activity_number = len(activity.activity_queue_ids)
|
||||
|
||||
@api.onchange('activity_registration_ids')
|
||||
def _check_registration_number(self):
|
||||
for activity in self:
|
||||
# Needed to ensure that we are negative in places
|
||||
activity._compute_places_remain()
|
||||
if activity.places_remain < 0 and activity.queue_allowed:
|
||||
message = _('No remaining place for the activity : {}, please'
|
||||
' discard changes and register in the queue.')
|
||||
return {
|
||||
'warning' : {
|
||||
'title' : _('Warning'),
|
||||
'message': message.format(activity.name),
|
||||
}
|
||||
}
|
||||
elif activity.places_remain > 0 and activity.queue_activity_number > 0:
|
||||
if activity.auto_registration_from_queue:
|
||||
warning_message = _('There is a free place for the activity'
|
||||
' : {}, once you save it will be filled'
|
||||
' by the first member from queue')
|
||||
else:
|
||||
warning_message = _('There is a free place for the activity'
|
||||
' : {}, you may fill it manually from '
|
||||
'the queue')
|
||||
return {
|
||||
'warning' : {
|
||||
'title' : _('Warning'),
|
||||
'message': warning_message.format(activity.name)
|
||||
}
|
||||
}
|
52
golem_activity_queue/models/golem_activity_queue.py
Normal file
52
golem_activity_queue/models/golem_activity_queue.py
Normal file
@ -0,0 +1,52 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity Queue """
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
class GolemActivityQueue(models.Model):
|
||||
""" GOLEM Activity Queue """
|
||||
_name = 'golem.activity.queue'
|
||||
_order = 'sequence asc, id asc'
|
||||
_description = 'GOLEM Activity Queue'
|
||||
_sql_constraints = [('golem_activity_queue_uniq', 'UNIQUE (member_id, activity_id)',
|
||||
_('This member has already been registered for the queue.'))]
|
||||
|
||||
member_id = fields.Many2one('golem.member', required=True,
|
||||
string='Member', ondelete='cascade',
|
||||
index=True)
|
||||
activity_id = fields.Many2one('golem.activity', required=True,
|
||||
string='Activity', ondelete='cascade',
|
||||
index=True)
|
||||
season_id = fields.Many2one(related='activity_id.season_id')
|
||||
is_default = fields.Boolean(related='activity_id.is_default')
|
||||
|
||||
places_remain = fields.Integer(related='activity_id.places_remain')
|
||||
sequence = fields.Integer()
|
||||
|
||||
@api.constrains('member_id', 'activity_id')
|
||||
def check_member_registration(self):
|
||||
""" Forbid registration in queue when member is already registred in the
|
||||
activity """
|
||||
for queue in self:
|
||||
if queue.activity_id in \
|
||||
queue.member_id.activity_registration_all_ids.mapped('activity_id'):
|
||||
raise ValidationError(_('The member your trying to add to the queue'
|
||||
' is already registered for this activity'))
|
46
golem_activity_queue/models/golem_member.py
Normal file
46
golem_activity_queue/models/golem_member.py
Normal file
@ -0,0 +1,46 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Member adaptations """
|
||||
|
||||
import logging
|
||||
from odoo import models, fields, api, _
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
class GolemMember(models.Model):
|
||||
""" GOLEM Member adaptations """
|
||||
_inherit = 'golem.member'
|
||||
|
||||
activity_queue_ids = fields.One2many('golem.activity.queue', 'member_id',
|
||||
string='Pending registration')
|
||||
|
||||
@api.onchange('activity_registration_ids')
|
||||
def _check_registration_number(self):
|
||||
""" check activity registration number """
|
||||
for member in self:
|
||||
for registration in member.activity_registration_ids:
|
||||
activity = registration.activity_id
|
||||
if activity.places_remain < 0 and activity.queue_allowed:
|
||||
message = _('This activity : {} is already full, please'
|
||||
' discard changes and register in the queue.')
|
||||
return {
|
||||
'warning' : {
|
||||
'title' : _('Warning'),
|
||||
'message': message.format(activity.name),
|
||||
}
|
||||
}
|
4
golem_activity_queue/security/ir.model.access.csv
Normal file
4
golem_activity_queue/security/ir.model.access.csv
Normal file
@ -0,0 +1,4 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
golem_activity_queue_auditor_rule,GOLEM Activity Queue Auditor Rule,model_golem_activity_queue,golem_base.group_golem_auditor,1,0,0,0
|
||||
golem_activity_queue_user_rule,GOLEM Activity Queue User Rule,model_golem_activity_queue,golem_base.group_golem_user,1,1,1,1
|
||||
golem_activity_queue_manager_rule,GOLEM Activity Queue Manager Rule,model_golem_activity_queue,golem_base.group_golem_manager,1,1,1,1
|
|
BIN
golem_activity_queue/static/description/icon.png
Normal file
BIN
golem_activity_queue/static/description/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
19
golem_activity_queue/tests/__init__.py
Normal file
19
golem_activity_queue/tests/__init__.py
Normal file
@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import test_golem_activity_queue, test_golem_activity, test_golem_member
|
134
golem_activity_queue/tests/test_golem_activity.py
Normal file
134
golem_activity_queue/tests/test_golem_activity.py
Normal file
@ -0,0 +1,134 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity testing """
|
||||
|
||||
from odoo.tests.common import TransactionCase
|
||||
|
||||
|
||||
class TestGolemActivity(TransactionCase):
|
||||
""" GOLEM Activity Queue testing """
|
||||
|
||||
def setUp(self):
|
||||
""" Bootstrap activity """
|
||||
super(TestGolemActivity, self).setUp()
|
||||
self.season = self.env['golem.season'].create({'name': u'Season 1'})
|
||||
self.data_member_1 = {'lastname': u'LAST1',
|
||||
'firstname': u'First1',
|
||||
'season_ids':[(4, self.season.id, False)]}
|
||||
self.data_member_2 = {'lastname': u'LAST2',
|
||||
'firstname': u'First2',
|
||||
'season_ids':[(4, self.season.id, False)]}
|
||||
self.member = self.env['golem.member']
|
||||
type_id = self.env.ref('golem_activity.golem_activity_type_activity')
|
||||
self.data_activity = {
|
||||
'name': u'Activity 1',
|
||||
'season_id': self.season.id,
|
||||
'type_id': type_id.id
|
||||
}
|
||||
self.activity = self.env['golem.activity']
|
||||
self.activity_registration = self.env['golem.activity.registration']
|
||||
self.activity_queue = self.env['golem.activity.queue']
|
||||
|
||||
def test_activity_creation(self):
|
||||
""" Test activity defaults for queue """
|
||||
activity = self.activity.create(self.data_activity)
|
||||
self.assertTrue(activity.queue_allowed)
|
||||
self.assertTrue(activity.auto_registration_from_queue)
|
||||
self.assertEqual(activity.queue_activity_number, 0)
|
||||
self.assertFalse(activity.activity_registration_ids)
|
||||
self.assertFalse(activity.activity_queue_ids)
|
||||
|
||||
def test_auto_registration_toggle(self):
|
||||
""" Test Toggle Autoregistration from queue """
|
||||
activity = self.activity.create(self.data_activity)
|
||||
self.assertTrue(activity.auto_registration_from_queue)
|
||||
activity.auto_registration_toggle()
|
||||
self.assertFalse(activity.auto_registration_from_queue)
|
||||
activity.auto_registration_toggle()
|
||||
self.assertTrue(activity.auto_registration_from_queue)
|
||||
|
||||
def test_queue_allowed_toggle(self):
|
||||
""" Test Toggle queue_allowed """
|
||||
#création de 2 membre est une activité
|
||||
member1 = self.member.create(self.data_member_1)
|
||||
member2 = self.member.create(self.data_member_2)
|
||||
activity = self.activity.create(self.data_activity)
|
||||
registration_data = {'activity_id' : activity.id, 'member_id' : member1.id}
|
||||
queue_data = {'activity_id' : activity.id, 'member_id' : member2.id}
|
||||
|
||||
self.assertTrue(activity.queue_allowed)
|
||||
activity.places = 1
|
||||
self.activity_registration.create(registration_data)
|
||||
self.activity_queue.create(queue_data)
|
||||
|
||||
self.assertTrue(activity.auto_registration_from_queue)
|
||||
activity.queue_allowed_toggle()
|
||||
self.assertFalse(activity.queue_allowed)
|
||||
self.assertFalse(activity.activity_queue_ids)
|
||||
|
||||
queue_activate_wizard_model = self.env['golem.activity.automated.queue.activate.wizard']
|
||||
queue_activate_wizard = queue_activate_wizard_model.create({'activity_id': activity.id})
|
||||
queue_activate_wizard.activate_queue()
|
||||
self.assertTrue(activity.queue_allowed)
|
||||
self.assertTrue(activity.auto_registration_from_queue)
|
||||
|
||||
def test_auto_registration(self):
|
||||
""" Test auto registration from queue """
|
||||
member1 = self.member.create(self.data_member_1)
|
||||
member2 = self.member.create(self.data_member_2)
|
||||
activity = self.activity.create(self.data_activity)
|
||||
self.assertTrue(activity.queue_allowed)
|
||||
self.assertTrue(activity.auto_registration_from_queue)
|
||||
|
||||
registration_data = {'activity_id' : activity.id, 'member_id' : member1.id}
|
||||
queue_data = {'activity_id' : activity.id, 'member_id' : member2.id}
|
||||
|
||||
activity.places = 1
|
||||
registration = self.activity_registration.create(registration_data)
|
||||
self.activity_queue.create(queue_data)
|
||||
self.assertEqual(activity.activity_registration_ids[0].member_id, member1)
|
||||
self.assertEqual(activity.activity_queue_ids[0].member_id, member2)
|
||||
|
||||
registration.unlink()
|
||||
self.assertEqual(activity.activity_registration_ids[0].member_id, member2)
|
||||
self.assertFalse(activity.activity_queue_ids)
|
||||
|
||||
def test_delete_queue_member(self):
|
||||
""" Test Delete Queue member if they directly register """
|
||||
member1 = self.member.create(self.data_member_1)
|
||||
member2 = self.member.create(self.data_member_2)
|
||||
activity = self.activity.create(self.data_activity)
|
||||
self.assertTrue(activity.queue_allowed)
|
||||
self.assertTrue(activity.auto_registration_from_queue)
|
||||
activity.auto_registration_toggle()
|
||||
self.assertFalse(activity.auto_registration_from_queue)
|
||||
|
||||
registration_data = {'activity_id' : activity.id, 'member_id' : member1.id}
|
||||
queue_data = {'activity_id' : activity.id, 'member_id' : member2.id}
|
||||
|
||||
activity.places = 1
|
||||
registration = self.activity_registration.create(registration_data)
|
||||
self.activity_queue.create(queue_data)
|
||||
self.assertEqual(activity.activity_registration_ids[0].member_id, member1)
|
||||
self.assertEqual(activity.activity_queue_ids[0].member_id, member2)
|
||||
registration.unlink()
|
||||
|
||||
activity.activity_registration_ids = [(0, False, queue_data)]
|
||||
self.assertFalse(activity.activity_queue_ids)
|
||||
self.assertEqual(activity.activity_registration_ids[0].member_id, member2)
|
70
golem_activity_queue/tests/test_golem_activity_queue.py
Normal file
70
golem_activity_queue/tests/test_golem_activity_queue.py
Normal file
@ -0,0 +1,70 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity Queue testing """
|
||||
|
||||
from odoo.tests.common import TransactionCase
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class TestGolemActivityQueue(TransactionCase):
|
||||
""" GOLEM Activity Queue testing """
|
||||
|
||||
def setUp(self, *args, **kwargs):
|
||||
""" Bootstrap ActivityQueue """
|
||||
super(TestGolemActivityQueue, self).setUp(*args, **kwargs)
|
||||
|
||||
self.season = self.env['golem.season'].create({'name': u'Season 1'})
|
||||
self.data_member_1 = {'lastname': u'LAST1',
|
||||
'firstname': u'First1',
|
||||
'season_ids':[(4, self.season.id, False)]}
|
||||
self.data_member_2 = {'lastname': u'LAST2',
|
||||
'firstname': u'First2',
|
||||
'season_ids':[(4, self.season.id, False)]}
|
||||
self.member = self.env['golem.member']
|
||||
type_id = self.env.ref('golem_activity.golem_activity_type_activity')
|
||||
self.data_activity = {
|
||||
'name': u'Activity 1',
|
||||
'season_id': self.season.id,
|
||||
'type_id': type_id.id
|
||||
}
|
||||
self.activity = self.env['golem.activity']
|
||||
self.activity_queue = self.env['golem.activity.queue']
|
||||
self.activity_registration = self.env['golem.activity.registration']
|
||||
|
||||
def test_activity_queue_basic(self):
|
||||
""" Test activity queue basics """
|
||||
member1 = self.member.create(self.data_member_1)
|
||||
activity = self.activity.create(self.data_activity)
|
||||
activity.auto_registration_from_queue = False
|
||||
activity_queue = self.activity_queue.create({'activity_id': activity.id,
|
||||
'member_id': member1.id})
|
||||
self.assertEqual(activity.activity_queue_ids[0], activity_queue)
|
||||
self.assertEqual(member1.activity_queue_ids[0], activity_queue)
|
||||
|
||||
def test_check_member_registration(self):
|
||||
""" Test activity queue fordib if already in activity """
|
||||
member1 = self.member.create(self.data_member_1)
|
||||
activity = self.activity.create(self.data_activity)
|
||||
self.activity_registration.create({'activity_id': activity.id,
|
||||
'member_id': member1.id})
|
||||
self.assertEqual(activity.activity_registration_ids[0].member_id, member1)
|
||||
with self.assertRaises(ValidationError) as err:
|
||||
self.activity_queue.create({'activity_id': activity.id,
|
||||
'member_id': member1.id})
|
||||
self.assertIn('already registered for this activity', err.exception.args[0])
|
74
golem_activity_queue/tests/test_golem_member.py
Normal file
74
golem_activity_queue/tests/test_golem_member.py
Normal file
@ -0,0 +1,74 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Member testing """
|
||||
|
||||
from odoo.tests.common import TransactionCase
|
||||
|
||||
|
||||
class TestGolemMember(TransactionCase):
|
||||
""" GOLEM member testing """
|
||||
|
||||
def setUp(self, *args, **kwargs):
|
||||
""" Bootstrap member """
|
||||
super(TestGolemMember, self).setUp(*args, **kwargs)
|
||||
#création du saison
|
||||
self.season = self.env['golem.season'].create({'name': u'Season 1'})
|
||||
self.data_member_1 = {'lastname': u'LAST1',
|
||||
'firstname': u'First1',
|
||||
'season_ids':[(4, self.season.id, False)]}
|
||||
self.data_member_2 = {'lastname': u'LAST2',
|
||||
'firstname': u'First2',
|
||||
'season_ids':[(4, self.season.id, False)]}
|
||||
self.member = self.env['golem.member']
|
||||
type_id = self.env.ref('golem_activity.golem_activity_type_activity')
|
||||
self.data_activity = {
|
||||
'name': u'Activity 1',
|
||||
'season_id': self.season.id,
|
||||
'type_id': type_id.id
|
||||
}
|
||||
self.activity = self.env['golem.activity']
|
||||
self.activity_registration = self.env['golem.activity.registration']
|
||||
self.activity_queue = self.env['golem.activity.queue']
|
||||
|
||||
def test_member_creation(self):
|
||||
""" Test member queue default """
|
||||
member1 = self.member.create(self.data_member_1)
|
||||
self.assertFalse(member1.activity_queue_ids)
|
||||
|
||||
def test_automated_registration(self):
|
||||
""" Test automated registration """
|
||||
member1 = self.member.create(self.data_member_1)
|
||||
member2 = self.member.create(self.data_member_2)
|
||||
activity = self.activity.create(self.data_activity)
|
||||
|
||||
registration_data = {'activity_id' : activity.id, 'member_id' : member1.id}
|
||||
queue_data = {'activity_id' : activity.id, 'member_id' : member2.id}
|
||||
self.assertTrue(activity.queue_allowed)
|
||||
self.assertTrue(activity.auto_registration_from_queue)
|
||||
|
||||
activity.places = 1
|
||||
registration = self.activity_registration.create(registration_data)
|
||||
self.activity_queue.create(queue_data)
|
||||
|
||||
self.assertEqual(activity.activity_registration_ids[0].member_id, member1)
|
||||
self.assertEqual(activity.activity_queue_ids[0].member_id, member2)
|
||||
|
||||
registration.unlink()
|
||||
self.assertEqual(activity.activity_registration_ids[0].member_id, member2)
|
||||
self.assertFalse(activity.activity_queue_ids)
|
96
golem_activity_queue/views/golem_activity_queue_views.xml
Normal file
96
golem_activity_queue/views/golem_activity_queue_views.xml
Normal file
@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Form -->
|
||||
<record model="ir.ui.view" id="golem_activity_queue_view_form">
|
||||
<field name="name">GOLEM Activity Queue Form</field>
|
||||
<field name="model">golem.activity.queue</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="activity_id"/>
|
||||
<field name="season_id"/>
|
||||
<field name="member_id"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Search -->
|
||||
<record model="ir.ui.view" id="golem_activity_queue_view_search">
|
||||
<field name="name">GOLEM Activity Queue Search</field>
|
||||
<field name="model">golem.activity.queue</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="member_id"/>
|
||||
<field name="activity_id"/>
|
||||
<field name="season_id" />
|
||||
<filter name="season_default" string="Default season"
|
||||
domain="[('is_default', '=', True)]" />
|
||||
<separator />
|
||||
<filter name="activity_full" string="Full Activity"
|
||||
domain="[('places_remain', '=', 0)]" />
|
||||
<filter name="activity_nfull" string="Not Full Activity"
|
||||
domain="[('places_remain', '>', 0)]" />
|
||||
<group string="Group By">
|
||||
<filter name="group_by_member" string="Member"
|
||||
context="{'group_by': 'member_id'}"/>
|
||||
<filter name="group_by_activity" string="Activity"
|
||||
context="{'group_by': 'activity_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Tree -->
|
||||
<record model="ir.ui.view" id="golem_activity_queue_view_tree">
|
||||
<field name="name">GOLEM Activity Queue Tree</field>
|
||||
<field name="model">golem.activity.queue</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="top"
|
||||
colors="grey: places_remain == 0; blue : places_remain >= 1">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="member_id"/>
|
||||
<field name="activity_id"
|
||||
domain="[('places_remain','<' , 1), ('queue_allowed', '=', True), ('is_default', '=', True)]"
|
||||
options="{'no_create': True}"/>
|
||||
<field name="season_id" readonly='1'/>
|
||||
<field name="create_date" readonly="1"/>
|
||||
<field name='places_remain' />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Action -->
|
||||
<act_window id="golem_activity_queue_action" name="Activity queue"
|
||||
res_model="golem.activity.queue" view_mode="tree" />
|
||||
|
||||
<!-- Menu -->
|
||||
<menuitem id="golem_activity_queue_menu" name="Activity queue"
|
||||
parent="golem_activity.golem_activity_menu"
|
||||
action="golem_activity_queue_action"
|
||||
sequence="20" />
|
||||
|
||||
</data>
|
||||
</odoo>
|
81
golem_activity_queue/views/golem_activity_views.xml
Normal file
81
golem_activity_queue/views/golem_activity_views.xml
Normal file
@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Forms -->
|
||||
<record id="golem_activity_form_inherit_golem_activity_queue"
|
||||
model="ir.ui.view">
|
||||
<field name="name">Add the queue registration items to activity form</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="inherit_id" ref="golem_activity.golem_activity_form" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="activity_registration_ids" position="after">
|
||||
<button name="register_from_queue" colspan="2"
|
||||
string="Add from queue" type="object"
|
||||
attrs="{'invisible':['|', ('queue_allowed', '=', False), '|',
|
||||
('places_remain','=', 0), ('queue_activity_number', '=', 0)]}"/>
|
||||
</field>
|
||||
<page name="invoicing" position="before">
|
||||
<page name="queue" string="Queue">
|
||||
<group>
|
||||
<field name="queue_allowed" readonly='1'/>
|
||||
<field name="auto_registration_from_queue" readonly='1'/>
|
||||
</group>
|
||||
<group attrs="{'invisible': [('queue_allowed', '=', False)]}">>
|
||||
<field name="queue_activity_number" readonly='1'/>
|
||||
<field name="activity_queue_ids"
|
||||
context="{'default_activity_id': active_id}" >
|
||||
<tree editable="top">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="member_id"/>
|
||||
<field name="activity_id" readonly="1" />
|
||||
<field name="season_id" readonly="1" />
|
||||
</tree>
|
||||
</field>
|
||||
<button name="register_from_queue" colspan="2"
|
||||
string="Register from Queue" type="object"
|
||||
attrs="{'invisible':['|', ('queue_allowed', '=', False), '|',
|
||||
('places_remain','=', 0), ('queue_activity_number', '=', 0)]}"/>
|
||||
</group>
|
||||
</page>
|
||||
</page>
|
||||
<header position="inside">
|
||||
<button class="oe_highlight" name="queue_allowed_toggle"
|
||||
string="Add Queue" type="object"
|
||||
attrs="{'invisible': [('queue_allowed', '=', True)]}"/>
|
||||
<button class="oe_highlight" name="queue_allowed_toggle"
|
||||
string="Remove Queue" type="object"
|
||||
attrs="{'invisible': [('queue_allowed', '=', False)]}"
|
||||
confirm="Are you sure you want to remove queue from this activity ? This will delete all elements currently registred in"/>
|
||||
<button name="auto_registration_toggle"
|
||||
string="Switch to automated registration from queue" type="object"
|
||||
attrs="{'invisible': ['|', ('queue_allowed', '=', False),'&', ('queue_allowed', '=', True), ('auto_registration_from_queue', '=', True)]}"
|
||||
confirm="Are you sure you want to switch to automated registration from queue mode ?"/>
|
||||
<button name="auto_registration_toggle"
|
||||
string="Switch to manual registration from queue" type="object"
|
||||
attrs="{'invisible': ['|', ('queue_allowed', '=', False),'&', ('queue_allowed', '=', True), ('auto_registration_from_queue', '=', False)]}"
|
||||
confirm="Are you sure you want to switch to manual registration from queue mode ?"/>
|
||||
</header>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
50
golem_activity_queue/views/golem_member_views.xml
Normal file
50
golem_activity_queue/views/golem_member_views.xml
Normal file
@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Forms -->
|
||||
<record id="golem_member_form_inherit_golem_activity_queue"
|
||||
model="ir.ui.view">
|
||||
<field name="name">Queue adaptations on member form</field>
|
||||
<field name="model">golem.member</field>
|
||||
<field name="inherit_id" ref="golem_member.golem_member_form" />
|
||||
<field name="arch" type="xml">
|
||||
<page name="activities" position="after">
|
||||
<page name="queue" string="Queue list">
|
||||
<group>
|
||||
<field name="activity_queue_ids"
|
||||
context="{'default_member_id': active_id}">
|
||||
<tree editable="top">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="activity_id"
|
||||
domain="[('places_remain','<' , 1), ('queue_allowed', '=', True), ('is_default', '=', True)]"
|
||||
options="{'no_create': True}"/>
|
||||
<field name="season_id" readonly="1" />
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</page>
|
||||
</page>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
19
golem_activity_queue/wizard/__init__.py
Normal file
19
golem_activity_queue/wizard/__init__.py
Normal file
@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import golem_activity_automated_queue_activate
|
@ -0,0 +1,37 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity Automated Queue Activation """
|
||||
|
||||
from odoo import models, fields
|
||||
|
||||
class GolemActivityAutomatedQueueActivateWizard(models.TransientModel):
|
||||
""" GOLEM Activity Automated Queue wizard : activate automated queue processing """
|
||||
_name = 'golem.activity.automated.queue.activate.wizard'
|
||||
|
||||
activity_id = fields.Many2one('golem.activity')
|
||||
auto_registration_from_queue = fields.Boolean(default=True)
|
||||
|
||||
def activate_queue(self):
|
||||
""" Activate Queue for the activity"""
|
||||
self.ensure_one()
|
||||
activation = self[0]
|
||||
activation.activity_id.write({
|
||||
'queue_allowed': True,
|
||||
'auto_registration_from_queue': activation.auto_registration_from_queue
|
||||
})
|
@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Forms -->
|
||||
<record model="ir.ui.view" id="golem_activity_automated_queue_actiave_wizard_view_form">
|
||||
<field name="name">GOLEM Activity Automated Queue Activate Wizard Form</field>
|
||||
<field name="model">golem.activity.automated.queue.activate.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Rejection reason">
|
||||
<p colspan="2">
|
||||
Are you sure you want to Add queue to this activity ?<br />
|
||||
If yes please confirm if you want automated registration from queue to activity.
|
||||
</p>
|
||||
<group>
|
||||
<field name="activity_id" invisible="1" />
|
||||
<field name="auto_registration_from_queue"/>
|
||||
</group>
|
||||
<footer>
|
||||
<button name="activate_queue" string="Confirm" type="object"
|
||||
class="oe_highlight" />
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
@ -15,4 +15,4 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import golem_activity_session
|
||||
from . import models, wizard
|
36
golem_activity_registration/__manifest__.py
Normal file
36
golem_activity_registration/__manifest__.py
Normal file
@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2017-2020 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
{
|
||||
'name': 'GOLEM Activity Member Registrations',
|
||||
'summary': 'GOLEM Activities Member Registrations management',
|
||||
'version': '10.0.1.6.5',
|
||||
'category': 'GOLEM',
|
||||
'author': 'Fabien Bourgeois, Michel Dessenne',
|
||||
'license': 'AGPL-3',
|
||||
'application': False,
|
||||
'installable': True,
|
||||
'depends': ['golem_activity', 'golem_member'],
|
||||
'data': ['views/golem_activity_registration_views.xml',
|
||||
'views/golem_member_views.xml',
|
||||
'views/golem_activity_views.xml',
|
||||
'report/golem_member_card_templates.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'report/golem_activity_report_templates.xml',
|
||||
'wizard/golem_activity_registration_analysis_wizard_views.xml',
|
||||
'wizard/golem_member_analysis_views.xml']
|
||||
}
|
383
golem_activity_registration/i18n/fr.po
Normal file
383
golem_activity_registration/i18n/fr.po
Normal file
@ -0,0 +1,383 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_registration
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-21 10:49+0000\n"
|
||||
"PO-Revision-Date: 2019-01-21 11:51+0100\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: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "<br/>Mobile :"
|
||||
msgstr "<br/>Mobile :"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "<i class=\"fa fa-envelope\"/> Email"
|
||||
msgstr "<i class=\"fa fa-envelope\"/> Email"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "<i class=\"fa fa-phone\"/> Phone"
|
||||
msgstr "<i class=\"fa fa-phone\"/> Téléphone"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "<i class=\"fa fa-university\"/>City"
|
||||
msgstr "<i class=\"fa fa-university\"/>Ville"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "<i class=\"fa fa-user\"/> Name"
|
||||
msgstr "<i class=\"fa fa-user\"/>Nom"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_form_inherit_golem_activity_registration
|
||||
msgid "Activities"
|
||||
msgstr "Activités"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_activity_registration_ids
|
||||
msgid "Activities for default season"
|
||||
msgstr "Activités de la saison par défaut"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_activity_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_analysis_activity_id
|
||||
msgid "Activity"
|
||||
msgstr "Activité"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.menu,name:golem_activity_registration.golem_activity_registration_menu
|
||||
msgid "Activity registrations"
|
||||
msgstr "Inscriptions"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_age_computing
|
||||
msgid "Age"
|
||||
msgstr "Âge"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_activity_registration_all_ids
|
||||
msgid "All activities"
|
||||
msgstr "Toutes les activités"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_analysis_wizard_view_form
|
||||
msgid "Analyse Registrations"
|
||||
msgstr "Analyse des inscriptions"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_analyse_type
|
||||
msgid "Analyse type"
|
||||
msgstr "Type d'analyse"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.actions.act_window,name:golem_activity_registration.golem_registrations_analysis_action
|
||||
msgid "Analysis"
|
||||
msgstr "Analyse"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Animator"
|
||||
msgstr "Intervenant"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
|
||||
msgid "At season start"
|
||||
msgstr "Au début de la saison"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
|
||||
msgid "At season stop"
|
||||
msgstr "À la fin de la saison"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_tree
|
||||
msgid "Base price"
|
||||
msgstr "Prix de base"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,help:golem_activity_registration.field_golem_activity_registration_activity_price
|
||||
msgid "Base price to compute the customer price. Sometimes called the catalog price."
|
||||
msgstr "Prix de base pour calculer le prix client. Parfois appelé prix catalogue."
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: selection:golem.activity.registration.analysis.wizard,analyse_type:0
|
||||
msgid "By area and activity"
|
||||
msgstr "Par territoire et activité"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_search
|
||||
msgid "By season"
|
||||
msgstr "Par saison"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_create_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Créé par"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_create_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Créé le"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Dates"
|
||||
msgstr "Dates"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Day"
|
||||
msgstr "Jour"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_search
|
||||
msgid "Default season"
|
||||
msgstr "Saison par défaut"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_is_default
|
||||
msgid "Default season?"
|
||||
msgstr "Saison par défaut?"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_display_name
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nom affiché"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "Enroled members :"
|
||||
msgstr "Usagers :"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_search_inherit_registration
|
||||
msgid "Full"
|
||||
msgstr "Plein"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model,name:golem_activity_registration.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr "Activité"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model,name:golem_activity_registration.model_golem_activity_registration
|
||||
msgid "GOLEM Activity Registration"
|
||||
msgstr "Inscription à l'activité"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model,name:golem_activity_registration.model_golem_activity_registration_analysis_wizard
|
||||
msgid "GOLEM Activity Registration Analysis Wizard Adaptation "
|
||||
msgstr "GOLEM Activity Registration Analysis Wizard Adaptation "
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.actions.act_window,name:golem_activity_registration.golem_activity_registration_action
|
||||
msgid "GOLEM Activity Registration List"
|
||||
msgstr "Liste des inscriptions aux activités"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model,name:golem_activity_registration.model_golem_member
|
||||
msgid "GOLEM Member"
|
||||
msgstr "Adhérent"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model,name:golem_activity_registration.model_golem_member_analysis
|
||||
msgid "GOLEM Members Analysis Adaption"
|
||||
msgstr "GOLEM Members Analysis Adaption"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Hours"
|
||||
msgstr "Horaires"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "Landline :"
|
||||
msgstr "Fixe :"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration___last_update
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Dernière Modification le"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_write_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Dernière mise à jour par"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_write_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Dernière mise à jour le"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/wizard/golem_activity_registration_analysis_wizard.py:86
|
||||
#, python-format
|
||||
msgid "Member Analysis"
|
||||
msgstr "Analyse des usagers"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_activity_registration_ids
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_form_inherit_registration
|
||||
msgid "Members"
|
||||
msgstr "Adhérents"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_name
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
|
||||
msgid "Now"
|
||||
msgstr "Ce jour"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:39
|
||||
#: sql_constraint:golem.activity:0
|
||||
#, python-format
|
||||
msgid "Number of places cannot be negative."
|
||||
msgstr "Le nombre de places ne peut pas être négatif"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "On default season, there is no activity for this member."
|
||||
msgstr "Sur la saison par défaut, il n'y a pas d'activité pour cet usager."
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_only_for_subscriber
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_search_inherit_registration
|
||||
msgid "Only for subscriber"
|
||||
msgstr "Réservé aux adhérents"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_end
|
||||
msgid "Period end"
|
||||
msgstr "Fin de la période"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_start
|
||||
msgid "Period start"
|
||||
msgstr "Début de la période"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places
|
||||
msgid "Places"
|
||||
msgstr "Places"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places_used
|
||||
msgid "Places used"
|
||||
msgstr "Places prises"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_searches_inherit_golem_activity_registration
|
||||
msgid "Practiced activities"
|
||||
msgstr "Activités pratiquées"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/wizard/golem_activity_registration_analysis_wizard.py:36
|
||||
#: model:ir.ui.menu,name:golem_activity_registration.golem_activity_registration_analysis_menu
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_analysis_wizard_view_form
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_end_activity_area
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_now_activity_area
|
||||
#, python-format
|
||||
msgid "Registration Analysis"
|
||||
msgstr "Analyse des inscriptions"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_tree_inherit_registration
|
||||
msgid "Remain"
|
||||
msgstr "Reste"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places_remain
|
||||
msgid "Remaining places"
|
||||
msgstr "Places restantes"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_activity_price
|
||||
msgid "Sale Price"
|
||||
msgstr "Prix de vente"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_season_id
|
||||
msgid "Season"
|
||||
msgstr "Saison"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_start_activity_area
|
||||
msgid "Service User Analysis"
|
||||
msgstr "Analyse des usagers"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_member_id
|
||||
msgid "Service user"
|
||||
msgstr "Usager"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:71
|
||||
#, python-format
|
||||
msgid "Sorry, there is no more place !"
|
||||
msgstr "Désolé, il n'y a plus de place disponible !"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_form
|
||||
msgid "Subscription"
|
||||
msgstr "Inscription"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:119
|
||||
#, python-format
|
||||
msgid "Subscription can not be executed : the targeted activity is only for subscriber."
|
||||
msgstr "L'inscription n'a pas pu être faite : l'activité choisie est réservée aux adhérents."
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:123
|
||||
#, python-format
|
||||
msgid "Subscription can not be executed : the targeted member is not on the same season as the activity."
|
||||
msgstr "L'inscription n'a pas pu être enregistrée : l'usager visé n'est pas ahdérant pour la même saison que celle pendant laquelle se déroule l'activité."
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:93
|
||||
#: sql_constraint:golem.activity.registration:0
|
||||
#, python-format
|
||||
msgid "This member has already been registered for this activity."
|
||||
msgstr "L'usager a déjà été inscrit à cette activité."
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_tree
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
383
golem_activity_registration/i18n/golem_activity_registration.pot
Normal file
383
golem_activity_registration/i18n/golem_activity_registration.pot
Normal file
@ -0,0 +1,383 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_registration
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-21 10:49+0000\n"
|
||||
"PO-Revision-Date: 2019-01-21 10:49+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: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "<br/>Mobile :"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "<i class=\"fa fa-envelope\"/> Email"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "<i class=\"fa fa-phone\"/> Phone"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "<i class=\"fa fa-university\"/>City"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "<i class=\"fa fa-user\"/> Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_form_inherit_golem_activity_registration
|
||||
msgid "Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_activity_registration_ids
|
||||
msgid "Activities for default season"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_activity_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_analysis_activity_id
|
||||
msgid "Activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.menu,name:golem_activity_registration.golem_activity_registration_menu
|
||||
msgid "Activity registrations"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_age_computing
|
||||
msgid "Age"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_member_activity_registration_all_ids
|
||||
msgid "All activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_analysis_wizard_view_form
|
||||
msgid "Analyse Registrations"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_analyse_type
|
||||
msgid "Analyse type"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.actions.act_window,name:golem_activity_registration.golem_registrations_analysis_action
|
||||
msgid "Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Animator"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
|
||||
msgid "At season start"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
|
||||
msgid "At season stop"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_tree
|
||||
msgid "Base price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,help:golem_activity_registration.field_golem_activity_registration_activity_price
|
||||
msgid "Base price to compute the customer price. Sometimes called the catalog price."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: selection:golem.activity.registration.analysis.wizard,analyse_type:0
|
||||
msgid "By area and activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_search
|
||||
msgid "By season"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_create_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_create_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Dates"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Day"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_search
|
||||
msgid "Default season"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_is_default
|
||||
msgid "Default season?"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_display_name
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "Enroled members :"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_search_inherit_registration
|
||||
msgid "Full"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model,name:golem_activity_registration.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model,name:golem_activity_registration.model_golem_activity_registration
|
||||
msgid "GOLEM Activity Registration"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model,name:golem_activity_registration.model_golem_activity_registration_analysis_wizard
|
||||
msgid "GOLEM Activity Registration Analysis Wizard Adaptation "
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.actions.act_window,name:golem_activity_registration.golem_activity_registration_action
|
||||
msgid "GOLEM Activity Registration List"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model,name:golem_activity_registration.model_golem_member
|
||||
msgid "GOLEM Member"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model,name:golem_activity_registration.model_golem_member_analysis
|
||||
msgid "GOLEM Members Analysis Adaption"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Hours"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_report_template_inherited_golem_activity_registration
|
||||
msgid "Landline :"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration___last_update
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_write_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_write_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/wizard/golem_activity_registration_analysis_wizard.py:86
|
||||
#, python-format
|
||||
msgid "Member Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_activity_registration_ids
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_form_inherit_registration
|
||||
msgid "Members"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_name
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: selection:golem.activity.registration.analysis.wizard,age_computing:0
|
||||
msgid "Now"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:39
|
||||
#: sql_constraint:golem.activity:0
|
||||
#, python-format
|
||||
msgid "Number of places cannot be negative."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "On default season, there is no activity for this member."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_only_for_subscriber
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_search_inherit_registration
|
||||
msgid "Only for subscriber"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_end
|
||||
msgid "Period end"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_start
|
||||
msgid "Period start"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places
|
||||
msgid "Places"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places_used
|
||||
msgid "Places used"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_searches_inherit_golem_activity_registration
|
||||
msgid "Practiced activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/wizard/golem_activity_registration_analysis_wizard.py:36
|
||||
#: model:ir.ui.menu,name:golem_activity_registration.golem_activity_registration_analysis_menu
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_analysis_wizard_view_form
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_end_activity_area
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_now_activity_area
|
||||
#, python-format
|
||||
msgid "Registration Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_tree_inherit_registration
|
||||
msgid "Remain"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_places_remain
|
||||
msgid "Remaining places"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_activity_price
|
||||
msgid "Sale Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_analysis_wizard_season_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_season_id
|
||||
msgid "Season"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_analysis_pivot_age_start_activity_area
|
||||
msgid "Service User Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration.field_golem_activity_registration_member_id
|
||||
msgid "Service user"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:71
|
||||
#, python-format
|
||||
msgid "Sorry, there is no more place !"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_form
|
||||
msgid "Subscription"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:119
|
||||
#, python-format
|
||||
msgid "Subscription can not be executed : the targeted activity is only for subscriber."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:123
|
||||
#, python-format
|
||||
msgid "Subscription can not be executed : the targeted member is not on the same season as the activity."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: code:addons/golem_activity_registration/models/golem_activity_registration.py:93
|
||||
#: sql_constraint:golem.activity.registration:0
|
||||
#, python-format
|
||||
msgid "This member has already been registered for this activity."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_activity_registration_tree
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration.golem_member_card_template_inherit_golem_activity_resgitration
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
@ -15,4 +15,4 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import test_golem_activity_session
|
||||
from . import golem_activity_registration
|
@ -0,0 +1,125 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright 2017-2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity Registration """
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
|
||||
class GolemMember(models.Model):
|
||||
""" GOLEM Member adaptations """
|
||||
_inherit = 'golem.member'
|
||||
|
||||
activity_registration_ids = fields.One2many('golem.activity.registration',
|
||||
'member_id',
|
||||
'Activities for default season',
|
||||
domain=[('is_default', '=', True)])
|
||||
activity_registration_all_ids = fields.One2many('golem.activity.registration',
|
||||
'member_id', 'All activities')
|
||||
|
||||
|
||||
class GolemActivity(models.Model):
|
||||
""" GOLEM Activity adaptations """
|
||||
_inherit = 'golem.activity'
|
||||
_sql_constraints = [('golem_activity_places_signed',
|
||||
'CHECK (places >= 0)',
|
||||
_('Number of places cannot be negative.'))]
|
||||
|
||||
activity_registration_ids = fields.One2many('golem.activity.registration',
|
||||
'activity_id', 'Members',
|
||||
index=True)
|
||||
places_used = fields.Integer('Places used', compute='compute_places_used',
|
||||
store=True)
|
||||
only_for_subscriber = fields.Boolean(default=False)
|
||||
|
||||
@api.multi
|
||||
@api.depends('activity_registration_ids')
|
||||
def compute_places_used(self):
|
||||
""" Computes used places """
|
||||
for activity in self:
|
||||
activity.places_used = len(activity.activity_registration_ids)
|
||||
|
||||
places = fields.Integer('Places', default=20)
|
||||
places_remain = fields.Integer('Remaining places', store=True,
|
||||
compute='_compute_places_remain')
|
||||
|
||||
@api.multi
|
||||
@api.depends('places', 'places_used')
|
||||
def _compute_places_remain(self):
|
||||
""" Computes remaining places """
|
||||
for activity in self:
|
||||
activity.places_remain = activity.places - activity.places_used
|
||||
|
||||
@api.constrains('places_remain')
|
||||
def _check_remaining_places(self):
|
||||
""" Forbid inscription when there is no more place """
|
||||
for activity in self:
|
||||
if activity.places_remain < 0:
|
||||
emsg = _('Sorry, there is no more place !')
|
||||
raise models.ValidationError(emsg)
|
||||
|
||||
|
||||
class GolemActivityRegistration(models.Model):
|
||||
""" GOLEM Activity Registration """
|
||||
_name = 'golem.activity.registration'
|
||||
_description = 'GOLEM Activity Registration'
|
||||
_rec_name = 'activity_id'
|
||||
|
||||
member_id = fields.Many2one('golem.member', string='Service user',
|
||||
required=True, ondelete='cascade', index=True)
|
||||
activity_id = fields.Many2one('golem.activity', required=True, index=True,
|
||||
string='Activity', ondelete='cascade')
|
||||
activity_price = fields.Float(related='activity_id.list_price')
|
||||
season_id = fields.Many2one(string='Season',
|
||||
related='activity_id.season_id', store=True)
|
||||
is_default = fields.Boolean('Default season?',
|
||||
related='activity_id.is_default')
|
||||
|
||||
_sql_constraints = [
|
||||
('registration_uniq', 'UNIQUE (member_id, activity_id)',
|
||||
_('This member has already been registered for this activity.'))]
|
||||
|
||||
@api.onchange('activity_id', 'activity_id.only_for_subscriber')
|
||||
def onchange_activity_subcrib(self):
|
||||
""" If activity only for subscribers : do not allow non subscribers """
|
||||
domain = [('is_default', '=', True)]
|
||||
if self.activity_id.only_for_subscriber:
|
||||
domain.append(('membership_state', 'not in', ('none', 'canceled', 'old')))
|
||||
return {'domain': {'member_id': domain}}
|
||||
|
||||
@api.onchange('member_id')
|
||||
def onchange_member_subcrib(self):
|
||||
""" If not subscriber : do not show subscribers only activities """
|
||||
domain = [('is_default', '=', True)]
|
||||
if self.member_id and self.member_id.membership_state in ('none', 'canceled', 'old'):
|
||||
domain.append(('only_for_subscriber', '=', False))
|
||||
return {'domain': {'activity_id': domain}}
|
||||
|
||||
|
||||
@api.constrains('member_id', 'activity_id')
|
||||
def _check_season_reliability(self):
|
||||
""" Forbid registration when member season if not coherent with
|
||||
activity season or are duplicates """
|
||||
for reg in self:
|
||||
if (reg.activity_id.only_for_subscriber and \
|
||||
reg.member_id.membership_state in ['none', 'canceled', 'old']):
|
||||
emsg = _('Subscription can not be executed : the targeted '
|
||||
'activity is only for subscriber.')
|
||||
raise models.ValidationError(emsg)
|
||||
if reg.activity_id.season_id not in reg.member_id.season_ids:
|
||||
emsg = _('Subscription can not be executed : the targeted '
|
||||
'member is not on the same season as the activity.')
|
||||
raise models.ValidationError(emsg)
|
@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
|
||||
<template id="golem_activity_report_template_inherited_golem_activity_registration"
|
||||
inherit_id="golem_activity.golem_activity_report_template">
|
||||
<xpath expr="//div[@id='page_report_activity']" position="inside">
|
||||
<div class="col-xs-4 text-left" style="margin-top: 50px;" >
|
||||
<h4 style="text-decoration: underline;">
|
||||
Enroled members : <span t-field="activity.places_used" />
|
||||
</h4>
|
||||
</div>
|
||||
<table class="table table-striped" id="members_table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-xs-3"><i class="fa fa-user" /> Name</th>
|
||||
<th class="col-xs-3"><i class="fa fa-phone" /> Phone</th>
|
||||
<th class="col-xs-3"><i class="fa fa-envelope" /> Email</th>
|
||||
<th class="col-xs-3"><i class="fa fa-university" />City</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr id="activity_registration_line"
|
||||
t-foreach="activity.activity_registration_ids" t-as="reg">
|
||||
<td class="col-xs-3">
|
||||
<span t-field="reg.member_id.name" />
|
||||
</td>
|
||||
<td class="col-xs-3">
|
||||
<t t-set="two_phones" t-value="reg.member_id.phone and reg.member_id.mobile" />
|
||||
<t t-if="reg.member_id.phone">
|
||||
<t t-if="two_phones">
|
||||
Landline :
|
||||
</t>
|
||||
<span t-field="reg.member_id.phone" />
|
||||
</t>
|
||||
<t t-if="reg.member_id.mobile">
|
||||
<t t-if="two_phones">
|
||||
<br />Mobile :
|
||||
</t>
|
||||
<span t-field="reg.member_id.mobile" />
|
||||
</t>
|
||||
</td>
|
||||
<td class="col-xs-3">
|
||||
<span t-field="reg.member_id.email" />
|
||||
</td>
|
||||
<td class="col-xs-3">
|
||||
<span t-field="reg.member_id.city" />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
</odoo>
|
@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
Copyright 2018 Michel Dessenne <michel@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
|
||||
<template id="golem_member_card_template_inherit_golem_activity_resgitration"
|
||||
inherit_id="golem_member.golem_member_card_template">
|
||||
<xpath expr="//div[@id='page_report_member']" postion="inside">
|
||||
<h3>Activities</h3>
|
||||
<p t-if="not member.activity_registration_ids">
|
||||
On default season, there is no activity for this member.
|
||||
</p>
|
||||
<table t-else="" id="table_activity_ref" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Type</th>
|
||||
<th>Animator</th>
|
||||
<th>Day</th>
|
||||
<th class="text-right">Hours</th>
|
||||
<th class="text-right">Dates</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr t-foreach="member.activity_registration_ids" t-as="reg">
|
||||
<td>
|
||||
<span t-field="reg.activity_id.name" />
|
||||
</td>
|
||||
<td>
|
||||
<span t-field="reg.activity_id.type_id.name" />
|
||||
</td>
|
||||
<td>
|
||||
<span t-field="reg.activity_id.animator_id" />
|
||||
</td>
|
||||
<td>
|
||||
<span t-field="reg.activity_id.weekday" />
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<t t-esc="'%02d:%02d' % (int(reg.activity_id.hour_start), round(reg.activity_id.hour_start % 1 * 60))" />
|
||||
-
|
||||
<t t-esc="'%02d:%02d' % (int(reg.activity_id.hour_stop), round(reg.activity_id.hour_stop % 1 * 60))" />
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<span t-if="reg.activity_id.is_fullseason" t-field="season.date_start" />
|
||||
<span t-else="" t-field="reg.activity_id.date_start" />
|
||||
-
|
||||
<span t-if="reg.activity_id.is_fullseason" t-field="season.date_end" />
|
||||
<span t-else="" t-field="reg.activity_id.date_stop" />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
</odoo>
|
4
golem_activity_registration/security/ir.model.access.csv
Normal file
4
golem_activity_registration/security/ir.model.access.csv
Normal file
@ -0,0 +1,4 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_golem_activity_registration_auditor,Access GOLEM Activity Registration Auditor,model_golem_activity_registration,golem_base.group_golem_auditor,1,0,0,0
|
||||
access_golem_activity_registration_user,Access GOLEM Activity Registration User,model_golem_activity_registration,golem_base.group_golem_user,1,1,1,1
|
||||
access_golem_activity_registration_manager,Access GOLEM Activity Registration Manager,model_golem_activity_registration,golem_base.group_golem_manager,1,1,1,1
|
|
@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2017-2020 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Form -->
|
||||
<record id="golem_activity_registration_form" model="ir.ui.view">
|
||||
<field name="name">Activity registration form</field>
|
||||
<field name="model">golem.activity.registration</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header></header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group name="subscription" string="Subscription">
|
||||
<field name="activity_id" />
|
||||
<field name="season_id" />
|
||||
<field name="member_id" />
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Tree -->
|
||||
<record id="golem_activity_registration_tree" model="ir.ui.view">
|
||||
<field name="name">Activity registration list</field>
|
||||
<field name="model">golem.activity.registration</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree create="true" edit="true" delete="false" editable="top">
|
||||
<field name="season_id" readonly="1"
|
||||
invisible="not context.get('season_show', 1)" />
|
||||
<field name="member_id" domain="[('is_default', '=', True)]"
|
||||
invisible="not context.get('member_show', 1)" />
|
||||
<field name="activity_id" domain="[('is_default', '=', True)]"
|
||||
invisible="not context.get('activity_show', 1)" />
|
||||
<field name="activity_price" string="Base price" sum="Total"
|
||||
invisible="not context.get('activity_show', 1)" readonly="1" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Search -->
|
||||
<record id="golem_activity_registration_search" model="ir.ui.view">
|
||||
<field name="name">GOLEM Activity Registration searches</field>
|
||||
<field name="model">golem.activity.registration</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="season_id" />
|
||||
<field name="member_id" />
|
||||
<field name="activity_id" />
|
||||
<filter name="season_default" string="Default season"
|
||||
domain="[('is_default', '=', True)]" />
|
||||
<filter name="group_season" string="By season"
|
||||
context="{'group_by': 'season_id'}"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Action -->
|
||||
<record id="golem_activity_registration_action" model="ir.actions.act_window">
|
||||
<field name="name">GOLEM Activity Registration List</field>
|
||||
<field name="res_model">golem.activity.registration</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<!-- Menu -->
|
||||
<menuitem id="golem_activity_registration_menu" name="Activity registrations"
|
||||
parent="golem_activity.golem_activity_menu"
|
||||
action="golem_activity_registration_action"
|
||||
groups="golem_base.group_golem_user,golem_base.group_golem_auditor"
|
||||
sequence="20" />
|
||||
|
||||
</data>
|
||||
</odoo>
|
79
golem_activity_registration/views/golem_activity_views.xml
Normal file
79
golem_activity_registration/views/golem_activity_views.xml
Normal file
@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2017 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Form -->
|
||||
<record id="golem_activity_form_inherit_registration"
|
||||
model="ir.ui.view">
|
||||
<field name="name">Activity Registrations and Places</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="inherit_id" ref="golem_activity.golem_activity_form" />
|
||||
<field name="arch" type="xml">
|
||||
<group name="places" position="inside">
|
||||
<field name="places" />
|
||||
</group>
|
||||
<page name="session" position="after">
|
||||
<page string="Members">
|
||||
<group>
|
||||
<field name="places_remain" readonly="True" />
|
||||
<field name="activity_registration_ids"
|
||||
context="{'default_activity_id': active_id, 'season_show': 0, 'activity_show': 0}" />
|
||||
</group>
|
||||
</page>
|
||||
</page>
|
||||
<field name="audience_id" position="before">
|
||||
<field name="only_for_subscriber"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Tree -->
|
||||
<record id="golem_activity_tree_inherit_registration" model="ir.ui.view">
|
||||
<field name="name">Activity Tree registrations additions</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="inherit_id" ref="golem_activity.golem_activity_tree" />
|
||||
<field name="arch" type="xml">
|
||||
<tree position="attributes">
|
||||
<attribute name="colors">red: places_remain == 0;orange: places_remain <= 4;</attribute>
|
||||
</tree>
|
||||
<field name="hour_start_display" position="after">
|
||||
<field name="places" invisible="True" />
|
||||
<field name="places_remain" string="Remain" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Search -->
|
||||
<record id="golem_activity_search_inherit_registration" model="ir.ui.view">
|
||||
<field name="name">Activity Search registrations additions</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="inherit_id" ref="golem_activity.golem_activity_search" />
|
||||
<field name="arch" type="xml">
|
||||
<filter name="season_default" position="after">
|
||||
<filter name="full_activity" string="Full"
|
||||
domain="[('places_remain', '=', 0)]" />
|
||||
<filter name="only_for_subscriber" string="Only for subscriber"
|
||||
domain="[('only_for_subscriber', '=', True)]"/>
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
57
golem_activity_registration/views/golem_member_views.xml
Normal file
57
golem_activity_registration/views/golem_member_views.xml
Normal file
@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2017 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Form -->
|
||||
<record id="golem_member_form_inherit_golem_activity_registration"
|
||||
model="ir.ui.view">
|
||||
<field name="name">Add activities registrations to member form</field>
|
||||
<field name="model">golem.member</field>
|
||||
<field name="inherit_id" ref="golem_member.golem_member_form" />
|
||||
<field name="arch" type="xml">
|
||||
<page name="membership" position="before">
|
||||
<page name="activities" string="Activities">
|
||||
<field name="id" invisible="1" />
|
||||
<group>
|
||||
<field name="activity_registration_ids"
|
||||
attrs="{'readonly': [('id', '=', False)]}"
|
||||
context="{'default_member_id': active_id, 'member_show': 0}" />
|
||||
<field name="activity_registration_all_ids" readonly="1"
|
||||
context="{'member_show': 0}" />
|
||||
</group>
|
||||
</page>
|
||||
</page>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Searches -->
|
||||
<record id="golem_member_searches_inherit_golem_activity_registration"
|
||||
model="ir.ui.view">
|
||||
<field name="name">Add activities registrations to member searches</field>
|
||||
<field name="model">golem.member</field>
|
||||
<field name="inherit_id" ref="golem_member.golem_member_search" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="season_ids" position="after">
|
||||
<field name="activity_registration_all_ids" widget="many2one"
|
||||
string="Practiced activities" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
19
golem_activity_registration/wizard/__init__.py
Normal file
19
golem_activity_registration/wizard/__init__.py
Normal file
@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import golem_activity_registration_analysis_wizard, golem_member_analysis
|
@ -0,0 +1,106 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity Registration Analysis Wizard Management """
|
||||
|
||||
import logging
|
||||
from odoo import models, fields, api, _
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class GolemActivityRegistrationAnalysisWizard(models.TransientModel):
|
||||
""" GOLEM Activity Registration Analysis Wizard Management """
|
||||
_name = 'golem.activity.registration.analysis.wizard'
|
||||
_description = 'GOLEM Activity Registration Analysis Wizard Management '
|
||||
|
||||
def default_season(self):
|
||||
""" Get default season """
|
||||
domain = [('is_default', '=', True)]
|
||||
return self.env['golem.season'].search(domain, limit=1)
|
||||
|
||||
name = fields.Char(default='/')
|
||||
season_id = fields.Many2one('golem.season', 'Season', required=True,
|
||||
default=default_season, ondelete='cascade')
|
||||
season_start = fields.Date(related='season_id.date_start')
|
||||
season_end = fields.Date(related='season_id.date_end')
|
||||
analyse_type = fields.Selection([('activity_area', 'By area and activity')],
|
||||
default='activity_area', required=True)
|
||||
age_computing = fields.Selection([('season_start', 'At season start'),
|
||||
('season_end', 'At season stop'),
|
||||
('now', 'Now')], required=True,
|
||||
default='season_start', string='Age')
|
||||
|
||||
@api.multi
|
||||
def get_pivot_view(self):
|
||||
""" get pivot view """
|
||||
self.ensure_one()
|
||||
rec = self[0]
|
||||
ref = u''
|
||||
if rec.age_computing == 'season_start':
|
||||
if rec.analyse_type == 'activity_area':
|
||||
ref = (u'golem_activity_registration.'
|
||||
'golem_member_analysis_pivot_age_start_activity_area')
|
||||
elif rec.age_computing == 'season_end':
|
||||
if rec.analyse_type == 'activity_area':
|
||||
ref = (u'golem_activity_registration.'
|
||||
'golem_member_analysis_pivot_age_end_activity_area')
|
||||
else: # now
|
||||
if rec.analyse_type == 'activity_area':
|
||||
ref = (u'golem_activity_registration.'
|
||||
'golem_member_analysis_pivot_age_now_activity_area')
|
||||
return self.env.ref(ref, False)
|
||||
|
||||
@api.multi
|
||||
def get_registrations(self):
|
||||
""" Returns registrations """
|
||||
self.ensure_one()
|
||||
return self.env['golem.activity.registration'].search(
|
||||
[('season_id', '=', self[0].season_id.id)]
|
||||
)
|
||||
|
||||
|
||||
@api.multi
|
||||
def registration_analyse(self):
|
||||
""" registration analyse """
|
||||
self.ensure_one()
|
||||
analysis_rec = self[0]
|
||||
# Remove existing analysis lines for current analysis
|
||||
self.env['golem.member.analysis'].search(
|
||||
[('resgistration_analysis_id', '=', analysis_rec.id)]
|
||||
).unlink()
|
||||
|
||||
registrations = analysis_rec.get_registrations()
|
||||
if registrations:
|
||||
for registration in registrations:
|
||||
self.env['golem.member.analysis'].create({
|
||||
'season_id': analysis_rec.season_id.id,
|
||||
'member_id': registration.member_id.id,
|
||||
'activity_id': registration.activity_id.id,
|
||||
'resgistration_analysis_id': analysis_rec.id
|
||||
})
|
||||
analyse_pivot = analysis_rec.get_pivot_view()
|
||||
return {
|
||||
'name': _('Registration Analysis'),
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'golem.member.analysis',
|
||||
'domain': [('resgistration_analysis_id', '=', analysis_rec.id)],
|
||||
'view_type': 'pivot',
|
||||
'view_mode': 'pivot',
|
||||
'view_id': analyse_pivot.id,
|
||||
'target': 'current',
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
Copyright 2019-2020 Fabien Bourgeois <fabien@yaltik.com>
|
||||
Copyright 2019-2020 Youssef El Ouahby <youssef@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Forms -->
|
||||
<record model="ir.ui.view" id="golem_activity_registration_analysis_wizard_view_form">
|
||||
<field name="name">GOLEM Activity Registration Analyse Wizard Form</field>
|
||||
<field name="model">golem.activity.registration.analysis.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Registration Analysis">
|
||||
<header>
|
||||
<button name="registration_analyse" string="Analyse Registrations"
|
||||
type="object" class="oe_highlight" />
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="season_id" options="{'no_create': True}"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="season_start" readonly="1"/>
|
||||
<field name="season_end" readonly="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="analyse_type" widget="radio"/>
|
||||
<field name="age_computing" widget="radio"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Actions -->
|
||||
<act_window id="golem_registrations_analysis_action" name="Analysis"
|
||||
res_model="golem.activity.registration.analysis.wizard" view_mode="form"
|
||||
target="current"/>
|
||||
|
||||
<menuitem id="golem_activity_registration_analysis_menu"
|
||||
name="Registration Analysis"
|
||||
parent="golem_activity.golem_activity_menu"
|
||||
groups="golem_base.group_golem_user,golem_base.group_golem_auditor"
|
||||
action="golem_registrations_analysis_action" sequence="50" />
|
||||
|
||||
</data>
|
||||
</odoo>
|
33
golem_activity_registration/wizard/golem_member_analysis.py
Normal file
33
golem_activity_registration/wizard/golem_member_analysis.py
Normal file
@ -0,0 +1,33 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Members Analysis Adaptation """
|
||||
|
||||
import logging
|
||||
from odoo import models, fields, api, _
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
class GolemMemberAnalysis(models.TransientModel):
|
||||
""" GOLEM Member Analysis Adaptation """
|
||||
_inherit = 'golem.member.analysis'
|
||||
_description = 'GOLEM Member Analysis Adaptation'
|
||||
|
||||
resgistration_analysis_id = fields.Many2one(
|
||||
'golem.activity.registration.analysis.wizard', index=True
|
||||
)
|
||||
activity_id = fields.Many2one('golem.activity', 'Activity')
|
@ -0,0 +1,60 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Pivots -->
|
||||
<record id="golem_member_analysis_pivot_age_start_activity_area" model="ir.ui.view">
|
||||
<field name="name">Golem Member Analysis Age Start Activity Area Pivot</field>
|
||||
<field name="model">golem.member.analysis</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Service User Analysis">
|
||||
<field name="age_range_start_season" type="col"/>
|
||||
<field name="activity_id" type="row"/>
|
||||
<field name="area_id" type="row"/>
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
<record id="golem_member_analysis_pivot_age_end_activity_area" model="ir.ui.view">
|
||||
<field name="name">Golem Member Analysis Age End Activity Area Pivot</field>
|
||||
<field name="model">golem.member.analysis</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Registration Analysis">
|
||||
<field name="age_range_end_season" type="col"/>
|
||||
<field name="activity_id" type="row"/>
|
||||
<field name="area_id" type="row"/>
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
<record id="golem_member_analysis_pivot_age_now_activity_area" model="ir.ui.view">
|
||||
<field name="name">Golem Member Analysis Age Now Activity Area Pivot</field>
|
||||
<field name="model">golem.member.analysis</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Registration Analysis">
|
||||
<field name="age_range_now" type="col"/>
|
||||
<field name="activity_id" type="row"/>
|
||||
<field name="area_id" type="row"/>
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
18
golem_activity_registration_custom_price/__init__.py
Normal file
18
golem_activity_registration_custom_price/__init__.py
Normal file
@ -0,0 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import models, wizard
|
41
golem_activity_registration_custom_price/__manifest__.py
Normal file
41
golem_activity_registration_custom_price/__manifest__.py
Normal file
@ -0,0 +1,41 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018-2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
{
|
||||
'name': 'GOLEM Activity Registration Custom Price',
|
||||
'summary': 'GOLEM Activity Registration Custom Price',
|
||||
'description': '''GOLEM Activity Registration Custom Price :
|
||||
- allow set of 1:n slices based on family quotient ;
|
||||
- allow set 1:n root area data ;
|
||||
- allow set price per area and slice ;
|
||||
- computes automatically applicable price ;
|
||||
- anticipate ruleset to be implemented for computing.''',
|
||||
'version': '10.0.0.3.2',
|
||||
'category': 'GOLEM',
|
||||
'author': 'Fabien Bourgeois',
|
||||
'license': 'AGPL-3',
|
||||
'application': False,
|
||||
'installable': True,
|
||||
'depends': ['golem_activity_registration_payment',
|
||||
'golem_member_familyquotient'],
|
||||
'data': ['security/ir.model.access.csv',
|
||||
'views/golem_payment_rule_quotient_slice_views.xml',
|
||||
'views/golem_member_views.xml',
|
||||
'views/golem_activity_views.xml',
|
||||
'wizard/golem_activity_registration_invoicing_views.xml',
|
||||
'wizard/golem_member_analysis_views.xml']
|
||||
}
|
268
golem_activity_registration_custom_price/i18n/fr.po
Normal file
268
golem_activity_registration_custom_price/i18n/fr.po
Normal file
@ -0,0 +1,268 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_registration_custom_price
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-21 10:20+0000\n"
|
||||
"PO-Revision-Date: 2019-01-21 11:21+0100\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: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_activity_id
|
||||
msgid "Activity id"
|
||||
msgstr "Activité liée"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
|
||||
msgid "Are you sure you want to RESET ALL options ?"
|
||||
msgstr "Êtes-vous sûr de vouloir REINITIALISER TOUTES les options tarifaires ?"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
|
||||
msgid "Are you sure you want to apply default price to all other options ?"
|
||||
msgstr "Êtes-vous sûr de vouloir appliquer le tarif par défaut aux autres options ?"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_area_id
|
||||
msgid "Area"
|
||||
msgstr "Territoire"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_partner_area_menu
|
||||
msgid "Areas"
|
||||
msgstr "Territoires"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,help:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_activity_price
|
||||
msgid "Base price to compute the customer price. Sometimes called the catalog price."
|
||||
msgstr "Prix de base pour calculer le prix usager. Parfois appelé prix catalogue."
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_create_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Créé par"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_create_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Créé le"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_currency_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_currency_id
|
||||
msgid "Currency id"
|
||||
msgstr "Currency id"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:66
|
||||
#, python-format
|
||||
msgid "Current family quotient slice cannot be included into another existing slice."
|
||||
msgstr "La tranche de quotient familial ne peut être incluse dans une tranche existante."
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:30
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_registration_invoicing_form_inherit_custom_price
|
||||
#, python-format
|
||||
msgid "Default price"
|
||||
msgstr "Prix par défaut"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_display_name
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nom affiché"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.actions.act_window,name:golem_activity_registration_custom_price.golem_payment_rule_qfslice_action
|
||||
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_payment_rule_qfslice_menu
|
||||
msgid "Family Quotients"
|
||||
msgstr "Quotients familiaux"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:62
|
||||
#, python-format
|
||||
msgid "Family quotient and area"
|
||||
msgstr "Quotient familial et territoire"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:60
|
||||
#, python-format
|
||||
msgid "Family quotient but random area"
|
||||
msgstr "Quotient familial mais territoire aléatoire"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_family_quotient_from
|
||||
msgid "Family quotient from"
|
||||
msgstr "QF à partir de"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:56
|
||||
#, python-format
|
||||
msgid "Family quotient from is in range of an existing slice."
|
||||
msgstr "La borne basse du quotient familial fait partie d'une tranche existante."
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_slice_id
|
||||
msgid "Family quotient slice"
|
||||
msgstr "Tranche de quotient familial"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_member_analysis_family_quotient_slice_id
|
||||
msgid "Family quotient slice id"
|
||||
msgstr "Tranche de quotient familial"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_family_quotient_to
|
||||
msgid "Family quotient to"
|
||||
msgstr "QF jusqu'à"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:61
|
||||
#, python-format
|
||||
msgid "Family quotient to is in range of an existing slice."
|
||||
msgstr "La borne haute du quotient familial fait partie d'une tranche existante."
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr "Activité"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity_price_line
|
||||
msgid "GOLEM Activity Price Line"
|
||||
msgstr "GOLEM Activity Price Line"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity_registration_invoicing_line
|
||||
msgid "GOLEM Activity Registration Invoicing Lines"
|
||||
msgstr "GOLEM Activity Registration Invoicing Lines"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member
|
||||
msgid "GOLEM Member"
|
||||
msgstr "Usager"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member_analysis_wizard
|
||||
msgid "GOLEM Members Analysis Wizard Adaptation"
|
||||
msgstr "GOLEM Members Analysis Wizard Adaptation"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member_analysis
|
||||
msgid "GOLEM Members Analysis Adaption"
|
||||
msgstr "GOLEM Members Analysis Adaption"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_payment_rule_familyquotient_slice
|
||||
msgid "GOLEM Payment Rule Family Quotient Slice"
|
||||
msgstr "GOLEM Payment Rule Family Quotient Slice"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line___last_update
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Dernière Modification le"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_write_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Dernière mise à jour par"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_write_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Dernière mise à jour le"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_name
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
|
||||
msgid "Populates other / new options with default price"
|
||||
msgstr "Alimenter les autres ou nouvelles options avec le tarif par défaut"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_price
|
||||
msgid "Price"
|
||||
msgstr "Prix"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_ids
|
||||
msgid "Price lines"
|
||||
msgstr "Lignes tarifaires"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
|
||||
msgid "Prices"
|
||||
msgstr "Tarifs"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_pricing_info
|
||||
msgid "Pricing info"
|
||||
msgstr "Information tarifaire"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_payment_rule_menu
|
||||
msgid "Pricing rules"
|
||||
msgstr "Règles tarifaires"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
|
||||
msgid "Resets all options with default price"
|
||||
msgstr "Réinitialiser toutes les options tarifaires avec le prix par défaut"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_activity_price
|
||||
msgid "Sale Price"
|
||||
msgstr "Prix de vente"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_area_sequence
|
||||
msgid "Sequence"
|
||||
msgstr "Séquence"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_member_analysis_pivot_fquotientslice_area
|
||||
msgid "Service User Analysis"
|
||||
msgstr "Analyse des usagers"
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:49
|
||||
#, python-format
|
||||
msgid "The 'to' family quotient must be higher than the 'from' one."
|
||||
msgstr "La borne haute du quotient familial doit être supérieure à la borne basse."
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_activity_price_line.py:30
|
||||
#: sql_constraint:golem.activity.price.line:0
|
||||
#, python-format
|
||||
msgid "This activity, geo rule, FQ slice rule has already been used."
|
||||
msgstr "Cette activité, ce territoire et cette tranche QF ont déjà été renseignées."
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:31
|
||||
#: sql_constraint:golem.payment.rule.familyquotient.slice:0
|
||||
#, python-format
|
||||
msgid "This name has already been used. It must be unique."
|
||||
msgstr "Ce nom a déjà été utilisé. Il doit être unique."
|
||||
|
@ -0,0 +1,268 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_registration_custom_price
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-21 10:20+0000\n"
|
||||
"PO-Revision-Date: 2019-01-21 10:20+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: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_activity_id
|
||||
msgid "Activity id"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
|
||||
msgid "Are you sure you want to RESET ALL options ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
|
||||
msgid "Are you sure you want to apply default price to all other options ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_area_id
|
||||
msgid "Area"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_partner_area_menu
|
||||
msgid "Areas"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,help:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_activity_price
|
||||
msgid "Base price to compute the customer price. Sometimes called the catalog price."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_create_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_create_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_currency_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_currency_id
|
||||
msgid "Currency id"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:66
|
||||
#, python-format
|
||||
msgid "Current family quotient slice cannot be included into another existing slice."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:30
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_registration_invoicing_form_inherit_custom_price
|
||||
#, python-format
|
||||
msgid "Default price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_display_name
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.actions.act_window,name:golem_activity_registration_custom_price.golem_payment_rule_qfslice_action
|
||||
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_payment_rule_qfslice_menu
|
||||
msgid "Family Quotients"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:62
|
||||
#, python-format
|
||||
msgid "Family quotient and area"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_member.py:60
|
||||
#, python-format
|
||||
msgid "Family quotient but random area"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_family_quotient_from
|
||||
msgid "Family quotient from"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:56
|
||||
#, python-format
|
||||
msgid "Family quotient from is in range of an existing slice."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_slice_id
|
||||
msgid "Family quotient slice"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_member_analysis_family_quotient_slice_id
|
||||
msgid "Family quotient slice id"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_family_quotient_to
|
||||
msgid "Family quotient to"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:61
|
||||
#, python-format
|
||||
msgid "Family quotient to is in range of an existing slice."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity_price_line
|
||||
msgid "GOLEM Activity Price Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_activity_registration_invoicing_line
|
||||
msgid "GOLEM Activity Registration Invoicing Lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member
|
||||
msgid "GOLEM Member"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member_analysis_wizard
|
||||
msgid "GOLEM Members Analysis Wizard Adaptation"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_member_analysis
|
||||
msgid "GOLEM Members Analysis Adaption"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model,name:golem_activity_registration_custom_price.model_golem_payment_rule_familyquotient_slice
|
||||
msgid "GOLEM Payment Rule Family Quotient Slice"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line___last_update
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_write_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_write_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_payment_rule_familyquotient_slice_name
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
|
||||
msgid "Populates other / new options with default price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_price
|
||||
msgid "Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_ids
|
||||
msgid "Price lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
|
||||
msgid "Prices"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_pricing_info
|
||||
msgid "Pricing info"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.menu,name:golem_activity_registration_custom_price.golem_payment_rule_menu
|
||||
msgid "Pricing rules"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_activity_form_inherit_custom_price
|
||||
msgid "Resets all options with default price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_registration_invoicing_line_activity_price
|
||||
msgid "Sale Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_custom_price.field_golem_activity_price_line_area_sequence
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_custom_price.golem_member_analysis_pivot_fquotientslice_area
|
||||
msgid "Service User Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:49
|
||||
#, python-format
|
||||
msgid "The 'to' family quotient must be higher than the 'from' one."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_activity_price_line.py:30
|
||||
#: sql_constraint:golem.activity.price.line:0
|
||||
#, python-format
|
||||
msgid "This activity, geo rule, FQ slice rule has already been used."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_custom_price
|
||||
#: code:addons/golem_activity_registration_custom_price/models/golem_payment_rule_quotient_slice.py:31
|
||||
#: sql_constraint:golem.payment.rule.familyquotient.slice:0
|
||||
#, python-format
|
||||
msgid "This name has already been used. It must be unique."
|
||||
msgstr ""
|
||||
|
19
golem_activity_registration_custom_price/models/__init__.py
Normal file
19
golem_activity_registration_custom_price/models/__init__.py
Normal file
@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import (golem_payment_rule_quotient_slice, golem_activity_price_line,
|
||||
golem_activity, golem_member)
|
@ -0,0 +1,53 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity adaptations """
|
||||
|
||||
from odoo import models, fields, api
|
||||
|
||||
class GolemActivity(models.Model):
|
||||
""" GOLEM Activity adaptations """
|
||||
_inherit = 'golem.activity'
|
||||
|
||||
price_line_ids = fields.One2many('golem.activity.price.line',
|
||||
'activity_id', string='Price lines',
|
||||
copy=True)
|
||||
|
||||
@api.multi
|
||||
def reset_price_combinations(self):
|
||||
""" Resets all combinations with default price """
|
||||
self.ensure_one()
|
||||
activity = self[0]
|
||||
activity.price_line_ids = [(6, False, [])] # Truncate existing
|
||||
activity.fill_price_combinations()
|
||||
|
||||
@api.multi
|
||||
def fill_price_combinations(self):
|
||||
""" Fills all inexistent combinations prices from default one """
|
||||
self.ensure_one()
|
||||
activity = self[0]
|
||||
existing_combinations = [u'%s-%s' % (line.area_id.id, line.slice_id.id)
|
||||
for line in activity.price_line_ids]
|
||||
slice_ids = self.env['golem.payment.rule.familyquotient.slice'].search([])
|
||||
for area_id in self.env['golem.partner.area'].search([('parent_id', '=', False)]):
|
||||
for slice_id in slice_ids:
|
||||
combination = u'%s-%s' % (area_id.id, slice_id.id)
|
||||
if combination not in existing_combinations:
|
||||
data = {'activity_id': activity.id, 'area_id': area_id.id,
|
||||
'slice_id': slice_id.id, 'price': activity.list_price}
|
||||
self.env['golem.activity.price.line'].create(data)
|
@ -0,0 +1,50 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity adaptations """
|
||||
|
||||
from odoo import models, fields, _
|
||||
|
||||
|
||||
class GolemActivityPriceLine(models.Model):
|
||||
""" GOLEM Activity Price Line """
|
||||
_name = 'golem.activity.price.line'
|
||||
_description = 'GOLEM Activity Price Line'
|
||||
_order = 'activity_id asc, area_id asc, slice_id asc'
|
||||
_sql_constraints = [(
|
||||
'golem_activity_price_line_uniq', 'UNIQUE (activity_id, area_id, slice_id)',
|
||||
_('This activity, geo rule, FQ slice rule has already been used.')
|
||||
)]
|
||||
|
||||
activity_id = fields.Many2one(
|
||||
'golem.activity', required=True, index=True, auto_join=True,
|
||||
ondelete='cascade'
|
||||
)
|
||||
area_id = fields.Many2one(
|
||||
'golem.partner.area', index=True, auto_join=True,
|
||||
string='Area', ondelete='cascade'
|
||||
)
|
||||
area_sequence = fields.Integer(related='area_id.sequence')
|
||||
slice_id = fields.Many2one(
|
||||
'golem.payment.rule.familyquotient.slice', index=True, auto_join=True,
|
||||
string='Family quotient slice', ondelete='cascade'
|
||||
)
|
||||
currency_id = fields.Many2one(
|
||||
'res.currency',
|
||||
default=lambda self: self.env.user.company_id.currency_id.id
|
||||
)
|
||||
price = fields.Monetary(required=True)
|
@ -0,0 +1,65 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Member adaptations """
|
||||
|
||||
from odoo import models, _
|
||||
|
||||
class GolemMember(models.Model):
|
||||
""" GOLEM Member adaptations """
|
||||
_inherit = 'golem.member'
|
||||
|
||||
def invoice_line_data_get(self, registration):
|
||||
""" Overwrite parent method to inject price according to rules """
|
||||
line_data = super(GolemMember, self).invoice_line_data_get(registration)
|
||||
line_data['pricing_info'] = _(u'Default price')
|
||||
member = self[0]
|
||||
if member.family_quotient: # default price if no QF
|
||||
fq_int = int(member.family_quotient)
|
||||
domain = [('family_quotient_from', '<=', fq_int),
|
||||
('family_quotient_to', '>=', fq_int)]
|
||||
rule_slice_id = self.env['golem.payment.rule.familyquotient.slice'].search(
|
||||
domain, limit=1
|
||||
)
|
||||
if rule_slice_id: # if not : default_price
|
||||
applicable_areas = []
|
||||
area_ids = self.env['golem.partner.area'].search([])
|
||||
if member.area_id:
|
||||
applicable_areas += area_ids.filtered(
|
||||
lambda r: r == member.area_id.root_id
|
||||
)
|
||||
if not applicable_areas and area_ids:
|
||||
applicable_areas += area_ids[0]
|
||||
random_area = True
|
||||
else:
|
||||
random_area = False
|
||||
if applicable_areas: # else default_price
|
||||
for applicable_area in applicable_areas:
|
||||
domain = [('activity_id', '=', registration.activity_id.id),
|
||||
('area_id', '=', applicable_area.id),
|
||||
('slice_id', '=', rule_slice_id.id)]
|
||||
price_line_obj = self.env['golem.activity.price.line']
|
||||
line_id = price_line_obj.search(domain, limit=1)
|
||||
if line_id: # Found !
|
||||
line_data['price'] = line_id.price
|
||||
pricing_info = (_(u'Family quotient but random area')
|
||||
if random_area else
|
||||
_(u'Family quotient and area'))
|
||||
line_data['pricing_info'] = pricing_info
|
||||
break
|
||||
return line_data
|
@ -0,0 +1,68 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Payment Rule Family Quotient Slice """
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class GolemPaymentRuleQuotientSlice(models.Model):
|
||||
""" GOLEM Payment Rule Family Quotient Slice """
|
||||
_name = 'golem.payment.rule.familyquotient.slice'
|
||||
_description = 'GOLEM Payment Rule Family Quotient Slice'
|
||||
_order = 'name asc'
|
||||
_sql_constraints = [(
|
||||
'golem_payment_rule_fquoslice_uniq', 'UNIQUE (name)',
|
||||
_('This name has already been used. It must be unique.')
|
||||
)]
|
||||
|
||||
name = fields.Char(required=True)
|
||||
currency_id = fields.Many2one(
|
||||
'res.currency',
|
||||
default=lambda self: self.env.user.company_id.currency_id.id
|
||||
)
|
||||
family_quotient_from = fields.Monetary()
|
||||
family_quotient_to = fields.Monetary()
|
||||
|
||||
@api.constrains('family_quotient_from', 'family_quotient_to')
|
||||
def check_fq(self):
|
||||
""" Check family quotient coherence and conflits """
|
||||
for rqf in self:
|
||||
if rqf.family_quotient_from:
|
||||
if (not rqf.family_quotient_to or
|
||||
rqf.family_quotient_to < rqf.family_quotient_from):
|
||||
verr = _('The \'to\' family quotient must be higher than '
|
||||
'the \'from\' one.')
|
||||
raise ValidationError(verr)
|
||||
rqfs = self.env['golem.payment.rule.familyquotient.slice'].search([])
|
||||
for eachr in rqfs:
|
||||
if (eachr.family_quotient_from < rqf.family_quotient_from <
|
||||
eachr.family_quotient_to):
|
||||
verr = _(u'Family quotient from is in range of an '
|
||||
'existing slice.')
|
||||
raise ValidationError(verr)
|
||||
if (eachr.family_quotient_from < rqf.family_quotient_to <
|
||||
eachr.family_quotient_to):
|
||||
verr = _(u'Family quotient to is in range of an '
|
||||
'existing slice.')
|
||||
raise ValidationError(verr)
|
||||
if (rqf.family_quotient_from < eachr.family_quotient_from <
|
||||
rqf.family_quotient_to):
|
||||
verr = _(u'Current family quotient slice cannot be '
|
||||
'included into another existing slice.')
|
||||
raise ValidationError(verr)
|
@ -0,0 +1,7 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_golem_payment_rule_familyquotient_slice_auditor,Access GOLEM Payment Rule Familyquotient Slice auditor,model_golem_payment_rule_familyquotient_slice,golem_base.group_golem_auditor,1,0,0,0
|
||||
access_golem_payment_rule_familyquotient_slice_user,Access GOLEM Payment Rule Familyquotient Slice User,model_golem_payment_rule_familyquotient_slice,golem_base.group_golem_user,1,0,0,0
|
||||
access_golem_payment_rule_familyquotient_slice_manager,Access GOLEM Payment Rule Familyquotient Slice Manager,model_golem_payment_rule_familyquotient_slice,golem_base.group_golem_manager,1,1,1,1
|
||||
access_golem_activity_priceline_auditor,Access GOLEM Activity Price Line Auditor,model_golem_activity_price_line,golem_base.group_golem_auditor,1,0,0,0
|
||||
access_golem_activity_priceline_user,Access GOLEM Activity Price Line User,model_golem_activity_price_line,golem_base.group_golem_user,1,0,0,0
|
||||
access_golem_activity_priceline_manager,Access GOLEM Activity Price Line Manager,model_golem_activity_price_line,golem_base.group_golem_manager,1,1,1,1
|
|
@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Form -->
|
||||
<record id="golem_activity_form_inherit_custom_price" model="ir.ui.view">
|
||||
<field name="name">GOLEM Activity Adaptations</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="inherit_id" ref="golem_activity.golem_activity_form" />
|
||||
<field name="arch" type="xml">
|
||||
<group name="properties" position="before">
|
||||
<group name="prices" string="Prices">
|
||||
<button name="fill_price_combinations" type="object" class="oe_link"
|
||||
string="Populates other / new options with default price" colspan="1"
|
||||
confirm="Are you sure you want to apply default price to all other options ?" />
|
||||
<button name="reset_price_combinations" type="object" class="oe_link"
|
||||
string="Resets all options with default price" colspan="1"
|
||||
confirm="Are you sure you want to RESET ALL options ?" />
|
||||
<field name="price_line_ids" nolabel="1" colspan="2"
|
||||
context="{'default_activity_id': active_id}"
|
||||
widget="x2many_2d_matrix"
|
||||
field_y_axis="slice_id" field_x_axis="area_id" field_value="price">
|
||||
<tree default_order="area_sequence asc">
|
||||
<field name="activity_id" invisible="1" />
|
||||
<field name="currency_id" invisible="1" />
|
||||
<field name="area_id" />
|
||||
<field name="area_sequence" invisible="1" />
|
||||
<field name="slice_id" />
|
||||
<field name="price" />
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
</group>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Form -->
|
||||
<record id="golem_member_form_inherit_custom_price" model="ir.ui.view">
|
||||
<field name="name">GOLEM Member Adaptations</field>
|
||||
<field name="model">golem.member</field>
|
||||
<field name="inherit_id" ref="golem_member.golem_member_form" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="area_id" position="attributes">
|
||||
<attribute name="required">1</attribute>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018-2020 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Tree -->
|
||||
<record model="ir.ui.view" id="golem_payment_rule_qfslice_view_tree">
|
||||
<field name="name">GOLEM Payment Rule QF Slice Tree</field>
|
||||
<field name="model">golem.payment.rule.familyquotient.slice</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom">
|
||||
<field name="name" />
|
||||
<field name="currency_id" invisible="1" />
|
||||
<field name="family_quotient_from" />
|
||||
<field name="family_quotient_to" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Search -->
|
||||
<record model="ir.ui.view" id="golem_payment_rule_qfslice_view_search">
|
||||
<field name="name">GOLEM Payment Rule QF Slice Search</field>
|
||||
<field name="model">golem.payment.rule.familyquotient.slice</field>
|
||||
<field name="arch" type="xml">
|
||||
<search>
|
||||
<field name="name" />
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Actions -->
|
||||
<act_window id="golem_payment_rule_qfslice_action"
|
||||
name="Family Quotients" view_mode="tree"
|
||||
res_model="golem.payment.rule.familyquotient.slice" />
|
||||
|
||||
<!-- Menus -->
|
||||
<menuitem id="golem_payment_rule_menu" name="Pricing rules"
|
||||
parent="golem_activity.golem_activity_menu_configuration"
|
||||
groups="golem_base.group_golem_manager,golem_base.group_golem_auditor" sequence="20" />
|
||||
<menuitem id="golem_payment_rule_qfslice_menu" name="Family Quotients"
|
||||
parent="golem_payment_rule_menu" action="golem_payment_rule_qfslice_action"
|
||||
sequence="10" />
|
||||
<menuitem id="golem_partner_area_menu" name="Areas"
|
||||
parent="golem_payment_rule_menu" sequence="20"
|
||||
action="golem_member.golem_partner_area_action" />
|
||||
|
||||
</data>
|
||||
</odoo>
|
19
golem_activity_registration_custom_price/wizard/__init__.py
Normal file
19
golem_activity_registration_custom_price/wizard/__init__.py
Normal file
@ -0,0 +1,19 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018-2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import (golem_activity_registration_invoicing,
|
||||
golem_member_analysis, golem_member_analysis_wizard)
|
@ -0,0 +1,27 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity Registration Invoicing Wizard """
|
||||
|
||||
from odoo import models, fields
|
||||
|
||||
class GolemActivityRegistrationInvoicingLine(models.TransientModel):
|
||||
""" GOLEM Activity Registration Invoicing Line adaptations """
|
||||
_inherit = 'golem.activity.registration.invoicing.line'
|
||||
|
||||
pricing_info = fields.Char()
|
||||
activity_price = fields.Float(related='activity_id.product_id.list_price')
|
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Form -->
|
||||
<record id="golem_activity_registration_invoicing_form_inherit_custom_price"
|
||||
model="ir.ui.view">
|
||||
<field name="name">GOLEM Activity Registration Invoicing Form adaptations</field>
|
||||
<field name="model">golem.activity.registration.invoicing</field>
|
||||
<field name="inherit_id"
|
||||
ref="golem_activity_registration_payment.golem_activity_registration_invoicing_view_form" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="price" position="before">
|
||||
<field name="activity_price" readonly="1" string="Default price" />
|
||||
</field>
|
||||
<field name="price" position="after">
|
||||
<field name="pricing_info" readonly="1" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Members Analysis Pivot Adaption """
|
||||
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class GolemMemberAnalysisPivot(models.TransientModel):
|
||||
""" GOLEM Members Analysis Pivot Adaption """
|
||||
_inherit = 'golem.member.analysis'
|
||||
_description = 'GOLEM Members Analysis Adaption'
|
||||
|
||||
|
||||
family_quotient_slice_id = fields.Many2one(
|
||||
'golem.payment.rule.familyquotient.slice', index=True, ondelete='cascade',
|
||||
store=True, compute='_compute_family_quotient_slice_id'
|
||||
)
|
||||
|
||||
@api.depends('family_quotient')
|
||||
def _compute_family_quotient_slice_id(self):
|
||||
""" Computes family quotient slice """
|
||||
for rec in self:
|
||||
if rec.family_quotient:
|
||||
fq_int = int(rec.family_quotient)
|
||||
domain = [('family_quotient_from', '<=', fq_int),
|
||||
('family_quotient_to', '>=', fq_int)]
|
||||
rule_slice_id = self.env['golem.payment.rule.familyquotient.slice'].search(
|
||||
domain, limit=1
|
||||
)
|
||||
if rule_slice_id:
|
||||
rec.family_quotient_slice_id = rule_slice_id
|
@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Pivot -->
|
||||
<record id="golem_member_analysis_pivot_fquotientslice_area" model="ir.ui.view">
|
||||
<field name="name">Golem Member Analysis Fquotient Slice and Area Pivot</field>
|
||||
<field name="model">golem.member.analysis</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Service User Analysis">
|
||||
<field name="area_id" type="col"/>
|
||||
<field name="family_quotient_slice_id" type="row"/>
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
@ -0,0 +1,48 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Members Analysis Adaptation """
|
||||
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class GolemMemberAnalysis(models.TransientModel):
|
||||
""" GOLEM Members Analysis Adaptation """
|
||||
_inherit = 'golem.member.analysis.wizard'
|
||||
_description = 'GOLEM Members Analysis Wizard Adaptation'
|
||||
|
||||
analyse_type = fields.Selection(
|
||||
selection_add=[('fquotientslice_area',
|
||||
'By family quotient slice and area')]
|
||||
)
|
||||
|
||||
@api.multi
|
||||
def get_pivot_view(self):
|
||||
""" override get_pivot_view function """
|
||||
self.ensure_one()
|
||||
rec = self[0]
|
||||
pivot_view = super(GolemMemberAnalysis, self).get_pivot_view()
|
||||
if pivot_view:
|
||||
return pivot_view
|
||||
if rec.analyse_type == 'fquotientslice_area':
|
||||
return self.env.ref(
|
||||
('golem_activity_registration_custom_price.'
|
||||
'golem_member_analysis_pivot_fquotientslice_area'),
|
||||
False
|
||||
)
|
||||
return False
|
18
golem_activity_registration_export/__init__.py
Normal file
18
golem_activity_registration_export/__init__.py
Normal file
@ -0,0 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import controllers, models
|
@ -16,15 +16,14 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
{
|
||||
'name': 'GOLEM members minor',
|
||||
'summary': 'GOLEM non-profit members minor management',
|
||||
'description': 'Non-profit french MJC members minor management',
|
||||
'version': '0.1',
|
||||
'name': 'GOLEM Activity Member Registrations CSV exports',
|
||||
'summary': 'GOLEM Activities Member Registration CSV exports',
|
||||
'version': '10.0.1.0.0',
|
||||
'category': 'GOLEM',
|
||||
'author': 'Fabien Bourgeois',
|
||||
'license': 'AGPL-3',
|
||||
'application': False,
|
||||
'installable': True,
|
||||
'depends': ['golem_member'],
|
||||
'data': ['golem_member_view.xml']
|
||||
'installable': False,
|
||||
'depends': ['golem_activity_registration'],
|
||||
'data': ['views/golem_activity_view.xml']
|
||||
}
|
@ -15,4 +15,4 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import models
|
||||
from . import controllers
|
@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# copyright 2016 fabien bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# this program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the gnu affero general public license as
|
||||
# published by the free software foundation, either version 3 of the
|
||||
# license, or (at your option) any later version.
|
||||
#
|
||||
# this program is distributed in the hope that it will be useful,
|
||||
# but without any warranty; without even the implied warranty of
|
||||
# merchantability or fitness for a particular purpose. see the
|
||||
# gnu affero general public license for more details.
|
||||
#
|
||||
# you should have received a copy of the gnu affero general public license
|
||||
# along with this program. if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import json
|
||||
import odoo.http as http
|
||||
from odoo.http import request
|
||||
from odoo.addons.web.controllers.main import CSVExport
|
||||
|
||||
|
||||
class ExportGolemActivityMembers(CSVExport):
|
||||
|
||||
@http.route('/web/export/golem/activity_members', type='http', auth='user')
|
||||
def export_csv_view(self, data):
|
||||
data = json.loads(data)
|
||||
FIELDS = ['number', 'lastname', 'firstname', 'street', 'zip', 'city',
|
||||
'birthdate_date', 'email', 'phone', 'mobile']
|
||||
aid = data.get('activity_id')
|
||||
a_model = request.env['golem.activity']
|
||||
activity = a_model.browse([aid])
|
||||
registrations = activity.activity_registration_ids
|
||||
rows = []
|
||||
for r in registrations:
|
||||
row = []
|
||||
for f in FIELDS:
|
||||
value = r.member_id.__getattribute__(f)
|
||||
row.append(value)
|
||||
rows.append(row)
|
||||
|
||||
return request.make_response(
|
||||
self.from_data(FIELDS, rows),
|
||||
headers=[('Content-Disposition', 'attachment; filename="%s"'
|
||||
% self.filename('gollem.activity')),
|
||||
('Content-Type', self.content_type)])
|
28
golem_activity_registration_export/i18n/fr.po
Normal file
28
golem_activity_registration_export/i18n/fr.po
Normal file
@ -0,0 +1,28 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_registration_export
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 8.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-16 16:20+0000\n"
|
||||
"PO-Revision-Date: 2016-10-16 16:20+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"
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#. module: golem_activity_registration_export
|
||||
#: view:golem.activity:golem_activity_registration_export.export_activity_form
|
||||
msgid "Export members to CSV file"
|
||||
msgstr "Exporter les adhérents vers un fichier tableur"
|
||||
|
||||
#. module: golem_activity_registration_export
|
||||
#: model:ir.model,name:golem_activity_registration_export.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr "Activité"
|
||||
|
@ -0,0 +1,27 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_registration_export
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 8.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-16 16:20+0000\n"
|
||||
"PO-Revision-Date: 2016-10-16 16:20+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: golem_activity_registration_export
|
||||
#: view:golem.activity:golem_activity_registration_export.export_activity_form
|
||||
msgid "Export members to CSV file"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_export
|
||||
#: model:ir.model,name:golem_activity_registration_export.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr ""
|
||||
|
18
golem_activity_registration_export/models/__init__.py
Normal file
18
golem_activity_registration_export/models/__init__.py
Normal file
@ -0,0 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2016 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import golem_activity_registration_export
|
@ -0,0 +1,32 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# copyright 2016 fabien bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# this program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the gnu affero general public license as
|
||||
# published by the free software foundation, either version 3 of the
|
||||
# license, or (at your option) any later version.
|
||||
#
|
||||
# this program is distributed in the hope that it will be useful,
|
||||
# but without any warranty; without even the implied warranty of
|
||||
# merchantability or fitness for a particular purpose. see the
|
||||
# gnu affero general public license for more details.
|
||||
#
|
||||
# you should have received a copy of the gnu affero general public license
|
||||
# along with this program. if not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from json import dumps
|
||||
from odoo import models, api
|
||||
|
||||
|
||||
class GolemActivity(models.Model):
|
||||
_inherit = 'golem.activity'
|
||||
|
||||
@api.multi
|
||||
def do_export_csv(self):
|
||||
""" Export basic data about members of the current activity to CSV """
|
||||
self.ensure_one()
|
||||
data = dumps({'activity_id': self.id})
|
||||
url = '/web/export/golem/activity_members?data={}'.format(data)
|
||||
print url
|
||||
return {'type': 'ir.actions.act_url', 'url': url, 'target': 'self'}
|
@ -15,23 +15,24 @@ GNU Affero General Public License for more details.
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<openerp>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Form -->
|
||||
<record model="ir.ui.view" id="sessions_inscription">
|
||||
<field name="name">Add sessions inscriptions to member form</field>
|
||||
<field name="model">golem.member</field>
|
||||
<field name="inherit_id" ref="golem_member.view_form" />
|
||||
<record id="export_activity_form" model="ir.ui.view">
|
||||
<field name="name">Activity Registrations CSV Export</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="inherit_id"
|
||||
ref="golem_activity.view_form" />
|
||||
<field name="arch" type="xml">
|
||||
<page name="other_page" position="before">
|
||||
<page name="sessions" string="Activities">
|
||||
<field name="activity_session_ids"
|
||||
context="{'search_default_season_default': True}" />
|
||||
</page>
|
||||
</page>
|
||||
<header position="inside">
|
||||
<div style="min-height: 30px;">
|
||||
<button name="do_export_csv" type="object" class="oe_button"
|
||||
string="Export members to CSV file" />
|
||||
</div>
|
||||
</header>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
</odoo>
|
18
golem_activity_registration_payment/__init__.py
Normal file
18
golem_activity_registration_payment/__init__.py
Normal file
@ -0,0 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import models, wizard
|
36
golem_activity_registration_payment/__manifest__.py
Normal file
36
golem_activity_registration_payment/__manifest__.py
Normal file
@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018-2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
{
|
||||
'name': 'GOLEM Activity Member Registration Payments',
|
||||
'summary': 'GOLEM Activities Member Registration Payments',
|
||||
'description': 'GOLEM Activities Member Registration Payments',
|
||||
'version': '10.0.0.7.1',
|
||||
'category': 'GOLEM',
|
||||
'author': 'Fabien Bourgeois',
|
||||
'license': 'AGPL-3',
|
||||
'application': False,
|
||||
'installable': True,
|
||||
'depends': ['golem_activity_registration_state', 'golem_payment'],
|
||||
'data': ['views/golem_member_views.xml',
|
||||
'views/golem_activity_registration_views.xml',
|
||||
'report/golem_member_card_templates.xml',
|
||||
'wizard/golem_activity_registration_invoicing.xml',
|
||||
'views/golem_activity_views.xml',
|
||||
'views/account_invoice.xml']
|
||||
}
|
399
golem_activity_registration_payment/i18n/fr.po
Normal file
399
golem_activity_registration_payment/i18n/fr.po
Normal file
@ -0,0 +1,399 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_registration_payment
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-21 11:30+0000\n"
|
||||
"PO-Revision-Date: 2019-01-21 12:31+0100\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: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,help:golem_activity_registration_payment.field_golem_activity_registration_invoice_state
|
||||
msgid " * The 'Draft' status is used when a user is encoding a new and unconfirmed Invoice.\n"
|
||||
" * The 'Pro-forma' status is used when the invoice does not have an invoice number.\n"
|
||||
" * The 'Open' status is used when user creates invoice, an invoice number is generated. It stays in the open status till the user pays the invoice.\n"
|
||||
" * The 'Paid' status is set automatically when the invoice is paid. Its related journal entries may or may not be reconciled.\n"
|
||||
" * The 'Cancelled' status is used when user cancel invoice."
|
||||
msgstr "* L'état \"Brouillon\" est utilisé lorsqu'un utilisateur est en train de saisir ou de modifier une nouvelle facture non confirmée.\n"
|
||||
"* L'état \"Pro-forma\" est utilisé lorsque la facture n'a pas de numéro de facture.\n"
|
||||
"* L'état 'Ouvert' est utilisé lorsque l'utilisateur crée une facture, celle-ci a alors un numéro de facture. La facture reste dans l'état \"Ouvert\" tant qu'elle n'est pas payée.\n"
|
||||
"* L'état 'Payé' est affecté automatiquement lorsque la facture est payée. Les écritures correspondantes dans les journaux peuvent ou non être lettrées.\n"
|
||||
"* L'état \"Annulé\" est utilisé lorsque l'utilisateur annule la facture."
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "<span style=\"padding-right: 5px;\">Total</span>"
|
||||
msgstr "<span style=\"padding-right: 5px;\">Total</span>"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_ids
|
||||
msgid "Activities"
|
||||
msgstr "Activités"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Activities and Prices"
|
||||
msgstr "Activités et tarifs"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_activity_id
|
||||
msgid "Activity id"
|
||||
msgstr "Activité liée"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/models/golem_member.py:78
|
||||
#, python-format
|
||||
msgid "All confirmed registrations had already been invoiced."
|
||||
msgstr "Toutes les inscriptions confirmées ont déjà été facturées."
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_line_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Amount"
|
||||
msgstr "Montant"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
|
||||
msgid "By Month"
|
||||
msgstr "Mois de facturation"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
msgid "By invoice state"
|
||||
msgstr "Par état de facturation"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
msgid "Canceled Invoice"
|
||||
msgstr "Facture Annulée"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Close"
|
||||
msgstr "Fermer"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Congratulations, activities had been confirmed and invoiced."
|
||||
msgstr "Félicitations, les activités ont été confirmées et facturées."
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_create_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Créé par"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_create_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_create_date
|
||||
msgid "Created on"
|
||||
msgstr "Créé le"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_currency_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_currency_id
|
||||
msgid "Currency"
|
||||
msgstr "Devise"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Date"
|
||||
msgstr "Date "
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_display_name
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nom affiché"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Display invoice"
|
||||
msgstr "Afficher la facture"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Display payments"
|
||||
msgstr "Afficher les paiements"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
msgid "Draft Invoice"
|
||||
msgstr "Facture en brouillon"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_free_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_free_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_search_inherit_activity_registration_payment
|
||||
msgid "Free activity"
|
||||
msgstr "Gratuit"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr "Activité"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration
|
||||
msgid "GOLEM Activity Registration"
|
||||
msgstr "Inscription à l'activité"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration_invoicing_line
|
||||
msgid "GOLEM Activity Registration Invoicing Lines"
|
||||
msgstr "GOLEM Activity Registration Invoicing Lines"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration_invoicing
|
||||
msgid "GOLEM Activity Registration Invoicing Wizard"
|
||||
msgstr "GOLEM Activity Registration Invoicing Wizard"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model,name:golem_activity_registration_payment.model_golem_member
|
||||
msgid "GOLEM Member"
|
||||
msgstr "Adhérent"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:161
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_invoice_id
|
||||
#, python-format
|
||||
msgid "Generated invoice"
|
||||
msgstr "Facture générée"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:176
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_payment_ids
|
||||
#, python-format
|
||||
msgid "Generated payments"
|
||||
msgstr "Paiements générés"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_member_has_invoicable_registrations
|
||||
msgid "Has invoicable registrations ?"
|
||||
msgstr "A des inscriptions à facturer ?"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_id
|
||||
msgid "ID"
|
||||
msgstr "ID"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,help:golem_activity_registration_payment.field_golem_activity_registration_invoicing_schedule_id
|
||||
msgid "If no schedule is selected, only the invoice will be create. Otherwise, draft payments will be generated."
|
||||
msgstr "Si aucune échéance n'est sélectionnée, la facture seule sera créée. Sinon, des paiements en brouillon seront en plus générés."
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "If the service user wants to pay with several payment methods, please validate with the main one, go to the payments and change journal on those needed."
|
||||
msgstr "Si l'usager souhaite payer avec différents modes de paiement, merci de valider en sélectionnant le moyen principal, puis affichez les paiements et modifiez ceux impactés."
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_registration_state_member_form_inherit_registration_payment
|
||||
msgid "If you confirmed registrations not already invoiced, you'll get a wizard to assist you for invoice creation."
|
||||
msgstr "Si vous lancez la facturation des inscriptions en attente, un assistant vous proposera de créer une facture."
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_form_inherit_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Invoice"
|
||||
msgstr "Facture"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_id
|
||||
msgid "Invoice Reference"
|
||||
msgstr "Référence de la facture"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_line_id
|
||||
msgid "Invoice line"
|
||||
msgstr "Ligne de facturation"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_state_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Invoice line price"
|
||||
msgstr "Montant facturé"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_registration_state_member_form_inherit_registration_payment
|
||||
msgid "Invoice pending registrations"
|
||||
msgstr "Inscriptions en attente de facturation"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_state_tree_inherit_payment
|
||||
msgid "Invoice state"
|
||||
msgstr "État de facturation"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Invoices"
|
||||
msgstr "Factures"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_form_inherit_payment
|
||||
msgid "Invoicing"
|
||||
msgstr "Facturation"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_invoicing_id
|
||||
msgid "Invoicing id"
|
||||
msgstr "Facturation"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing___last_update
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Dernière Modification le"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_write_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Dernière mise à jour par"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_write_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Dernière mise à jour le"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
|
||||
msgid "Last year invoices"
|
||||
msgstr "Année dernière"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_member_id
|
||||
msgid "Member"
|
||||
msgstr "Usager"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Method"
|
||||
msgstr "Moyen"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "On default season, there is no activity linked invoice for this member."
|
||||
msgstr "Sur la saison par défaut, il n'y a pas de facture liée à une activité pour cet usager."
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "On default season, there is no activity linked payment for this member."
|
||||
msgstr "Sur la saison par défaut, il n'y a pas de paiement lié à une activité pour cet usager."
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
msgid "Opened Invoice"
|
||||
msgstr "Facture Ouverte"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
msgid "Paid Invoice"
|
||||
msgstr "Facture Payée"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_journal_id
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Payment method"
|
||||
msgstr "Moyen de paiement"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_schedule_id
|
||||
msgid "Payment schedule"
|
||||
msgstr "Échéancier de paiement"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Payments"
|
||||
msgstr "Paiements"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Please confirm activity prices and choose a payment schedule if needed."
|
||||
msgstr "Merci de confirmer les coûts des activités et de choisir, si souhaité, un échéancier de paiement."
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_price
|
||||
msgid "Price"
|
||||
msgstr "Prix"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_registration_id
|
||||
msgid "Registration id"
|
||||
msgstr "Inscription"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/models/golem_member.py:71
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
#, python-format
|
||||
msgid "Registration invoicing"
|
||||
msgstr "Facturation des inscriptions"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Residual"
|
||||
msgstr "Restant"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_season_id
|
||||
msgid "Season"
|
||||
msgstr "Saison"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_state
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "State"
|
||||
msgstr "État"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_state
|
||||
msgid "Status"
|
||||
msgstr "État"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:157
|
||||
#, python-format
|
||||
msgid "There is no generated invoice."
|
||||
msgstr "Il n'y a pas de facture générée."
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:172
|
||||
#, python-format
|
||||
msgid "There is no generated payments."
|
||||
msgstr "Il n'y a pas de paiement généré."
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
|
||||
msgid "This year invoices"
|
||||
msgstr "Cette année"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Validate"
|
||||
msgstr "Valider"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: selection:golem.activity.registration.invoicing,state:0
|
||||
msgid "final"
|
||||
msgstr "final"
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: selection:golem.activity.registration.invoicing,state:0
|
||||
msgid "init"
|
||||
msgstr "init"
|
||||
|
@ -0,0 +1,395 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * golem_activity_registration_payment
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-01-21 11:30+0000\n"
|
||||
"PO-Revision-Date: 2019-01-21 11:30+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: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,help:golem_activity_registration_payment.field_golem_activity_registration_invoice_state
|
||||
msgid " * The 'Draft' status is used when a user is encoding a new and unconfirmed Invoice.\n"
|
||||
" * The 'Pro-forma' status is used when the invoice does not have an invoice number.\n"
|
||||
" * The 'Open' status is used when user creates invoice, an invoice number is generated. It stays in the open status till the user pays the invoice.\n"
|
||||
" * The 'Paid' status is set automatically when the invoice is paid. Its related journal entries may or may not be reconciled.\n"
|
||||
" * The 'Cancelled' status is used when user cancel invoice."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "<span style=\"padding-right: 5px;\">Total</span>"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_ids
|
||||
msgid "Activities"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Activities and Prices"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_activity_id
|
||||
msgid "Activity id"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/models/golem_member.py:78
|
||||
#, python-format
|
||||
msgid "All confirmed registrations had already been invoiced."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_line_price
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
|
||||
msgid "By Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
msgid "By invoice state"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
msgid "Canceled Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Congratulations, activities had been confirmed and invoiced."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_create_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_create_uid
|
||||
msgid "Created by"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_create_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_create_date
|
||||
msgid "Created on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_currency_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_currency_id
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_display_name
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_display_name
|
||||
msgid "Display Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Display invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Display payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
msgid "Draft Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_free_activity
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_free_activity
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_search_inherit_activity_registration_payment
|
||||
msgid "Free activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity
|
||||
msgid "GOLEM Activity"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration
|
||||
msgid "GOLEM Activity Registration"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration_invoicing_line
|
||||
msgid "GOLEM Activity Registration Invoicing Lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model,name:golem_activity_registration_payment.model_golem_activity_registration_invoicing
|
||||
msgid "GOLEM Activity Registration Invoicing Wizard"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model,name:golem_activity_registration_payment.model_golem_member
|
||||
msgid "GOLEM Member"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:161
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_invoice_id
|
||||
#, python-format
|
||||
msgid "Generated invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:176
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_payment_ids
|
||||
#, python-format
|
||||
msgid "Generated payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_member_has_invoicable_registrations
|
||||
msgid "Has invoicable registrations ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_id
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,help:golem_activity_registration_payment.field_golem_activity_registration_invoicing_schedule_id
|
||||
msgid "If no schedule is selected, only the invoice will be create. Otherwise, draft payments will be generated."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "If the service user wants to pay with several payment methods, please validate with the main one, go to the payments and change journal on those needed."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_registration_state_member_form_inherit_registration_payment
|
||||
msgid "If you confirmed registrations not already invoiced, you'll get a wizard to assist you for invoice creation."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_form_inherit_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_id
|
||||
msgid "Invoice Reference"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_line_id
|
||||
msgid "Invoice line"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_state_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Invoice line price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_registration_state_member_form_inherit_registration_payment
|
||||
msgid "Invoice pending registrations"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_state_tree_inherit_payment
|
||||
msgid "Invoice state"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_form_inherit_payment
|
||||
msgid "Invoicing"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_invoicing_id
|
||||
msgid "Invoicing id"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing___last_update
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line___last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_write_uid
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_write_date
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
|
||||
msgid "Last year invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_member_id
|
||||
msgid "Member"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Method"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "On default season, there is no activity linked invoice for this member."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "On default season, there is no activity linked payment for this member."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
msgid "Opened Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_search_inherit_payment
|
||||
msgid "Paid Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_journal_id
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Payment method"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_schedule_id
|
||||
msgid "Payment schedule"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Payments"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Please confirm activity prices and choose a payment schedule if needed."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_price
|
||||
msgid "Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_line_registration_id
|
||||
msgid "Registration id"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/models/golem_member.py:71
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
#, python-format
|
||||
msgid "Registration invoicing"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "Residual"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_season_id
|
||||
msgid "Season"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoicing_state
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_member_card_template_inherit_golem_activity_resgitration_payment
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.model.fields,field_description:golem_activity_registration_payment.field_golem_activity_registration_invoice_state
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:157
|
||||
#, python-format
|
||||
msgid "There is no generated invoice."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: code:addons/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py:172
|
||||
#, python-format
|
||||
msgid "There is no generated payments."
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.invoice_search_inherited_activity_registration_payment
|
||||
msgid "This year invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: model:ir.ui.view,arch_db:golem_activity_registration_payment.golem_activity_registration_invoicing_view_form
|
||||
msgid "Validate"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: selection:golem.activity.registration.invoicing,state:0
|
||||
msgid "final"
|
||||
msgstr ""
|
||||
|
||||
#. module: golem_activity_registration_payment
|
||||
#: selection:golem.activity.registration.invoicing,state:0
|
||||
msgid "init"
|
||||
msgstr ""
|
||||
|
18
golem_activity_registration_payment/models/__init__.py
Normal file
18
golem_activity_registration_payment/models/__init__.py
Normal file
@ -0,0 +1,18 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from . import golem_member, golem_activity_registration, golem_activity
|
34
golem_activity_registration_payment/models/golem_activity.py
Normal file
34
golem_activity_registration_payment/models/golem_activity.py
Normal file
@ -0,0 +1,34 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity adaptations """
|
||||
|
||||
from odoo import models, fields, api
|
||||
|
||||
class GolemActivity(models.Model):
|
||||
""" GOLEM Activity adaptations """
|
||||
_inherit = 'golem.activity'
|
||||
|
||||
free_activity = fields.Boolean(default=False)
|
||||
|
||||
@api.onchange('free_activity')
|
||||
def onchange_free_activity(self):
|
||||
""" If free activity, price should be 0.0 """
|
||||
for activity in self:
|
||||
if activity.free_activity:
|
||||
activity.list_price = 0.0
|
@ -0,0 +1,34 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Activity Registration adaptations """
|
||||
|
||||
from odoo import models, fields
|
||||
|
||||
class GolemActivityRegistration(models.Model):
|
||||
""" GOLEM Activity Registration adaptations """
|
||||
_inherit = 'golem.activity.registration'
|
||||
|
||||
invoice_line_id = fields.Many2one('account.invoice.line',
|
||||
string='Invoice line',
|
||||
ondelete='set null')
|
||||
currency_id = fields.Many2one(related='invoice_line_id.currency_id')
|
||||
invoice_line_price = fields.Monetary(related='invoice_line_id.price_subtotal')
|
||||
invoice_id = fields.Many2one(related='invoice_line_id.invoice_id')
|
||||
invoice_state = fields.Selection(related='invoice_line_id.invoice_id.state',
|
||||
store=True)
|
||||
free_activity = fields.Boolean(related='activity_id.free_activity')
|
79
golem_activity_registration_payment/models/golem_member.py
Normal file
79
golem_activity_registration_payment/models/golem_member.py
Normal file
@ -0,0 +1,79 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
""" GOLEM Member adaptations """
|
||||
|
||||
from odoo import models, fields, api, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
class GolemMember(models.Model):
|
||||
""" GOLEM Member adaptations """
|
||||
_inherit = 'golem.member'
|
||||
|
||||
has_invoicable_registrations = fields.Boolean(
|
||||
'Has invoicable registrations ?',
|
||||
compute='_compute_has_invoicable_reg')
|
||||
|
||||
@api.depends('activity_registration_ids', 'activity_registration_ids.state')
|
||||
def _compute_has_invoicable_reg(self):
|
||||
""" Check if there are confirmed registrations with no invoice linked """
|
||||
for member in self:
|
||||
regis = member.activity_registration_ids
|
||||
regis = regis.filtered(
|
||||
lambda r: (r.state == 'confirmed' and
|
||||
not r.activity_id.free_activity and
|
||||
(not r.invoice_line_id or
|
||||
r.invoice_line_id.invoice_id.state == 'cancel'))
|
||||
)
|
||||
member.has_invoicable_registrations = bool(len(regis))
|
||||
|
||||
def invoice_line_data_get(self, registration):
|
||||
""" Returns dict with invoice line data """
|
||||
return {'registration_id': registration.id,
|
||||
'activity_id': registration.activity_id.id,
|
||||
'price': registration.activity_id.list_price}
|
||||
|
||||
@api.multi
|
||||
def invoice_registrations(self):
|
||||
""" Launch wizard to generate invoices for registrations """
|
||||
self.ensure_one()
|
||||
member = self[0]
|
||||
registrations = member.activity_registration_ids.filtered(
|
||||
lambda r: (r.state == 'confirmed' and
|
||||
not r.activity_id.free_activity and
|
||||
(not r.invoice_line_id or
|
||||
r.invoice_line_id.invoice_id.state == 'cancel'))
|
||||
)
|
||||
if registrations:
|
||||
invoicing = self.env['golem.activity.registration.invoicing'].create({
|
||||
'member_id' : member.id,
|
||||
'season_id': registrations[0].activity_id.season_id.id
|
||||
})
|
||||
line_obj = self.env['golem.activity.registration.invoicing.line']
|
||||
for reg in registrations:
|
||||
line_data = self.invoice_line_data_get(reg)
|
||||
line_data['invoicing_id'] = invoicing.id
|
||||
line_obj.create(line_data)
|
||||
return {'name': _('Registration invoicing'),
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'golem.activity.registration.invoicing',
|
||||
'view_mode': 'form',
|
||||
'res_id': invoicing.id,
|
||||
'target': 'new'}
|
||||
else:
|
||||
uerr = _('All confirmed registrations had already been invoiced.')
|
||||
raise UserError(uerr)
|
@ -0,0 +1,145 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
|
||||
<template id="golem_activity_registration_state_member_card_template_inherit_golem_activity_resgitration_payment"
|
||||
inherit_id="golem_activity_registration_state.golem_member_card_template_inherit_golem_activity_resgitration_state">
|
||||
<xpath expr="//table[@id='table_activity_ref']/thead/tr[1]" position="inside">
|
||||
<th class="text-right">Invoice line price</th>
|
||||
</xpath>
|
||||
<xpath expr="//table[@id='table_activity_ref']/tbody/tr[1]" position="inside">
|
||||
<td class="text-right">
|
||||
<span t-field="reg.invoice_line_price"
|
||||
t-field-options="{'widget': 'monetary', 'display_currency': reg.currency_id}"/>
|
||||
</td>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
<template id="golem_member_card_template_inherit_golem_activity_resgitration_payment"
|
||||
inherit_id="golem_member.golem_member_card_template">
|
||||
<xpath expr="//table[@id='table_activity_ref']/tbody" position="before">
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td class="text-right" colspan="8">
|
||||
<strong>
|
||||
<span style="padding-right: 5px;">Total</span>
|
||||
<span t-esc="sum(member.activity_registration_ids.mapped('invoice_line_id.price_subtotal'))"
|
||||
t-esc-options="{'widget': 'monetary', 'display_currency': member.currency_id}" />
|
||||
</strong>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</xpath>
|
||||
<xpath expr="//div[@id='page_report_member']" position="inside">
|
||||
<!-- <p style="page-break-before:always;"> </p> -->
|
||||
<div id="page_report_invoicing" class="row">
|
||||
<h3>Invoices</h3>
|
||||
<t t-set="invoices" t-value="member.activity_registration_ids.mapped('invoice_line_id.invoice_id')" />
|
||||
<p t-if="not invoices">
|
||||
On default season, there is no activity linked invoice for this member.
|
||||
</p>
|
||||
<table t-else="" id="table_activity_ref" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Invoice</th>
|
||||
<th>Date</th>
|
||||
<th>State</th>
|
||||
<th class="text-right">Amount</th>
|
||||
<th class="text-right">Residual</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td class="text-right" colspan="5">
|
||||
<strong>
|
||||
<span style="padding-right: 5px;">Total</span>
|
||||
<span t-esc="sum(member.activity_registration_ids.mapped('invoice_line_id.invoice_id.amount_total'))"
|
||||
t-esc-options="{'widget': 'monetary', 'display_currency': member.currency_id}" />
|
||||
</strong>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody>
|
||||
<tr t-foreach="invoices" t-as="inv">
|
||||
<td>
|
||||
<span t-field="inv.display_name" />
|
||||
</td>
|
||||
<td>
|
||||
<span t-field="inv.date_invoice" />
|
||||
</td>
|
||||
<td>
|
||||
<span t-field="inv.state" />
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<span t-field="inv.amount_total" />
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<span t-field="inv.residual" />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3>Payments</h3>
|
||||
<t t-set="payments" t-value="member.activity_registration_ids.mapped('invoice_line_id.invoice_id.payment_ids')" />
|
||||
<p t-if="not payments">
|
||||
On default season, there is no activity linked payment for this member.
|
||||
</p>
|
||||
<table t-else="" id="table_activity_ref" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Date</th>
|
||||
<th>Method</th>
|
||||
<th>State</th>
|
||||
<th class="text-right">Amount</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td class="text-right" colspan="5">
|
||||
<strong>
|
||||
<span style="padding-right: 5px;">Total</span>
|
||||
<span t-esc="sum(payments.mapped('amount'))"
|
||||
t-esc-options="{'widget': 'monetary', 'display_currency': member.currency_id}" />
|
||||
</strong>
|
||||
</td>
|
||||
</tr>
|
||||
</tfoot>
|
||||
<tbody>
|
||||
<tr t-foreach="invoices.mapped('payment_ids')" t-as="payment">
|
||||
<td>
|
||||
<span t-field="payment.payment_date" />
|
||||
</td>
|
||||
<td>
|
||||
<span t-field="payment.journal_id.name" />
|
||||
</td>
|
||||
<td>
|
||||
<span t-field="payment.state" />
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<span t-field="payment.amount" />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
</odoo>
|
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
Copyright 2019 Fabien Bourgeois <fabien@yaltik.com>
|
||||
Copyright 2019 Youssef El Ouahby <youssef@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Searches -->
|
||||
<record id="invoice_search_inherited_activity_registration_payment" model="ir.ui.view">
|
||||
<field name="name">account.invoice.search.iherited.activity.registration.payment</field>
|
||||
<field name="model">account.invoice</field>
|
||||
<field name="inherit_id" ref="account.view_account_invoice_filter" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group[1]" position="inside">
|
||||
<filter name="invoice_last_year" string="Last year invoices"
|
||||
domain="[('date_invoice', '>=', (context_today() - datetime.timedelta(days=365.25)).strftime('%Y-01-01')), ('date_invoice', '<', context_today().strftime('%Y-01-01'))]" />
|
||||
<filter name="invoice_this_year" string="This year invoices"
|
||||
domain="[('date_invoice', '>=', context_today().strftime('%Y-01-01'))]" />
|
||||
<filter name="group_by_month" string="By Month" context="{'group_by':'date_invoice:month'}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
@ -0,0 +1,90 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Form -->
|
||||
<record id="golem_activity_registration_form_inherit_payment"
|
||||
model="ir.ui.view">
|
||||
<field name="name">Activity Registration form adaptations</field>
|
||||
<field name="model">golem.activity.registration</field>
|
||||
<field name="inherit_id"
|
||||
ref="golem_activity_registration.golem_activity_registration_form" />
|
||||
<field name="arch" type="xml">
|
||||
<group name="subscription" position="after">
|
||||
<group name="invoicing" string="Invoicing">
|
||||
<field name="invoice_line_id" invisible="1" />
|
||||
<field name="currency_id" invisible="1" />
|
||||
<field name="invoice_line_price" readonly="1" />
|
||||
<field name="invoice_state" />
|
||||
<field name="invoice_id" string="Invoice" />
|
||||
</group>
|
||||
</group>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Tree -->
|
||||
<record id="golem_activity_registration_state_tree_inherit_payment" model="ir.ui.view">
|
||||
<field name="name">Activity Registration State Tree adaptations</field>
|
||||
<field name="model">golem.activity.registration</field>
|
||||
<field name="inherit_id"
|
||||
ref="golem_activity_registration_state.golem_activity_registration_tree_inherit_state" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="activity_price" position="before">
|
||||
<field name="free_activity" readonly="1" />
|
||||
</field>
|
||||
<field name="activity_price" position="attributes">
|
||||
<attribute name="attrs">{'readonly': [('free_activity', '=', True)]}</attribute>
|
||||
</field>
|
||||
<field name="state" position="after">
|
||||
<field name="invoice_line_id" invisible="1" />
|
||||
<field name="invoice_state" string="Invoice state" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Search -->
|
||||
<record id="golem_activity_registration_search_inherit_payment" model="ir.ui.view">
|
||||
<field name="name">Activity Registration State Search adaptations</field>
|
||||
<field name="model">golem.activity.registration</field>
|
||||
<field name="inherit_id"
|
||||
ref="golem_activity_registration_state.golem_activity_registration_search_inherit_state" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="activity_id" position="after">
|
||||
<field name="invoice_id" string="Invoice" />
|
||||
</field>
|
||||
<filter name="state_canceled" position="after">
|
||||
<separator />
|
||||
<filter name="invoice_state_draft" string="Draft Invoice"
|
||||
domain="[('invoice_state', '=', 'draft')]" />
|
||||
<filter name="invoice_state_open" string="Opened Invoice"
|
||||
domain="[('invoice_state', '=', 'open')]" />
|
||||
<filter name="invoice_state_paid" string="Paid Invoice"
|
||||
domain="[('invoice_state', '=', 'paid')]" />
|
||||
<filter name="invoice_state_cancel" string="Canceled Invoice"
|
||||
domain="[('invoice_state', '=', 'cancel')]" />
|
||||
</filter>
|
||||
<filter name="group_state" position="after">
|
||||
<filter name="group_invoice_state" string="By invoice state"
|
||||
context="{'group_by': 'invoice_state'}"/>
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018 Youssef El Ouahby <youssef@yaltik.com>
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- Forms -->
|
||||
<record id="golem_activity_form_inherit_activity_registration_payment"
|
||||
model="ir.ui.view">
|
||||
<field name="name">Golem activity form adaptations</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="inherit_id" ref="golem_activity.golem_activity_form" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="list_price" position="attributes">
|
||||
<attribute name="attrs">{'invisible': [('free_activity', '=', True)]}</attribute>
|
||||
</field>
|
||||
<field name="list_price" position="before">
|
||||
<field name='free_activity' />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Search -->
|
||||
<record id="golem_activity_search_inherit_activity_registration_payment"
|
||||
model="ir.ui.view">
|
||||
<field name="name">Golem Activity Search adaptations</field>
|
||||
<field name="model">golem.activity</field>
|
||||
<field name="inherit_id" ref="golem_activity.golem_activity_search" />
|
||||
<field name="arch" type="xml">
|
||||
<filter name="season_default" position="after">
|
||||
<filter name="free_activity" string="Free activity"
|
||||
domain="[('free_activity', '=', True)]" />
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2018 Fabien Bourgeois <fabien@yaltik.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<!-- Form -->
|
||||
<record id="golem_registration_state_member_form_inherit_registration_payment"
|
||||
model="ir.ui.view">
|
||||
<field name="name">Member Form adaptations</field>
|
||||
<field name="model">golem.member</field>
|
||||
<field name="inherit_id"
|
||||
ref="golem_activity_registration_state.golem_member_form_inherit_registration_state" />
|
||||
<field name="arch" type="xml">
|
||||
<button name="do_validate_registrations" position="after">
|
||||
<field name="has_invoicable_registrations" invisible="1" />
|
||||
<button name="invoice_registrations" type="object"
|
||||
string="Invoice pending registrations"
|
||||
class="oe_highlight"
|
||||
help="If you confirmed registrations not already invoiced, you'll get a wizard to assist you for invoice creation."
|
||||
attrs="{'invisible': [('has_invoicable_registrations', '=', False)]}" />
|
||||
</button>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user